梯度下降

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ0,θ1)J(\theta_0,\theta_1)的最小值。
这里可以想象一下下山的画面
吴恩达机器学习笔记三
假如你正站立在你想象的公园这座红色山上,在梯度下降算法中,我们要做的就是旋转 360 度,看看我们的周围,并问自己要在某个方向上,用小碎步尽快下山。这些小碎步需要朝什么方向?如果我们站在山坡上的这一点,你看一下周围,你会发现最佳的下山方向,你再看看周围,然后再一次想想,我应该从什么方向迈着小碎步下山?然后你按照自己的判断又迈出一步,重复上面的步骤,从这个新的点,你环顾四周,并决定从什么方向将会最快下山,然后又迈进了一小步,并依此类推,直到你接近局部最低点的位置(局部最优)。
批量梯度下降的公式:
吴恩达机器学习笔记三
其中α\alpha是学习率它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。

在梯度下降算法中,还有一个更微妙的问题,梯度下降中,我们要更新θ0\theta_0θ1\theta_1 ,当 j= 0和j = 1时,会产生更新,所以你将更新J(θ0)J(\theta_0)J(θ1)J(\theta_1)。实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新θ0\theta_0θ1\theta_1,更新方法如下图所示:

吴恩达机器学习笔记三

梯度算法是做什么的,更新过程的意义

梯度下降算法
吴恩达机器学习笔记三
让我们看看这条红色直线的斜率,就是这条刚好与函数曲线相切的这条直线,这条直线的斜率正好是这个三角形的高度除以这个水平长度,现在,这条线有一个正斜率,也就是说它有正导数,因此,我得到的新的θ0\theta_0θ1\theta_1更新后等于θ1\theta_1减去一个正数乘以α\alpha。假设 θ1\theta_1在左边的时候,我得到的新的θ0\theta_0θ1\theta_1更新后等于θ1\theta_1减去一个负数数乘以α\alpha,最终的目的就是求最小值。
其中α\alpha是学习速率,相当于下山的时候迈的步子,当然如何选取一个合适的学习速率是非常重要的:1.如果α\alpha太小了,即我的学习速率太小,结果就是只能这样像小宝宝一样一点点地挪动,去努力接近最低点,这样就需要很多步才能到达最低点,所以如果α\alpha太小的话,可能会很慢,因为它会一点点挪动,它会需要很多步才能到达全局最低点。
2.如果α\alpha太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,下一次迭代又移动了一大步,越过一次,又越过一次,一次次越过最低点,直到你发现实际上离最低点越来越远,所以,如果α\alpha太大,它会导致无法收敛,甚至发散。

梯度下降的线性回归

梯度下降算法和线性回归算法比较如图:
吴恩达机器学习笔记三
对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
吴恩达机器学习笔记三
这种算法也称为批量梯度下降(因为在每次一次更新中,都要对m个训练样本求和)。

相关文章:

  • 2021-04-29
  • 2021-06-04
  • 2021-06-30
  • 2021-07-31
  • 2021-11-23
  • 2021-07-04
  • 2021-11-30
猜你喜欢
  • 2021-05-28
  • 2021-04-06
  • 2021-06-27
  • 2021-08-28
  • 2021-09-15
相关资源
相似解决方案