如何手写梯度下降法

梯度下降法是机器学习的一种学习方法。我觉得非常妙。通过一个一维的问题用梯度下降法,理解学习过程是怎样的。

假设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.设置最大迭代次数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容