训练神经网络,一些小的Trick可以帮助我们判断我的网络是否正确,是否按照我们的预期来运行。
- 首先不加正则项,记录loss,然后在正则项,比如正则项系数为1e3,此时loss应该增加。
初次训练,应先从dataset中取小部分样本来训练,这时候如果我们的网络在多次迭代后可以较好的过拟合这个小部分样本(即准确率达到100%,loss很小很小),说明我们的参数,反向传播,梯度计算应该是没有问题的。
如何设置学习率?比如开始设置学习率为1e-6,发现loss下降的非常缓慢,说明这个学习率在此刻设置小了,应该设置大一点,如果设置为1e6,通常loss显示为
NaN
,这说明学习率设置的太大了。
如何调参?
课上老师介绍了一种Coarse-To-Fine的交叉验证策略。 意思就是说,先在一个大范围内宽泛的搜索,仅仅迭代几个epoch,根据accuracy的表现,来缩小这个search的范围,在这个范围内,更加精细的搜索。如图所示: Coarse Search: Fine search:
提升结果
- Train multiple independent models
- At test time average their results
Enjoy 2% extra performance