Softmax Regression
可以看做是 LR
算法在多分类上的推广,即类标签 y
的取值大于或者等于 2
。
假设数据样本集为$\left\{\left(X^{(1)}, y^{(1)}\right),\left(X^{(2)}, y^{(2)}\right),\left(X^{(3)}, y^{(3)}\right), \ldots,\left(X^{(m)}, y^{(m)}\right)\right\}$
对于 SR 算法, 其输入特征为: $X^{(i)} \in \mathbb{R}^{n+1},$ 类别标记为: $y^{(i)} \in\{0,1,2, \ldots, k\},$ 假设函数为每一个样本估计 其所属类别的概率 $P(y=j \mid X),$ 具体的假设函数为:
其中,$\theta_i \in \mathbb{R}^{n+1}$,则对于每一个样本估计其所属的类别的概率为
交叉熵损失函数:我们可以像线性回归那样使用平方损失函数$||\hat{y}^{(i)}-{y}^{(i)}||^2 / 2$。然而,想要预测分类结果正确,我们其实并不需要预测概率完全等于标签概率。例如,在图像分类的例子里,如果$y^{(i)}=3$,那么我们只需要$\hat{y_3}^{(i)}$比其他两个的预测值$\hat{y_1}^{(i)}$和$\hat{y_2}^{(i)}$大就行了。即使$\hat{y_3}^{(i)}$值为0.6,不管其他两个预测值为多少,类别预测均正确。而平方损失过于严格,例如$\hat{y_1}^{(i)}=\hat{y_2}^{(i)}=0.2$比$\hat{y_1}^{(i)}=\hat{y_2}^{(i)}=0.4$的损失要小很多,虽然两者都有同样正确的分类结果。
改善以上问题的一个方法就是使用更适合衡量两个概率分布差异的测量函数。其中,交叉熵(cross entropy)是一个常用的衡量方法:
上式中向量$\pmb y^{(i)}$中只有第$y^{(i)}$个元素的$y_{y^{(i)}}^{(i)}$为
1
,其余全为0
。也就是说,交叉熵只关心对正确分类的预测概率,因为只要其值足够大,就可以确保分类结果正确。
因此,Softmax Regression
的损失函数为:
其中$I(x)=\left\{\begin{array}{ll}0 & \text { if } x=\text { false } \\1 & \text { if } x=\text { true }\end{array}\right.$表示指示函数。
对于上述的损失函数,可以使用梯度下降法求解。首先求参数的梯度:
当 $ y^{(i)}=j $ 时:
当 $ y^{(i)} \neq j $ 时:
最终结果:
梯度下降法的迭代更新公式为:
1 | for i in range(N): |
1 | N, D = X.shape |