1、单个神经元
1.1、单个神经元的表示方法:
这代表一行数据的处理,即 x1,x2,x3 x 1 , x 2 , x 3 属于一个样本的三个维度,输出为这个样本的激活函数的值。
1.2、激励函数几种不同形式:
- sigmoid函数
f(z)=11+exp(−z) f ( z ) = 1 1 + exp ( − z )
- sigmoid函数的导数:
f′(z)=f(z)(1−f(z)) f ′ ( z ) = f ( z ) ( 1 − f ( z ) )
- sigmoid函数的导数:
- tanh函数
f(z)=tanh(z)=ez−e−zez+e−z f ( z ) = tanh ( z ) = e z − e − z e z + e − z
- tanh函数的导数:
f′(z)=1−(f(z))2 f ′ ( z ) = 1 − ( f ( z ) ) 2
- tanh函数的导数:
rectified linear activation function
f(z)=max(0,x) f ( z ) = max ( 0 , x )- 导数为:
f′(z)={01z<=0z>0 f ′ ( z ) = { 0 z <= 0 1 z > 0
以下是这几种损失函数的函数图。
2、神经网络模型
令 nl n l 表示这个神经网络的层数,这个神经网络共有3层,及 nl=3 n l = 3 。
Ll L l 是输入层, Lnl L n l 是输出层,中间为隐含层。
上图中神经网络的参数为:
W(l)ij W i j ( l ) 表示 l l 层到层的权值矩阵或向量, i i 代表层, j j 代表层的索引。
W(1)∈R3×3 W ( 1 ) ∈ ℜ 3 × 3
W(2)∈R1×3 W ( 2 ) ∈ ℜ 1 × 3
a(l)i a i ( l ) 表示第 i i 的激活函数的结果
对于输入层即 l=1 l = 1 , a(1)i=xi a i ( 1 ) = x i , i表示一个样本的第i列 i 表 示 一 个 样 本 的 第 i 列
递推公式为:
从输入层到输出层的计算详细过程如下:
输出层为多层时,神经网络的示意图如下:
3、backpropagation algorithm
每个样本对应的损失为:
整体的损失函数加上对权重系数的正则化
反向传播的算法过程
1、正向传播,计算每层的激励函数值
2、利用y值和激励函数值计算输出层的’error term’
3、利用初值W,计算隐含层的‘error term’
4、计算每个样本的偏导。
5、计算整体的偏导
6、梯度下降更新 W,b W , b
梯度下降更新 W,b W , b
∂∂W(l)ijJ(W,b)∂∂b(l)iJ(W,b)=⎡⎣1m∑i=1m∂∂W(l)ijJ(W,b;x(i),y(i))⎤⎦+λW(l)ij=1m∑i=1m∂∂b(l)iJ(W,b;x(i),y(i))(15)(16) (15) ∂ ∂ W i j ( l ) J ( W , b ) = [ 1 m ∑ i = 1 m ∂ ∂ W i j ( l ) J ( W , b ; x ( i ) , y ( i ) ) ] + λ W i j ( l ) (16) ∂ ∂ b i ( l ) J ( W , b ) = 1 m ∑ i = 1 m ∂ ∂ b i ( l ) J ( W , b ; x ( i ) , y ( i ) )
∂J(W,b;x,y)∂Wlji===∂J(W,b;x,y)∂z(l+1)j⋅∂z(l+1)j∂Wlji∂J(W,b;x,y)∂z(l+1)j⋅∂∑ni=1W(l)jiali+bli∂Wlji∂J(W,b;x,y)∂z(l+1)j⋅ali(17)(18)(19) (17) ∂ J ( W , b ; x , y ) ∂ W j i l = ∂ J ( W , b ; x , y ) ∂ z j ( l + 1 ) ⋅ ∂ z j ( l + 1 ) ∂ W j i l (18) = ∂ J ( W , b ; x , y ) ∂ z j ( l + 1 ) ⋅ ∂ ∑ i = 1 n W j i ( l ) a i l + b i l ∂ W j i l (19) = ∂ J ( W , b ; x , y ) ∂ z j ( l + 1 ) ⋅ a i l
δ(nl)j=====∂J(W,b;x,y)∂z(nl)j∂12||y−hW,b||2∂z(nl)j∂12||y−a(nl)j||2∂z(nl)j−(y−a(nl)j)∂a(nl)j∂z(nl)j−(y−a(nl)j)f′(znli)(20)(21)(22)(23)(24) (20) δ j ( n l ) = ∂ J ( W , b ; x , y ) ∂ z j ( n l ) (21) = ∂ 1 2 | | y − h W , b | | 2 ∂ z j ( n l ) (22) = ∂ 1 2 | | y − a j ( n l ) | | 2 ∂ z j ( n l ) (23) = − ( y − a j ( n l ) ) ∂ a j ( n l ) ∂ z j ( n l ) (24) = − ( y − a j ( n l ) ) f ′ ( z i n l )
∂J(W,b;x,y)∂Wlji==−(y−a(nl)j)f′(znli)⋅aliδ(nl)j⋅ali(25)(26) (25) ∂ J ( W , b ; x , y ) ∂ W j i l = − ( y − a j ( n l ) ) f ′ ( z i n l ) ⋅ a i l (26) = δ j ( n l ) ⋅ a i l
对于隐含层,其误差项通过其后面一层传播而来,对于第L层,相当于L+1 层有 sl+1项误差求和而来 s l + 1 项 误 差 求 和 而 来
δli======∂J(W,b;x,y)∂zli∑j=1Sl+1∂J(W,b;x,y)∂zl+1j∂zl+1j∂zlj∑j=1Sl+1∂J(W,b;x,y)∂zl+1j∂(∑ni=1Wljiali+bli)∂zlj∑j=1Sl+1∂J(W,b;x,y)∂zl+1j∂(∑ni=1Wljif(zli)+bli)∂zlj∑j=1Sl+1∂J(W,b;x,y)∂zl+1jWljif′(zli)∑j=1Sl+1δ(l+1)jWljif′(zli)(27)(28)(29)(30)(31)(32) (27) δ i l = ∂ J ( W , b ; x , y ) ∂ z i l (28) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 ∂ z j l + 1 ∂ z j l (29) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 ∂ ( ∑ i = 1 n W j i l a i l + b i l ) ∂ z j l (30) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 ∂ ( ∑ i = 1 n W j i l f ( z i l ) + b i l ) ∂ z j l (31) = ∑ j = 1 S l + 1 ∂ J ( W , b ; x , y ) ∂ z j l + 1 W j i l f ′ ( z i l ) (32) = ∑ j = 1 S l + 1 δ j ( l + 1 ) W j i l f ′ ( z i l )
4、softmax函数及其求导
输出层激励函数为softmax:
交叉熵代价函数为:
关于W和b的偏导为: 关 于 W 和 b 的 偏 导 为 :
- 公式推导过程
softmax函数公式:
aLj=ezLj∑kezLk a j L = e z j L ∑ k e z k L
其中
if j∂aj∂zj=====i∂∂zi(ezj∑kezk)(ezj)′∑kezk−ezj ezj(∑kezk)2ezj∑kezk−ezj∑kezk⋅ezj∑kezkaj(1−aj)(33)(34)(35)(36)(37) (33) i f j = i (34) ∂ a j ∂ z j = ∂ ∂ z i ( e z j ∑ k e z k ) (35) = ( e z j ) ′ ∑ k e z k − e z j e z j ( ∑ k e z k ) 2 (36) = e z j ∑ k e z k − e z j ∑ k e z k ⋅ e z j ∑ k e z k (37) = a j ( 1 − a j )
if j∂aj∂zj≠i====∂∂zi(ezj∑kezk)0∑kezk−ezj ezi(∑kezk)2−ezj∑kezk⋅ezi∑kezk−ajai(38)(39)(40)(41)(42) (38) i f j ≠ i (39) ∂ a j ∂ z j = ∂ ∂ z i ( e z j ∑ k e z k ) (40) = 0 ∑ k e z k − e z j e z i ( ∑ k e z k ) 2 (41) = − e z j ∑ k e z k ⋅ e z i ∑ k e z k (42) = − a j a i
交叉熵代价函数为:
C=−∑kyk log ak C = − ∑ k y k l o g a k
∂C∂bj=======∂C∂zj⋅∂zj∂bj∂C∂zj⋅∂(wjkak+bj)∂bj∂∂zj(−∑kyk log ak)−∑kyk1ak⋅∂ak∂zj−yj1ajaj(1−aj)−∑k≠jyk1ak(−ajak)−yj+aj∑kykaj−yj(43)(44)(45)(46)(47)(48)(49) (43) ∂ C ∂ b j = ∂ C ∂ z j ⋅ ∂ z j ∂ b j (44) = ∂ C ∂ z j ⋅ ∂ ( w j k a k + b j ) ∂ b j (45) = ∂ ∂ z j ( − ∑ k y k l o g a k ) (46) = − ∑ k y k 1 a k ⋅ ∂ a k ∂ z j (47) = − y j 1 a j a j ( 1 − a j ) − ∑ k ≠ j y k 1 a k ( − a j a k ) (48) = − y j + a j ∑ k y k (49) = a j − y j
∂C∂wjk=aL−1k(aLj−yj) ∂ C ∂ w j k = a k L − 1 ( a j L − y j )
参考文献
http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks/