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=12j=1l(y^jkyjk)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=ηEkwhj\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 } } Ekwhj=Eky^jky^jkβjβjwhj=(y^jkyjk)(???)bh=(y^jkyjk)y^jk(1y^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(1f)\displaystyle{ f ^{\prime} = f \left( 1 - f \right) }