首先 神经网络的训练是十分复杂的 每一层的输入都会受前面所有层的影响 而且当层数越深 这种影响将被放大 所以 如果对于输入的分布有一些改变 则会造成问题 使得这些层的参数需要重新调整来适应这个变化的分布 这是我们不想见到的 如果我们使这种非线性的输入分布维持稳定 这样就可以加速对网络的训练 所以我们想要改进 whitening 是一个很好的方法能使得训练收敛速度加快 whitening 是使得输入 通过线性变换 变成0均值 单位方差 并且去除了输入的相关性 所以 我们想着在每一个训练步骤都加入whitening 操作 但是 如果这些操作穿插在optimization 过程中 则会造成问题 因为梯度下降算法 为了减小梯度阶梯的影响 会更新参数使得归一化的结果也被更新 文中观察到如果在梯度下降法的操作之外进行归一化参数时 网络会blows up 所以这里使用了一个归一化函数 使得input与整个的训练集进行归一化 但这个操作过于昂贵 这里进行了2个优化 第一个是不再对一层的输入输出结合在一起进行归一化 而是单独的对每个特征进行归一化 第二个是使用minibatch 来进行归一化 这里还有一点是BN对于训练的阶段很有效 但对于测试阶段不是很必要 于是对于测试阶段 文章使用了2个参数 替代了BN原本计算
以上是自己理出来的逻辑 比较乱 我再去看看别人的心得会比较好理解吧