Softmax回归模型



   原文链接:  http://ufldl.stanford.edu/wiki/index.php/Softmax%E5%9B%9E%E5%BD%92

    Softmax回归模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签 \textstyle y 可以取两个以上的值。由于 logistic 回归是针对二分类问题的,因此类标记 y^{(i)} \in \{0,1\}。假设函数(hypothesis function) 如下:

                                  (1)

我们将训练模型参数 \textstyle \theta,使其能够最小化代价函数 :

                  (2)

在 softmax回归中,类标 \textstyle y 可以取 \textstyle k 个不同的值。因此,对于训练集 \{ (x^{(1)}, y^{(1)}), \ldots, (x^{(m)}, y^{(m)}) \},有 y^{(i)} \in \{1, 2, \ldots, k\}对于给定的测试输入 \textstyle x,我们想用假设函数针对每一个类别j估算出概率值 \textstyle p(y=j | x)。也就是估计 \textstyle x 的每一种分类结果出现的概率。因此,假设函数\textstyle h_{\theta}(x)将要输出一个 \textstyle k 维的向量(向量元素的和为1)来表示这 \textstyle k 个估计的概率值,形式如下:

                             (3)

其中 \theta_1, \theta_2, \ldots, \theta_k \in \Re^{n+1} 是模型的参数。 \frac{1}{ \sum_{j=1}^{k}{e^{ \theta_j^T x^{(i)} }} } 这一项对概率分布进行归一化,确保所有概率之和为 1 。

softmax回归对应的代价函数公式(4)所示,其中\textstyle 1\{\cdot\} 是指示函数。对于值为真的表达式,指数函数取值为1,反之为0。

                                      (4)

由于softmax回归模型是Logistic回归模型的一般形式,因此Logistic回归模型的代价函数也可以表示成这种形式:

                   (5)

    可以看到,Softmax代价函数与logistic 代价函数在形式上非常类似,只是在Softmax损失函数中对类标记的 \textstyle k 个可能值进行了累加。

   对于 \textstyle J(\theta) 的最小化问题使用迭代的优化算法(例如梯度下降法,或 L-BFGS)。经过求导,得到梯度公式如下:

                           (6)

     有了上面的偏导数公式以后,就可以将它代入到梯度下降法等算法中,来最小化 \textstyle J(\theta)。 例如,在梯度下降法的标准实现中,每一次迭代需要进行如下更新:

          \textstyle \theta_j := \theta_j - \alpha \nabla_{\theta_j} J(\theta)(\textstyle j=1,\ldots,k)               (7)

     在实际应用中,为了使算法实现更简单清楚,往往保留所有参数 \textstyle (\theta_1, \theta_2,\ldots, \theta_n),而不任意地将某一参数设置为 0。但此时需要对代价函数做一个改动:加入权重衰减。权重衰减可以解决 softmax 回归的参数冗余所带来的数值问题。

   通过添加一个权重衰减项 \textstyle \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^{n} \theta_{ij}^2 来修改代价函数,这个衰减项会惩罚过大的参数值,现在我们的代价函数变为:


\begin{align}
J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}  \right]
              + \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^n \theta_{ij}^2
\end{align}
         (8)

     有了这个权重衰减项以后 (\textstyle \lambda > 0),代价函数就变成了严格的凸函数,这样就可以保证得到唯一的解了。 此时的 Hessian矩阵变为可逆矩阵,并且因为\textstyle J(\theta)是凸函数,梯度下降法和 L-BFGS 等算法可以保证收敛到全局最优解。 
为了使用优化算法,我们需要求得这个新函数 \textstyle J(\theta) 的导数,如下:


\begin{align}
\nabla_{\theta_j} J(\theta) = - \frac{1}{m} \sum_{i=1}^{m}{ \left[ x^{(i)} ( 1\{ y^{(i)} = j\}  - p(y^{(i)} = j | x^{(i)}; \theta) ) \right]  } + \lambda \theta_j
\end{align}
          (9)
通过最小化 \textstyle J(\theta),我们就能实现一个可用的 softmax 回归模型。

                                      

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值