
GPT 介绍
- GPT 是 OpenAI 公司提出的一种语言预训练模型。
- OpenAI 在论文《Improving Language Understanding by Generative Pre-Training》中提出 GPT 模型。
- OpenAI 后续又在论文《Language Models are Unsupervised Multitask Learners》中提出 GPT2 模型。
- GPT 和 GPT2 模型结构差别不大,但是 GPT2 采用了更大的数据集进行训练。
- OpenAI GPT 模型是在 Google BERT 模型之前提出的,与 BERT 最大的区别在于 GPT 采用了传统的语言模型方法进行预训练,即使用单词的上文来预测单词,而 BERT 是采用了双向上下文的信息共同来预测单词。
- 正是因为训练方法上的区别,使得 GPT 更擅长处理自然语言生成任务 (NLG),而 BERT 更擅长处理自然语言理解任务 (NLU)。
GPT 的架构
- 看三个语言模型的对比架构图,中间的就是 GPT:

从上图可以很清楚的看到 GPT 采用的是单向 Transformer 模型,例如给定一个句子[u1, u2, ..., un],GPT 在预测单词 ui 的时候只会利用[u1, u2, ..., u(i-1)]的信息,而 BERT 会同时利用上下文的信息[u1, u2, ..., u(i-1), u(i+1), ..., un]。作为两大模型的直接对比,BERT 采用了 Transformer 的 Encoder 模块,而 GPT 采用了 Transformer 的 Decoder 模块。并且 GPT 的 Decoder Block 和经典 Transformer Decoder Block 还有所不同,如下图所示:

如上图所示,经典的 Transformer Decoder Block 包含 3 个子层,分别是 Masked Multi-Head Attention 层,encoder-decoder attention 层,以及 Feed Forward 层。但是在 GPT 中取消了第二个 encoder-decoder attention 子层,只保留 Masked Multi-Head Attention 层,和 Feed Forward 层。作为单向 Transformer Decoder 模型,GPT 利用句子序列信息预测下一个单词的时候,要使用 Masked Multi-Head Attention 对单词的下文进行遮掩,来防止未来信息的提前泄露。例如给定一个句子包含 4 个单词[A, B, C, D],GPT 需要用[A]预测 B,用[A, B]预测 C,用[A, B, C]预测 D。很显然的就是当要预测 B 时,需要将[B, C, D]遮掩起来。













