梯度下降法是机器学习中一种常见的优化方法。
其常用来类比一个人在山上快速下山的过程,即沿着山坡最陡的方向下坡可以快速抵达山下,给出的公式为:
这里η为学习率,是一个小于1的数,f'(x0)是x0的梯度。意思就是一直这样更新下去(更新x0),就会让函数值f(x0)最小,准确的讲是达到局部最小值。
需要注意的是,梯度下降法就是指明了如何更新自变量x的值使得函数值最小,但这个公式本身与未体现函数值f(x0),而仅用到了f(x0)的梯度f'(x0)。
以下介绍推导过程。
公式推导用到了泰勒展开式,泰勒展开式如下:
泰勒展开的意义是用一系列多项式去逼近(近似表达)一个复杂函数。
如果只考虑1阶情况,那么有:
移项后得到:
梯度下降法的目标是让f(x)的值减小,即每次更新x则f(x)的值减小。假设x为更新后的值,x0为当前点,那么应该有f(x)- f(x0)<0
也就是等式右边的(x-x0)f'(x0)<0。此外,这里不光应当小于0,而且应该是一个最大的小于0的数,这样才能让f(x)以最快的速度减小。
注意,在机器学习中x一般是一个n维向量,f’(x0)也是一个向量,所以(x-x0)f'(x0)本质上是两个向量乘积,只有当两者反向时(-180°)才能最小。
所以:
这里等式右边的||f’(x0)||表示f’(x0)的模,ν是步长(每次走一小步),而f’(x0)/ ||f’(x0)||为梯度f’(x0)的方向向量
我们令νυ=η,则η为学习率,可见学习率为步长和梯度模分之一的乘积
整理以上式子得到: