梯度下降法和随机梯度下降法的理解

来源:互联网 发布:切纸机编程使用方法 编辑:程序博客网 时间:2024/04/29 10:34

1:其实梯度下降算法,在使用的时候无非是要考虑到2个方面,一个是方向,一个是步长,方向决定你是否走在了优化的道路上还是优化道路的负方向,步长是决定你要走多久才能到最优的地方。对于第一个问题很好解决,就是求梯度,梯度的负方向就是了。难的是求步长,如果步子太小,则需要很长的时间才能走到目的地,如果步子过大可能在目的地的周围来走震荡。所以重点在于如何选择步长。


2:对于随机梯度中,步长的选择方法有很多,最简单的莫过于设置一个比较小的步长,让算法慢慢去运行去就是了,也有别的方法就是可以计算步长的算法,这个我也试过了,反正不好弄,我就选择了最简单的小步长。但是何时算法自己知道差不多了可以停止了呢?我主要想说下这个问题:很多人都说设置迭代一定的次数或者比较两次梯度的变化,或者两次cost的变化,这个地方我不是特别同意,因为尤其是设置了一个小步长的时候,迭代一定次数当然可以,但是这个次数到底多少可以?没办法知道,所以如果设置了一定次数,次数过小的话肯定此时并没有达到最优的或者很接近最优点的地方,如果过大理论上是可以的,但是多少才算过大?你觉得10万次很多,但是不一定10万次算法可以达到,所以这个我觉得不太靠谱,对于比较两次梯度变化或者cost变化,同样存在这个问题,如果步长很小的话,那么同样连续两次之间的梯度和cost变化很小也是无法保证此时接近最优点的啊。


3:这里我介绍一个方法叫做early-stop,其实也是很成熟的方法了,大概思路是在训练的过程中,使用验证集周期性的来测试当前计算出来的参数,在验证集上测试当前参数对验证集的效果,如果效果可以,就保存起来,当很长一段时间都是此效果的话那么就迭代停止,该组参数就认为是不错的参数。即加入一个时间条件,类似于看门狗程序,一段时间内,效果变化不大,就认为改组参数是可以接受的或是已经达到稳定状态。

0 0
原创粉丝点击