SoftMax 推导

softmax

  1. 一组数据通过 softmax 之后,按照各个数字的大小归一化到 (0,1) 的概率,并且所有数字概率之和为 1,因此,数字越大,概率越大。
  2. 计算偏导非常简单

假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是

Si=eijej 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,iCm=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 的向量

  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 是概率
  2. 在图像分类的训练中,如果 Pk,m P k , m 最大,那么该样本的预测分类为 m。

标量法求导推导

Pk,jSk,i=eSk,jCm=1eSk,mSk,i ∂ P k , j S k , i = e S k , j ∑ m = 1 C e S k , m ∂ S k , i

由上可知,对 j = i 和 ji j ≠ i 求导方式是不同的

如果 i=j

t=eSk,j t = e S k , j

Pk,jSk,j=Pk,jttSk,j ∂ P k , j ∂ S k , j = ∂ P k , j ∂ t ∂ t ∂ S k , j

其中

由于 Pk,j=tt+CmjeSk,m P k , j = t t + ∑ m ≠ j C e S k , m

  1. Pk,jt=1t+CmieSk,mt(t+CmieSk,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
  2. tSk,j=t ∂ t ∂ S k , j = t

因此, Pk,jSk,j=tt+CmieSk,mt2(t+CmieSk,m)2=Pk,jP2k,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

如果 ij 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

PS=1ITeSeSS+1ITeSS(eS)T=diag(eS)ITeS1(ITeS)2ITeSS(eS)T=diag(eS)ITeS1(ITeS)2diag(eS)I(eS)T=diag(eS)ITeS1(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=1NNkLk+λ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 推导

LS=[LS1,LS2LSC] ∂ L ∂ S = [ ∂ L ∂ S 1 , ∂ L ∂ S 2 ⋯ ∂ L ∂ S C ]

对于

LSi=1NNkLk+λR(w)Si ∂ L ∂ S i = 1 N ∑ k N L k + λ R ( w ) ∂ S i

关键在于求解

LkSk,i=(Cjyk,jlogPk,j)Sk,i=(Cjyk,jlogeSk,jCmeSk,m)Sk,i=(Cj(yk,jSk,jyk,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,jSk,i=(yk,jlogPk,j)Sk,i=(yk,jlogeSk,jCmeSk,m)Sk,i=(yk,jSk,jyk,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,jSk,i=yk,i(1Pk,i) ∂ L k , j ∂ S k , i = − y k , i ( 1 − P k , i )

ji j ≠ i

Jk,jSk,i=yk,jPk,i ∂ J k , j ∂ S k , i = y k , j P k , i

所以 LkSk,i=yk,i(1Pk,i)+Cmiyk,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 时, LkSk,i=Pk,i1 ∂ L k ∂ S k , i = P k , i − 1

Sk,i S k , i 对应的 yk,i y k , i = 0 时, LkSk,i=Pk,t ∂ L k ∂ S k , i = P k , t 此时 yk,t=1 y k , t = 1

因此 LkSk=Pkyk ∂ L k ∂ S k = P k − y k

LkW=LkSkSkW=(Pkyk)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 的一些理解,希望对你有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值