线性模型篇之softmax数学公式推导

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer
公众号:搜索与推荐Wiki

个人网站:http://thinkgamer.github.io


Softmax回归也称多项(multinomial)或者多类(multi-class)的Logistic回归,是Logistic回归在多类分类问题上的推广。和逻辑回归一样属于线性模型。

SoftMax回归简介

对于多类问题,类别标签
y ∈ 1 , 2 , 3 , . . . , C y \in {1,2,3,...,C} y1,2,3,...,C
可以用C个取值,给定一个样本x,softmax回归预测的是属于类别c的概率为(公式-1):
p ( y = c ∣ x ) = s o f t m a x ( w c T x ) = e x p ( w c T x ) ∑ c = 1 C e x p ( w c T x ) p(y=c|x)=softmax(w_c^Tx)=\frac{exp(w_c^Tx)}{\sum_{c=1}^{C}exp(w_c^Tx)} p(y=cx)=softmax(wcTx)=c=1Cexp(wcTx)exp(wcTx)
其中w_c是第c类的权重向量。

softmax回归的决策函数可以表示为(公式-2):
y ^ = a r g m a x C c = 1   p ( y = c ∣ x ) = a r g m a x C c = 1   w c T x \hat{y}= \underset{c=1}{ \overset{C}{arg max} } \ p(y=c|x) =\underset{c=1}{ \overset{C}{arg max} } \ w_c^T x y^=c=1argmaxC p(y=cx)=c=1argmaxC wcTx


softMax与Logistic回归的关系:

