梯度下降法用来求函数的极小值,且是一种迭代算法,由于计算效率高,在机器学习中常常使用。梯度下降法经常求凸函数(convex function)的极小值,因为凸函数只有一个极小值,使用梯度下降法求得的极小值就是最小值。
与其对应的有梯度上升法(Gradient ascent),用来求函数的极大值,两种方法原理一样,只是计算的过程中正负号不同而已。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值(local minimum)。直白的话说,梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快。
梯度下降公式:
具体做法:
(1)先确定向下一步的步伐大小,我们称为Learning rate;
(2)任意给定一个初始值:;
(3)确定一个向下的方向,并向下走预先规定的步伐,并更新初始值;
(4)当下降的高度小于某个定义的值,则停止下降;
参考https://blog.csdn.net/xuelabizp/article/details/50878013
https://www.jianshu.com/p/492e1c9ddf45
https://www.cnblogs.com/pinard/p/5970503.html