根据LeCun 等人 (1998) 的“Efficient Backprop”,对所有输入进行归一化是一种很好的做法,以使它们以 0 为中心并位于最大二阶导数的范围内。例如,我们将 [-0.5,0.5] 用于“Tanh”函数。这是为了帮助随着 Hessian 变得更加稳定而进行反向传播。
但是,我不确定如何处理最大(0,x)的整流神经元。(从那时起,我们也需要类似 [0.1,0.9] 的逻辑函数,但它并不以 0 为中心)
根据LeCun 等人 (1998) 的“Efficient Backprop”,对所有输入进行归一化是一种很好的做法,以使它们以 0 为中心并位于最大二阶导数的范围内。例如,我们将 [-0.5,0.5] 用于“Tanh”函数。这是为了帮助随着 Hessian 变得更加稳定而进行反向传播。
但是,我不确定如何处理最大(0,x)的整流神经元。(从那时起,我们也需要类似 [0.1,0.9] 的逻辑函数,但它并不以 0 为中心)
据我所知,与您可能正在寻找的最接近的是谷歌研究人员最近发表的这篇文章:批量标准化:通过减少内部协变量偏移来加速深度网络训练。
考虑第层的激活输出,其中是非线性(ReLU、tanh 等),分别是权重和偏差,是小批量数据。
批量标准化 (BN) 的作用如下:
因此,BN 将“原始”(阅读:在我们应用非线性之前)激活输出标准化为均值为零,方差为 1,然后我们应用学习的仿射变换,最后我们应用非线性。在某种意义上,我们可以将其解释为允许神经网络学习到非线性的适当参数化输入分布。
由于每个操作都是可微的,我们可以通过反向传播学习参数。
如果我们不执行参数化仿射变换,则每个非线性都将具有均值为零和方差为 1 的分布作为输入分布。这可能不是最理想的,也可能不是。请注意,如果均值为零、方差为 1 的输入分布是最优的,则仿射变换理论上可以通过将设置为批次均值和等于批次标准差来恢复它。具有这种参数化仿射变换还具有增加网络表示能力(更多可学习参数)的额外好处。
为什么要先标准化?为什么不直接应用仿射变换?从理论上讲,没有区别。但是,这里可能存在条件问题。通过首先对激活值进行标准化,也许更容易学习最优的参数。这纯粹是我的猜测,但在其他最近的最先进的卷积网络架构中也有类似的类似物。例如,在最近的微软研究院技术报告Deep Residual Learning for Image Recognition,他们实际上学习了一种转换,他们使用恒等转换作为比较的参考或基线。微软的合著者认为,拥有这个参考或基线有助于预先解决问题。我不认为想知道在 BN 和初始标准化步骤中是否会发生类似的事情太牵强。
一个特别有趣的结果是,使用 Batch Normalization,Google 团队能够获得一个 tanh Inception 网络在 ImageNet 上进行训练并获得相当有竞争力的结果。Tanh 是一种饱和非线性,由于它们的饱和/消失梯度问题,很难让这些类型的网络学习。然而,使用批量归一化,可以假设网络能够学习一种将激活输出值映射到 tanh 非线性的非饱和状态的变换。
他们甚至引用了您提到的相同 Yann LeCun 事实作为批量标准化的动机。