【ML】_07_BP(反向传播)


 


【一】 Back Propagation(BP算法,反向传播)

非常重要的,反向传播更新参数的算法,必须掌握


【二】 正向传播(Forward)
  • 求出 a ( k ) ( x ) \bm \red {a^{(k)}(x)} (神经元下半部分), h ( k ) ( x ) \bm \red {h^{(k)}(x)} (神经元上半部分) 和 f ( x ) \bm \red {f(x)}

【三】 BP 求导流程
  • L o s s \bm {Loss} 对 输出层( f ( x ) \bm {f(x)} )求梯度,即上半部分
     
    L o s s f ( x ) = l o g f ( x ) y f ( x ) = e ( y ) f ( x ) y          s . t      y = 1       e ( y ) = [ 1 , 0 , 0 , . . . , 0 ] \bm \red {\frac { \partial Loss } { \partial f ( x ) }} = \frac { \partial -logf(x)y } { \partial f ( x ) }= \frac { - e ( y ) } { f ( x ) y } \;\;\;\; s.t \;\;y=1 \;时 \; e(y)=[ \,1, 0, 0, ..., 0 \,]
  • 对 输出层 ( L + 1 ) (L+1) s o f t m a x \bm {softmax} (分类)求梯度, ( a ) (\bm a) 表示 神经元 的 p r e _ a c t i v a t i o n \bm {pre\_activation} ,即下半部分
     
    L o s s a ( L + 1 ) ( x ) = f ( x ) e ( y )          s . t      y = 1       e ( y ) = [ 1 , 0 , 0 , . . . , 0 ] \bm \red {\frac { \partial Loss } { \partial a ^ { ( L + 1 ) } ( x ) } }= f ( x ) - e ( y )\;\;\;\; s.t \;\;y=1 \;时 \; e(y)=[ \,1, 0, 0, ..., 0 \,]
  • 链式求导法则, ( h ) (\bm h) 表示 神经元 的 p o s t _ a c t i v a t i o n \bm {post\_activation} ,即上半部分
     
    L o s s h ( k ) ( x ) = ( w ( k + 1 ) ) T l o g f ( x ) y a ( k + 1 ) ( x ) \bm \red {\frac { \partial Loss } { \partial h ^ { ( k ) } ( x ) }} = ( w ^ { (k + 1) } ) ^ { T } \cdot \frac { \partial -logf(x)y } { \partial a ^ { (k + 1) } ( x ) }
  • 链式求导法则, ( a ) (\bm a) 表示 神经元 的 p r e _ a c t i v a t i o n \bm {pre\_activation} \bm \odot 表示对应相乘, g \bm {g'} 表示对激活函数进行求导
     
    L o s s a ( k ) ( x ) = L o s s h ( k ) ( x ) g ( a ( k ) ( x ) ) \bm \red {\frac { \partial Loss } { \partial a ^ { ( k ) } ( x ) }}= \frac { \partial Loss } { \partial h ^ { ( k ) } ( x ) } \odot g ^ { \prime } ( a ^ { ( k ) } ( x ) )
  • 链式求导法则,求 L o s s \bm {Loss} w \bm w 的梯度
     
    L o s s w ( k ) = L o s s a ( k ) ( x ) ( h ( k 1 ) ( x ) ) T \bm \red {\frac { \partial Loss } { \partial w ^ { ( k ) } }} = \frac { \partial Loss } { \partial a ^ { ( k ) } ( x ) }\cdot ( h ^ { ( k - 1 ) } ( x ) ) ^ { T }
  • 链式求导法则,求 L o s s \bm {Loss} b \bm b 的梯度
     
    L o s s b ( k ) = L o s s a ( k ) ( x ) \bm \red {\frac { \partial Loss } { \partial b ^ { ( k ) } }} = \frac { \partial Loss } { \partial a ^ { ( k ) } ( x ) }

【四】 Gradient Checking(梯度检测)
  • 用于检查算出的梯度是否合理,给 ε \bm \varepsilon 一个很小的值
     
    f ( x ) = f ( x ) x = f ( x + ε ) f ( x ε ) 2 ε            s . t        ε 0 f ^ { \prime } ( x ) = \frac { \partial f ( x ) } { \partial x } =\frac { f ( x + \varepsilon ) - f ( x - \varepsilon ) } { 2 \varepsilon } \;\;\;\;\; s.t \;\;\; \varepsilon→0
发布了57 篇原创文章 · 获赞 5 · 访问量 2863

猜你喜欢

转载自blog.csdn.net/qq_34330456/article/details/104653479
今日推荐