读这篇文章有感。
我来总结一下,便于记忆。
- 最小二乘法(Least Square Method)适用于二维空间,用直线 y=ax+b 对二维空间(平面)的数据进行拟合。将true label与直线评测出的值的偏差的平方和作为最小条件来选择参数a,b。
- 线性回归(Linear Regression)将最小二乘法拓展到多维空间,用超平面 y=Wx+b 对多维空间的数据进行拟合。 与最小二乘法类似,将true label与超平面评测出的值的偏差的平方和作为最小条件来选择参数W,b。
- 逻辑回归(Logistics Regression)仅仅是在线性回归模型外面加了一层映射函数(sigmoid函数)。逻辑回归其实是一种分类模型!
sigmoid函数其中,z=Wx+b(线性回归模型),若z很大,则f(z) ≈1;若z很小,则f(z)≈0。
二分类问题中使用sigmoid函数,多分类问题中使用softmax函数。
逻辑回归模型详解
逻辑回归模型的成本函数推导:
可以看到,此处用了交叉熵损失函数来作为成本函数。
那么为什么使用交叉熵而不是二次代价函数(最小二乘法)来定义呢?
原因如下:
-
为什么不用二次代价函数?
- 对于多元函数,由于变量过多,用最小二乘法定义的成本函数(损失函数)并不是在整个集合上都是凸函数,很难进行优化。
- 由于逻辑回归模型使用了sigmoid函数作为激活函数,根据sigmoid函数的性质,函数值趋近于0和1的时候梯度值过小,会导致在后续梯度下降算法中参数收敛速度过慢。
-
为什么用交叉熵损失函数?
- 交叉熵代价函数的两个性质
- 非负性(所以我们的目标就是最小化代价函数)
- 当true label与预测值接近时,代价函数接近于0
- 可以克服二次代价函数更新过慢的问题。根据梯度下降算法可知,当误差大的时候参数更新越快;误差小的时候参数更新越慢。
- 交叉熵代价函数的两个性质
优化算法(成本函数最小化方法):
采用随机梯度下降方法来最小化交叉熵成本函数。
梯度下降(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下降梯度
- 不断在训练集中重复以上步骤,直到收敛。