我有一个卷积神经网络,我修改了结构。我没有时间重新训练和执行交叉验证(网格搜索最优参数)。我想直观地调整学习速度。
在下列情况下,我是否应该增加或降低RMS (基于SGD)优化器的学习速率:
发布于 2018-12-26 08:21:08
作为一个简短的实用的答案,如果模型更复杂,那么学习速度就会降低,变量model_size大约是每层神经元的数目:
def rate(self, step = None):
"Implement `lrate` above"
if step is None:
step = self._step
return self.factor * \
(self.model_size ** (-0.5) *
min(step ** (-0.5), step * self.warmup ** (-1.5)))来源:注解变压器
另见:亚当:随机优化的一种方法
发布于 2015-12-27 00:51:55
那么,增加更多的层/神经元增加了过度拟合的机会。因此,随着时间的推移,降低学习率会更好。去除次采样层也增加了参数的数量,并再次增加了过度拟合的机会。这是强烈建议,至少通过经验结果证明,亚抽样层可以帮助模型更好地学习。所以要避免移除它们。
此外,我建议您通过剪切图像来生成更多的示例,并使用这些裁剪版本来训练模型。作为一个正则化器,这可以帮助模型学习更好的数据分布。然后,你也可以增加层/神经元的数量,减少过度拟合的风险。
发布于 2018-08-23 14:24:34
我们都同意,学习率可以被看作是一种控制过度的方法,就像辍学或批次大小一样。但我之所以写这个答案,是因为我认为埃米尔的回答和评论中的以下内容具有误导性:
它实际上是对面的!较小的学习率会增加过度适应的风险!
引用了超收敛:基于大学习速率的神经网络快速训练(Smith & Topin 2018) (一个非常有趣的读物):
有许多形式的正则化,如大学习率、小批大小、重量衰减和辍学。为了获得良好的性能,实践者必须平衡每个数据集和体系结构的各种正则化形式。以极高的学习率减少其他形式的正则化和正则化使培训显着地提高了效率。
所以,正如纪尧姆·雪佛里耶在他的第一条评论中所说,如果你增加正则化,如果你想保持正则化的总量不变,降低学习率可能是个好主意。但是,如果您的目标是增加正则化的总体数量,或者如果您减少了其他正则化方法(例如,减少辍学,增加批处理大小),那么学习率就应该提高。
相关(也是非常有趣):不要降低学习速度,增加批次大小(Smith等人)。(大湖区问题国际会议‘18)。
https://stackoverflow.com/questions/34476447
复制相似问题