《Improving Language Understanding by Generative Pre-Training》

论文链接

  • 目标:用与训练的LM模型提升NLU任务的效果
  • 基于大量未标注语料训练的两个问题
    • 如何设置合理的训练目标?LM/NMT/discourse coherence? 这也是GPT和bert的区别之一
    • 如何将预训练的模型得到的表征应用到下游任务中去?
  • 模型结构
    • 一个没有encoder-attention的transformer decoder
    • 给定一个窗口的输入(最后n个token),预测下一个单词
    • 模型返回的是最后一个token对应的embedding,而不是真个窗口sequence的embedding
  • fine-tune
    • 将结构化问题的输入变成一个sequence。不同的field的输入在sequence里面用delimiter区分开来
    • 句子的最后加上[Extract] token。 用来训练成为整个句子的embedding。 这点和bert的[CLS]类似
    • decoder是只能attention到前面的token的,所以输入句子的顺序很有影响(对比bert,用的是LML,不收影响)因此做两个句子的相似度检测,需要交换两个句子的顺序,分别输入模型
    • 可以把LM和目标任务联合训练。 将两者的loss加权求和
  • 实验
    • 随着transformer的层数增加,模型fine-tune之后的效果越来越好,每层都能捕捉到新的信息
    • 做zero-shot预测,随着pre-train的step变多,效果越来越好。说明预训练是能捕捉到一些通用的语义的东西的
    • fine-tune的时候加上LM损失在大数据集有帮助,小数据集上表现不如不加
  • GPT 和BERT区别
    • GPT是LM预训练,BERT是MLM+NSP预训练
    • GPT的self attention只能attention到前面的token, bert是双向的
    • GPT做下游任务fine-tune的时候,多个输入的顺序是有影响的。比如text entailment任务,premise要在hypothiesis之前,bert没这要求(原因见上一条)
    • GPT可以直接做生成任务,而BERT不能做生成任务

《Improving Language Understanding by Generative Pre-Training》

http://example.com/2019/11/07/nlp/GPT/

Author

jerrychen

Posted on

2019-11-07

Updated on

2021-12-20

Licensed under

Comments