机器学习3---梯度下降法的_初阶原理_与简单应用

梯度下降法

    • 梯度下降法概念
      • 梯度下降法的实现过程
      • 图像层面说明
    • 数学原理
      • 梗概
      • 简单举例论述原理
      • 梯度下降法使用时的注意点
    • 梯度下降和代价函数结合的应用:BGD批量梯度下降法(每次迭代都使用所有的样本)
      • 原理解释
      • 举例

梯度下降法概念

可以用来求任何一个函数的最小值所在的点。
在机器学习中我们可以用梯度下降法来最小化任意代价函数J,从而得到最优的参数解。

梯度下降法的实现过程

机器学习3---梯度下降法的_初阶原理_与简单应用_第1张图片
实际上函数的参数值可以不只有两个,可以是好多个。
1.给代价函数的参数设定初始值(什么都行)。
2.持续改变参数的值,从而减小J函数的值,直到我们找到J函数的最小值或者局部最小值为止

图像层面说明

下面举例说明:
机器学习3---梯度下降法的_初阶原理_与简单应用_第2张图片
这个代价函数可以写成J(θ0,θ1)。
我们给参数赋一个初值,就相当于与我们站在了这个山地立体图的某一个点上。 我们的目的是找到局部地势低洼的地方
我们看一下周围,就明白向哪个方向是最佳下山方向。 然后我们迈出一小步。
之后我们重复上面的步骤,不断寻找最佳下山方向,直至我们到达局部最低点
机器学习3---梯度下降法的_初阶原理_与简单应用_第3张图片
有趣的是,我们发现,选的起点不同的话,我们就会得到一个截然不同的局部最低点

数学原理

梗概

机器学习3---梯度下降法的_初阶原理_与简单应用_第4张图片
首先解释符号":=":k := k+1,作用相当于编程语言中的k += 1,即在原来的基础上进行操作后,把新值再赋给这个值。
这里的α是学习率,代表的是梯度下降的速度快慢。α大,梯度会下降的很快;α小的话,下降的就慢一些。注意,α的值是正数。
机器学习3---梯度下降法的_初阶原理_与简单应用_第5张图片
数据更新时,一定要等两个值都算出来后再更新θ0和θ1的值。这才是梯度下降法的本义—同时更新
而右边的算法虽然结果也可能正确,但是它本质上是属于另外一种算法。

简单举例论述原理

机器学习3---梯度下降法的_初阶原理_与简单应用_第6张图片
这里以只有一个参数的J函数举例:
机器学习3---梯度下降法的_初阶原理_与简单应用_第7张图片
找到一个初始点,求得这一点的导数,之后用这个点的横坐标减去这一点的导数与学习率α的积;会得到一个新的点。
重复以上的步骤,在α值合适的前提下,横坐标的值变化的会越来越慢。
因为若是初始点在左侧,导数为负数,相当于每次横坐标在慢慢变大,随着越发逼近最小值点,导数值逐渐逼近0。横坐标变化幅度愈发的小,当他几乎不再变化或或者系统判断他已经不再变化,即该点的导数值可认为是0的时候,系统就会停止运算。
若是初始点在右侧,导数为正数,相当于横坐标每运算一次就减小一次,随着导数值逐渐逼近0,横坐标减小的幅度愈发的小,当他几乎不再变化的时候,就找了最小值点。

梯度下降法使用时的注意点

机器学习3---梯度下降法的_初阶原理_与简单应用_第8张图片
此外,一定要选取合适的α的值,选的太小,他会下降的异常的慢,会浪费时间;若选的太大**,下降的幅度过大,很有可能就错过了最小值点。** 此时为了减小横坐标的变化幅度,可能该点就会左右来回跳跃,这样下去会一次次的跳过最低点,会离最低点越来越远。

机器学习3---梯度下降法的_初阶原理_与简单应用_第9张图片注意,若我们的初始点一开始就处于一个局部最低点,**并且学习率α的大小不足以让他跳跃到下一个局部最低点,**他就会保持不变,即此时梯度下降法不发挥作用。

因此初始值和学习率的设置都要谨慎细微,否则就容易陷入无限循环找不到最优解陷入局部最优的陷阱。

梯度下降和代价函数结合的应用:BGD批量梯度下降法(每次迭代都使用所有的样本)

原理解释

机器学习3---梯度下降法的_初阶原理_与简单应用_第10张图片
此种算法的每一步梯度下降优化都会用到所有的样本集。

举例

机器学习3---梯度下降法的_初阶原理_与简单应用_第11张图片
左侧是梯度下降法,右侧是线性回归函数和它的代价函数。

1.将偏导项写出来然后展开:
机器学习3---梯度下降法的_初阶原理_与简单应用_第12张图片
2.分别求代价函数参数θ0和θ1的偏导函数
机器学习3---梯度下降法的_初阶原理_与简单应用_第13张图片3.将以上结果回代入梯度下降函数
机器学习3---梯度下降法的_初阶原理_与简单应用_第14张图片

此外我们可以知道该一次函数的损失函数的图像是,他是一个凸函数

机器学习3---梯度下降法的_初阶原理_与简单应用_第15张图片
因此我们就不必担心陷入局部最优的问题,现在只需要规定一个合适的学习率。之后就是计算机的事情了:用一个点的横坐标减去该点的偏导数,计算机会不断重复这个过程。直到θ0和θ1的值都几乎不再发生变化了,我们就求得了最优解。

另外一定要注意,梯度下降法是同步更新,不管被优化函数有几个参数,他都一定是在把所有的式子运算完之后才会统一更新新值。

附上正确的运行顺序:
在这里插入图片描述

另外,若要从数学角度和视觉上去感受求解它的过程,请参照我的博客: https://blog.csdn.net/importpygame/article/details/106378493.中的小标题为:两个参数情况下的优化过程(θ1与θ0都参与优化过程) 下的内容。

你可能感兴趣的:(算法,机器学习)