梯度下降法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梯度下降法相关的知识,希望对你有一定的参考价值。

参考技术A 本文主要是为了讲解 梯度下降法 的原理和实践,
至于什么是梯度下降法,
他能做什么,
相信百度一下你就都知道了,
所以下面进入正题

梯度下降法主要是用来求解某个方程的最小值,
这里我们以 凹一元二次方程 为例。

这里我们用到 matplotlib 和 numpy ,
如果你对这两个库不了解也没关系,
我们主要是借助它来进行讲解,
不会过多涉及相关的东西

这里我们首先明确两个概念:

本文讲的并不如何易懂 和 通俗,
不过因为 一元二次的 梯度应该是相对很容易的,
所以这里也就不啰嗦了,
梯度下降其实也不外呼这个原理,
只是可能损失函数会不太一样,
那么梯度函数也就跟着不太一样了,
但是到最后都是通过这两个函数来进行迭代达到最后的标准求出最优解

梯度下降法容易陷入局部最优解的而达不到全局最优解,
所以可能需要随机选取多个起始点进行梯度迭代,
这样 全量的梯度下降法 也叫做 批量梯度下降法

对于多元二次方程,
因为多元会使得 批量梯度下降法 的梯度函数计算的非常缓慢,
所以可以采用随机梯度下降,
并且随机梯度下降 不容易 陷入局部最优解的的陷阱,
所谓的随机梯度就是每次计算梯度的时候随机选取一个样本进行迭代来实现,
但是因为单一样本的偶然性比较大,
并且其最后不一定能达到最小值,
所以一般也是采取折中的 小批量梯度下降法,
即可以随机抽取一部分样本进行迭代。

值得注意的是使用随机梯度下降的时候,
我们的 学习率 就不能取一个固定值,
这一点从上面的轨迹图可见一般,
越是接近底部,其变化应该是越来越小的,
如果 学习率 还是一开始的那样,
会使得最终的结果在真正的最小值附件徘徊,
很难得到一个比较精确的值。
这里可以参考下 模拟退火 的思想,
顺便我们可以看下随机梯度下降的 学习率 公式: a/(b+迭代次数)
其中 a 和 b 是作为参数来调节 学习率,使得其更适合进行迭代的计算

以上是关于梯度下降法的主要内容,如果未能解决你的问题,请参考以下文章

最速梯度下降

梯度下降法

梯度下降法随机梯度下降法小批量梯度下降法

为啥随机梯度下降方法能够收敛

梯度下降法原理和步骤

梯度下降法(Gradient Descent)