softmax
- 一组数据通过 softmax 之后,按照各个数字的大小归一化到 (0,1) 的概率,并且所有数字概率之和为 1,因此,数字越大,概率越大。
- 计算偏导非常简单
假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是
Si=ei∑jej S i = e i ∑ j e j
看了很多推导,感觉来时自己亲自的推导最清楚。
推导
X : (N, D) N 为样本个数,D 为每个样本当前的维度
W: (D, C) C 为分类,D 为每个样本当前的维度
y : (N, C) N 为样本数量,y[k][i] = 1 表示第 k 个样本的标签为类别 i。
S : (N, C) S = X.dot(W) S[i, :] 为第 i 个样本的预测向量。
P : (N, C) P 为 S 经过 sotfmax 之后的矩阵,P[i,:] 为第 i 个样本的 softmax
为了方便推导,下面,以 S_{k,i} 表示第 k 个样本第 i 个输出值,P_{k,i} 表示第 k 个样本第 i 个分类的预测分数,
其 softmax 为
Pk,i=eSk,i∑Cm=1eSk,m P k , i = e S k , i ∑ m = 1 C e S k , m
P=eSITe(S) P = e S I T e ( S ) 其中 I 为 K x 1 的向量
- 对于任意的 Pk,i P k , i ,有 Pk,i∈(0,1) P k , i ∈ ( 0 , 1 ) 并且 ∑CiPk,i=1 ∑ i C P k , i = 1 ,因此,可以认为 Pk,i P k , i 是概率
- 在图像分类的训练中,如果 Pk,m P k , m 最大,那么该样本的预测分类为 m。
标量法求导推导
∂Pk,jSk,i=eSk,j∑Cm=1eSk,m∂Sk,i ∂ P k , j S k , i = e S k , j ∑ m = 1 C e S k , m ∂ S k , i
由上可知,对 j = i 和 j≠i j ≠ i 求导方式是不同的
如果 i=j
令 t=eSk,j t = e S k , j
∂Pk,j∂Sk,j=∂Pk,j∂t∂t∂Sk,j ∂ P k , j ∂ S k , j = ∂ P k , j ∂ t ∂ t ∂ S k , j
其中
由于 Pk,j=tt+∑Cm≠jeSk,m P k , j = t t + ∑ m ≠ j C e S k , m
- ∂Pk,j∂t=1t+∑Cm≠ieSk,m−t(t+∑Cm≠ieSk,m)2 ∂ P k , j ∂ t = 1 t + ∑ m ≠ i C e S k , m − t ( t + ∑ m ≠ i C e S k , m ) 2
- ∂t∂Sk,j=t ∂ t ∂ S k , j = t
因此, ∂Pk,jSk,j=tt+∑Cm≠ieSk,m−t2(t+∑Cm≠ieSk,m)2=Pk,j−P2k,j ∂ P k , j S k , j = t t + ∑ m ≠ i C e S k , m − t 2 ( t + ∑ m ≠ i C e S k , m ) 2 = P k , j − P k , j 2
如果 i≠j i ≠ j
∂Pk,jSk,i=eSk,j(−eSk,i(∑Cm=1eSk,m)2)=−Pk,jPk,i ∂ P k , j S k , i = e S k , j ( − e S k , i ( ∑ m = 1 C e S k , m ) 2 ) = − P k , j P k , i
向量法求导推导
S : 1 x K
P : 1 x K
∂P∂S=1ITeS∂eS∂S+1ITeS∂S(eS)T=diag(eS)ITeS−1(ITeS)2∂ITeS∂S(eS)T=diag(eS)ITeS−1(ITeS)2diag(eS)I(eS)T=diag(eS)ITeS−1(ITeS)2eS(eS)T=diag(eSITeS)−eSITeS(eS)TITeS=diag(softmax(S))−softmax(S)softmax(S)T ∂ P ∂ S = 1 I T e S ∂ e S ∂ S + 1 I T e S ∂ S ( e S ) T = d i a g ( e S ) I T e S − 1 ( I T e S ) 2 ∂ I T e S ∂ S ( e S ) T = d i a g ( e S ) I T e S − 1 ( I T e S ) 2 d i a g ( e S ) I ( e S ) T = d i a g ( e S ) I T e S − 1 ( I T e S ) 2 e S ( e S ) T = d i a g ( e S I T e S ) − e S I T e S ( e S ) T I T e S = d i a g ( s o f t m a x ( S ) ) − s o f t m a x ( S ) s o f t m a x ( S ) T
其中 diag(eS)I=eS d i a g ( e S ) I = e S
Softmax loss
L=1N∑NkLk+λR(W) L = 1 N ∑ k N L k + λ R ( W )
Lk=−∑Ci=1yilogPk,i L k = − ∑ i = 1 C y i l o g P k , i
其中 yi y i 为某个分类的真实标签,比如对于一个 3 分类的图片分类,样本 Xk, X k , 有一个标签,假设为 yk,=[yk,1,yk,2,yk,3]=[0,1,0] y k , = [ y k , 1 , y k , 2 , y k , 3 ] = [ 0 , 1 , 0 ] ,该样本 X_k 通过卷积网络和 softmax 之后得到 P=[Pk,1,Pk,2,Pk,3] P = [ P k , 1 , P k , 2 , P k , 3 ] ,那么,L 就等于
Lk=−(yk,1logPk,1+yk,2logPk,2+yk,3logPk,3) L k = − ( y k , 1 l o g P k , 1 + y k , 2 l o g P k , 2 + y k , 3 l o g P k , 3 )
由于 y 中只有一个为 1 其余都为 0,因此,实际
Lk=−logPk,2 L k = − l o g P k , 2
因此, Pk,2 P k , 2 越大, Lk L k 越小,也即预测值 Pk P k 与标签对应的值越高,损失越低。
Softmax Loss 推导
∂L∂S=[∂L∂S1,∂L∂S2⋯∂L∂SC] ∂ L ∂ S = [ ∂ L ∂ S 1 , ∂ L ∂ S 2 ⋯ ∂ L ∂ S C ]
对于
∂L∂Si=1N∑NkLk+λR(w)∂Si ∂ L ∂ S i = 1 N ∑ k N L k + λ R ( w ) ∂ S i
关键在于求解
∂Lk∂Sk,i=∂(−∑Cjyk,jlogPk,j)∂Sk,i=−∂(∑Cjyk,jlogeSk,j∑CmeSk,m)∂Sk,i=−∂(∑Cj(yk,jSk,j−yk,jlog(∑CmeSk,m)))∂Sk,i ∂ L k ∂ S k , i = ∂ ( − ∑ j C y k , j l o g P k , j ) ∂ S k , i = − ∂ ( ∑ j C y k , j l o g e S k , j ∑ m C e S k , m ) ∂ S k , i = − ∂ ( ∑ j C ( y k , j S k , j − y k , j l o g ( ∑ m C e S k , m ) ) ) ∂ S k , i
∂Lk,j∂Sk,i=∂(−yk,jlogPk,j)∂Sk,i=−∂(yk,jlogeSk,j∑CmeSk,m)∂Sk,i=−∂(yk,jSk,j−yk,jlog(∑CmeSk,m))∂Sk,i ∂ L k , j ∂ S k , i = ∂ ( − y k , j l o g P k , j ) ∂ S k , i = − ∂ ( y k , j l o g e S k , j ∑ m C e S k , m ) ∂ S k , i = − ∂ ( y k , j S k , j − y k , j l o g ( ∑ m C e S k , m ) ) ∂ S k , i
当 j = i 时,
∂Lk,j∂Sk,i=−yk,i(1−Pk,i) ∂ L k , j ∂ S k , i = − y k , i ( 1 − P k , i )
当 j≠i j ≠ i 时
∂Jk,j∂Sk,i=yk,jPk,i ∂ J k , j ∂ S k , i = y k , j P k , i
所以 ∂Lk∂Sk,i=−yk,i(1−Pk,i)+∑Cm≠iyk,mPk,m=−yk,i+∑Cmyk,mPk,m ∂ L k ∂ S k , i = − y k , i ( 1 − P k , i ) + ∑ m ≠ i C y k , m P k , m = − y k , i + ∑ m C y k , m P k , m
当 Sk,i S k , i 对应的 yk,i=1 y k , i = 1 时, ∂Lk∂Sk,i=Pk,i−1 ∂ L k ∂ S k , i = P k , i − 1
当 Sk,i S k , i 对应的 yk,i y k , i = 0 时, ∂Lk∂Sk,i=Pk,t ∂ L k ∂ S k , i = P k , t 此时 yk,t=1 y k , t = 1
因此 ∂Lk∂Sk=Pk−yk ∂ L k ∂ S k = P k − y k
∂Lk∂W=∂Lk∂SkSk∂W=(Pk−yk)XT ∂ L k ∂ W = ∂ L k ∂ S k S k ∂ W = ( P k − y k ) X T
举例:
假设一个 5 分类任务,一张图像经过 softmax 层后得到的概率向量 p 是 [0.1,0.2,0.25,0.4,0.05],真实标签 y 是[0,0,1,0,0],那么损失回传时该层得到的梯度就是 p-y=[0.1,0.2,-0.75,0.4,0.05]。这个梯度就指导网络在下一次forward 的时候更新该层的权重参数。
cross entropy
L=−∑TjyjlogPj L = − ∑ j T y j l o g P j
因此,cross entropy 与 softmax loss 是一样的
以上就是关于 softmax 的一些理解,希望对你有帮助。