Softmax回归主要用于解决多类问题(类别数>2),可以看作Logistic回归在多分类问题上的一种扩展
Softmax函数
对于K个标量x1,x2,⋯ ,xKx_1,x_2,\cdots,x_Kx1,x2,⋯,xK:
softmax(xK)=exp(xK)∑i=1Kexp(xi) softmax(x_K)=\frac{\exp(x_K)}{\sum_{i=1}^{K}\exp(x_i)} softmax(xK)=∑i=1Kexp(xi)exp(xK)
其中,指数项>0,分母>=分子,因此结果必定属于区间(0,1)(0,1)(0,1),且∑Ksoftmax(xK)=1\sum_Ksoftmax(x_K)=1∑Ksoftmax(xK)=1。也就是说,K个标量在通过softmax函数之后,可以转换成具有K个取值的分布,每个取值可以看作对应的打分,标量值越大对应的打分越高。
Softmax回归
目标类别y=cy=cy=c的条件概率为:
pθ(y=c∣x)=softmax(wcTx)=exp(wcTx)∑c′=1Cexp(wc′Tx) \begin{aligned} p_\theta(y=c\mid x) &=softmax(w_c^Tx)\\ &=\frac{\exp(w^T_cx)}{\sum_{c'=1}^C\exp(w^T_{c'}x)} \end{aligned} pθ(y=c∣x)=softmax(wcTx)=∑c′=1Cexp(wc′Tx)exp(wcTx)
用向量表示:
y^=softmax(WTx)=exp(WTx)1CTexp(WTx) \begin{aligned} \hat{y} &=softmax(W^Tx)\\ &=\frac{\exp(W^Tx)}{1_C^T\exp(W^Tx)} \end{aligned} y^=softmax(WTx)=1CTexp(WTx)exp(WTx)
其中,y^∈RC\hat{y}\in\mathbb{R}^Cy^∈RC(C维向量)为所有类别的预测条件概率组成的向量,W∈RD×CW\in\mathbb{R}^{D\times C}W∈RD×C为所有判别函数对应的权重组成的向量,1CT1_C^T1CT为C维的全为1的向量,与后项内积来表示后项所有元素的加和。
交叉熵损失:
H(pr,pθ)=−∑y=1Cpr(y∣x)logpθ(y∣x) H(p_r,p_\theta)=-\sum_{y=1}^Cp_r(y\mid x)\log p_\theta(y\mid x) H(pr,pθ)=−y=1∑Cpr(y∣x)logpθ(y∣x)
这里需要与logistic回归区别一下,在使用logistic回归解决多分类问题时,主要取决于不同类别之间是否互斥,等同于将多分类问题转换成了多次二分类问题。而softmax回归可以同时计算多个类别的打分,取得分最高为最终的分类。真实概率prp_rpr和预测概率负对数(熵、自信息量)如下所示:
最终要令二者内积后的交叉熵最小,同时根据熵(自信息)的概念,当真实概率最大时对应的自信息量最小,这也就意味着当熵最小时对应的真实概率越大,越可能是最终的预测结果。如上图中,类别为1的熵−logpθ(y=1∣x)→0-\log p_\theta(y=1\mid x)\rightarrow 0−logpθ(y=1∣x)→0,则对应pr(y=1∣x)→maxp_r(y=1\mid x)\rightarrow maxpr(y=1∣x)→max
用向量来表示交叉熵损失:
H(y,y^)=−yTlogy^, y=[I(1=c),I(2=c),⋯ ,I(C=c)]T H(y,\hat{y})=-y^T\log\hat{y},\ \ \ \ y=[I(1=c),I(2=c),\cdots,I(C=c)]^T H(y,y^)=−yTlogy^, y=[I(1=c),I(2=c),⋯,I(C=c)]