Logistics到softmax推导整理

最近复习了一些基础知识,摘取了一些重要的做了一点推导,也为了之后可能面试会用到。应该是机器学习类的,但是也懒得分那么多类了,就先放在慢学NLP下面吧。这里选择把逻辑回归和softmax归到一起来讲,原因在于更好的比较两者的异同和联系。总结为以下两点:

逻辑回归的优化目标是极大化对数似然估计,采用梯度上升来学习及更新参数 $\theta$ 向量的值。

Softmax的优化目标是极小化交叉熵损失函数,采用梯度下降和链式法则来更新各层权值。

Logistics Regression

先从线性回归开始

针对线性分类器而言,他解决的是回归问题,为了能更好进行分类问题的探讨,这里就引出了 Logistics 回归。

基础知识

逻辑回归是假设数据服从 Bernoulli 分布(抛硬币),因此LR属于参数模型。

其中是对于线性模型,加上了一个 Sigmoid 函数,这个也是神经网络的激活函数,拥有很多良好的特性。1. 拥有很好的激活特性,2. 求导很容易,这一点在 GD 上太重要了,对于 NN 的 BPTT 也起到了极为重要的作用。

LR 目标函数定义:$h _ { \theta } ( x ) = g \left( \theta ^ { T } x \right)$

其中 Sigmoid 函数 g(z) 的定义:$g ( z ) = \frac { 1 } { 1 + e ^ { - z } }$

Sigmoid 函数求导 $g ^ {‘} (z)$ 为:

似然函数

假设有n个独立的训练样本 { (x1, y1), (x2, y2), … , (xn, yn)},y={0, 1}。那每一个观察到的样本 (xi, yi) 出现的概率是:

推广到所有样本下,得到整体的似然函数表达,需要将所有的样本似然函数全部相乘。这里的参数 $\theta$ 是我们要估计的参数,似然函数正比于我们的概率函数 $L ( \theta | x ) \propto P ( \operatorname { x | \theta )}$,累成后得到整体的似然函数表达:

具体为

累乘的形式不利于进行优化分析,这里将似然函数取对数,得到对数似然函数,作为我们的最终优化目标,运用极大似然估计来求得最优的 $\theta$

最优化求解推导

利用链式法对目标函数则进行求导以求得最优参数。

分三部分求导:

第一部分

第二部分

第三部分

整理得到最终形式:

因此总的 $\theta$ 更新公式为:

速记: 对 $\theta$ 的梯度更新为输入 $x_i$ * (y真实值 - logistics 的预测计算值)

整个迭代过程就是最为一般的梯度下降,逻辑回归的似然函数是典型的凸函数,运用凸优化的方式可以保证求得最优解。要考LR的话就可以这么写了吧。

扩展

(1)正则化

上述是最基础的逻辑回归的推导形式,但是在实际中,还是要针对模型进行一些正则化,防止参数规模过大产生过拟合的情况,违背了奥卡姆剃刀。这里列出了含正则化表达式的逻辑回归目标函数:

(2)关于优化方法,上述给出的是最为一般的梯度下降法,其他的凸优化方法还包括有:

  • 牛顿法
  • 拟牛顿法
  • DFP算法
  • BGFS拟牛顿法
    (详见李航《统计学习方法》附录B)

(3)LR 和 SVM 的异同点

相同点:

  • LR和SVM都是分类算法。
  • 如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
  • LR和SVM都是监督学习算法,为判别模型。

不同点:

  • 本质上是其loss function不同。
    逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值。支持向量机基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面。
  • 支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用,虽然作用会相对小一些)。
  • 在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
  • SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!
  • SVM不是概率输出,Logistic Regression是概率输出。

总而言之,一个基于距离!一个基于概率!


Softmax Cross-Entropy 推导

为什么衡量softmax多分类的损失函数要使用交叉熵来定义,我们选取比较常用的另外的几种错误率计算:

  • Classification Error(分类错误率):无法区分分别。
  • Mean Squared Error (均方误差):主要原因是逻辑回归配合MSE损失函数时,采用梯度下降法进行学习时,会出现模型一开始训练时,学习速率非常慢的情况(MSE损失函数),二次代价函数的不足,误差大的时候反而学的比较慢。
    image.png

  • Cross Entropy Error Function(交叉熵损失函数):交叉熵函数是凸函数,求导时更容易找到全局最优解,函数的性质就比较好,因此学的也就更快。
    image.png

明确了交叉熵的优势后,将最后一层的网络展开,最终的结果展开成 one-hot 的形式,用 softmax 得到的概率值进行交叉熵的计算,带入公式

image.png

计算第一项:

计算第二项,稍微有点复杂,第一种k等于i的情况

第二种考虑k不等于i的情况

总和两个式子的结果,我们得到了统一的形式:

第三项就是直接求导

综上计算统一的结果为

因此如果反向传播的是 $i$ 对应于真实的标签为 1,即 $y_i=1$,那么回传的梯度变化就需要减去 1, 再乘以 $x_i$。如果对应真实标签为0,那么 $y_i=0$,传递回该位置的 softmax 值乘以 $x_i$。如此一来,我们就得到了全连接层到输出层的梯度变化了,再回传其实也没有那么困难了。

总结

LR 和 Softmax 是一切机器学习的基础,推导完毕后发现,其实两者还是存在很多的共性,尤其从结论来看,都是(真实-预测)* 输入,但是这个结论的得来要归功于 sigmoid 函数和 softmax 函数良好的凸性,梯度随误差增大而增大,以及易于求导三方面因素共同决定的,也佩服于先人的才学,才有了今天的发展。

参考:

https://www.jianshu.com/p/dce9f1af7bc9

https://zhuanlan.zhihu.com/p/35709485

https://zhuanlan.zhihu.com/p/25723112