码迷,mamicode.com
首页 > 编程语言 > 详细

反向传播算法推导

时间:2018-01-30 12:32:07      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:div   table   输出   技术分享   inf   end   分享   amp   prim   

技术分享图片?
神经网络中权重 \(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*} \]

反向传播算法推导

标签:div   table   输出   技术分享   inf   end   分享   amp   prim   

原文地址:https://www.cnblogs.com/nowgood/p/backprop.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!