lr_scheduler 简介

torch.optim.lr_scheduler模块提供了一些根据epoch训练次数来调整学习率(learning rate)的方法。一般情况下我们会设置随着epoch的增大而逐渐减小学习率从而达到更好的训练效果。

为什么需要调整学习率

在深度学习训练过程中,最重要的参数就是学习率,通常来说,在整个训练过层中,学习率不会一直保持不变,为了让模型能够在训练初期快速收敛,学习率通常比较大,在训练末期,为了让模型收敛在更小的局部最优点,学习率通常要比较小。

学习率的初始值设置

其实,不同的任务学习率的初始值是需要试验几次来获得的,使用的优化器不同,mini-batch 的 batch_size 大小不同,学习率的初始值也不太相同。同一个任务,如果使用Adam优化器,学习率初始值0.001比较好,Adam优化器对于初始值实际上不太敏感,基本都能做到快速收敛;如果使用SGD优化器的话,学习率需要在Adam的基础上乘以10倍或者100倍,也就是使用0.1或者0.01比较好。需要注意的一点,通常 batch_size 扩大 n 倍,学习率也要相应扩大 $\sqrt{n}$