基本模型
Softmax 回归是logistic回归是用的一般形式,它将logistic **函数推广到C类(C是神经网络模型的输出),而不仅仅是两类,是一种多分类器,如果C = 2,那么Softmax实际上变回了 logistic 回归。
逻辑回归使用的是sigmoid函数,将wx+b 的值映射到(0, 1)的区间,输出的结果为样本标签等于1的概率值;而softmax回归采用的是softmax函数,将wx+b的值映射到[0, 1]的区间,输出的结果为一个向量,向量里的值为样本属于每个标签的概率值。
如下图所示:
假设sigmoid模型共有n个输入,记wi=(wi1,wi2,⋯,win)T,i=1,2,…,c;x(j)=(xj1,xj2,…,xjn,1),j=1,2,…,m; ,一共K 类,m个样本。
设:
zi=wix+bi
hw(x(j))=⎣⎢⎢⎢⎡p1p2⋮pc⎦⎥⎥⎥⎤=∑i=1Kezi1⎣⎢⎢⎢⎡ez1ez2⋮ezc⎦⎥⎥⎥⎤
一共c个类别。上式结果向量中最大值得对应类别为最终类别。
损失函数
softmax分类的损失函数是最小化对数似然函数的负数:
L(w)=−logP(y(i)∣x(i);w)=−k=1∏Klog(∑j=1Kezjezi)yk=−k=1∑Kyklog(∑j=1Kezjezk)
注:yk=I{y(j)=k} 是指示函数,当y(j)=k,即当第j个样本属于第k个类别时,指示函数为1。 或者理解为:某个样本x对应的标签y为一个向量:y=(y1,y2,…,yK),其中只有一个元素是1,如y=(1,0,…,0) 。
我们的目标是:
minL(w)
求解最优参数
通过梯度下降法则求解最优参数。
设:第j个样本的第i 个输出
si=∑j=1Keziezii=1,2,…,K
针对某一个样本:
∂wi∂L∂bi∂L=∂zi∂L∂wi∂zi=∂zi∂L∂bi∂zi
显然:
∂wi∂zi=x∂bi∂zi=1
所以核心问题是求∂zi∂L:
∂zi∂L=k=1∑K[∂sk∂L∂zi∂sk]
先求∂sk∂L:
∂sk∂L=∂sk∂(−∑k=1Kyklogsk)=−skyk
再求∂zi∂sk :
先来复习一下复合求导:
f(x)=h(x)g(x)f′(x)=[h(x)]2g′(x)h(x)−g(x)h′(x)
所以,分两种情况讨论:
(1)当k=i时,那么:
∂zi∂sk=∂zi∂∑j=1Kezjezk=(∑j=1Kezj)2−ezk⋅ezi=−∑j=1Kezjezk∑j=1Kezjezi=−sksi
(2)当k=i时,那么:
∂zi∂sk=∂zi∂si=∂zi∂∑j=1Kezjezi=(∑j=1Kezj)2ezi∑j=1Kezj−(ezi)2=∑j=1Kezjezi∑j=1Kezj∑j=1Kezj−ezi=si(1−si)
所以:
∂zi∂L=∑k=1K[∂sk∂L∂zi∂sk]=∑k=1K[−skyk∂zi∂sk]=−siyi∂zi∂si+∑k=1,k=iK[−skyk∂zi∂sk]=−siyisi(1−si)+∑k=1,k=iK[−skyk⋅−sksl]=yi(si−1)+∑k=1,k=iKyksi=−yi+yisi+∑k=1,k=iKyksi=−yi+si∑k=1Kyk
对于某个样本x对应的标签y为一个向量:y=(y1,y2,…,yK),其中只有一个元素是1,如y=(1,0,…,0) 。所以有:∑k=1Kyk=1,所以:
∂zi∂L=si−yi
所以最终结果为:
∂wi∂L=(si−yi)x∂bi∂L=si−yi
所以,更新法则如下:
wi=wi−η(si−yi)xbi=bi−η(si−yi)
直至收敛为之。