当类别个C=2时,softMax回归的决策函数为(公式-3):
y ^ = a r g m a x y ∈ 0 , 1   w y T x = I ( w 1 T x − w 0 T x > 0 ) = I ( ( w 1 − w 0 ) T x > 0 ) \hat{y} = \underset{y\in {0,1}}{ arg max } \ w_y^Tx=I(w_1^Tx - w_0^Tx >0 )=I((w_1 - w_0)^Tx >0 ) y^=y0,1argmax wyTx=I(w1Txw0Tx>0)=I((w1w0)Tx>0)
其中I(.)是指示函数,对比二分类决策函数(公式-4)
g ( f ( x , w ) ) = s g n ( f ( x , w ) ) = { + 1  if  f ( x , w ) > 0 − 1  if  f ( x , w ) < 0 g(f(x,w))=sgn(f(x,w))=\begin{cases} & +1 \text{ if } f(x,w)>0 \\ & -1 \text{ if } f(x,w)<0 \end{cases} g(f(x,w))=sgn(f(x,w))={+1 if f(x,w)>01 if f(x,w)<0
其中sgn表示符号函数(sign function),可以发现两类分类中的权重向量w=w1-w0


向量表示:

公式-1用向量形式可以写为(公式-5)
y ^ = s o f t m a x ( W T x ) = e r p ( W T x ) 1 T e x p ( W T x ) \hat{y}=softmax(W^Tx)=\frac{erp(W^Tx)}{1^Texp(W^Tx)} y^=softmax(WTx)=1Texp(WTx)erp(WTx)
其中W=[w_1,w_2,…,w_C]是由C个类的权重向量组成的矩阵,1为全1的向量,
y ^ ∈ R C \hat{y}\in R^C y^RC
为所有类别的预测条件概率组成的向量,第c维的值是第c类的预测条件概率。

参数学习

给定N个训练样本{(x^n, y^n)},n<=N,softmax回归使用交叉熵损失函数来学习最优的参数矩阵W。

这里用C维的one-hot向量
y ∈ 0 , 1 C y \in {0,1} ^C y0,1C
来表示类别标签,其向量表示为(公式-6):
y = [ I ( 1 = c ) , I ( 2 = c ) , . . . , I ( C = c ) ] T y = [I(1=c),I(2=c),...,I(C=c)]^T y=[I(1=c),I(2=c),...,I(C=c)]T
其中I(.)为指示函数。

采用交叉熵损失函数,softmax的经验风险函数为(公式-7):
R ( W ) = − 1 N ∑ n = 1 N ∑ c = 1 C y c n l o g y ^ c n R ( W ) = − 1 N ∑ n = 1 N ( y n ) T l o g y ^ n R(W)=-\frac{1}{N}\sum_{n=1}^{N}\sum_{c=1}^{C}y_c^nlog\hat{y}_c^n R(W)=-\frac{1}{N}\sum_{n=1}^{N} (y^n)^Tlog\hat{y}^n R(W)=N1n=1Nc=1Cycnlogy^cnR(W)=N1n=1N(yn)Tlogy^n
其中
y ^ n = s o f t m a x ( W T x n ) \hat{y}^n = softmax(W^Tx^n) y^n=softmax(WTxn)
为样本x^n在每个类别的后验概率。

说明:公式-7第一个式变换到第二个式是因为y_c类别中只有一个为1,其余为0,所以将第二个求和去除。

风险函数R(W)关于W的梯度为(公式-8):
∂ R ( W ) ∂ W = − 1 N ∑ n = 1 N x n ( y n − y ^ n ) T \frac{\partial R(W)}{\partial W} = -\frac{1}{N}\sum_{n=1}^{N}x^n(y^n-\hat{y}^n)^T WR(W)=N1n=1Nxn(yny^n)T

证明:

计算公式-8中的梯度,关键在于计算每个样本的损失函数
L n ( W ) = − ( y n ) T l o g y ^ n L^n(W)=-(y^n)^Tlog\hat{y}^n Ln(W)=(yn)Tlogy^n
关于参数W的梯度,其中需要用到两个导数公式为:

  • 若y=softmax(z),则
    ∂ y ∂ z = d i a g ( y ) − y y T \frac{\partial y}{\partial z}=diag(y)-yy^T zy=diag(y)yyT

z = W T x = [ w 1 T x , w 2 T x , . . . , w C T x ] T z=W^Tx=[w_1^Tx,w_2^Tx,...,w_C^Tx]^T z=WTx=[w1Tx,w2Tx,...,wCTx]T

∂ y ∂ w c \frac{\partial y}{\partial w_c} wcy
为第c列为x,其余为0的矩阵。
∂ z ∂ w c = [ ∂ w 1 T x ∂ w c , ∂ w 2 T x ∂ w c , . . . , ∂ w C T x ∂ w c ] = [ 0 , 0 , . . , x , . . . , 0 ] = M c ( x ) \frac{\partial z}{\partial w_c} = [ \frac{\partial w_1^Tx}{\partial w_c},\frac{\partial w_2^Tx}{\partial w_c},...,\frac{\partial w_C^Tx}{\partial w_c} ] =[0,0,..,x,...,0] =M_c(x) wcz=[wcw1Tx,wcw2Tx,...,wcwCTx]=[0,0,..,x,...,0]=Mc(x)
根据链式法则,
L n ( W ) = − ( y n ) T l o g y ^ n L^n(W) = -(y^n)^T log\hat{y}^n Ln(W)=(yn)Tlogy^n
关于w_c的偏导数为(公式-12):
∂ L n ( W ) ∂ w c = − ∂ ( ( y n ) T l o g y ^ n ) ∂ w c \frac{\partial L^n(W) }{\partial w_c} = -\frac{ \partial ((y^n)^T log \hat{y}^n) }{\partial w_c} wcLn(W)=wc((yn)Tlogy^n)
= − ∂ z n ∂ w c ∂ y ^ n ∂ z n ∂ l o g y ^ n ∂ y ^ n y n = -\frac{\partial z^n}{ \partial w_c } \frac{\partial \hat{y}^n}{ \partial z^n }\frac{\partial log \hat{y}^n}{ \partial \hat{y}^n } y^n =wcznzny^ny^nlogy^nyn
= − M c ( x n ) ( d i a g ( y ^ n ) − y ^ n ( y ^ n ) T ) ( d i a g ( y ^ n ) ) − 1 y n =-M_c(x^n)(diag(\hat{y}^n)-\hat{y}^n(\hat{y}^n)^T)(diag(\hat{y}^n))^{-1} y^n =Mc(xn)(diag(y^n)y^n(y^n)T)(diag(y^n))1yn
= − M c ( x n ) ( I − y ^ n 1 T ) y n =-M_c(x^n)(I-\hat{y}^n1^T)y^n =Mc(xn)(Iy^n1T)yn
= − M c ( x n ) ( y n − y ^ n 1 T y n ) =-M_c(x^n)(y^n-\hat{y}^n1^Ty^n) =Mc(xn)(yny^n1Tyn)
= − M c ( x n ) ( y n − y ^ n ) =-M_c(x^n)(y^n-\hat{y}^n) =Mc(xn)(yny^n)
= − x n [ y n − y ^ n ] c =-x^n[y^n-\hat{y}^n]_c =xn[yny^n]c
公式-12也可以表示为非向量形式(公式-13):
∂ L n ( W ) ∂ w c = − x n ( I ( y n = c ) − y ^ c n ) \frac{\partial L^n(W) }{\partial w_c} = -x^n(I(y^n=c)-\hat{y}_c^n) wcLn(W)=xn(I(yn=c)y^cn)
其中I(.)为指示函数,根据公式-12可以得到(公式-14)
∂ L n ( W ) ∂ W = − x n ( y n − y ^ n ) T \frac{\partial L^n(W) }{\partial W} = -x^n(y^n-\hat{y}^n)^T WLn(W)=xn(yny^n)T
采用梯度下降法,softmax回归的训练过程为:初始化W_0 <- 0,然后通过下式进行迭代更新。
W t + 1 = W t + α ( 1 N ∑ n = 1 N x n ( y n − y ^ W t n ) T ) W_{t+1} = W_t + \alpha (\frac{1}{N} \sum_{n=1}^{N}x^n(y^n - \hat{y}_{W_t} ^ n)^T) Wt+1=Wt+α(N1n=1Nxn(yny^Wtn)T)
其中a是学习率,
y ^ W t n \hat{y}_{W_t}^n y^Wtn
是当参数为W_t时,softmax回归模型的输出。


注意:

softmax回归中使用的C个权重向量是冗余的,即对所有权重向量都减去一个同样的向量v,不改变其输出结果。因此,softmax往往需要正则化来约束参数。此外,可以利用这个特性来避免计算softmax函数时在数值计算上溢出问题。


【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值