Skip to content

神经网络

反向传播算法

  • 输入层 x=(x1,…,xd)\displaystyle{ \mathbf{ x } = \left( x _{ 1 } , \ldots , x _{ d } \right) }
  • 隐藏层 b=(b1,…,bq)\displaystyle{ \mathbf{ b } = \left( b _{ 1 } , \ldots , b _{ q } \right) }
  • 输出层 y^=(y1,…,yl)\displaystyle{ \hat{ \mathbf{ y } } = \left( y _{ 1 } , \ldots , y _{ l } \right) }

训练数据 (xk,yk)\displaystyle{ \left( \mathbf{ x } _{ k } , \mathbf{ y } _{ k } \right) },神经网络输出 y^k=(y^1k,…,y^lk)\displaystyle{ \hat{ \mathbf{ y } } _{ k } = \left( \hat{ y } _{ 1 } ^{ k } , \ldots , \hat{ y } _{ l } ^{ k } \right) }

y^j=f(βj−θj)\displaystyle{ \hat{ y } _{ j } = f \left( \beta _{ j } - \theta _{ j } \right) }

为了求导方便,设定均方误差 Ek=12∑j=1l(y^jk−yjk)2\displaystyle{ E _{ k } = \frac{ 1 }{ 2 } \sum _{ j = 1 } ^{ l } \left( \hat{ y } _{ j } ^{ k } - y _{ j } ^{ k } \right) ^{ 2 } },前面有一个 12\displaystyle{ \frac{ 1 }{ 2 } }

参数调整的量为 Δwhj=−η∂Ek∂whj\displaystyle{ \Delta w _{ h j } = - \eta \frac{ \partial E _{ k } }{ \partial w _{ h j } } },η\displaystyle{ \eta } 是学习率,是人提供的,那么就要推导右侧的部分

βj=∑h=1qwhjbh\displaystyle{ \beta _{ j } = \sum _{ h = 1 } ^{ q } w _{ h j } b _{ h } } ∂Ek∂whj=∂Ek∂y^jk⋅∂y^jk∂βj⋅∂βj∂whj=(y^jk−yjk)⋅(???)⋅bh=(y^jk−yjk)⋅y^jk(1−y^jk)⋅bh\displaystyle{ \begin{aligned}\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 } } \\ & = \left( \hat{ y } _{ j } ^{ k } - y _{ j } ^{ k } \right) \cdot \left( ??? \right) \cdot b _{ h } \\ & = \left( \hat{ y } _{ j } ^{ k } - y _{ j } ^{ k } \right) \cdot \hat{ y } _{ j } ^{ k } \left( 1 - \hat{ y } _{ j } ^{ k } \right) \cdot b _{ h }\end{aligned} }

f\displaystyle{ f } 为 sigmoid 函数,可以求出其导数 f′=f(1−f)\displaystyle{ f ^{\prime} = f \left( 1 - f \right) }