三、图解GPT
来源
Datewhle29期__NLP之transformer :
- erenup(多多笔记),北京大学,负责人
- 张帆,Datawhale,天津大学,篇章4
- 张贤,哈尔滨工业大学,篇章2
- 李泺秋,浙江大学,篇章3
- 蔡杰,北京大学,篇章4
- hlzhang,麦吉尔大学,篇章4
- 台运鹏 篇章2
- 张红旭 篇章2
学习资料地址:
https://datawhalechina.github.io/learn-nlp-with-transformers/#/
github地址:
https://github.com/datawhalechina/learn-nlp-with-transformers
1.1 语言模型
-
那么什么是语言模型呢?或者说如何判断一个模型是不是语言模型呢?
首先我们来看一下语言模型(LM)的两个目标:
(1)LM的目的是为一个句子或词序列赋予一个概率。
(2)LM预测下一个词的概率,也就是说它预测下面最有可能出现的一个词 -
对比2种语言模型: 自编码(auto-encoder)语言模型
自回归(auto-regressive)语言模型 -
自编码语言模型典型代表就是篇章2.3所描述的BERT,
优点:自然地融入双向语言模型,同时看到被预测单词的上文和下文
缺点:训练和预测不一致。训练的时候输入引入了[Mask]标记,但是在预测阶段往往没有这个[Mask]标记,导致预训练阶段和Fine-tuning阶段不一致。
- 自回归语言模型的优点和缺点:
优点:对于生成类的NLP任务,比如文本摘要,机器翻译等,从左向右的生成内容,天然和自回归语言模型契合。
缺点:由于一般是从左到右(当然也可能从右到左),所以只能利用上文或者下文的信息,不能同时利用上文和下文的信息。
GPT-2属于自回归语言模型
1.2 GPT概述
- GPT2的核心思想就是认为可以用无监督的预训练模型去做有监督任务。GPT2模型的结构还是和GPT一样,如上图中间部分,它所适用的任务恰好是语言模型
GPT-2能够处理1024 个token。每个token沿着自己的路径经过所有的Decoder层。试用一个训练好的GPT-2模型的最简单方法是让它自己生成文本(这在技术上称为:生成无条件文本)。或者,我们可以给它一个提示,让它谈论某个主题(即生成交互式条件样本)。
在漫无目的情况下,我们可以简单地给它输入一个特殊的初始token,让它开始生成单词。如下图所示:
- 只有一个输入,只有一条活跃路径
1.3 GPT细节
- 输入--------GPT-2 在嵌入矩阵中查找输入的单词的对应的 embedding 向量-----需要融入位置编码。
于是输入的处理:得到词向量+位置编码
多层Decoder--------第一层处理 (S)Token所对应的向量------------首先通过 Self Attention 层,然后通过全连接神经网络。一旦Transformer 的第1个Decoder处理了(s)token,依旧可以得到一个向量,这个结果向量会再次被发送到下一层Decoder。
- Self-Attention 过程
Self-Attention 沿着句子中每个 token 进行处理,主要组成部分包括 3 个向量。
Query:Query 向量是由当前词的向量表示获得,用于对其他所有单词(使用这些单词的 key 向量)进行评分。
Key:Key 向量由句子中的所有单词的向量表示获得,可以看作一个标识向量。
Value:Value 向量在self-attention中与Key向量其实是相同的。
- 输出----------当模型顶部的Decoder层产生输出向量时(这个向量是经过 Self Attention 层和神经网络层得到的),模型会将这个向量乘以一个巨大的嵌入矩阵(vocab size x embedding size)来计算该向量和所有单词embedding向量的相关得分。