为什么变形金刚对于语言建模“次优”而不是翻译?

机器算法验证 神经网络 自然语言 语言模型 变压器 机器翻译
2022-04-18 06:47:20

带有变形金刚的语言模型状态:

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。

1个回答

我想在 1.5 个月前发布这个问题后,我对这个问题有了一些见解,由于没有其他答案,我将分享它们:

在实践中,普通 RNN 无法学习长期依赖关系,虽然 LSTM 可以做到,但它们仍然专注于最近的输入。这很适合 LM,因为 LM 是通过 PPL 和类似分数评估的,在这些分数下,最近的过去非常有用。

尽管如此,为什么人们还要将 Transformers 用于 LM 呢?两个原因:

  1. 内存消耗和效率(Transformers 在小批量时仍然有效,而大批量在 LSTM 和 Transformer 中都使用大量内存)
  2. 人类对生成文本质量的感知与 PPL 不同。研究人员实际上正试图让他们的模型更多地关注最近的过去,而这正是变形金刚更好的地方。

那么为什么变形金刚在翻译上击败了 LSTM 呢?还有两个原因:

  1. 用于评估翻译的 BLEU 分数与 PPL 不同
  2. 翻译比普通 LM 更需要非本地关注(翻译时文本会显着重新排序)