UFLDL之softmax回归
参考资料:UFLDL教程及tornadomeet的博客
个人代码:github地址
主成份分析与白化
softmax回归算法简介
softmax回归是一种监督学习算法,该模型是logistic回归模型在多分类问题上的推广。多分类问题中,类标签 (y) 可以取两个以上的值(如手写数字识别0~9共10个种类的数字)。
假设共有 (k) 个类,对于给定的测试输入(x),softmax回归输出一个(k) 维的向量(向量元素和为1),向量每个元素对应了每个类别的概率。
softmax回归的数学表达
softmax的假设、代价函数与导数
softamx的假设形式为:
[h_ heta(x^{(i)}) =
left[
egin{matrix}
p(y^{(i)} = 1 | x^{(i)}; heta) \
p(y^{(i)} = 2 | x^{(i)}; heta) \
vdots \
p(y^{(i)} = k | x^{(i)}; heta)
end{matrix}
ight]
=
frac{1}{ sum_{j=1}^{k}{e^{ heta_j^T x^{(i)} }} }
left[
egin{matrix}
e^{ heta_1^T x^{(i)} } \
e^{ heta_2^T x^{(i)} } \
vdots \
e^{ heta_k^T x^{(i)} } \
end{matrix}
ight]
]
其中,( heta_1, heta_2, ldots, heta_k in Re^{n+1})是模型的参数。矩阵前的公共项是为了对概率分布进行归一化,使得所有概率之和为1。
规定(1{cdot})为示性函数,满足:(1{值为真的表达式} = 1),考虑正则项,则其代价函数为:
[J( heta) = - frac{1}{m} left[ sum_{i=1}^{m} sum_{j=1}^{k} 1left{y^{(i)} = j
ight} log frac{e^{ heta_j^T x^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)} }}
ight] + frac{lambda}{2} sum_{i=1}^k sum_{j=0}^n heta_{ij}^2
]
其中第一项可以认为是logistic回归代价函数的推广。由上述公式,可以得到利用梯度下降算法时候,导数表达式为:
[
abla_{ heta_j} J( heta) = - frac{1}{m} sum_{i=1}^{m}{ left[ x^{(i)} left( 1{ y^{(i)} = j} - p(y^{(i)} = j | x^{(i)}; heta)
ight)
ight]} + lambda* heta_j
]
参数冗余问题
由于指数函数的存在,softmax回归有一个冗余数据集,查看下式:
[p(y^{(i)} = j | x^{(i)} ; heta) = frac{e^{( heta_j-psi)^T x^{(i)}}}{sum_{l=1}^k e^{ ( heta_l-psi)^T x^{(i)}}} = frac{e^{ heta_j^T x^{(i)}} e^{-psi^Tx^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)}} e^{-psi^Tx^{(i)}}} = frac{e^{ heta_j^T x^{(i)}}}{sum_{l=1}^k e^{ heta_l^T x^{(i)}}}
]
可见,从( heta_j)中减去(psi)不会影响函数的预测结果,这说明softmax回归模型存在冗余参数集。正则项可以帮助解决这一问题,另外,可以使( heta_j)的每个元素减去( heta_j)值当中的最大元素,从而限定最大项必须为零。
softmax和logistic对比
在Coursera公开课笔记中,提到logistic回归可以通过建立 (k) 个独立的二元分类器来解决多分类问题。softmax回归的特点在于:一是模型更加简化,二是 (k) 维向量的和为1,这说明了softmax各个类别是互斥的。
因此对于多分类问题,若问题的各个类别之间有交叉关系,则要使用logistic建立多个二元分类器而不是使用softmax。