12.7 训练 425
12.7 训练
与前面介绍的神经机器翻译模型的训练一样,Transformer 的训练流程为:首先
对模型进行初始化,然后在编码器中输入包含结束符的源语言单词序列。前面已
介绍过,解码器每个位置单词的预测都要依赖已经生成的序列。在解码器输入包
起始符号的目标语言序列,通过起始符号预测目标语言的第一个单词,用真实的目标
语言的第一个单词去预测第二个单词,以此类推,然后用真实的目标语言序列和预测
的结果比较,计算它的损失。Transformer 使用了交叉熵损失函数,损失越小说明模型
的预测越接近真实输出。然后利用反向传播来调整模型中的参数。由于 Transformer
将任意时刻输入信息之间的距离拉近为 1,摒弃了 RNN 中每一个时刻的计算都要基
于前一时刻的计算这种具有时序性的训练方式,因此 Transformer 中训练的不同位置
可以并行化训练,大大提高了训练效率。
需要注意的是,Transformer 也包含很多工程方面的技巧。首先,在训练优化器
方面,需要注意以下几点:
Transformer 使用 Adam 优化器优化参数,并设置 β
1
= 0.9β
2
= 0.98ϵ = 10
9
Transformer 在学习率中同样应用了学习率预热Warmup)策略,其计算如下:
lrate = d
0.5
model
·min(step
0.5
,step ·warmup_steps
1.5
) (12.15)
其中,step 表示更新的次数(或步数)。通常设置网络更新的前 4000 步为预热
阶段即 warmup_steps = 4000Transformer 学习率曲线如12.17所示。在
练初期,学习率从一个较小的初始值逐渐增大(线性增长),当到达一定的步
数,学习率再逐渐减小。这样做可以减缓在训练初期的不稳定现象,同时在模
型达到相对稳定之后,通过逐渐减小的学习率让模型进行更细致的调整。这种
学习率的调整方法是 Transformer 模型一个很大的工程贡献。
2 4 6 8 10
0.20
0.40
0.60
0.80
更新步数 (10k)
学习率 (10
3
)
12.17 Transformer 模型的学习率曲线
另外,为了提高模型训练的效率和性能,Transformer 还进行了以下几方面的操
426 Chapter 12. 基于自注意力的模型 肖桐 朱靖波
作:
小批量训Mini-batch Training):每次使用一定数量的样本进行训练,即每
次从样本中选择一小部分数据进行训练。这种方法的收敛较快,同时易于提高
设备的利用率。批次大小通常设置为 2048 4096token 数即每个批次中的单
词个数)。每一个批次中的句子并不是随机选择的,模型通常会根据句子长度
进行排序,选取长度相近的句子组成一个批次。这样做可以减少 padding 数量,
提高训练效率,如图12.18
随机:
按句长排序:
12.18 不同批次生成方法对比(白色部分为 padding
丢弃法Dropout
[514]
由于 Transformer 模型网络结构较为复杂,会导致过度拟
合训练数据,从而对未见数据的预测结果变差。这种现象也被称作过拟合。
了避免这种现象,Transformer 加入了 Dropout 操作。Transformer 中这四个地方
用到了 Dropout:词嵌入和位置编码、残差连接、注意力操作和前馈神经网络。
Dropout 的比例通常设置为 0.1
标签平滑Label Smoothing
[536]
:在计算损失的过程中,需要用预测概率去
合真实概率。在分类任务中,往往使用 One-hot 向量代表真实概率,即真实答
案所在位置那一维对应的概率为 1其余维为 0而拟合这种概率分布会造成两
个问题:1) 无法保证模型的泛化能力,容易造成过拟合;2) 1 0 概率鼓励所
属类和其别之差距可能大,会造型过信预的类别。
因此 Transformer 引入标签滑来缓解这种象,简单的说就给正确答
以外的类别分配一定的概率,而不是采用非 0 1 的概率。这样,可以学习一
个比较平滑的概率分布,从而提升模型的泛化能力。
不同的 Transformer 可以适应不同的任务,常见的 Transformer 模型有 Transformer
BaseTransformer Big Transformer Deep
[23, 463]
,具体设置如下:
Transformer Base标准的 Transformer 结构,解码器编码器均包含 6 层,隐藏层
的维度为 512前馈神经网络的维度为 2048多头注意力机制为 8 头,Dropout
设为 0.1
Transformer Big为了提升网络的容量,使用更宽的网络。 Base 的基础上增
大隐藏层维度至 1024,前馈神经网络的维度变 4096,多头注意力机制为 16
头,Dropout 设为 0.3
Transformer Deep加深编码器网络层数可以进一步提升网络的性能,它的参数
12.7 训练 427
设置与 Transformer Base 基本一致,但是层数增加到 48 层,同时使用 Pre-Norm
作为层标准化的结构。
WMT16 数据上的实验对比如表12.3所示。可以看出,Transformer Base BLE
U 得分虽不如另外两种模型,但其参数量是最少的。 Transformer Deep 的性能整体
好于 Transformer Big
12.3 三种 Transformer 模型的对比
模型
BLEU[%] 模型参数量
EN-DE EN-FR
Transformer Base6 层) 27.3 38.1 65×10
6
Transformer Big6 层) 28.4 41.8 213×10
6
Transformer Deep48 层) 30.2 43.1 194×10
6