带有变形金刚的语言模型状态:
Transformer 架构对于语言模型本身来说不是最理想的。Transformer 中的 self-attention 和位置编码都无法有效地结合对语言建模至关重要的单词级顺序上下文。
论文中的一张图显示了纯 Transformer 架构(绿色)表现不佳:
论文进一步论证:
与位置编码一起,Transformers 能够捕获具有模糊相对标记位置的远程依赖关系。这导致句子级别的粗粒度序列表示。最近的工作如 GPT(或 GPT-2)(Radford 等人,2018 年,2019 年)和 BERT(Devlin 等人,2018 年)表明,在大规模语言建模数据集上学习的表示对于微调两者都是有效的句子级任务,例如 GLUE 基准测试 (Wang et al., 2018),以及不依赖于上下文中词序依赖性的令牌级任务,例如问答和 NER。
我觉得这有点令人困惑,因为最初的 Transformer 论文在自然语言翻译中展示了它,其中词序当然很重要。
为什么变形金刚对于语言建模“次优”而不是翻译?
编辑:
有一个实验你可以自己尝试。PyTorch 包含一个语言模型示例,并建议了一个“好的”LSTM 模型,您可以使用它进行训练
python main.py --cuda --emsize 650 --nhid 650 --dropout 0.5 --epochs 40
(这需要大约 1 小时)
可以通过添加 来训练 Transformer 模型--model Transformer
,并且还可以更改初始学习率、辍学率和注意力头的数量。尽管如此,我还是尝试了,但我无法使用转换器(模型的大小似乎是可比的)得到任何接近上述 LSTM 结果(验证困惑)的任何东西。100
我发现的这些参数的最佳选择是
python main.py --model Transformer --cuda --emsize 650 --nhid 650 --dropout 0.2 --epochs 40 --lr 3
这导致验证困惑度为 163.5。