反向传播算法推导

SimonSsAlgo 2018-05-15

反向传播算法推导
神经网络中权重 \(w^{(l)}_{ij}\) 的改变将影响到一个个下一层,到达输出层,最终影响代价函数
反向传播算法推导

\(\color{red}{公式推导符号说明}\)

符号说明
\(n_l\)网络层数
\(y_j\)输出层第 \(j\) 类 label
\(S_l\)\(l\) 层神经元个数(不包括偏置)
\(g(x)\)激励函数
\(w^{(l)}_{ij}\)\(l\) 层第 \(j\) 个单元与第 \(l+1\) 层第 \(i\) 个单元之间的链接参数
\(b^{(l)}_i\)\(l+1\) 层第 \(i\) 个单元的偏置
\(z^{(l)}_i\)\(l\) 层第 \(i\) 个单元的输入加权和(包含偏置)
\(a^{(l)}_i\)\(l\) 层第 \(i\) 个单元的激活值(输出值)
\(\delta^{(l)}_i\)\(l\) 层第 \(i\) 个单元的局部梯度(或称为残差)

\(\color{red}{基本公式}\)

\[ \begin{align*} z^{(l)}_i &= b^{(l-1)}_i + \sum^{S_l}_{j=1}{w^{(l-1)}_{ij}a^{(l-1)}_i} \tag{1} \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \\ g(x) &= \frac{1}{1 + e^{-x}} \tag{2}\\ a^{(l)}_i &= g(z^{(l)}_i) \tag{3} \\ J(\theta) &= \frac12{{\sum^{S_l}_{j=1}\big ({y_j - a^{(l)}_j}}}\big)^2 \tag{4}\\ \delta^{(l)}_i &=\frac{\partial{J(\theta)}}{\partial{z^{(l)}_i}} \tag{5} \\ \\ \delta ^{ (n_{ l }) }_{ i }&=\frac { \partial { J(\theta ) } }{ \partial { z^{ (n_{ l }) }_{ i } } } \\ &=\frac { 1 }{ 2 } \frac { \partial { } }{ \partial { z^{ (n_{ l }) }_{ i } } } \sum _{ j=1 }^{ S_{ n_l } } \left( y_{ j }-a^{ (n_{ l }) }_{ j } \right) ^{ 2 }\\ &=\frac { 1 }{ 2 } \frac { \partial { } }{ \partial { z^{ (n_{ l }) }_{ i } } } \sum _{ j=1 }^{ S_{ n_l } } \left( y_{ j }-g(z^{ (n_{ l }) }_{ j }) \right) ^{ 2 }\\ &=\frac { 1 }{ 2 } \frac { \partial { } }{ \partial { z^{ (n_{ l }) }_{ i } } } \left( y_{ i }-g(z^{ (n_{ l }) }_{ i }) \right) ^{ 2 }\\ &=-\left( y_{ i }-a^{ (n_{ l }) }_{ i } \right) g\prime (z^{ (n_{ l }) }_{ i })\\ \\\delta ^{ (l) }_{ i }&=\frac { \partial { J(\theta ) } }{ \partial { z^{ (l) }_{ i } } } \\ &=\sum _{ j=1 }^{ S_{ l+1 } } \frac { \partial { J(\theta ) } }{ \partial { z^{ (l+1) }_{ j } } } \frac { \partial { z^{ (l+1) }_{ j } } }{ \partial { z^{ (l) }_{ i } } } \\ &=\sum _{ j=1 }^{ S_{ l+1 } } \delta ^{ (l) }_{ i }\frac { \partial { z^{ (l+1) }_{ j } } }{ \partial { z^{ (l) }_{ i } } } \\ &=\sum _{ j=1 }^{ S_{ l+1 } } \delta ^{ (l) }_{ i }\frac { \partial { } }{ \partial { z^{ (l) }_{ i } } } \left( b^{ (l) }_{ i }+\sum _{ k=1 }^{ S_{ l } } w^{ (l) }_{ jk }a^{ (l) }_{ k }) \right) \\ &=\sum _{ j=1 }^{ S_{ l+1 } } \delta ^{ (l) }_{ i }\frac { \partial { } }{ \partial { z^{ (l) }_{ i } } } \left( b^{ (l) }_{ i }+\sum _{ k=1 }^{ S_{ l } } w^{ (l) }_{ jk }g(z^{ (l) }_{ k }) \right) \\ &=\sum _{ j=1 }^{ S_{ l+1 } } \delta ^{ (l) }_{ i }\frac { \partial { } }{ \partial { z^{ (l) }_{ i } } } \left( w^{ (l) }_{ ji } g(z^{ (l) }_{ i }) \right) \\&=\sum _{ j=1 }^{ S_{ l+1 } } \delta ^{ (l) }_{ i }\left( w^{ (l) }_{ ji }g\prime (z^{ (l) }_{ i }) \right) \\ &=g\prime (z^{ (l) }_{ i })\sum _{ j=1 }^{ S_{ l+1 } } \delta ^{ (l) }_{ i }w^{ (l) }_{ ji }\\\\\frac { \partial { J(\theta ) } }{ \partial { w^{ (l) }_{ ij } } } &=\frac { \partial { J(\theta ) } }{ \partial { z^{ (l+1) }_{ i } } } \frac { \partial { z^{ (l+1) }_{ i } } }{ \partial { w^{ (l) }_{ ij } } } \\ &=\delta ^{ (l+1) }_{ i }\frac { \partial { z^{ (l+1) }_{ j } } }{ \partial { w^{ (l) }_{ ij } } } \\ &=\delta ^{ (l+1) }_{ i }\frac { \partial { } }{ \partial { w^{ (l) }_{ ij } } } \left( b^{ (l) }_{ i }+\sum _{ k=1 }^{ S_{ l } } w^{ (l) }_{ ik }a^{ (l) }_{ k }) \right) \\ &=\delta ^{ (l+1) }_{ i }a^{ (l) }_{ j }\\\frac { \partial { J(\theta ) } }{ \partial { b^{ (l) }_{ i } } } &=\delta ^{ (l+1) }_{ i }\end{align*}\]

相关推荐