很久很久没有写过博客了。
去年春夏接触到深度学习,直到现在,也有大半年了,但是关于训练调节参数一直没有很好的把握,刚好同组有调参大神,就向她请教了下:
本着一个大原则:学习率尽量调大,只要不发散就行。
1、用什么:Adam和SGD
Adam:比较傻瓜式,可以自动调节学习率(初始学习率也不能太大,只是施加一个惯性?)。不追求极致的和初学者能用它把模型训练到一个比较满意的效果。
SGD:一般框架中默认的优化器,适合要求比较高的模型训练。普遍适用于各种数据集,一般给个较大的bash_lr训练一段时间后再降低进行训练。
以下例子来自于caffe源代码中的mnist训练例子(只看最后一个cell就行):
收敛速度: Adam > SGD
eg. 网络包含一个全连接层,lr=0.001,lr_policy=‘inv’, niter=500 (左Adam右SGD)