ML05 -- 最优化方法:梯度下降

梯度下降

梯度下降是目前机器学习、深度学习解决最优化问题的算法中,最核心、应用最广的方法。

什么是梯度下降法

梯度下降是一种寻找函数极小值的方法。该方法最普遍的做法是:在已知参数当前值的情况下,按当前点对应的梯度向量的反方向,并按事先给定好的步长大小,对参数进行调整。按如上方法对参数做出多次调整后,函数就会逼近一个极小值。

为什么是沿梯度的反方向?

因为梯度的方向实际就是函数在此点上升最快的方向,而我们要找到函数的极小值,就需要朝着下降最快的方向走,即梯度的反方向。

梯度下降法场景假设

梯度下降法的基本思想可以类比为一个下山的过程。假设这样一个场景:一个人被困在山上,需要从山上下来(找到山的最低点,也就是山谷)。但此时山上的浓雾很大,导致可视度很低。因此,下山的路径就无法确定,他必须利用自己周围的信息去找到下山的路径。这个时候,他就可以利用梯度下降算法来帮助自己下山。具体来说就是,以他当前的所处的位置为基准,寻找这个位置最陡峭的地方,然后朝着山的高度下降的地方走,同理,如果我们的目标是上山,也就是爬到山顶,那么此时应该是朝着最陡峭的方向往上走。然后每走一段距离,都反复采用同一个方法,最后就能成功的抵达山谷。 引用《作者:六尺帐篷》

梯度下降存在的问题

没有收敛到全局最小值,只收敛到局部最小值。

应对的解决方案:首先随机产生多个初始参数集,即多组a0a_0,b0b_0;然后分别对每个初始参数集使用梯度下降法,直到函数值收敛于某个值;最后从这些值中找出最小值,这个找到的最小值被当作函数的最小值。当然这种方式不一定能找到全局最优解,但是起码能找到较好的。

梯度下降的实现

ML05 -- 最优化方法:梯度下降

实现线性回归中的梯度下降法

ML05 -- 最优化方法:梯度下降
参考:
https://mp.weixin.qq.com/s/44p8anqiiQV6XYGqH5u-Ug
https://mp.weixin.qq.com/s/nI9IBa4ccfg0xqyn0tbRPA
https://gitee.com/desertTown/Play-with-Machine-Learning-Algorithms/blob/master/06-Gradient-Descent/04-Implement-Gradient-Descent-in-Linear-Regression/04-Implement-Gradient-Descent-in-Linear-Regression.ipynb