Softmax

Softmax函数

Softmax函数的作用是归一化,对于向量$z=(z_1,…,z_n)$,Softmax函数的形式如下:

Softmax Regression形式

Softmax regressionlogistic regression的多分类版本,也是线性分类器,假设一共有$K$个类别,样本特征空间维度为$n$。其基本形式如下

其中,$\theta$是系数矩阵,维度为$n\times K$,$x$是维度为$n$的样本,输出一个$K\times 1$的向量,选择最大值对应的类为结果。

训练

为了方便描述,假设$z=\theta^Tx$,所以有$f(x)=softmax(z)$。
损失函数的定义与logistic regression类似,采用交叉熵形式。假设当前样本为$x_i$,输出为$y_i$,属于第$k$类,输出为$y_i$,对应的真实结果为$\hat{y_i}=[0 0 … 1 … 0]$,第$k$位为1,其余位为0。优化方法采用梯度下降。对所有的样本$x_1,…,x_m$,首先损失函数为:

首先,根据$y_i$的分量可知,对$y_i$求导的导数只有第$k$个分量的梯度不为0

然后再求$y_{ik}$对$z_i$的导数(其他的$y_{i}$分量梯度都是0,就不用考虑了)。具体来说,考虑$y_{ik}$对$z_{ij}$的导数。
如果$j==k$,那么

所以有

如果$j!=k$,那么

所以有

由于$\hat{y_i}$只有第$k$位为1,其余位都为0,所以综上所述

有了$z_i=\theta^Tx_i$的梯度,$\theta$(其中,$\theta_j$是$\theta$的第$j$列)的梯度就简单了

有了梯度就可以使用梯度下降方法更新权值了$\theta=\theta-\frac{\partial L}{\partial \theta}$。这是随机梯度下降的梯度表示,对完整梯度下降的表示为


但是,上面方法训练出来的模型还存在冗余问题,具体来说对于$\theta$的每一列$\theta_k$满足

也就是说会有无穷多个能达到最优解的参数,解决方法是给损失函数加上一个权重衰减项

所以有

Softmax和logistic regression的关系

根据上文描述的Softmax存在的参数冗余性,构造一个二分类情况下的softmax分类器,形式如下

把上式中的$\theta$因子全部减去$\theta_1^T$,则有

这样就又回到logistic regression的格式了!

引用
[1]. UFLDL Softmax回归
[2]. 手打例子一步一步带你看懂softmax函数以及相关求导过程

分享到