梯度下降法是机器学习的一种学习方法。我觉得非常妙。通过一个一维的问题用梯度下降法,理解学习过程是怎样的。
假设g是目标函数f的梯度函数,w0是初始值,r是学习速度, g(w)=0时候,认为找到目标函数的局部极小点,设置精度p=0.001。
1.v=g(w0);
2.v < p 这里一般用 abs(v)<p;
3.w1= w0 - v*r ;
在这里得到新的w值重复1,2步骤。这里为什么是w0-v*r 这个是泰勒公式在梯度下降法中的应用。这一步抽象看作一个直角三角形去拟合一条曲线。图像抽象如下。
可以去调节r,就是增大或者缩小学习速度,看看这个红色的三角形的变化。
如果r设置过大,可能条件一就不能满足,条件二算出来的w也不算最优。
如果r太小,又学习太慢。
还有一个问题,收敛的条件,就是迭代到什么时候为止呢?
1.设置精度,当两次迭代的差异小于多少的时候,默认学不动了,学习停止。
(带入梯度函数直接求,一维的用绝对值,二维以上的用范数。这里参考别人的代码觉得这种方法简单)
2.设置最大迭代次数