22-线性回归中的梯度下降法

线性回归中的梯度下降法


  之前我一直都是使用二次曲线作为损失函数来模拟梯度下降法的过程,这篇博客主要是将梯度下降法运用在多元线性回归中。

  对于线性回归的问题,我们的损失函数 J:
在这里插入图片描述

  也就是每一次线性预测的结果和这个数据对应的真值之间差的平方的和,就是我们的损失函数 J。而对于我们的参数来说,绝不仅仅只有一个 theta,我们这个 theta 是一个向量,从 0 到 n 一共有 n+1 个元素,其中 n 是我们样本中的特征数量。
在这里插入图片描述

  即使是对于我们的简单线性回归来说,也就是只有一个样本特征的情况下,这个 θ 里面也包含两个值,θ0 和 θ1。

在这里插入图片描述


  那么,对于下列这个式子来说:
在这里插入图片描述
  即对 J 上的 θ 这一点求导,而在多元线性回归中相应的就要写成:
在这里插入图片描述
  这种形式其实就是指求 J 在 θ 上对应的梯度值,这个梯度它本身也是一个向量,这个向量中有 n+1 个元素,这是因为 J 中含有 n+1 个未知量,就是这 n+1 个 θ。
在这里插入图片描述
  这个梯度就是 J 对每一个方向的 θ 求一次偏导数(偏导数的求法和导数一样),那么这个梯度就可以代表方向,对应 J 增大最快的方向。

在这里插入图片描述
  那么,我们非常容易就将梯度下降法拓展到了一个高维的空间中,区别只在于我们之前处理的那个导数只是一个数字,而现在是一个向量。但是在这种情况下,梯度下降法依然是成立的。


  下面举一个例子,这是对有两个参数的梯度下降法进行了可视化。
在这里插入图片描述
  每一圈代表等高线,也就是代表我们损失函数 J 的取值, 越外圈,相应的 J 的取值就越大,越内圈,J 的取值越小,那么在中心的位置,达到 J 的最小值。这个例子的函数是 z = x^2 + 2*y^2,这里的 x 和 y 对应的是那两个参数,而 z 代表的是损失函数 J 的取值。

  在这种情况下,使用我们的梯度下降法。比如从 A 点出发。
在这里插入图片描述
  它就会沿着梯度行径的方向。
在这里插入图片描述
  逐渐来到中心,也就是整个损失函数的最小值点 c。
在这里插入图片描述
  通过这个图示我们可以看到,当我们有多个参数的时候,在每一点的位置,向取值更小的方向前进其实也有非常多的选择,但是此时,梯度那个方向相应的就是下降最快的那个方向。这也是我们每一次求梯度,用梯度的方向作为我们的 θ 真正前进的方向的原因。

  接下来,我们就来看看当我们在线性回归法中使用梯度下降法的时候,我们推导的这个式子是什么样子的?我们的目标是:
在这里插入图片描述
  这里的 y 的预测值为:
在这里插入图片描述
  然后我们将 y 的预测值带进第一个式子,目标就变成了:
在这里插入图片描述

  也就是这样的一个函数对应我们的损失函数 J:
在这里插入图片描述
  相应的,我们在 J 上对 θ 求梯度值,也就是在 J 上针对 θ 的每一个维度的未知量去求导:
在这里插入图片描述
  通过之前的导数的应用,相信这里的求导就很简单了:
在这里插入图片描述

  这里在求导过程中需要注意,θ 是未知数,而 x 和 y 是已知数,这些都是我们在监督学习中获得的样本信息,不要混淆了。

  下面我再对上面的式子做一个整理:
在这里插入图片描述
  可以看到梯度中的每一项,都是 m 项的求和。在这里,梯度的大小显然跟我们的样本数量有关,我们的样本数量越大,相应的梯度中每一项就越大,其实这个是不合理的。我们希望求出的这个梯度和每一个元素的值和 m 是无关的,因此,我们让整个梯度值除以 m:
在这里插入图片描述
  那么我们的目标函数因此也变成了:

在这里插入图片描述
  仔细看看现在的目标函数,是不是非常眼熟,它就是 y 的真值和 y 的预测值之间的差的平方和,也就是我们之前学习的均方误差 MSE。那么损失函数 J 又可以写做:
在这里插入图片描述
  有可能你看一些机器学习的教材,对于在线性回归中使用梯度下降法会把我们要优化的那个目标函数写成:

在这里插入图片描述
  其实这个目标函数和我们的目标函数只差了一个 1/2 而已,它主要是为了当对 J 求导时,平方拿出来的这个 2 与 这个 1/2 约掉,这个 2 倍的差距在实际的应用中效果差别不大。所以无论是取哪个式子作为目标函数,都是可以的。但是如果我们没有 1/m 的话,我们的 J(θ) 中每一个元素就会非常大,在具体编程实践的过程中就会出现一些问题。那么这样的一个分析其实也是在告诉我们,当我们使用梯度下降法来求一个函数的最小值的时候,有时候我们对我们的目标函数要进行一些特殊的设计,不见得所有的目标函数都非常地合适。虽然理论上,我们这个梯度中每一个元素都非常大的话,我们依然可以调节 η 来得到我们想要地结果,但是那样可能会影响效率。

  那么,我这里将会使用这个式子作为目标函数:
在这里插入图片描述
  那么梯度的值就被下列式子所表达:
在这里插入图片描述


好了,这篇博客就饿先写到这里。在下篇博客中,我将会具体地编程在线性回归中使用梯度下降法~~

猜你喜欢

转载自blog.csdn.net/qq_41033011/article/details/109066021