摘要
本文将以通俗易懂的方式介绍梯度下降算法的原理,以及文章的最后会去简要实现梯度下降算法(python代码实现)
基本思想
首先,我们需要了解梯度下降算法的原理,这里我举一个简单的例子:
有一个农夫在山上砍柴,天色将晚,农夫准备从山顶走到山底的家,由于天气原因,可见度很低,他每走一步只能看到很短的一段距离,这里我们想一下,这位农夫怎样才能以最快的时间走到家,这里这位农夫就可以使用梯度下降算法了,答案是他每一步都去走自己附近最陡峭的地方。好,问题解决了,我们继续,那么假设这位农夫具有判断最陡峭方向的能力,那么问题又来了,这位农夫每次沿着这个最陡峭的方向走多大的步子呢?如果步子很大就会错过家门,然而如果步子很小,就很有可能在很短的时间里到不了家,所以每一步的大小也是一个至关重要的问题。
好了,故事讲完了,这里我想说的是,每一次走最陡峭的地方就是梯度下降算法的原理,而每一步的大小又是梯度学习算法中很重要的学习率参数问题,相信读到这里,你的脑子中会记住一些概念了,接下来我们首先利用数学的角度去解释梯度下降算法,可能有些枯燥,但一定坚持读下去。
梯度下降算法的数学原理解释
x1=x0−α∗δy(x) x1= x0 - \alpha * \delta y(x)x1=x0−α∗δy(x)
其中上述公式中的参数分别表示为:
x1:next position 下一步的位置
x0:current position 当前所处的位置
α\alphaα:every step 每一步的步长(也就是上文中的学习率 不能太大,也不能太小)
δ\delta