1. L L 层神经网络的前向传播:
设第 l l 层的权值矩阵为 Wl W l ,输出为 zl z l ,激活值为 al a l , 激活函数都选用 σ σ ,误差函数选择均方误差,则有如下关系:
zl=Wlal−1+blal=σ(zl)J(W,b,x,y)=12||aL−y||22 z l = W l a l − 1 + b l a l = σ ( z l ) J ( W , b , x , y ) = 1 2 | | a L − y | | 2 2
2. L L 层神经网络的反向传播:
对于输出层 L L 层:
∂J(W,b,x,y)∂WL==∂J(W,b,x,y)∂aL∂aL∂zL∂zL∂WL(aL−y)⨀σ′(zL)(aL−1)T(18)(19) (18) ∂ J ( W , b , x , y ) ∂ W L = ∂ J ( W , b , x , y ) ∂ a L ∂ a L ∂ z L ∂ z L ∂ W L (19) = ( a L − y ) ⨀ σ ′ ( z L ) ( a L − 1 ) T
∂J(W,b,x,y)∂bL==∂J(W,b,x,y)∂aL∂aL∂zL∂zL∂bL(aL−y)⨀σ′(zL)(20)(21) (20) ∂ J ( W , b , x , y ) ∂ b L = ∂ J ( W , b , x , y ) ∂ a L ∂ a L ∂ z L ∂ z L ∂ b L (21) = ( a L − y ) ⨀ σ ′ ( z L )
显然 ∂J(W,b,x,y)∂zL=(aL−y)⨀σ′(zL) ∂ J ( W , b , x , y ) ∂ z L = ( a L − y ) ⨀ σ ′ ( z L ) ,设其为 δL δ L
则对于第 l l 层:
δl=∂J∂zl=∂J∂zL∂zL∂zL−1...∂zl+1∂zl δ l = ∂ J ∂ z l = ∂ J ∂ z L ∂ z L ∂ z L − 1 . . . ∂ z l + 1 ∂ z l
δl=δl+1∂zl+1∂zl=(Wl+1)Tδl+1⨀σ′(zl) δ l = δ l + 1 ∂ z l + 1 ∂ z l = ( W l + 1 ) T δ l + 1 ⨀ σ ′ ( z l )
则有:
∂J(W,b,x,y)∂Wl==∂J(W,b,x,y)∂zl∂zl∂Wlδl(al−1)T(22)(23) (22) ∂ J ( W , b , x , y ) ∂ W l = ∂ J ( W , b , x , y ) ∂ z l ∂ z l ∂ W l (23) = δ l ( a l − 1 ) T
∂J(W,b,x,y)∂bl==∂J(W,b,x,y)∂zl∂zl∂blδl(24)(25) (24) ∂ J ( W , b , x , y ) ∂ b l = ∂ J ( W , b , x , y ) ∂ z l ∂ z l ∂ b l (25) = δ l
3.激活函数为sigmoid情况下的收敛速度
注意到反向传播过程中的激活函数导数 σ′(zl) σ ′ ( z l ) 的出现,导致在链式求导法则过程中不断连乘 σ′(zl) σ ′ ( z l ) ,而如果选择 sigmoid s i g m o i d 作为激活函数的时候, 其本身的导数大部分是较小的,导致梯度的消失。
为了改进,选择交叉熵损失函数:
J(W,b,x,y)=−y.ln(aL)−(1−y).ln(1−aL)) J ( W , b , x , y ) = − y . l n ( a L ) − ( 1 − y ) . l n ( 1 − a L ) )
激活函数为 sigmoid s i g m o i d 则, σ′(x)=σ(x)(1−σ(x)) σ ′ ( x ) = σ ( x ) ( 1 − σ ( x ) )
则有:
δl===∂J(W,b,x,y)∂zl−y1aL(aL)(1−aL)+(1−y)11−aL(aL)(1−aL)aL−y(26)(27)(28) (26) δ l = ∂ J ( W , b , x , y ) ∂ z l (27) = − y 1 a L ( a L ) ( 1 − a L ) + ( 1 − y ) 1 1 − a L ( a L ) ( 1 − a L ) (28) = a L − y
求得的表达式中不含有 σ′ σ ′ ,所以在使用sigmoid函数的时候,交叉熵损失函数要优于均方误差函数。
4. softmax s o f t m a x 激活函数与对数似然损失函数
对数似然损失,对于每个样本的对数损失加和:
J(W,b,x,y)=−∑kykln(aLk) J ( W , b , x , y ) = − ∑ k y k l n ( a k L )
对于给定的样本标签 y y 是一个one-hot向量的时候,可以写作 J(W,b,x,y)=−ln(aLi) J ( W , b , x , y ) = − l n ( a i L ) ,其中i为样本真实标签号。
softmax激活函数:
aLi=ezLi∑nLj=1ezLi a i L = e z i L ∑ j = 1 n L e z i L
softmax输出了对应分类的概率,每一个激活值都是(0,1)区间的数字。
此时:
∂J(W,b,x,y)∂zLi===∂J∂aLi∂aLi∂zLi−1aLiezli∑nLj=1ezLj−ezLiezLi(∑nLj=1ezLj)2(aLi−1)(29)(30)(31) (29) ∂ J ( W , b , x , y ) ∂ z i L = ∂ J ∂ a i L ∂ a i L ∂ z i L (30) = − 1 a i L e z i l ∑ j = 1 n L e z j L − e z i L e z i L ( ∑ j = 1 n L e z j L ) 2 (31) = ( a i L − 1 )
∂J(W,b,x,y)∂zLj(j≠i)===aLj∂J∂aLi∂aLi∂zLj−1aLi−ezLjezLi(∑kezLk)2(32)(33)(34) (32) ∂ J ( W , b , x , y ) ∂ z j L ( j ≠ i ) = ∂ J ∂ a i L ∂ a i L ∂ z j L (33) = − 1 a i L − e z j L e z i L ( ∑ k e z k L ) 2 (34) = a j L
即可以得到完整的 ∂J(W,b,x,y)∂zL=δL ∂ J ( W , b , x , y ) ∂ z L = δ L
然后以同2中式子进行反向传播求解对 w,b w , b 的偏导数。
5.DNN的正则化
L2正则化的惩罚系数为 λ λ ,则引入正则化的损失函数为:
J(W,b,x,y)=J′(W,b,x,y)+λ||w||22 J ( W , b , x , y ) = J ′ ( W , b , x , y ) + λ | | w | | 2 2
在更新 W W 权重的时候,引入的正则项使梯度下降的时候以学习率 α α 更新为:
Wl=Wl−α∑δl(al−1)T−αλWl W l = W l − α ∑ δ l ( a l − 1 ) T − α λ W l
或者多通过dropout进行正则化,每批次训练进行神经元随机抑制,每次训练一个全连接的子集。