添加BatchNorm层可以缩短训练时间并使整个深度模型更加稳定。这是在机器学习实践中广泛使用的实验事实。
我的问题是 - 为什么它有效?
最初的(2015 年)论文通过指出这些层有助于修复“内部协变量偏移”来推动层的引入。粗略的想法是,内层输入分布的大变化使训练不太稳定,导致学习率下降和训练减慢。批标准化通过标准化内层的输入来缓解这个问题。
这一解释遭到下一篇(2018 年)论文的严厉批评——引用摘要:
... 层输入的分布稳定性与 BatchNorm 的成功关系不大
他们证明了 BatchNorm 对内层输入分布的影响很小。不仅如此——他们试图在分布中注入一些非零均值/方差噪声。他们仍然获得几乎相同的性能。
他们的结论是,BatchNorm 起作用的真正原因是……
相反,BatchNorm 使优化环境变得更加平滑。
根据我的口味,说它提高稳定性有点重复。
我发现了另外两篇试图解决这个问题的论文:在这篇论文中,“关键好处”据称是批量标准化使残差块偏向于恒等函数的事实。在本文中,它“避免了排名崩溃”。
那么,有底线吗?为什么 BatchNorm 有效?