基于transformer,如何提升文本生成效果?

数据挖掘 深度学习 nlp 变压器 文本生成
2022-02-21 08:05:00

如果我不预训练像 BART 这样的文本生成模型,如何基于像 tensor2tensor 这样的转换器来改进结果?

文本生成任务中transformer有哪些改进思路?

1个回答

如果您有大量数据可用于训练,您应该应用大型变压器模型中使用的技术,例如GPT-2:非常深的模型(1.5B 参数为 48 层)、修改的初始化、预归一化和可逆标记化. 您还可以应用GPT-3的局部带状稀疏注意力模式。

如果你的训练数据非常少,你可以应用这条推文中描述的“不成文”的激进技术,即数据增强、离散嵌入 dropout、正常 dropout 和权重衰减,以及大量的患者训练时间。

更新:我觉得我提到的推文线程很重要,所以这里是最相关的推文:

  • 如何在 PTB 和 WikiText-2 等小型数据集上成功训练转换器?LSTM 在小型数据集上是否更好?我运行了 339 个实验,价值 568 个 GPU 小时,并得出了一些答案。我没有时间写博客文章,所以这里改为推特线程。

  • 提供一点背景知识:所有这一切都是由于我过去在 PTB 上复制 Transformer-XL 结果而在 WikiText-2 (WT2) 上的结果非常糟糕而感到沮丧。在 WT2 上,经过 200 多次实验后,我的最佳模型是 90ish ppl,这与标准 LSTM 基线(65.8 ppl)相差甚远。

  • ...

  • 关键见解如下:在小数据集制度中,一切都与数据集扩充有关。计算机视觉中的类比是,如果您进行某些数据集扩充,您可以获得更好的结果,特别是在小型数据集上。这也使模型正规化。

  • 最显着的性能提升来自离散嵌入 dropout:您像往常一样嵌入,但现在以概率 p 将整个词向量归零。这类似于掩码语言建模,但目标不是预测掩码——只是具有不确定上下文的常规 LM。

  • 第二个最重要的因素是常规输入丢失:您以概率 p 获取嵌入和丢失元素。这也具有非常类似于丢弃图像的随机像素的数据增强效果。考虑这个问题的好方法是什么?1/2

  • 还记得我们可以做 King-man+woman=Queen 吗?现在想象一下 input dropout 删除了“King”的“man”组件。这迫使模型将特定信息(在这种情况下为性别)分配到多个维度,以提高泛化能力,使其更加健壮。2/2

  • 否则,这是一个进一步正则化(更多 dropout + 权重衰减)和耐心的游戏。没有这些技巧,我可以在 15 分钟内训练出一个好的模型并获得 97 人。如果我应用所有这些 dropout,则模型在 7 小时的训练后欠拟合到 63.4 ppl(优于 LSTM)。

  • 您还可以将这些数据增强配方应用于大型数据集,但没有人愿意在 WT-103 上训练几个月以获得几个 ppl 点。在我看来,需要大量额外计算的技术对社区的危害大于有用。1/2

  • 此处代码更改为我的结果所基于的公共 Transformer-XL 存储库:https ://github.com/TimDettmers/transformer-xl/tree/wikitext2

  • 随着我对公共 Transformer-XL 存储库的更改,您可以运行此脚本以在 WT2 上降至 63.4 ppl:https ://github.com/TimDettmers/transformer-xl/blob/wikitext2/pytorch/replicate_wt2.sh