【笔记】GPT


文章目录

  • 【笔记】GPT
  • 介绍
  • 原理
  • 预训练过程
  • fine-tuning



GPT和ELMO非常相似,把语言模型直接迁移到具体的NLP任务中,因此,更容易迁移学习;不过也有弊端,这种将结构带入下游任务中的模式,不一定对每个任务都适用,GPT主要还是针对分类任务和标注性任务,对于生成任务,比如机器翻译,则它的结构也没办法进行很好的迁移;

介绍

GPT在2018年由OpenAI提出,通过在大量的语料上预训练语言模型,然后再将训练好的模型迁移到具体的下游NLP任务,从而提高模型的能力;

论文地址 : Improving Language Understanding by Generative Pre-Training

原理

GPT模型主要包含两个阶段,第一个阶段,先利用大量未标注的语料预训练一个语言模型,接着,在第二个阶段对预训练好的语言模型进行微改,将其迁移到各种有监督的NLP任务,并对参数进行fine-tuning。

预训练过程

给定一个没有标注的大型语料库,使用上下文窗口来预测最后一个词,即,通过单词前N个词来预测当前的单词,预测时,只考虑左侧窗口大小的词汇信息, 在GPT中,作者采用的是一个12层的Transformer decode作为语言模型的结构;GPT中使用的是Transformer结构,其中pos embedding和bert一样,使用位置编码,而非正弦余弦进行计算;

从GPT的计算公式来看,其实跟Transformer基本是一样的,只是对每个时间步,都只考虑左侧窗口大小的上下文信息。

fine-tuning

当语言模型训练结束之后,就可以将其迁移到具体的NLP任务中;和BERT不同的是,GPT在下游任务中也会把语言模型的目标引入到目标函数中,作为辅助函数,因为作者发现这样操作可以提高模型的通用能力,并且加速模型的收敛;

针对不同的下游任务,作者提出了以下的修改方法,GPT的输入同样带有特殊字符 start, end, Delim; 可以看做一个输入模板;

  • 文本分类:选取最后一层Transformer最后一个时间步的输出向量,作为分类向量,后面接全连接,得到预测标签;
  • 文本蕴涵:对于文本蕴涵任务,作者用一个 $ 符号将文本和假设进行拼接,并在拼接后的文本前后加入开始符start和结束符end,然后将拼接后的文本直接传入预训练的语言模型,在模型再接一层线性变换和softmax即可。
  • 文本相似度:判断两个句子的相似度,或者是否相似,按照模板拼接两个句子输入,由于是单向语言模型,输入句子的顺序有很重要了,为了避免这个问题,调换两个句子顺序再拼接一遍;最后提取Transformer输出序列的最后一个位置,编码输出;
  • 问答和推理: 对于问答和常识推理任务,首先将背景信息与问题进行拼接,然后再将拼接后的文本依次与每个答案进行拼接,最后依次传入Transformer模型,最后接一层线性层得多每个输入的预测值。

具体的方式可以看论文中的这张图:

gpt 和 nlp gpt 和 nlp 区别_相似度