深度学习-反向传播算法

以此网络为例进行反向传播分析
1027174-20190904215059417-1321430217.pnghtml

前向传播算法

从输入\(x\)通过第一层网络\(W_1\)算法

\(W_1 = \begin{equation} \left( \begin{array}{ccc} w_{11} & w_{12} & w_{13} \\ w_{21} & w_{22} & w_{23} \\ w_{31} & w_{32} & w_{33} \\ b_{11} & b_{12} & b_{13} \\ \end{array} \right) \end{equation}\) , \(X_1=\begin{equation}\left( \begin{array}{ccc} i_1 \\ i_2 \\i_3 \\ 1 \end{array}\right)\end{equation}\), \(Z_1 = \begin{equation}\left(\begin{array}{ccc}z_1\\z_2\\z_3\end{array}\right)\end{equation}\)markdown

该层进行前向传播有
\[ Z_1 = W_1^TX_1 \]
通过激活函数\(f(x)\)
\[ A = f(Z_1) = \begin{equation}\left(\begin{array}{ccc} a_1 \\ a_2 \\ a_3 \end{array} \right)\end{equation} \]
对于此时的第二层网络\(W_2\)\(A\)至关于输入\(X_2\)网络

\(W_2 = \begin{equation} \left( \begin{array}{ccc} w_{41} & w_{42} & w_{43} \\ w_{51} & w_{52} & w_{53} \\ w_{61} & w_{62} & w_{63} \\ b_{21} & b_{22} & b_{23} \\ \end{array} \right) \end{equation}\)\(X_2=\begin{equation}\left( \begin{array}{ccc} a_1 \\ a_2 \\ a_3 \\ 1 \end{array}\right)\end{equation}\), \(Z_2 = \begin{equation}\left(\begin{array}{ccc}z_4\\ z_5\end{array}\right)\end{equation}\)函数

经过传播获得该网络的输出
\[ O = \begin{equation}\left(\begin{array}{ccc}o_1\\ o_2\end{array}\right)\end{equation} = f(W^T_2X_2) \]post

反向传播算法

利用损失函数$F_{loss}(Y, O) $计算出损失,进行参数更新spa

1. 第二层上的参数更新

首先是对于第二层网络上的参数\(w_{ij}\)(包括bias项的参数)
\[ F_loss(Y, O) =F_{loss}(Y, f(W_2^TX_2)) \]
有链式求导法则获得
\[ \frac{\partial\, F_{loss}}{w_{ij}} = \frac{\partial\, F_{loss}}{\partial \,f(W_2^TX_2)}\cdot \frac{\partial \,f(W_2^TX_2)}{\partial\, W_2^TX_2}\cdot \frac{\partial\,W_2^TX_2}{\partial\, w_{ij}} \]
该公式归纳性太高,作一些详细的说明htm

\(w_{ij}\)表示从第\(i\)个节点到第\(j\)个节点的输出,对于损失函数\(F_{loss}\)其实是\(F_{loss}(\overrightarrow{Y}, \overrightarrow{O})\),矩阵函数的实质是计算相应位置的标量,如:
\[ f\begin{equation}\left(\begin{array}{ccc}x_{11} & x_{12} & \cdots & x_{1n} \\ x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots\\ x_{m1} & x_{m2} & \cdots & x_{mn} \\ \end{array} \right) = \left(\begin{array}{ccc}f(x_{11}) & f(x_{12}) & \cdots & f(x_{1n}) \\ f(x_{21}) & f(x_{22}) & \cdots & f(x_{2n}) \\ \vdots & \vdots & \ddots & \vdots\\ f(x_{m1}) & f(x_{m2}) & \cdots & f(x_{mn}) \\ \end{array}\right) \end{equation} \]blog

因此对于\(F_loss(Y, O)\),只须要考虑$o_j $为上的元素进行求导
\[ \frac{\partial \,f_{loss}(y_j,o_j)}{\partial\, o_j} \]
因为\(o_j=f(z_{j})\)是一个标量,这里有
\[ \frac{\partial \,f(z_{j})}{\partial\, z_{j}} \]
\(z_j\)\(W_2\)中第\(j\)列的转置和输入\(X\)的乘积,也就是一个关于\(w_{ij}\)的线性函数因此有
\[ \frac{\partial\, F_{loss}}{w_{ij}} = \frac{\partial \,f_{loss}(y_j,f(z_{j}))}{\partial\, f(z_{j})}\cdot \frac{\partial \,f(z_{j})}{\partial\, z_{j}}\cdot \frac{\partial \,z_{j}}{\partial\, w_{ij}} \]
利用此链式法则,求得对$w_{ij} $的偏导数,而后进行迭代更新便可。io

2. 第一层上的参数更新

第一层上的参数传递的时候跨过了两层网络,因此较为复杂,先分析参数\(w_{ij}\)的正向传播中通过的路径(\(w_{13}\)为例)

1027174-20190904215145354-1019453397.png

由于该参数在传递的过程当中通过了激活函数,因此产生了分路,按照总体的进行链式法则有
\[ \frac{\partial\, F_{loss}}{w_{ij}} = \frac{\partial\, F_{loss}}{\partial \,f(W_2^TX_2)}\cdot \frac{\partial \,f(W_2^TX_2)}{\partial\, W_2^TX_2}\cdot \frac{\partial\,W_2^TX_2}{\partial\, X_2}\cdot \frac{\partial\,X_2}{\partial\, Z_1}\cdot \frac{\partial\,Z_1}{\partial\, w_{ij}} \]
前三个的求导具体写为
\[ \frac{\partial \,f_{loss}(y_1,o_1)}{\partial\, o_1}\cdot \frac{\partial \,o_1}{\partial\, z_4}\cdot \frac{\partial \,z_4}{\partial\, a_3}+\frac{\partial \,f_{loss}(y_2,o_2)}{\partial\, o_2}\cdot \frac{\partial \,o_2}{\partial\, z_5}\cdot \frac{\partial \,z_5}{\partial\, a_3} \]
这样就算出了第二层两个分路上的导数,再把第一层的具体写为
\[ \frac{\partial \,a_3}{\partial\, z_3}\cdot \frac{\partial \,z_3}{\partial\, w_{ij}} \]
因而便获得
\[ \frac{\partial\, F_{loss}}{w_{ij}} =(\frac{\partial \,f_{loss}(y_1,o_1)}{\partial\, o_1}\cdot \frac{\partial \,o_1}{\partial\, z_4}\cdot \frac{\partial \,z_4}{\partial\, a_3}+\frac{\partial \,f_{loss}(y_2,o_2)}{\partial\, o_2}\cdot \frac{\partial \,o_2}{\partial\, z_5}\cdot \frac{\partial \,z_5}{\partial\, a_3})\cdot \frac{\partial \,a_3}{\partial\, z_3}\cdot \frac{\partial \,z_3}{\partial\, w_{ij}} \]
从上面的分析过程能够发现,所谓的反向传播算法,就是在许许多多的函数进行嵌套的一个大函数上进行梯度降低算法。因为神经网络中就是一个个的嵌套函数(全链接层进行线性函数拟合映射,激活函数扮演非线性映射),使得对于网络上的每个参数均可以依靠链式法则进行求导,从而实现梯度降低。

转载于:https://www.cnblogs.com/cniwoq/p/11461676.html