Softmax 回归
一、引入
Softmax回归(或称为多项逻辑斯特回归)是逻辑斯特回归的推广,用于处理多类问题的时候。在逻辑斯特回归中我们假设标签是二元的,y(i)∈{0,1}。我们使用这样的分类器将两种手写数字区分。Softmax回归能让我们处理y(i)∈{1,…,K}的情况,K是类别数。
回忆一下在逻辑斯特回归中,我们有m个标记的训练样本{(x(1),y(1)),…,(x(m),y(m))},其中输入特征是x(i)∈Rn维的。由于在逻辑斯特回归,我们设置了二元分类,因此标记为y(i)∈{0,1}。我们的假设函数是:
hθ(x)=1/(1+exp(−θ⊤x))
然后训练参数θ使得代价函数最小:
J(θ)=−[∑y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]
在softmax回归中,我们感兴趣的是多类分类(与二元分类相对),因此标记y可以输出K个不同值,而不是只有两个。因此,在我们的训练样本{(x(1),y(1)),…,(x(m),y(m))},我们有y(i)∈{1,2,…,K}。(注意我们的规定是从1开始标记类别,而不是从0开始)。例如在MNIST数字识别任务中,我们有K=10个不同类别。
给定一个输入x,我们希望我们的假设函数能估计每一个k=1,…,K的概率P(y=k|x) 。我们需要根据k个不同的可能值来估计类别标记的概率。因此,我们的假设会输出一个k维的向量(元素值和为1),给我们提供K个不同的估计概率。具体而言,我们的假设采取这种形式:
在这里θ(1),θ(2),…,θ(K)∈Rn是我们模型的函数。注意到这一项1/∑Kj=1exp(θ(j)⊤x)标准化了分布情况,因此它们和为1.
为了方便,我们将用θ表示模型中的所有参数。当你实现softmax回归时,将θ(1),θ(2),…,θ(K)排成列,最后将θ表示为n行K列的矩阵通常是非常方便的。
二、代价函数
我们现在描述一下待会用softmax回归所使用的代价函数。在下面的等式中,1{⋅}是个“提示函数”,就是1{a true statement}=1,1{a false statement}=0。例如1{2+2=4}值为1,而1{1+1=5}值为0。我们的代价函数是:
注意到它是逻辑斯特回归代价函数的推广,它们能写成这种形式:
Softmax代价函数是类似的,除了我们得到的是K个不同类别标记的可能值的总和。注意到在softmax回归中,我们有P(y(i)=k|x(i);θ)=exp(θ(k)⊤x(i))/∑exp(θ(j)⊤x(i))。
我们无法得到J(θ)最小值的解析解,因此和往常一样,我们会求助于迭代的优化算法。通过求导,得到梯度是:
回忆一下”∇θ(k)”的含义。特别的,∇θ(k)J(θ)本身是一个向量,它的第j个元素∂J(θ)/∂θjk是J(θ)关于θ(k)第j个参数的偏导数。
由这个导数公式,可以将它用于标准的优化包从而最小化J(θ)。
三、softmax回归的参数特性
softmax虎归有一不寻常的特性,即它有冗余的参数集。为了解释其中含义,假设我们得到每个参数向量θ(j),然后减去一个常数向量ψ,因此每个θ(j)替换为θ(j)- ψ(j=1,…,k)。我们的假设估计各类别的概率为:
换句话说,每个θ(j)减去ψ一点也不影响我们假设的预测。这说明softmax回归的参数集是冗余的。更正式的说,softmax模型是过度参数化的,这意味着对于我们拟合数据的假设,有多种参数设置能够得到确切相同的由输出x得到预测的假设函数hθ。
另外,如果代价函数通过一些参数设置(θ(1),θ(2),…,θ(k))得到最小值,那么用参数(θ(1)−ψ,θ(2)−ψ,…,θ(k)−ψ)同样能得到最小值,无论ψ值是多少。这样,让J(θ)最小化的数不是唯一的。(有趣的是,J(θ)仍是凸的,因此梯度下降不会陷入局部最优的问题。但是Hessian矩阵是奇异的/不可逆的,会导致直接用牛顿方法实现会导致数值计算问题。
注意到通过设定ψ=θ(K),总能用θ(K)−ψ=0(全零向量)代替θ(K)而不会影响假设的函数。因此,可以将参数向量减掉θ(K)(或其他θ(k),k为任意值)而不损坏我们假设的表示。的确,我们不用优化K⋅n个参数值(θ(1),θ(2),…,θ(K)),其中θ(k)是n维的,只需要设置θ(K)=0然后优化K⋅n(不应该是(K-1)⋅n?)剩下的参数值。
四、与逻辑斯特回归的关系
在K=2的特殊情况,可以看到softmax回归退化为逻辑斯特回归。这说明softmax回归是逻辑斯特回归的推广。具体而言,当K=2时,softmax回归假设输出:
利用(softmax)假设是过度参数化的事实并设置ψ=θ(2),我们可以从每个(向量)中的两个参数减去θ(2),得到:
这样,用一个简单的参数θ′代替θ(2)−θ(1),我们发现softmax回归预测其中一个类的概率为1/1+exp(−(θ′)⊤x(i)),另一个类的概率为1−1/1+exp(−(θ′)⊤x(i)),正如逻辑斯特回归。