【深度学习基础】系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。
在正式开始接触深度学习之前,首先约定一些数学符号,适用于整个【深度学习基础】系列博客。
每一个列向量代表一个样本。
接下来我们通过计算图(computation graph)简单了解下ANN中的正向和反向传播过程。
假设我们有cost function:$J(abc)=3(a+bc)$,该函数可分为三个不同的步骤:
假设现在有$a=5b=3c=2$,则我们按照计算图从左向右计算$J$的过程就是一个正向传播的过程:
应用第3部分所讲的反向传播的内容,来看看梯度下降法在logistic回归中的实际应用。
预测该样本属于正样本的概率为($\sigma$为sigmoid联系函数):
单样本的loss function为:
构建计算图:
那么现在所需要做的就是优化$w_1w_2b$的值来最小化loss function $L(ay)$。我们使用梯度下降法优化参数,首先需要通过后向传播计算其梯度:
接下来考虑更复杂的m个样本的情况。
m个样本的cost function为:
可以看出,全局梯度就是单样本的梯度的算术平均数。
因此我们可使用以下伪代码求全局cost和全局梯度:
for i=1 to m
for j=1 to n
但是上述代码有两个for循环,第一个for循环是循环所有的样本,第二个for循环是循环所有的特征。深度学习算法中,在代码中显式的使用for循环会使算法很低效。而下节课要讲的向量化(vectorization)技术可以帮助我们的代码摆脱这些显式的for循环,使我们的代码更为高效,更适合训练非常大的数据集。