讲义中的第四章,讲的是Softmax 回归。softmax回归是logistic回归的泛化版,先来回顾下logistic回归。算法
logistic回归:函数
训练集为{(x(1),y(1)),...,(x(m),y(m))},其中m为样本数,x(i)为特征。优化
logistic回归是针对二分类问题的,所以类标y(i)∈{0,1},。其估值函数(hypothesis )以下:spa
代价函数:blog
softmax 回归:io
softmax回归解决的是多分类问题,即y(i)∈{1,2,...,k}。(这里softmax回归通常从类别1开始,而不是从0)。方法
其估值函数形式以下:im
为了方便起见,咱们一样使用符号θ来表示所有的模型参数。在实现softmax回归时,你一般会发现,将θ用一个k×(n+1)的矩阵来表示会十分便利,该矩阵是将θ1,θ2,...,θk按行罗列起来获得的,以下所示:d3
下面是softmax回归的代价函数:数据
能够看出softmax是logistic的一个泛化版。logistic是k=2状况下的softmax回归。
为了求解J(θ),一般借助于梯度降低法或L-BFGS算法等迭代优化算法。通过求导,咱们能够获得梯度公式为:
有了上面的偏导数公式之后,咱们就能够将它带入到梯度降低法等算法中,来使J(θ)最小化。例如,在梯度降低法标准实现的每一次迭代中,咱们须要进行以下更新:
(对每一个j=1,2,...k)
有一点须要注意的是,按上述方法用softmax求得的参数并非惟一的,由于,对每个参数来讲,若都减去一个相同的值,依然是上述的代价函数的值。证实以下:
这代表了softmax回归中的参数是“冗余”的。更正式一点来讲,咱们的softmax模型被过分参数化了,这意味着对于任何咱们用来与数据相拟合的估计值,都会存在多组参数集,它们可以生成彻底相同的估值函数hθ将输入x映射到预测值。所以使J(θ)最小化的解不是惟一的。而Hessian矩阵是奇异的/不可逆的,这会直接致使Softmax的牛顿法实现版本出现数值计算的问题。
为了解决这个问题,加入一个权重衰减项到代价函数中:
有了这个权重衰减项之后(对于任意的λ>0),代价函数就变成了严格的凸函数并且hession矩阵就不会不可逆了。
此时的偏导数:
softmax 练习:
这里讲义一样给出了练习题,打算本身写写看,暂时先写到这,接下来有时间把本身写好的代码贴上来。