神经网络设置已经确定的前提下,如何优化网络中待求的参数呢?
以一个2层神经网络举例说明如何优化网络参数。
前向传播,计算过程如下:
用一个统一的式子表达:
为了计算y与Y之间的差距(y是前向传播算出的值,Y是标签值),引入损失函数(目标函数):
梯度下降法寻找极值:
以一维函数举例
通过不断地迭代计算,就能找到一个x值,使y的值最小。训练网络的过程可以使用梯度下降法,找到一组参数值使损失函数的值达到最小。
由于梯度下降法是从网络的右侧向左逐层计算更新参数,与前向传播方向相反,所以把参数更新的过程叫做后向传播。
一次前向传播+一次后向传播=训练一次。
后向传播在从一维到多维的推广,一维中的求导运算,在多维情况下,使用链式法则计算偏导。由于网络的前向传播是一连串复合函数的计算过程,所以导数的计算结果可以使用链式法则计算各个参数的偏导得到。
在本文的例子里
已知量有:
待估计的参数有:
损失函数为
待估计参数的偏导数计算过程:
由链式求导法则可等到下列导数:
参数迭代更新公式:
神经网络后向传播算法的步骤: