learning rate2

learning rate

本文就不讲什么是learning rate了,还是讲讲Andrew Ng所讲的一些小tips和自己的理解。 
如何判断我们选的learning rate起作用了呢,那就是画一张下面这样的图,代价函数-迭代次数曲线图,如果呈现下面这种一路下降的情况,那就说明梯度下降算法起作用了。当然一般情况下是不可能perfect fitting的,所以我们根据实际情况设置一个阈值,当代价函数小于阈值时,我们就判断收敛了。 
这里写图片描述

除了上图中的正确情况,还有下面两种错误情况。 
这里写图片描述 
这里写图片描述 
它们都存在代价函数增大的情况,实际learning rate选的太大导致的,出现下图的横跳情况。 
 
其实面对上图,我一直有个疑惑,为什么learning rate是固定的,代价函数却越来越大呢,在上图直观的看来就是左右横跳距离越来越大,但其实learning rate不变,在contour map上跳的距离就不变,只是方向变了。 
但其实你仔细想想,contour map上移动的距离,和上图中横跳的距离并没有直接关系,代价函数越来越大的原因其实也要用contour map来解释,因为在沿着长轴zig-zag的过程中,虽然每次迭代移动的距离是一样的,但是由于缓慢在向最小值点靠近,那么contour会越来越密,对应的移动相同距离,却由于跨过的等高线越多,所以可能出现反而增大的情况。 
最后Andrew Ng教授建议learning rate的选取 
这里写图片描述 
依次3倍增加,然后用测试的最大值,这样既保证了收敛又保证了收敛速度。

猜你喜欢

转载自blog.csdn.net/hellocsz/article/details/80849902