深度网络调参
深度网络调参
重要的超参数
深度学习网络有很多超参数,下面列出了一些比较重要,常常需要调节的超参数。
- 最重要
学习率
- 较重要
mini-batch size
hidden units
网络层数
动量参数
学习率衰减
算力不同的调参
算力不同、网络规模、数据量不同,也有不同的调参方法,当模型和计算量较小时,可以使用网格调参;在算力足够的情况下,使用多组参数并行训练模型;反之,如果算力不足,且模型和数据较大,可能需要手动调参,比如训练几天之后,手动下调学习率,动量等超参数,人为地逐渐推进训练过程。
网格调参和随机调参
机器学习中常使用网格调参,即将参数列成表格,按一定步长尝试所有组合的参数,这种方法适用于较小的网络。深度学习网络一般较大,训练时间较长,一般使用随机抽取方法,在重点区域进行更多的抽样(密度更大),这样在一开始不确定哪些超参数重要时,可以广撒网,越往后越有针对性,实现从粗到细调参,同时又兼顾各种可能性,以免陷入局部最优值,类似于蒙特卡洛方法。
非线性轴调参
非线性轴调参也是常见的调参问题,比如设置学习率常常是 0.1, 0.01, 0.001, 0.0001…这样就不能用直接将取值范围平均分成 n 份,每次增加同样步长的方法,如: 0.01, 0.02, 0.03…这样调节效果不好。在这种情况下常使用指数调参,如 Pytorch 提供的 ExponentialLR 方法。
另外,还有一些类似情况,比如参数的取值范围在 [0,1] 之间,可能在中段并不敏感,而在 0 或 1 附近非常敏感,也需要使用类似指数或者指数加权平均的累积调参方法。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.