Layer Normalization

2016 多 GPU 稠密训练 被引用 498 次
下载 PDF

Layer Normalization - 中文验证版

英文原文卡片:layer_norm_2016.md

状态:已翻译。

元数据

  • Slug: layer_norm_2016
  • 年份: 2016
  • 会议: arXiv
  • 作者: Jimmy Lei Ba, Jamie Ryan Kiros, Geoffrey E. Hinton
  • 阅读状态: read complete
  • 计算范式: GPU 时代循环与小 batch 训练
  • 主要来源: PDF抽取文本

计算设置

论文未列出精确的 GPU 型号、GPU 数量、CPU 设置或集群拓扑。其实验反复提到 Theano,且 skip-thought 实验指出,添加的归一化"在使用 CNMeM 的前提下"未产生可测量的每迭代减速。CNMeM 是论文引用的 NVIDIA 内存管理库,因此论文给出了 CUDA/GPU 软件线索,但未提供设备清单。按项目规则,计算设置推断为 2016 年 GPU 神经网络训练,Theano/CUDA 内存管理和循环工作负载为实际设备语境。

计算规模是一组序列和小 batch 压力测试。Order embeddings 修改了 GRU 图像标注模型;skip-thoughts 使用 2400 维句子编码器训练 1M 次迭代,其中 LN 运行训练约一个月或 1.7M 次迭代;DRAW 使用 64 个 glimpses 和 256 个 LSTM 隐藏单元;手写生成使用三层 400 单元 LSTM,约 3.7M 权重,minibatch 为 8,序列长度 500。计算故事是减少迭代次数和稳定循环动态,而非增加设备。

瓶颈

Batch normalization 减少了前馈网络的训练时间,但它将归一化绑定到 minibatch 上的统计量。论文指出两个直接的计算瓶颈。首先,batch normalization 限制了 minibatch 大小,这在内存、序列长度或在线学习导致小 batch 时是个问题。其次,将其应用于 RNN 似乎需要为不同时间步维护不同的统计量,而测试序列可能比训练中见过的任何序列都长。

该瓶颈是结构性的而非仅算术性的。循环模型在每个时间步复用相同的权重,但 batch 统计量依赖于序列位置。维护许多时间步统计量增加了簿记、使训练/测试行为不一致,并且在纯在线使用中变得无法定义。在手写实验中,论文将面向设备的问题具体化:minibatch 大小为 8 和长序列使得稳定的隐藏动态很重要。在 GPU 上,这些小 batch 也削弱了大型矩阵-矩阵运算的吞吐量优势,因此一种其正确性不依赖跨样本统计量的归一化方法即使增加少量逐样本算术也是有吸引力的。

方法适配

Layer normalization 将归一化轴从 minibatch 移至一个训练样本某一层的隐藏单元。对每个样本,它计算一层中神经元汇总输入的均值和方差,在归一化后应用可学习的增益和偏置,然后应用非线性。这将 batch normalization 的思想转置为不需要跨样本通信或同步的计算模式。

该适配以多种方式适应硬件和模型约束。它兼容 batch size 1,因此兼容在线范式和内存受限的序列 batch。训练和测试时使用相同计算,因此无需维护或同步移动平均状态。在 RNN 中,它有一组跨时间共享的增益和偏置参数,避免了每个时间步的归一化统计量表。它仅归一化当前时间步的汇总输入,这在解决隐藏状态幅度爆炸或消失的同时,无需为每个序列位置存储统计量。

该方法有意设计为局部的。它不需要跨 batch 的多设备规约;每个样本仅需在一层内的神经元之间规约。这适应了 Theano 时代 GPU 代码中小 batch 和循环展开产生内存压力的状况。在 skip-thoughts 中,2400 维状态可能使 LN 变慢,但使用 CNMeM 后作者未发现显著的逐迭代差异。

证据

论文证据主要是逐收敛迭代和稳健性证据。对于 MS-COCO 上的 order embeddings,基准模型和 layer-normalized GRU 使用相同的架构选择和 Adam 超参数。每 300 次迭代检查一次验证 Recall@K。Layer-normalized 模型在 R@1、R@5 和 R@10 上显示逐迭代加速,并在约 60% 的基准时间内达到最佳验证模型,同时在报告的检索表中改善了测试集泛化。

对于 CNN 语料库上的注意力阅读,论文与基准 LSTM 以及先前工作的两种循环 batch-normalization 变体进行了比较。Layer normalization 仅应用在 LSTM 内部,但它比基准和 BN 变体训练更快并收敛到更好的验证结果。作者还报告 layer normalization 在增益初始化为 1.0 时比 0.1 效果更好,而循环 BN 需要仔细的尺度选择。

对于 skip-thought 向量,论文报告了 1M 次迭代运行和一次持续一个月的 LN 运行。1M 次迭代后,LN 改善了报告的下游分数,包括 SICK Pearson 从 0.842 到 0.854,MR 从 77.3 到 79.5,MPQA 从 87.9 到 89.0。对于 DRAW,LN 收敛几乎快一倍;200 个 epoch 后基准达到 82.36 nats,LN 达到 82.09。对于置换不变 MNIST,batch normalization 在 batch size 4 时退化,而 layer normalization 保持稳健且收敛更快。

历史影响

Layer normalization 使归一化成为逐样本原语而非 minibatch 原语。这在历史上很重要,因为后来的序列和注意力模型需要稳定的深度和长上下文计算,而不依赖大型、统计可靠的 batch。论文未将自己定位为 Transformer 论文,但其计算结构正是后来 Transformer 所使用的:局部归一化隐藏状态,使训练和推理相同,避免 batch 耦合的统计量使自回归和变长执行复杂化。

局限

  • 硬件未明确列出;GPU 语境从 Theano/CNMeM 和 2016 年设备时代推断而来。
  • 论文报告了初步的 ConvNet 实验,其中 batch normalization 优于 layer normalization。
  • 作者指出 layer normalization 关于隐藏单元贡献可比的假设在 ConvNet 中可能失效,特别是对于很少激活的图像边界感受野。
  • 证据主要是收敛和任务分数证据,而非在指定设备上的 wall-clock 基准测试。

链接