使用自适应学习率优化器时是否需要对输入进行归一化?
使用自适应学习率优化器时是否需要对输入进行归一化?
这是深度学习训练里挺常见的疑问,咱们来拆解下背后的逻辑:
先看普通SGD的情况
对于没有自适应学习率的普通SGD来说,输入归一化(比如把图像数据处理成零均值、单位标准差)是很有必要的。因为如果不同输入通道的尺度差异很大,SGD用统一的学习率更新权重时,对尺度大的通道权重调整幅度过猛,尺度小的通道又得不到足够的更新,会直接拖慢模型收敛速度,甚至导致训练不稳定。
自适应学习率优化器的不同之处
但像Adam、Adagrad这类为每个权重单独调整学习率的自适应优化器,就从根源上解决了这个问题。它们会跟踪每个权重的历史梯度信息,动态调整对应的学习率:
- 如果某个输入通道尺度极大,对应权重的梯度会更“敏感”,优化器会自动缩小这个权重的学习率,避免更新幅度过大;
- 反之,尺度小的通道对应的权重,优化器会适当放大学习率,保证权重能得到足够的调整。
所以哪怕输入通道的尺度差异极大,自适应优化器也能自己适配,不需要依赖输入归一化来统一尺度。当然,如果输入尺度极端到离谱,偶尔做下归一化也不会有坏处,但这已经不是必须的步骤了。
内容的提问来源于stack exchange,提问作者hirschme
相关产品推荐
相关产品推荐

