梯度下降算法_梯度下降法——(书中附录A)

梯度下降法(gradient descent)最速下降法(steepest descent)是求解无约束最优化问题的一种最常用的方法。

梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量

关于梯度下降法这方面的知识,其实网上已经有很多特别通俗易懂的解释了,比如下面这篇,将梯度下降比作是一个登山爱好者在雾气缭绕得山上如何下山来解释,我觉得解释得非常经典:

https://blog.csdn.net/qq_41800366/article/details/86583789

我这里对这个过程进行一下简单得叙述,尽量不留死角。

简单来说,梯度下降法是干啥得呢?既然是“下降”,即一步一步地往下走,那肯定就是对应着去寻找极小值的;相反也有梯度上升法,就是去找极大值的。我们在这里仅仅讨论下降法,上升法的过程也是一致的。

我们来看一个函数

4ab4513b66272cfae424789a3d373ccc.png

我们可以想象一下:如果初始时,曲线上的一点在(-5,25)这个位置,我要寻找最优点(y值最小的那个点)。显然初始点需要往x增大的方向去走,去寻找。这个时候,我们可以算出来初始点的梯度(即斜率)等于-10,是个负数,但是我们刚才说了,它需要朝x正方向走;同样的,如果初始点在(5,25)这个位置时,它的梯度等于10,是个正数,但是我们明显可以看出它需要朝着x的负方向走才能找到y最小的那个点。所以我们可以说:初始点朝着该点的负梯度方向寻找。

上述时对于单变量来说的,对于多变量也是一样的道理。

明白了“负梯度方向”的概念之后,我们就开始理解书中的叙述吧~

假设

上具有
一阶连续偏导数的函数(即函数可微,连续光滑)。要求解的 无约束最优化问题是:

即寻找到一个点

使得函数
取极小值。我们假设
表示目标函数
的极小值点。

前面说了,梯度下降法是一种迭代算法:选取适当的初值点

,以一定的
方向和步长,不断迭代更新
的值,进行目标函数的
极小化,直至 收敛到目标函数小于设定好的一个 阈值
。这里的
“方向”是负梯度方向,因为负梯度方向是下降最快且朝着极小点的方向。步长关乎收敛速度和精度,步长过长,收敛速度快,但可能精度不够,始终在极小值周围振荡;步长过小,最终可能可以得到十分准确的极小值点,但收敛速度比较慢,所以要综合考虑这两方面来确定步长的取值。

迭代的方法看上面那个链接中的例子大概就能理解了,我想说一下这个步长的选取问题。上面也说了,步长的选择决定着整个迭代效果,选择一个合适的步长,可以仅短短几步就能找到较为精确的极小点。书中所述用一维搜索来确定步长的大小:

上式中,

为下一步的迭代点;
就是
上取最小值时的 步长
即负梯度方向。

整个梯度下降法的算法过程如下:

输入:目标函数

,梯度函数
计算精度

输出:

的极小点

(1)取初始值

,置

(2)计算

(3)计算梯度

,当
时,停止迭代,令
;否则,令
,求
,使

(4)置

,计算
,当
时,停止迭代,令

(5)否则,置

,转(3)。

当目标函数是凸函数时,梯度下降法的解是全局最优解。一般情况下,其解不保证是全局最优解。梯度下降法的收敛速度也未必是很快的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值