cs231n assignment1 Q4 softmax梯度推导

本文推导了斯坦福课程cs231n(2017)assignment1 Q4的反向传播梯度

网络结构为
输入–全连接层–ReLU–全连接层–softmax
XH=XW1+b1R=max(0,H)F=RW2+b2softmax X − H = X W 1 + b 1 − R = max ( 0 , H ) − F = R W 2 + b 2 − softmax
其中, X X 为输入,每一行表示一个样本, W1W2 W 1 , W 2 分别为第一和第二连接层的权重, b1b2 b 1 , b 2 分别为第一和第二连接层的偏置。 F F 为第二连接层的输出(score)。
首先定义损失函数,对于每个训练样本,损失函数定义如下

Li=log(eFi,yijeFi,j). L i = − log ⁡ ( e F i , y i ∑ j e F i , j ) .

总的损失函数为所有样本损失函数的均值加上正则项
L=1NiLi+λ(klW21kl+klW22kl). L = 1 N ∑ i L i + λ ( ∑ k ∑ l W 1 k l 2 + ∑ k ∑ l W 2 k l 2 ) .


pi,k=eFi,kjeFi,j. p i , k = e F i , k ∑ j e F i , j .


Li=log(pi,yi). L i = − log ⁡ ( p i , y i ) .

Li L i 求导,得
LiFj,k={pj,k1[yi==k],0,j=i,ji.(138) (138) ∂ L i ∂ F j , k = { p j , k − 1 ⋅ [ y i == k ] , j = i , 0 , j ≠ i .

写成矩阵形式,我们得到
LF=1N(PM). ∂ L ∂ F = 1 N ( P − M ) .

其中 P(i,j)=pi,j,M P ( i , j ) = p i , j , M 为mask矩阵,即第 i i 行的 yi y i 个元素为1,其余为0。Python代码如下

dscores = probs
dscores[range(num_examples),y] -= 1
dscores /= num_examples

接下来要算 FW2 ∂ F ∂ W 2 。因为 F,W2 F , W 2 均为矩阵,该偏导应该是一个四维向量,但包含大量0,展开计算后可得

Fa,bW2i,j={Ra,i,0,j=b,jb.(134) (134) ∂ F a , b ∂ W 2 i , j = { R a , i , j = b , 0 , j ≠ b .

(这一步如果不清楚的话把 Fa,b F a , b 展开来写就好,参见 Vector, Matrix, and Tensor Derivatives)
我们通过计算分量来探究 LW2 ∂ L ∂ W 2 的矩阵计算表达式。
LW2m,n=i,jLFi,jFi,jW2m,n+2λW2m,n=iLFi,nFi,nW2m,n+2λW2m,n=iLFi,nRi,m+2λW2m,n. ∂ L ∂ W 2 m , n = ∑ i , j ∂ L ∂ F i , j ∂ F i , j ∂ W 2 m , n + 2 λ W 2 m , n = ∑ i ∂ L ∂ F i , n ∂ F i , n ∂ W 2 m , n + 2 λ W 2 m , n = ∑ i ∂ L ∂ F i , n R i , m + 2 λ W 2 m , n .

上式中的 Σ Σ 求和项可看作矩阵 RT R T 的第 m m 行乘矩阵 LF ∂ L ∂ F 的第 n n 列,故矩阵 LW2 ∂ L ∂ W 2 可表示为
LW2=RTLF+2λW2 ∂ L ∂ W 2 = R T ∂ L ∂ F + 2 λ W 2

类似地,我们可以求得 b2 b 2 的导数,注意这里 b2 b 2 应该是一个矩阵而非向量(因为要和矩阵 RW2 R W 2 相加)。
Lb2m,n=i,jLFi,jFi,jb2m,n=LFm,n. ∂ L ∂ b 2 m , n = ∑ i , j ∂ L ∂ F i , j ∂ F i , j ∂ b 2 m , n = ∂ L ∂ F m , n .

这里得到的结果和 cs231n官方笔记中得到的不同,我没有想明白这一步。笔记中的结果如下代码所示

db = np.sum(dscores, axis=0, keepdims=True)

完全类似于 LW2 ∂ L ∂ W 2 的推导过程,我们可以得到矩阵 R R 的梯度

LR=LFWT2. ∂ L ∂ R = ∂ L ∂ F W 2 T .

注意到 H=XW1+b1 H = X W 1 + b 1 R=max(0,H) R = max ( 0 , H ) ,我们可以进一步得到 W1 W 1 的梯度
LH=max(0,LR),LW1=XTLH+2λW1. ∂ L ∂ H = max ( 0 , ∂ L ∂ R ) , ∂ L ∂ W 1 = X T ∂ L ∂ H + 2 λ W 1 .

参考资料:
cs231n官方笔记
cs231n - assignment1 - softmax 梯度推导
Vector, Matrix, and Tensor Derivatives

你可能感兴趣的:(cs231n assignment1 Q4 softmax梯度推导)