博客
博客
文章目录
  1. 基本概念
  2. 什么是梯度
  3. 线性回归
  4. 总结

梯度下降与线性回归

基本概念

wikipedia: 梯度下降法是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。

梯度下降法是机器学习中最常用的优化方法之一,主要作用是求解目标函数的极小值。基本原理就是让目标函数沿着某个方向去搜索极小值,而这个方向就是梯度下降的方向,如果搜索极大值,就是沿着梯度上升方向。

image

什么是梯度

那么现在就有一个问题,梯度是怎么来的?

梯度是微积分中一个很重要的概念。在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向

这个需要我们一步步进行引申,首先我们都知道导数是函数在某点的斜率的变化,代表了自变量的瞬时变化率。在涉及到两个自变量的时候,函数图像从曲线来到了曲面,但是曲面有无数条切线。这个时候就有了偏导数的概念,表示多元函数沿着坐标轴的变化率。

image

$f_x (x, y)$ 或者 $\frac {\partial f}{\partial x}$ 表示沿着 x 轴方向的变化率

$f_y (x, y)$ 或者 $\frac {\partial f}{\partial y}$ 表示沿着 y 轴方向的变化率

这样依然不够,偏导数也只能表示出坐标轴方向的变化率,如果要表示指定方向的变化率,就需要引入方向导数的概念。

image

假设有这样一个函数 z = f (x, y),现在存在一个点 ,这个点在函数图像上有无数个切线,现在我们再引入一个方向向量 u,我们可以表示点 在方向向量 u 方向的斜率的。

image

上图中蓝色的点就是 ,紫色的射线就是方向向量,那么方向向量可以表示为 ,其中 表示向量与 x 的夹角,t 表示方向向量的长度。那么函数在点 沿着方向向量 u 的变化率可以表示为:。下面看看方向导数的表达式:

现在假设,, ,那么可以得到下面表达式:

那么想要 取到最大值,(向量 A 和向量 I 直接的夹角)为 0 度时, 等于 1。也就是当向量 I 与向量 A 平行的时候,方向导数最大。

现在我们就能得到梯度的表达式:

现在我们得到结论:梯度向量是方向导数最大的方向,也就是曲面上最陡峭的方向。 因为梯度的方向是函数在给定点上升最快的方向,所以梯度的反方向就是函数在给定点下降最快的方向,这正是我们所需要的。我们只要沿着梯度下降的方向一直走,就能走到局部的最低点。

线性回归

现在使用梯度下降法来做一个简单的线性回归。线性回归是一种回归分析,简单的说就是在一些已知的 (x, y) 坐标点中,统计出尽量与所有点都靠近的函数 h (x)。然后使用抽象出的函数对输入的的 x 预测出新的 y。

image

假设上图是同一地段,房屋面积与房价的关系。现在我们需要通过梯度下降法得到一个预测函数(θ 为回归系数):

那么我们如何评估这个预测函数是否符合预期呢,这里可以使用最小均方差里描述误差:

这里的 m 表示我们所有的已知坐标点的数量,用 h 函数预测的 y 减去真实的 y 求的方差,通常误差评估的函数在机器学习中被成为代价函数。现在我们来使用梯度下降来调节 θ:

简单来说就是让 θ 每次减去 α 乘以梯度,让函数往最小误差偏移,这里的 α 成为学习率。其作用是限制梯度方向的速率,如果步子太大很容易迈过最小值,而步子太小又会减缓寻找最小值的速率。在实际编程中,学习率可以以 3 倍,10 倍这样进行取值尝试。

image

将代价函数代入到梯度下降函数中,可以得到:

接下来要做的就是把所有已知的的点代入进行计算,最后得到预测函数。实际的机器学习训练中,不会使用全部的数据进行训练,一般会取出 70% 的数据进行训练,剩余的 30% 的数据用来进行测试,测试训练模型的准确率如何。

总结

其中用到的微积分知识比较多,大学学过后很久都没有用过了,还是要多复习。
另外梯度下降是机器学习中常用的优化方式,在深度学习中也有应用,需要好好掌握。使用梯度下降最重要的就是找到一个合适的学习率,这样才能高效的完成训练。

支持一下
扫一扫,支持一下
  • 微信扫一扫
  • 支付宝扫一扫