Softmax Regression
简介
Softmax 回归模型属于有监督学习,是逻辑回归模型在多分类问题上的推广,其类标签 y 可以取两个以上的值。
由于我们要解决的是多分类问题,类标签 y 可以取 k 个不同的值,因此对于训练集 {(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))},我们有 y(i)∈{1,2,…,k}。
对于给定的测试输入 x,我们希望用假设函数针对每一个类别 j 都估算出一个概率值 p(y=j∣x),表示 x 数据第 j 类的概率。因此,我们的假设函数将要输出一个 k 维的向量(向量元素的和为 1)来表示这 k 个估计的概率值。
假设函数 hθ(x) 形式如下:
hθ(x(i))=⎣⎢⎢⎢⎢⎡p(y(i)=1∣x(i);θp(y(i)=2∣x(i);θ⋮p(y(i)=k∣x(i);θ)⎦⎥⎥⎥⎥⎤=∑j=1keθjTx(i)1⎣⎢⎢⎢⎢⎢⎡eθ1Tx(i)eθ2Tx(i)⋮eθkTx(i)⎦⎥⎥⎥⎥⎥⎤
其中 θ1,θ2,⋯,θk∈Rn+1 是模型的参数,∑j=1keθjTx(i)1 是为了将所有的概率分布进行归一化,使所有概率之和为 1。
为了方便起见,我们令
θ=⎣⎢⎢⎢⎢⎡θ1Tθ2T⋮θkT⎦⎥⎥⎥⎥⎤k×(n+1)
则 Softmax 的代价函数为
J(θ)=−m1(i=1∑mj=1∑k[y(i)=j]log∑l=1keθlTx(i)eθjTx(i))
其中 [x] 表示若表达式 x 为真则取值为 1,否则为 0。
上式事实上是逻辑回归代价函数的推广,逻辑回归代价函数可以改写为
J(θ)=−m1[i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]=−m1(i=1∑mj=0∑1[y(i)=j]logp(y(i)=j∣x(i);θ))
可以看到,Softmax 代价函数和逻辑回归的代价函数在形式上非常类似,只是 Softmax 代价函数中对类标记的 k 个可能值进行了累加。
注意,在 Softmax 回归中,把 x 分类为类别 j 的概率为
p(y(i)=j∣x(i);θ)=∑l=1keθlTx(i)eθjTx(i)
对于 J(θ) 的最小化问题,目前还没有闭式解法,我们只能使用迭代的优化算法。经过求导,我们得到梯度公式如下:
∇θjJ(θ)=−m1j=1∑m[x(i)([y(i)=j]−p(y(i)=j∣x(i);θ))]
每次梯度下降迭代时都需要进行如下的更新:
θj:=θj−α∇θjJ(θ)(j=1,⋯,k)
当实现 Softmax 回归算法时,我们通常会使用上述代价函数的一个改进版本。具体来说,就是和权重衰减(weight decay)一起使用。我们接下来介绍使用它的动机和细节。
权重衰减
所谓权重衰减,事实上就是正则化,我们通过在代价函数中加入一个权重衰减项来修改代价函数,这个衰减项会惩罚过大的参数值:
J(θ)=−m1(i=1∑mj=1∑k[y(i)=j]log∑l=1keθlTx(i)eθjTx(i))+2λi=1∑kj=0∑nθij2
新的代价函数的梯度公式为
∇θjJ(θ)=−m1j=1∑m[x(i)([y(i)=j]−p(y(i)=j∣x(i);θ))]+λθj
Softmax 回归和逻辑回归的关系
当类别数 k=2 时,Softmax 回归退化为逻辑回归,这说明 Softmax 回归是逻辑回归的一般形式。
具体地,当 k=2 时,Softmax 回归的假设函数为
hθ(x)=eθ1Tx+eθ2Tx1[eθ1Txeθ2Tx]
从两个参数向量中都减去向量 θ1,得到
hθ(x)=e0Tx+e(θ2−θ1)Tx1[e0Txe(θ2−θ1)Tx]=⎣⎢⎢⎡1+e(θ2−θ1)Tx11+e(θ2−θ1)Txe(θ2−θ1)Tx⎦⎥⎥⎤=⎣⎢⎢⎡1+e(θ2−θ1)Tx11−e(θ2−θ1)Tx1⎦⎥⎥⎤
令 θ′=θ2−θ1,可以发现预测函数中其中一个类别的概率为 1+e(θ′)Tx1,另一个类别的概率为 1−1+e(θ′)Tx1,这与逻辑回归是一致的。
如果分类的类别是互斥的,适于选择 softmax 回归分类器。
如果类别之间不是互斥的,而是相互掺杂,则 k 个 logistic 回归分类器更加合适。