通过防止特征检测器的共同适应来改进神经网络
当大型前馈神经网络在小型训练集上进行训练时,它通常在保留的测试数据上表现不佳。 通过在每个训练案例中随机省略一半的特征检测器,可以大大减少这种“过度拟合”。 这可以防止复杂的协同适应,其中特征检测器仅在几个其他特定特征检测器的上下文中才有帮助。 相反,每个神经元都会学习检测一个特征,该特征通常有助于在给定其必须运行的各种内部上下文组合的情况下产生正确的答案。 随机“dropout”在许多基准任务上带来了巨大的改进,并为语音和物体识别创造了新的记录。
前馈人工神经网络在其输入和输出之间使用非线性“隐藏”单元层。 通过调整这些隐藏单元的传入连接的权重,它可以学习特征检测器,使其能够在给定输入向量 (?) 时预测正确的输出。 如果输入和正确输出之间的关系很复杂,并且网络有足够的隐藏单元来对其进行准确建模,那么通常会有许多不同的权重设置可以几乎完美地对训练集进行建模,特别是如果只有有限的权重设置标记的训练数据量。 这些权重向量中的每一个都会对保留的测试数据做出不同的预测,并且几乎所有权重向量在测试数据上的表现都会比在训练数据上表现更差,因为特征检测器已被调整为在训练数据上很好地协同工作,但在训练数据上却不能很好地协同工作。测试数据。
可以通过使用“dropout”来减少过度拟合,以防止训练数据上的复杂的共同适应。 在每个训练案例的每次呈现中,每个隐藏单元都会以 0.5 的概率从网络中随机省略,因此隐藏单元不能依赖于其他隐藏单元的存在。 查看 dropout 过程的另一种方法是使用神经网络执行模型平均的一种非常有效的方法。 减少测试集误差的一个好方法是对大量不同网络产生的预测进行平均。 执行此操作的标准方法是训练许多单独的网络,然后将每个网络应用于测试数据,但这在训练和测试期间的计算成本很高。 随机 dropout 使得在合理的时间内训练大量不同的网络成为可能。 几乎可以肯定,每个训练案例的每个呈现都有一个不同的网络,但所有这些网络对于存在的隐藏单元共享相同的权重。
我们使用标准的随机梯度下降程序在小批量训练案例上训练 dropout 神经网络,但我们修改了通常用于防止权重增长太大的惩罚项。 我们没有惩罚整个权重向量的平方长度(L2 范数),而是为每个单独的隐藏单元的输入权重向量的 L2 范数设置上限。 如果权重更新违反了此约束,我们将通过除法重新规范化隐藏单元的权重。 使用约束而不是惩罚可以防止权重变得非常大,无论建议的权重更新有多大。 这使得可以从非常大的学习率开始,该学习率在学习过程中衰减,从而允许比从小权重开始并使用小学习率的方法更彻底地搜索权重空间。
在测试时,我们使用包含所有隐藏单元的“平均网络”,但其传出权重减半,以补偿活跃单元数量的两倍这一事实。 实际上,这与对大量丢失网络进行平均的性能非常相似。 在具有 单元的单个隐藏层和用于计算类标签概率的“softmax”输出层的网络中,使用均值网络完全等同于取标签上概率分布的几何平均值由所有可能的网络预测。 假设 dropout 网络并非都做出相同的预测,则平均网络的预测保证为正确答案分配比各个 dropout 网络分配的对数概率的平均值更高的对数概率 (?)。 类似地,对于具有线性输出单元的回归,平均网络的平方误差始终优于丢失网络的平方误差的平均值。
我们最初使用 MNIST(一种广泛使用的机器学习算法基准)探索了 dropout 的有效性。 它包含 60,000 个个人手写数字的 28x28 训练图像和 10,000 个测试图像。 通过使用变换后的图像增强训练数据 (?) 或将有关空间变换的知识连接到卷积神经网络 (?) 或通过使用生成预训练从训练图像中提取有用的特征,而不使用标签(?)。 在不使用任何这些技巧的情况下,标准前馈神经网络的最佳已发布结果是测试集上有 160 个错误。 通过对每个隐藏单元的传入权重使用 50% 的 dropout 和单独的 L2 约束,可以将错误减少到大约 130 个错误,并且通过随机丢弃 20% 的像素进一步减少到大约 110 个错误(参见图 1)。
Dropout 也可以与生成式预训练相结合,但在这种情况下,我们使用较小的学习率并且没有权重约束,以避免丢失预训练发现的特征检测器。 (?) 中描述的公开可用的预训练深度信念网络在使用标准反向传播进行微调时出现了 118 个错误,在使用 50% 隐藏层丢失进行微调时出现了 92 个错误单位。 当使用 URL 上的公开代码对深度玻尔兹曼机进行预训练五次时,使用标准反向传播进行微调时,展开的网络出现了 103、97、94、93 和 88 个错误,而使用标准反向传播进行微调时,展开的网络出现了 83、79、78、78 和使用 50% 隐藏单元 dropout 时出现 77 个错误。 79 个错误的平均值是不使用先验知识或增强训练集的方法的记录(详细信息参见附录A)。
然后,我们将 dropout 应用到 TIMIT,这是一种广泛使用的用于识别小词汇量干净语音的基准。 语音识别系统使用隐马尔可夫模型 (HMM) 来处理时间变化,并且需要一个声学模型来确定从声学输入中提取的系数帧与每个隐马尔可夫模型的每个可能状态的拟合程度。 最近,将短帧序列映射到 HMM 状态概率分布的深度预训练前馈神经网络已被证明在 TIMIT (?) 和各种更现实的大词汇量任务(?,?)。
图2显示了当窗口的中心帧被分类为属于给定的HMM状态时,在TIMIT基准测试的核心测试集上的帧分类错误率神经网络的最高概率。 网络的输入是 21 个相邻帧,每帧提前 10 毫秒。 该神经网络有 4 个全连接隐藏层,每层 4000 个单元和 185 个“softmax”输出单元,这些单元随后合并到用于基准测试的 39 个不同类别中。 丢弃 50% 的隐藏单元可显着改善各种不同网络架构的分类(见图2)。 为了获得帧识别率,神经网络为每帧输出的类概率被提供给解码器,该解码器了解HMM状态之间的转移概率并运行维特比算法来推断单个最佳序列HMM 指出。 没有 dropout 的情况下,识别率为 %,而有 dropout 的情况下,识别率提高到 %,这是不使用任何有关说话者身份信息的方法的记录。
CIFAR-10 是物体识别的基准任务。 它使用 10 个不同对象类的 32x32 下采样彩色图像,这些图像是通过在网络上搜索类(例如狗)或其子类(例如金毛猎犬)的名称而找到的。 这些图像经过手工标记,生成 50,000 个训练图像和 10,000 个测试图像,其中有一个主要对象可以合理地指定类名称 (?)(见图 3)。 在不使用转换数据的情况下,测试集上公布的最佳错误率为 18.5% (?)。 通过使用具有三个卷积隐藏层和三个“最大池化”层交错的神经网络,我们实现了 16.6% 的错误率,这三个“最大池化”层报告卷积单元局部池中的最大活动。 这六层之后是一层本地连接层(详细信息参见附录D)。 在最后一个隐藏层使用 dropout 的错误率为 15.6%。
ImageNet 是一个极具挑战性的对象识别数据集,由数千个对象类别的数千张高分辨率图像组成 (?)。 2010 年,对象识别竞赛以 1000 个类的子集(每个类大约有 1000 个示例)为基础,获胜作品实际上是六个独立模型的平均值,在测试集上的错误率为 47.2%。 该数据集当前最先进的结果是 45.7% (?)。 我们使用单个神经网络实现了 48.6% 错误率的可比性能,该神经网络具有五个卷积隐藏层,与“最大池”层交错,后跟两个全局连接层和最后一个 1000 路 softmax 层。 所有层对每个隐藏单元的传入权重都有 L2 权重约束。 在第六个隐藏层中使用 50% 的 dropout 将其降低至创纪录的 42.4%(有关详细信息,请参阅附录 E)。
对于语音识别数据集和两个对象识别数据集,在设计网络架构时需要做出大量决策。 我们通过提供一个单独的验证集来做出这些决定,该验证集用于评估大量不同架构的性能,然后我们使用在验证集上 dropout 时表现最佳的架构来评估 dropout 在实际测试中的性能放。
路透社数据集包含已用类层次结构标记的文档。 我们创建了训练集和测试集,每个集包含来自 50 个互斥类的 201,369 个文档。 每个文档都由 2000 个常见不间断单词的计数向量表示,每个计数 都会转换为 。 具有 2 个全连接层、2000 个隐藏单元的前馈神经网络,经过反向传播训练,在测试集上的误差为 31.05%。 通过使用 50% 的 dropout,该值降低至 29.62%(附录 C)。
我们尝试了各种丢失概率,几乎所有这些概率都提高了网络的泛化性能。 对于完全连接的层,所有隐藏层中的 dropout 比仅一个隐藏层中的 dropout 效果更好,并且更极端的概率往往更差,这就是我们在整篇论文中使用 0.5 的原因。 对于输入,dropout 也有帮助,尽管保留 50% 以上的输入通常会更好。 还可以通过将验证集上的平均性能与单元存在时的平均性能进行比较来调整每个隐藏或输入单元的单独丢失概率。 这使得该方法的效果稍好一些。 对于所需输入-输出映射具有许多相当不同的机制的数据集,通过使丢失概率成为输入的学习函数,可以进一步提高性能,从而创建统计上有效的“专家组合”(?),其中有多个专家组合,但每个参数都会根据大部分训练数据进行调整。
Dropout 比贝叶斯模型训练平均更容易实现,贝叶斯模型训练平均根据给定数据的后验概率对每个模型进行加权。 对于复杂的模型类,例如前馈神经网络,贝叶斯方法通常使用马尔可夫链蒙特卡罗方法从后验分布 (?) 中采样模型。 相比之下,概率为 的 dropout 假设所有模型最终在组合中都具有同等重要性,但共享权重的学习会考虑到这一点。 在测试时,每个单元的 dropout 决策都是独立的,这一事实使得通过使用一次平均网络来近似指数级多个 dropout 网络的组合意见变得非常容易。 这比对许多单独模型的预测进行平均要有效得多。
贝叶斯模型平均的一种流行替代方法是“装袋”,其中不同的模型在训练集中随机选择的不同案例上进行训练,并且所有模型在组合中都被赋予相同的权重 (?)。 Bagging 最常与决策树等模型一起使用,因为这些模型可以非常快地适应数据并且在测试时也非常快 (?)。 Dropout 允许将类似的方法应用于前馈神经网络,这是更强大的模型。 Dropout 可以看作是 bagging 的一种极端形式,其中每个模型都在单个案例上进行训练,并且模型的每个参数通过与所有其他模型中的相应参数共享来进行非常强的正则化。 这是比将参数缩小到零的标准方法更好的正则化器。
一种熟悉且极端的 dropout 情况是“朴素贝叶斯”,其中每个输入特征都单独训练以预测类标签,然后在测试时将所有特征的预测分布相乘。 当训练数据很少时,这通常比逻辑分类效果要好得多,逻辑分类训练每个输入特征以使其在所有其他特征的上下文中正常工作。
最后,辍学和最近关于性别在进化中的作用的理论之间存在着有趣的相似之处(?)。 (?) 中阐述的可混合性理论的一种可能解释是,性别会破坏一组共同适应的基因,这意味着通过使用大量共同适应的基因来实现功能并不重要。几乎与以多种替代方式实现相同的功能一样强大,也许不是最佳的,每种方式只使用少量的共同适应基因。 这使得进化能够避免死胡同,即适应度的提高需要对大量共同适应的基因进行协调改变。 它还降低了环境的微小变化导致适应度大幅下降的可能性——这种现象在机器学习领域被称为“过度拟合”。
参考文献和注释
- 1. D. E. Rumelhart, G. E. Hinton, R. J. Williams, Nature 323, 533 (1986).
- 2. G. E. Hinton, Neural Computation 14, 1771 (2002).
- 3. L. M. G. D. C. Ciresan, U. Meier, J. Schmidhuber, Neural Computation 22, 3207 (2010).
- 4. Y. B. Y. Lecun, L. Bottou, P. Haffner, Proceedings of the IEEE 86, 2278 (1998).
- 5. G. E. Hinton, R. Salakhutdinov, Science 313, 504 (2006).
- 6. A. Mohamed, G. Dahl, G. Hinton, IEEE Transactions on Audio, Speech, and Language Processing, 20, 14 (2012).
- 7. G. Dahl, D. Yu, L. Deng, A. Acero, IEEE Transactions on Audio, Speech, and Language Processing, 20, 30 (2012).
- 8. N. Jaitly, P. Nguyen, A. Senior, V. Vanhoucke, An Application OF Pretrained Deep Neural Networks To Large Vocabulary Conversational Speech Recognition, Tech. Rep. 001, Department of Computer Science, University of Toronto (2012).
- 9. A. Krizhevsky, Learning multiple layers of features from tiny images, Tech. Rep. 001, Department of Computer Science, University of Toronto (2009).
- 10. A. Coates, A. Y. Ng, ICML (2011), pp. 921–928.
- 11. J. Deng, et al., CVPR09 (2009).
- 12. J. Sanchez, F. Perronnin, CVPR11 (2011).
- 13. S. J. N. R. A. Jacobs, M. I. Jordan, G. E. Hinton, Neural Computation 3, 79 (1991).
- 14. R. M. Neal, Bayesian Learning for Neural Networks, Lecture Notes in Statistics No. 118 (Springer-Verlag, New York, 1996).
- 15. L. Breiman, Machine Learning 24, 123 (1996).
- 16. L. Breiman, Machine Learning 45, 5 (2001).
- 17. J. D. A. Livnat, C. Papadimitriou, M. W. Feldman, PNAS 105, 19803– (2008).
- 18. R. R. Salakhutdinov, G. E. Hinton, Artificial Intelligence and Statistics (2009).
- 19. D. D. Lewis, T. G. R. Y. Yang, Journal of Machine Learning 5, 361 (2004).
-
1.
我们感谢 N. Jaitly 对 TIMIT、H. Larochelle、R. Neal、K. Swersky 和 C.K.I 的帮助。 Williams 提供了有益的讨论,NSERC、Google 和 Microsoft Research 提供了资助。 GEH 和 RRS 是加拿大高级研究所的成员。
附录AMNIST实验
A.1 退出训练的详细信息
MNIST 数据集由 28 个 28 位图像组成 - 60,000 个用于训练,10,000 个用于测试。 目标是将数字图像分类到正确的数字类别中。 我们尝试了不同架构(不同数量的隐藏单元和层)的神经网络,以评估 dropout 方法对这些选择的敏感性。 我们显示 4 个网络的结果(784-800-800-10、784-1200-1200-10、784-2000-2000-10、784-1200-1200-1200-10)。 对于这些架构中的每一个,我们都使用相同的 dropout 率 - 所有隐藏单元为 50% dropout,对于可见单元为 20% dropout。 我们使用具有 100 个大小的小批量和交叉熵目标函数的随机梯度下降。 使用从 10.0 值开始的指数衰减学习率(应用于每个小批量中的平均梯度)。 在训练的每个 epoch 后,学习率乘以 0.998。 与每个隐藏单元相对应的传入权重向量被限制为具有最大平方长度。如果作为更新的结果,平方长度超过,则按比例缩小矢量以使其具有的平方长度。使用交叉验证,我们发现 给出了最佳结果。 权重初始化为从标准差为 0.01 的零均值正态分布中抽取的小随机值。 动力用于加速学习。 动量从 0.5 开始,在前 500 个时期内线性增加到 0.99,之后保持在 0.99。 此外,学习率乘以(1-动量)因子。 不使用权重衰减。 权重在每个小批量结束时更新。 训练进行了 3000 个 epoch。 权重更新采用以下形式:
在哪里,
与 、、、、。 虽然使用恒定的学习率也比标准反向传播有所改进,但从高学习率开始并衰减它可以显着提高性能。 将输入向量限制为固定长度可以防止权重任意增加,而与学习率无关。 这为网络提供了很多机会在权重空间中搜索良好的配置。 随着学习率的衰减,算法能够采取更小的步长,并找到可以使学习取得进展的正确步长。 使用高最终动量将梯度信息分布在大量更新中,使得在每个梯度计算针对不同随机网络的这种情况下学习稳定。
A.2 dropout微调细节
除了从随机权重开始训练神经网络之外,dropout 还可以用于微调预训练模型。 我们发现,使用小学习率的 dropout 来微调模型可以比标准反向传播微调提供更好的性能。
深度置信网络 - 我们使用深度置信网络 (?) 预训练了一个神经网络。 它具有 784-500-500-2000 架构,并使用贪婪分层对比发散学习进行训练 111代码请参见http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html . 我们没有使用通常的反向传播算法对其进行微调,而是使用了它的 dropout 版本。 Dropout 率与之前相同:隐藏单元为 50%,可见单元为 20%。 使用恒定的小学习率 1.0。 对传入权重向量的长度没有施加任何限制。 没有使用权重衰减。 所有其他超参数设置为与之前相同。 该模型使用大小为 100 的小批量,通过随机梯度下降训练了 1000 个时期。 标准反向传播产生约 118 个错误,而 dropout 将错误减少至约 92 个。
深度玻尔兹曼机 - 我们还采用了预训练的深度玻尔兹曼机(?) 222 For code see http://www.utstat.toronto.edu/~rsalakhu/DBM.html (784-500-1000-10) 并使用 dropout-backpropagation 对其进行微调。 模型采用 1784 - 500 - 1000 - 10 架构(额外的 1000 个输入单元来自 DBM 中第二层隐藏单元的平均场激活,详细信息请参见 (?)) 。 所有微调超参数均设置为与深度置信网络所使用的相同。 我们能够通过 dropout 得到平均约 79 个错误,而通常的微调会产生约 94 个错误。
A.3 对功能的影响
Dropout 比反向传播有重大改进的一个原因是,它鼓励每个单独的隐藏单元学习有用的特征,而不依赖于特定的其他隐藏单元来纠正其错误。 为了验证这一点并更好地理解 dropout 对特征学习的影响,我们查看了 784-500-500 神经网络在没有任何生成性预训练的情况下学习到的第一级特征。 其特征如图5所示。 每个面板显示每个网络学习到的 100 个随机特征。 Dropout 学习的特征更简单,看起来像笔划,而通过标准反向传播学习的特征很难解释。 这证实了 dropout 确实迫使判别模型学习良好的特征,这些特征较少相互适应并导致更好的泛化。
附录BTIMIT实验
TIMIT Acoustic-Phonetic Continuous Speech Corpus 是用于评估自动语音识别系统的标准数据集。 它由 630 位讲美式英语 8 种方言的人的录音组成,每个人朗读 10 个语音丰富的句子。 它还附带了语音的单词和音素级别的转录。 目标是将给定的语音信号转换为音素转录序列。 该数据需要进行预处理以提取输入特征和输出目标。 我们使用 Kaldi,一个用于语音的开源代码库 333http://kaldi.sourceforge.net,预处理数据集,以便我们的结果可以准确地再现。 我们网络的输入是日志过滤器组响应。 它们是针对 25 毫秒的语音窗口提取的,步幅为 10 毫秒。
输入表示的每个维度都被归一化为均值 0 和方差 1。 大小为 100 的小批量用于预训练和 dropout 微调。 我们通过改变输入帧的数量(15 和 31)、神经网络的层数(3、4 和 5)以及每层隐藏单元的数量(2000 和 4000)来尝试几种网络架构。 图 6 显示了许多此类组合的验证误差曲线。 持续使用 dropout 可以降低错误率。
B.1 预训练
对于 TIMIT 上的所有实验,我们使用深度置信网络 (?) 预训练神经网络。 由于输入是实值,因此第一层被预训练为高斯 RBM。 可见偏差初始化为零,权重为从标准差为 0.01 的零均值正态分布中采样的随机数。 每个可见单元的方差设置为 1.0 并且未学习。 学习是通过最小化对比分歧来完成的。 动力被用来加速学习。 动量从 0.5 开始,在 20 个时期内线性增加到 0.9。 使用平均梯度的学习率为 0.001(然后乘以 1 动量)。 使用 0.001 的 L2 权重衰减。 该模型训练了 100 个 epoch。
所有后续层都被训练为二进制 RBM。 使用 0.01 的学习率。 每个单元的可见偏差被初始化为,其中是数据集中该单元的平均激活。 所有其他超参数设置与我们用于高斯 RBM 的参数相同。 每层训练 50 个 epoch。
B.2 辍学微调
预训练的 RBM 用于初始化神经网络中的权重。 然后通过丢失反向传播对网络进行微调。 在 10 个时期内,动量从 0.5 线性增加到 0.9。 使用了 1.0 的小常数学习率(应用于小批量的平均梯度)。 所有其他超参数与 MNIST dropout 微调相同。 该模型需要运行大约 200 个 epoch 才能收敛。 同一网络还使用较小的学习率 0.1 通过标准反向传播进行了微调,保持所有其他超参数
图6显示了训练集和验证集上的帧分类误差和交叉熵目标值。 我们比较了几种网络架构和输入表示上的 dropout 和标准反向传播的性能。 Dropout 始终实现较低的错误和交叉熵。 它显着地控制了过度拟合,使得该方法对于网络架构的选择具有鲁棒性。 它允许训练更大的网络,并且无需提前停止。 我们还观察到,模型获得的最终误差对学习率和动量的选择并不是很敏感。
附录C路透社的实验
路透社语料库第一卷 (RCV1-v2) (?) 是 804,414 条新闻专线报道的档案,这些报道已被手动分类为 103 个主题444The corpus is available at http://www.ai.mit.edu/projects/jmlr/papers/volume5/lewis04a/lyrl2004_rcv1v2_README.htm. 该语料库涵盖四个主要类别:企业/工业、经济、政府/社会和市场。 示例主题包括能源市场、账户/收益、政府借款、灾难和事故、银行间市场、法律/司法、生产/服务等。 主题类形成一棵树,通常深度为三。
我们根据类别树第二层的 63 个类别,将数据集分为 63 个类别。 我们删除了 11 个没有任何数据的类别和 1 个只有 4 个训练示例的类别。 我们还删除了一个覆盖大部分示例 (25%) 的类别。 这给我们留下了 50 个类和 402,738 个文档。 我们将文档随机分为大小相等的训练集和测试集。 每个文档均使用数据集中 2000 个最常见的非停用词表示。
我们使用 dropout-backpropagation 训练神经网络,并将其与标准反向传播进行比较。 我们使用了 2000-2000-1000-50 架构。 训练超参数与 MNIST dropout 训练中的相同(附录A.1)。 训练进行了 500 轮。
图 7 显示了学习过程中的训练和测试集错误。 我们展示了两个网络 - 一个具有 2000-2000-1000-50,另一个具有 2000-1000-1000-50 架构,经过或不经过 dropout 训练。 与迄今为止讨论的所有先前数据集一样,我们在这里也获得了显着的改进。 学习不仅可以产生更好的泛化能力,而且可以顺利进行,无需提前停止。
附录 D微小图像和 CIFAR-10
Tiny Images 数据集包含从网络收集的 8000 万张 彩色图像。 这些图像是通过在各种图像搜索引擎中搜索英文名词找到的,因此每个图像都带有一个非常不可靠的标签,即用于查找它的名词。 CIFAR-10 数据集是 Tiny Images 数据集的子集,其中包含分为 10 个类别的 60000 张图像555CIFAR 数据集可从 http://www.cs.toronto.edu/kriz/cifar.html 获取。 . 每个类包含 5000 个训练图像和 1000 个测试图像。 这些类别是 airplane、automobile、bird、cat、deer、狗、青蛙、马、船和卡车。 CIFAR-10数据集是通过过滤Tiny Images数据集以删除标签不正确的图像而获得的。 CIFAR-10 图像变化很大,并且没有规范的视点或物体出现的比例。 包含图像的唯一标准是图像包含 CIFAR-10 类的一个主要实例,并且图像中的对象可以轻松识别为属于图像标签指示的类。
附录EImageNet
ImageNet 是包含数千个类别的数百万张标记图像的数据集。 这些图像是从网络上收集的,并由人工贴标者使用亚马逊的 Mechanical Turk 众包工具进行标记。 2010 年,对象识别竞赛以 1000 个类别中每类大约 1000 个图像的子集为基础,该竞赛是 Pascal 视觉对象挑战赛的一部分。 这是我们进行实验的 ImageNet 版本。 总共大约有 130 万张训练图像、50000 张验证图像和 150000 张测试图像。 该数据集在本质上与 CIFAR-10 相似,但规模更大。 这些图像是全分辨率的,并且有 1000 个类别而不是 10 个。 另一个区别是 ImageNet 图像通常包含 ImageNet 对象的多个实例,这仅仅是由于对象类的数量庞大。 因此,即使是人类也很难在这个数据集上达到完美的准确性。 在我们的实验中,我们将所有图像的大小调整为 像素。
附录F卷积神经网络
我们的 CIFAR-10 和 ImageNet 模型是深度前馈卷积神经网络 (CNN)。 前馈神经网络是由多层“神经元”组成的模型,其中给定层中的每个神经元对前一层神经元的输出应用线性滤波器。 通常,在神经元的输出传递到下一层之前,会向滤波器输出添加标量偏差,并对结果应用非线性激活函数。 线性滤波器和偏差被称为权重,这些是从训练数据中学习的网络参数。
CNN 在几个方面与普通神经网络不同。 首先,CNN 中的神经元按拓扑结构组织成一个库,反映输入数据中维度的组织。 因此对于图像来说,神经元被布置在二维网格上。 其次,CNN 中的神经元应用过滤器,这些过滤器的范围是局部的,并且以神经元在地形组织中的位置为中心。 这对于我们期望输入维度的依赖性是距离的递减函数的数据集来说是合理的,自然图像中的像素就是这种情况。 特别是,我们期望通过检查图像的小局部邻域可以找到输入图像中对象身份的有用线索。 第三,组中的所有神经元都应用相同的滤波器,但正如刚才提到的,它们将其应用在输入图像中的不同位置。 这对于具有大致平稳统计数据的数据集(例如自然图像)是合理的。 我们期望相同类型的结构可以出现在输入图像中的所有位置,因此通过以相同的方式过滤它们来平等地对待所有位置是合理的。 通过这种方式,CNN 中的一组神经元对其输入应用卷积运算。 CNN 中的单层通常具有多个神经元组,每个神经元使用不同的滤波器执行卷积。 这些神经元库成为进入下一层的不同输入通道。 卷积组中相邻神经元感受野边界之间的距离(以像素为单位)决定了应用卷积运算的步幅。 步幅越大意味着每组神经元越少。 除非另有说明,我们的模型使用一个像素的步长。
这种卷积共享滤波器架构的一个重要后果是,相对于所有神经元都应用不同滤波器的神经网络,参数数量大幅减少。 这降低了网络的表示能力,但也降低了其过拟合的能力,因此 dropout 在卷积层中的优势要小得多。
F.1 池化
CNN 通常还具有“池化”层,它总结了卷积层中神经元局部块的活动。 本质上,池化层将卷积层的输出作为输入并对其进行二次采样。 池化层由池化单元组成,这些池化单元按地形布局并连接到来自同一组的卷积单元输出的局部邻域。 然后,每个池单元计算该邻域中银行产出的某个函数。 典型的函数是最大值和平均值。 具有此类单元的池化层分别称为最大池化层和平均池化层。 池化单元通常间隔至少几个像素,因此池化单元总数少于前一层中的卷积单元输出。 使该间距小于池化单元汇总的邻域大小 重叠池化。 这种变体使池化层产生卷积单元输出的粗编码,我们发现这有助于在实验中进行泛化。 我们将此间距称为池单元之间的步幅,类似于卷积单元之间的步幅。 池化层向网络引入一定程度的局部平移不变性,从而提高泛化能力。 它们是哺乳动物视觉皮层中复杂细胞的类似物,汇集了多个简单细胞的活动。 已知这些细胞表现出类似的相位不变特性。
F.2 本地响应标准化
我们的网络还包括响应标准化层。 这种类型的层鼓励属于不同组的神经元之间对大量激活的竞争。 特别是,拓扑组织中 位置 中神经元的活动 除以
其中总和运行在地形组织中相同位置的“相邻”神经元组上。 当然,银行的顺序是任意的,并且在训练开始之前确定。 响应归一化层实现了真实神经元中发现的一种侧向抑制形式。 常量 和 是超参数,其值是使用验证集确定的。
F.3 神经元非线性
我们网络中的所有神经元都利用零非线性的最大值。 也就是说,它们的输出计算为 ,其中 是神经元的总输入(相当于神经元线性滤波器的输出加上偏差)。 与传统的饱和神经元模型相比,这种非线性具有多个优点,包括显着减少达到给定错误率所需的训练时间。 这种非线性还减少了对对比度归一化和类似数据预处理方案的需求,因为具有这种非线性的神经元不会饱和——当出现异常大的输入值时,它们的活动只会扩大。 因此,我们采取的唯一数据预处理步骤是从每个像素中减去平均活动,以使数据居中。 因此,我们根据像素的(居中)原始 RGB 值来训练我们的网络。
F.4 目标函数
我们的网络最大化多项式逻辑回归目标,这相当于最小化真实标签分布和模型预测标签分布之间交叉熵的训练案例的平均值。
F.5权重初始化
我们从零均值正态分布初始化模型中的权重,其方差设置足够高,以便为每层神经元产生正输入。 当使用最大零非线性时,这是一个稍微棘手的问题。 如果神经元的输入始终为负,则不会发生学习,因为其输出将一致为零,其输出相对于输入的导数也将为零。 因此,从具有足够大方差的分布中初始化权重非常重要,这样所有神经元都可能至少偶尔获得正输入。 在实践中,我们只需尝试不同的方差,直到找到可行的初始化。 通常只需要几次尝试。 我们还发现,出于同样的原因,用一些正常数(在我们的例子中为 1)初始化隐藏层中神经元的偏差有助于让学习顺利进行。
F.6训练
我们使用随机梯度下降来训练模型,批量大小为 128 个示例,动量为 0.9。 因此权重的更新规则为
其中是迭代索引,是动量变量,是学习率,是平均值 一批目标相对于 的导数。 我们使用公开可用的 cuda-convnet 包在单个 NVIDIA GTX 580 GPU 上训练我们的所有模型。 CIFAR-10 上的训练大约需要 90 分钟。 在 ImageNet 上进行训练大约需要四天(如果有 dropout),如果没有则需要两天。
F.7 学习率
我们对每一层使用相同的学习率,我们启发式地将其值确定为产生目标函数减少的十的最大幂。 实际上,它的顺序通常是或。 在训练终止之前,我们将学习率降低了两倍,降低了十倍。
附录 GCIFAR-10 模型
我们的 CIFAR-10 无 dropout 模型是具有三个卷积层的 CNN。 池化层紧随这三个层之后。 所有池化层都总结了一个 邻域并使用 2 的步长。 第一个卷积层后面的池化层执行最大池化,而其余池化层执行平均池化。 响应归一化层位于前两个池化层之后,即 、 和 。 最上面的池化层连接到一个十单元的 softmax 层,该层输出类标签上的概率分布。 所有卷积层都有 64 个滤波器组,并使用滤波器大小 (乘以前一层的通道数)。
我们的带有 dropout 的 CIFAR-10 模型是类似的,但是因为 dropout 对网络施加了很强的正则化,所以我们能够使用更多的参数。 因此,我们添加第四个权重层,它从第三个池化层获取输入。 这个权重层是 局部连接但不是卷积。 它就像一个卷积层,其中同一组中的滤波器不共享权重。 该层包含 16 个大小为 的过滤器组。 这是我们使用 50% dropout 的层。 softmax 层从第四个权重层获取输入。
附录 HImageNet 模型
我们的带有 dropout 的 ImageNet 模型是一个 CNN,它根据从 图像中随机提取的 块及其水平反射进行训练。 这是一种数据增强形式,可以降低网络训练过度拟合数据的能力并有助于泛化。 该网络包含七个权重层。 前五个是卷积的,而后两个是全局连接的。 最大池层位于第一、第二和第五卷积层之后。 所有池化层都总结了一个 邻域并使用 2 的步长。 响应归一化层位于第一池化层和第二池化层之后。 第一个卷积层有 64 个带有 滤波器的滤波器组,它以 4 个像素的步幅应用这些滤波器组(这是滤波器组中相邻神经元之间的距离)。 第二个卷积层有 256 个带有 滤波器的滤波器组。 该层需要两个输入。 该层的第一个输入是第一个卷积层的(池化和响应归一化)输出。 该层中的 256 个存储体被任意分为 64 个组,每个组连接到来自第一个卷积层的唯一随机 16 个通道。 该层的第二个输入是原始图像 () 的二次采样版本,该图像经过该层以 2 个像素的步长进行过滤。 对两个输入进行过滤后得到的两个映射按元素求和(它们具有完全相同的维度),并以通常的方式将最大零非线性应用于总和。 第三、第四和第五卷积层相互连接,没有任何中间池化或归一化层,但在线性滤波后在每一层应用最大零非线性。 第三个卷积层有 512 个滤波器组,分为 32 个组,每个组连接到由第二个卷积层的(池化、归一化)输出生成的 16 个通道的唯一随机子集。 第四和第五卷积层同样有 512 个滤波器组,分为 32 个组,每个组连接到下层生成的 32 个通道的唯一随机子集。 接下来的两个权重层是全局连接的,每个权重层有 4096 个神经元。 在最后两层中,我们使用 50% 的 dropout。 最后,最后一个全局连接层的输出被馈送到 1000 路 softmax,生成 1000 个类标签的分布。 我们通过对 输入图像的十个 块的网络预测进行平均来测试我们的模型:中心块、四个角块及其水平反射。 尽管我们在测试时对每个图像进行了十次传递,但我们仍然能够实时运行我们的系统。
我们的没有 dropout 的 ImageNet 模型是类似的,但是没有两个全局连接的层,这两个全局连接层在没有 dropout 的情况下使用时会产生严重的过度拟合。
为了在验证集上实现最先进的性能,我们发现有必要使用上述非常复杂的网络架构。 幸运的是,这种架构的复杂性不是我们论文的重点。 我们想要证明的是,即使对于由许多小组多年来共同努力开发的非常复杂的神经网络来说,dropout 也是一个重要的帮助,能够真正擅长物体识别。 事实清楚地证明了这一点:使用具有大量参数的非卷积高层可以在 dropout 的情况下带来很大的改善,但在没有 dropout 的情况下会使情况变得更糟。