该课程在斯坦福深度学习课上,点此打开
--------------------------------------------------分割线------------------------------------------------------
一、概述
固定样本集 ,它包含
个样例,可以用批量梯度下降法来求解神经网络(W和b),对于单个样例
,其代价函数为:
给定一个包含 个样例的数据集,我们可以定义整体代价函数为:
定义中的第一项是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。
权重衰减参数 用于控制公式中两项的相对重要性。在此重申一下这两个复杂函数的含义:
是针对单个样例计算得到的方差代价函数;
是整体样本代价函数,它包含权重衰减项。
二、核心思想-更新权值
梯度下降法中每一次迭代都按照如下公式对参数 和
进行更新:
是学习速率。其中关键步骤是计算偏导数。这里需要求出J关于W和b的偏导数,如何计算,将在下面讲明。
三、核心思想-BP反向传播算法
先计算 和
。然后可以计算W和b的偏导数
反向传播算法的思路如下:给定一个样例 ,我们首先进行“前向传导”运算,计算出网络中所有的激活值,包括
的输出值。之后,针对第
层的每一个节点
,我们计算出其“残差”
,该残差表明了该节点对最终输出值的残差产生了多少影响。对于最终的输出节点,我们可以直接算出网络产生的激活值与实际值之间的差距,我们将这个差距定义为
(第
层表示输出层)。对于隐藏单元我们如何处理呢?我们将基于节点(译者注:第
层节点)残差的加权平均值计算
,这些节点以
作为输入。下面将给出反向传导算法的细节:
1.进行前馈传导计算,利用前向传导公式,得到 直到输出层
的激活值。
2.对于第 层(输出层)的每个输出单元
,我们根据以下公式计算残差:
3.对 的各个层,第
层的第
个节点的残差计算方法如下:
4.计算我们需要的偏导数,计算方法如下:
BP算法核心内容简写:
1.进行前馈传导计算,利用前向传导公式,得到直到输出层
的激活值。
2.对输出层(第 层),计算:
3.对于 的各层,计算:
4.计算最终需要的偏导数值:
注意:在以上的第2步和第3步中,我们需要为每一个 值计算其
。假设
是sigmoid函数,并且我们已经在前向传导运算中得到了
。那么,使用我们早先推导出的
表达式,就可以计算得到
。这也就是为什么要使用Sigmoid函数的原因,导数仍然使用原来函数中的值就可以表示,降低了求导数过程中的运算量。
四、总结
最后,我们将对梯度下降算法做个全面总结。在下面的伪代码中, 是一个与矩阵
维度相同的矩阵,
是一个与
维度相同的向量。注意这里“
”是一个矩阵,而不是“
与
相乘”。下面,我们实现批量梯度下降法中的一次迭代:
1.对于对于所有 ,令
,
(设置为全零矩阵或全零向量)
2.对于 到
,
a.使用反向传播算法计算 和
b.计算
c.计算
3.更新权重参数:
现在,我们可以重复梯度下降法的迭代步骤来减小代价函数 的值,进而求解我们的神经网络。