简单理解 最小二乘法 和梯度下降

在机器学习中 我们要训练得到的模型,其实 是一个【 学习拟合 自变量和因变量 关系】的一个过程,关于 到底 是怎么拟合 学习的呢,分两种,一种是通晓了公式秘籍 一步到位的,一种是 以迭代方式 步步为营 不断逼近的方式。不论哪种方式 都可以有效抵达 最优点 ,或许是局部最优点。

那我们说 现实意义上 模型终归只是一个模型而已 他是抽象的一个黑盒子的参数集合,他是 现实世界 在抽象计算机上的一个映射。哪怕可以解释 ,他只是 无限 接近 无限 拟合,哪怕 Predict 是 100%。
只要 模型存在 ,那么就会有误差存在,如果Predict是100% 正确,我们就说 误差 为0,自然 Predict 很难 100%,对于回归问题,每一条 rawdata 向量化feature 对应y target 的都有误差,那么误差 的 汇总【不一定是 误差值求和,也可能是 误差绝对值 求和,也可能是误差平方和 相加】就是 这个模型的损失,一个模型 要从大局上来看损失,这个损失程度就是 这个模型评估优劣的一项标准。模型越好 损失越小,模型越差 损失越大。

那么怎么评价损失呢,朴素来说我们 期待试用 拟合的残差来作为 损失 ,但是 拟合来说有正有负,最后汇总起来,假如一个很烂的模型,有一半残差都是正值很大,有一半残差都是负值也很大,但是假如有可能汇总相加在一起就是0了,也可能是负值,我们能说这个模型超级棒嘛,当然是有问题的。那我们再来考虑使用 绝对值,绝对值总体上来说 不会出现 负值,但是 计算起来不够友好,另外对模型 的真正拟合程度反映不够直观,不能 突出异常值存在。好 就剩 平方和了,平方和的优点在于 能够体现 放大 模型的 拟合效果,如果 残差有一个很大,就会被无限放大,影响模型的拟合效果,模型就不算是最优的,需要继续训练找到最佳的。所以来说 平方和的损失函数 更对异常值 敏感。∑(y^ --y)^2

所以在回归问题上 我们大对数的损失函数都是 平方和 形式的累加和。
好了既然我们 确定了 损失函数了,那我们 最关键的一步就是 模型的参数估计。
拿线性回归函数来说 y= ß1.X1+ß2.X2+ß3.X3+....+ßn..Xn+b
我们 如何 去 估计 ß1 ß2 ß3 的取值呢。
这个从源函数是不容易找打答案的,我们来看损失函数
L(f)=∑(ß1.X1+ß2.X2+ß3.X3+....+ßn..Xn+b--y^),
想要求得参数 就得 求ß i 的偏导
∂L(f)/∂ßi=∆∑(ß1.X1+ß2.X2+ß3.X3+....+ßn..Xn+b--y^)/∆ßi

当其值为0时求得 ß i的 最优解。
这样一来 由公式就可以各个击破 ,每个参数的值了。这个是一部到位

下面来看梯度下降 ,
所谓的梯度下降,我们优先考虑三维数据,在三位数据中 我们得到的函数所映射的面可能不是一个平面,可能是多个光滑的曲面,可能会非常的有没。那么 我们的损失函数有时候 就是代表这么的一个多个曲面的集合。我们想要找到损失函数的最小值,可能就是这个 曲面集合的【低洼地带】 有的时候 低洼地带可能只是一个局部最小值,所以需要谨慎,那我们是怎么去逼近这个低洼地带的呢,就是 靠着梯度下降,我们假设低洼地带的梯度为0,从任一点开始,只要 梯度是不断下降的趋势我们就像做电梯一样往下走,当然找到梯度下降最快的方向,我们 迭代的次数就越少,就越省力。

梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫

什么是梯度方向 就是 某一维数据的偏导 的导数,等于是求二次导数,对每个 偏导的导数 做比较,查看 到底是哪一维 下降是最多的, 这样一来 梯度下降很难是一条直线,碰碰撞撞下就达到了低洼地带。

导数与梯度

梯度的定义如下:

 
梯度定义

梯度的提出只为回答一个问题:
 函数在变量空间的某一点处,沿着哪一个方向有最大的变化率?
 梯度定义如下:
 函数在某一点的梯度是这样一个向量,它的方向与取得最大方向导数的方向一致,而它的模为方向导数的最大值。
 这里注意三点:
 1)梯度是一个向量,即有方向有大小;
 2)梯度的方向是最大方向导数的方向;
 3)梯度的值是最大方向导数的值。

导数与向量

提问:导数与偏导数与方向导数是向量么?
 向量的定义是有方向(direction)有大小(magnitude)的量。
 从前面的定义可以这样看出,偏导数和方向导数表达的是函数在某一点沿某一方向的变化率,也是具有方向和大小的。因此从这个角度来理解,我们也可以把偏导数和方向导数看作是一个向量,向量的方向就是变化率的方向,向量的模,就是变化率的大小。
 那么沿着这样一种思路,就可以如下理解梯度:
 梯度即函数在某一点最大的方向导数,函数沿梯度方向函数有最大的变化率。

梯度下降法

既然在变量空间的某一点处,函数沿梯度方向具有最大的变化率,那么在优化目标函数的时候,自然是沿着负梯度方向去减小函数值,以此达到我们的优化目标。
 如何沿着负梯度方向减小函数值呢?既然梯度是偏导数的集合,如下:
 

梯度定义

同时梯度和偏导数都是向量,那么参考向量运算法则,我们在每个变量轴上减小对应变量值即可,梯度下降法可以描述如下:

 
简单理解 最小二乘法 和梯度下降_第1张图片
梯度下降法

以上就是梯度下降法的由来,大部分的机器学习任务,都可以利用Gradient Descent来进行优化。

其中 α 就是 机器学习中的学习率 ,超参数 ,一般来说,α 刚开始 稍微大点,容易较快逼近,越到最后 α 越小 ,不然容易震荡,无法找到最优点

参考资料

https://blog.csdn.net/walilk/article/details/50978864
参考书:
《高等数学》
《简明微积分》
参考链接:
梯度
https://zh.wikipedia.org/zh-cn/%E5%81%8F%E5%AF%BC%E6%95%B0
方向导数和梯度
http://blog.csdn.net/wolenski/article/details/8030654

你可能感兴趣的:(简单理解 最小二乘法 和梯度下降)