最小二乘法到线性回归到逻辑回归再到梯度下降算法

2017-11-13  本文已影响611人  Crystalajj

这篇文章有感。
我来总结一下,便于记忆。

最小二乘法 线性回归

二分类问题中使用sigmoid函数,多分类问题中使用softmax函数。

逻辑回归模型详解

逻辑回归模型的成本函数推导:

逻辑回归模型的成本函数推导过程

可以看到,此处用了交叉熵损失函数来作为成本函数。

那么为什么使用交叉熵而不是二次代价函数(最小二乘法)来定义呢?

原因如下:

优化算法(成本函数最小化方法):

采用随机梯度下降方法来最小化交叉熵成本函数。

梯度下降(Gradient Descent):朝着梯度的反方向迭代地调整参数直到收敛。

Note:
梯度下降的几何意义描述:梯度下降实际上是一个“下坡”的过程。在每一个点上,我们希望往下走一步(假设一步为固定值0.5米),使得下降的高度最大,那么我们就要选择坡度变化率最大的方向往下走,这个方向就是成本函数在这一点梯度的反方向。每走一步,我们都要重新计算函数在当前点的梯度,然后选择梯度的反方向作为走下去的方向。随着每一步迭代,梯度不断地减小,到最后减小为零。

梯度的反方向是函数值下降最快的方向,故用梯度下降法寻找局部最小值,梯度的方向是函数值上升最快的方向,故用梯度上升法寻找局部最大值。

梯度下降图解:

梯度下降

参数的更新公式为

参数更新

梯度下降法详解

随机梯度下降(Stochastic Gradient Descent):
最小化每条样本的损失函数。

优点:收敛速度快。虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。
缺点:因为计算得到的并不是准确的一个梯度,容易陷入到局部最优解中。

批量梯度下降(Batch Gradient Descent)
最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。

优点:得到的是一个全局最优解
缺点:每迭代一步,都要用到训练集所有的数据,如果数据集很大,这种方法的迭代速度会很慢。

对比: 随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比批量梯度下降,迭代一次需要用到几十万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

Mini-batch梯度下降
这是介于BSD和SGD之间的一种优化算法。每次选取一定量的训练样本进行迭代。此算法是将批量梯度下降法中m替换成mini-batch,将mini-bach的size设置为远小于m的大小。
在吴恩达的机器学习课程中讲到可以将m使用b来代替,循环m/b次直到收敛或是循环次数达到。

优点:得到的是一个局部近似解,但是其所计算的时间和效果要比随机梯度下降法的好。
缺点:但是在计算时候多了一个参数 b (即每批的大小)需要去调试。

带Mini-batch的随机梯度下降

  • 选择n个训练样本(n<m,m为总训练集样本数)
  • 在这n个样本中进行n次迭代,即每次使用1个样本
  • 对n次迭代得出的n个gradient进行加权平均再并求和,作为这一次mini-batch下降梯度
  • 不断在训练集中重复以上步骤,直到收敛。
上一篇下一篇

猜你喜欢

热点阅读