批量归一化使训练更快?
Batch Normalization makes Training Faster?
我到处都读到,除了提高准确性方面的性能外,"Batch Normalization makes Training Faster"。
我可能误解了一些东西(因为 BN 不止一次被证明是有效的)但对我来说它似乎是不合逻辑的国王。
事实上,将 BN 添加到网络中会增加要学习的参数数量:BN 带来了 "Scales" 和 "offset" 个要学习的参数。参见:https://www.tensorflow.org/api_docs/python/tf/nn/batch_normalization
网络如何在 "more work to do" 的情况下训练得更快?
(我希望我的问题是合理的或者至少不是太愚蠢)。
谢谢:)
批量归一化需要更少的迭代次数来收敛到给定的损失值,从而加速训练。这可以通过使用更高的学习率来完成,但是使用更小的学习率您仍然可以看到改进。这篇论文非常清楚地说明了这一点。
与 sigmoid 激活相比,使用 ReLU 也有这种效果,如原始 AlexNet 论文(无 BN)所示。
批量归一化也使优化问题成为 "easier",因为最小化协变量偏移避免了损失停滞或缓慢下降的大量平稳期。它仍然可能发生,但频率要低得多。
批量归一化将较低层激活的分布固定到其下一层。 Scales 和 offset 只是 "move" 该分布到更有效的位置,但在每个训练步骤中它仍然是固定分布。这种固定意味着高层的参数调整不需要担心底层参数的修改,这使得训练效率更高。
我到处都读到,除了提高准确性方面的性能外,"Batch Normalization makes Training Faster"。
我可能误解了一些东西(因为 BN 不止一次被证明是有效的)但对我来说它似乎是不合逻辑的国王。
事实上,将 BN 添加到网络中会增加要学习的参数数量:BN 带来了 "Scales" 和 "offset" 个要学习的参数。参见:https://www.tensorflow.org/api_docs/python/tf/nn/batch_normalization
网络如何在 "more work to do" 的情况下训练得更快?
(我希望我的问题是合理的或者至少不是太愚蠢)。
谢谢:)
批量归一化需要更少的迭代次数来收敛到给定的损失值,从而加速训练。这可以通过使用更高的学习率来完成,但是使用更小的学习率您仍然可以看到改进。这篇论文非常清楚地说明了这一点。
与 sigmoid 激活相比,使用 ReLU 也有这种效果,如原始 AlexNet 论文(无 BN)所示。
批量归一化也使优化问题成为 "easier",因为最小化协变量偏移避免了损失停滞或缓慢下降的大量平稳期。它仍然可能发生,但频率要低得多。
批量归一化将较低层激活的分布固定到其下一层。 Scales 和 offset 只是 "move" 该分布到更有效的位置,但在每个训练步骤中它仍然是固定分布。这种固定意味着高层的参数调整不需要担心底层参数的修改,这使得训练效率更高。