损失函数如何指导神经网络进行学习
以BP神经网络为例
给定训练集 $ D = \left{ \left(\boldsymbol { x } _{ 1 } , \boldsymbol { y } _{ 1 } \right),\left(\boldsymbol { x } _{ 2 } , \boldsymbol { y } _{ 2 } \right),\dots,\left(\boldsymbol { x } _{ m } , \boldsymbol { y } _{ m } \right)\right}$
设神经网络的输出为:$\hat { \boldsymbol { y } } _ { k } = \left( \hat { y } _ { 1 } ^ { k } , \hat { y } _ { 2 } ^ { k } , \ldots , \hat { y } _ { l } ^ { k } \right)$,既
$$
\hat { y } _ { j } ^ { k } = f \left( \beta _ { j } - \theta _ { j } \right) \tag{5.3}
$$
则网络在$\left(\boldsymbol { x } _{ k } , \boldsymbol { y } _{ k } \right)$上的均方误差为:
$$
E _ { k } = \frac { 1 } { 2 } \sum _ { j = 1 } ^ { l } \left( \hat { y } _ { j } ^ { k } - y _ { j } ^ { k } \right) ^ { 2 } \tag{5.4}
$$
需要训练的参数如下:
输入层到隐藏层:$d\times q$
隐藏层到输出层:$q\times l$
阈值:$q,l$
于是,任意参数$v$的更新估计式为:
$$
v \leftarrow v + \Delta v \tag{5.5}
$$
下面以隐藏层到输出层的连接权重$w_{hj}$进行推导。
BP算法以基于梯度下降策略,以目标的负梯度方向对参数进行调整。对式(5.4)的误差$E_k$,给定学习率$\eta$,有
$$
\Delta w _ { h j } = - \eta \frac { \partial E _ { k } } { \partial w _ { h j } } \tag{5.6}
$$
注意到,$w_{hj}$先影响到第$j$个输出层神经元的输入值$\beta_j$,再影响到其输出值$\hat { y } _ { j } ^ { k }$,然后再影响到$E_k$,有
$$
\frac { \partial E _ { k } } { \partial w _ { h j } } = \frac { \partial E _ { k } } { \partial \hat { y } _ { j } ^ { k } } \cdot \frac { \partial \hat { y } _ { j } ^ { k } } { \partial \beta _ { j } } \cdot \frac { \partial \beta _ { j } } { \partial w _ { h j } } \tag{5.7}
$$
根据$\beta_j$的定义有,
$$
\frac { \partial \beta _ { j } } { \partial w _ { h j } } = b _ { h } \tag{5.8}
$$
Sigmoid函数有个性质:
$$
f ^ { \prime } ( x ) = f ( x ) ( 1 - f ( x ) ) \tag{5.9}
$$
根据(5.4)和(5.3),结合(5.9),可得:
$$
\begin{aligned} g _ { j } & = - \frac { \partial E _ { k } } { \partial \hat { y } _ { j } ^ { k } } \cdot \frac { \partial \hat { y } _ { j } ^ { k } } { \partial \beta _ { j } } \ & = - \left( \hat { y } _ { j } ^ { k } - y _ { j } ^ { k } \right) f ^ { \prime } \left( \beta _ { j } - \theta _ { j } \right) \ & = \hat { y } _ { j } ^ { k } \left( 1 - \hat { y } _ { j } ^ { k } \right) \left( y _ { j } ^ { k } - \hat { y } _ { j } ^ { k } \right) \end{aligned} \tag{5.10}
$$
将式(5.8)和(5.10)代入(5.7),再代入(5.6),就可得到BP算法中关于$w_{hj}$的更新公式:
$$
\Delta w _ { h j } = \eta g _ { j } b _ { h } \tag{5.11}
$$
类似可得,其中$\theta_j$为输出神经元的阈值
$$
\Delta \theta _ { j } = - \eta g _ { j } \tag{5.12}
$$
关键式子是5.7
损失函数如何指导神经网络进行学习