批归一化技术(Batch Normalization)是深度学习中最近出现的一个有效的技术,已经被广泛证明其有效性,并很快应用于研究和应用中去。这篇文章假设读者知道什么是批归一化,并对批归一化有一定程度的了解,知道它是如何工作的。如果你是刚刚接触这个概念,或者需要复习一下,您可以在后面的链接地址找到批归一化的简要概述(http://blog.csdn.net/malefactor/article/details/51476961)。
本文使用两种不同方法实现了一种神经网络。每一步都输入相同的数据。网络具有完全相同的损失函数、完全相同的超参数和完全相同的优化器。然后在完全相同数量的 GPU 上进行训练。结果是其中一个版本的分类准确度比另一种低2%,并且这种性能的下降表现地很稳定。
我们拿一个简单的 MNIST 和 SVHN 的分类问题为例。
在***种实现中,抽取一批 MNIST 数据和一批 SVHN 数据,将它们合并到一起,然后将其输入网络。
在第二种实现中,创建两个副本的网络,并共享权重。一个副本输入 MNIST 数据,另一个副本输入 SVHN 数据。
请注意,在这两种实现里,一半的数据是 MNIST,另一半是 SVHN。另外由于第二种实现共享权重,使得两个模型的参数数量相同,且其更新方式也相同。
简单地想一下,这两个模型的训练过程中梯度应该是相同的。事实也是如此。但是在加入批归一化之后情况就不同了。在***种实现中,同一批数据中同时包含 MN