LLM 主要类别架构介绍
- LLM 主要类别
- 自编码模型
- 自回归模型
- 序列到序列模型
- 大模型主流架构-Decoder-only
LLM 主要类别
LLM 本身基于 transformer 架构。自 2017 年,attention is all you need 诞生起,原始的 transformer 模型为不同领域的模型提供了灵感和启发。
基于原始的 Transformer 框架,衍生出了一系列模型,一些模型仅仅使用 encoder 或 decoder,有些模型同时使用 encoder+decoder.
LLM 分类一般分为三种:自编码模型(encoder)、自回归模型 (decoder) 和序列到序列模型 (encoder-decoder).
自编码模型
AutoEncoder model, AE
代表模型 BERT
AE 模型,代表作 BERT,其特点为:Encoder-Only。
基本原理:是在输入中随机 MASK 掉一部分单词,根据上下文预测这个词。
AE 模型通常用于内容理解任务,比如自然语言理解(NLU)中的分类任务:情感分析、提取式问答。
BERT 是 2018 年 10 月由 Google AI 研究院提出的一种预训练模型。
BERT 的全称是 Bidirectional Encoder Representation from Transformers.
BERT 在机器阅读理解顶级水平测试 SQuAD1.1 中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且在 11 种不同 NLP 测试中创出 SOTA 表现。包括将 GLUE 基准推高至 80.4% (绝对改进 7.6%), MultiNLI 准确度达到 86.7% (绝对改进 5.6%). 成为 NLP 发展史上的里程碑式的模型成就。
BERT 的架构
总体架构: 如下图所示, 最左边的就是BERT的架构图, 一个典型的双向编码模型.
从上面的架构图中可以看到,宏观上 BERT 分三个主要模块:
最底层黄色标记的 Embedding 模块。
中间层蓝色标记的 Transformer 模块。
最上层绿色标记的预微调模块。
Embedding 模块
BERT 中的该模块是由三种 Embedding 共同组成而成,如下图
- To ken Em b eddings: 词嵌入张量, 第一个单词是CLS标志, 可以用于之后的分类任务.
- Segment Embeddings: 句子分段嵌入张量, 是为了服务后续的两个句子为输入的预训练任务.
- Position Embeddings: 位置编码张量。
- 整个 Embedding 模块的输出张量就是这 3 个张量的直接加和结果。
双向 Transformer 模块
- BERT 中只使用了经典 Transformer 架构中的 Encoder 部分
- 完全舍弃了 Decoder 部分
- 两大预训练任务也集中体现在训练 Transformer 模块中
预微调模块
经过中间层 Transformer 的处理后,BERT 的最后一层根据任务的不同需求而做不同的调整即可。
比如对于 sequence-level 的分类任务,BERT 直接取第一个
[CLS] token 的final hidden state
, 再加一层全连接层后进行 softmax 来预测最终的标签。
BERT 的预训练任务
Masked LM (带 mask 的语言模型训练)
在原始训练文本中,随机的抽取 15% 的 token 作为参与 MASK 任务的对象。
- 80% 的概率下,用
[MASK]
标记替换该 token. - 在 10% 的概率下,用一个随机的单词替换 token.
- 在 10% 的概率下,保持该 token 不变。
Next Sentence Prediction (下一句话预测任务)
输入句子对 (A, B), 模型来预测句子 B 是不是句子 A 的真实的下一句话。
- 所有参与任务训练的语句都被选中作为句子 A.
- 其中 50% 的 B 是原始文本中真实跟随 A 的下一句话。(标记为 IsNext, 代表正样本).
- 其中 50% 的 B 是原始文本中随机抽取的一句话。(标记为 NotNext, 代表负样本).
数据集与 BERT 模型的特点
数据集如下:
BooksCorpus (800M words) + English Wikipedia (2,500M words)
模型的一些关键参数为:
参数 | 取值 |
---|---|
transformer 层数 | 12 |
特征维度 | 768 |
transformer head 数 | 12 |
总参数量 | 1.15 亿 |
AE 模型总结
优点
- BERT 使用双向 transformer,在语言理解相关的任务中表 现很好。
缺点
- 输入噪声:预训练 - 微调存在差异。
- 更适合 NLU 任务,不适合用 NLG 任务。
思考总结
什么是自编码模型?
答案:是在输入中随机 MASK 掉一部分单词,根据上下文预测这个词。
BERT 模型的核心架构?
答案:transformer 的 Encoder 模块。
BERT 的预训练任务?
答案:MLM 和 NSP
自回归模型
Autoregressive model, AR
代表模型 GPT
AR 模型,代表作 GPT,其特点为:Decoder-Only。
基本原理:从左往右学习的模型,只能利用上文或者下文的信息。
AR 模型通常用于生成式任务,在长文本的生成能力很强,比如自然语言生成(NLG)领域的任务:摘要、翻译或抽象问答。
- 2018 年 6 月,OpenAI 公司发表了论文“Improving Language Understanding by Generative Pre-training”《用生成式预训练提高模型的语言理解力》, 推出了具有 1.17 亿个参数的 GPT(Generative Pre-training , 生成式预训练)模型。
GPT 模型架构
看三个语言模型的对比架构图,中间的就是 GPT
从上图可以很清楚的看到 GPT 采用的是单向 Transformer 模型,例如给定一个句子[u1, u2, ..., un]
, GPT 在预测单词 ui 的时候只会利用 [u1, u2, ..., u(i-1)]
的信息,而 BERT 会同时利用上下文的信息[u1, u2, ..., u(i-1), u(i+1), ..., un]
.
GPT 采用了 Transformer 的 Decoder 模块。但是 GPT 的 Decoder Block 和经典 Transformer Decoder Block 还有所不同
GPT 中取消了第二个 encoder-decoder attention 子层,只保留 Masked Multi-Head Attention 层,和 Feed Forward 层。
注意:对比于经典的 Transformer 架构,解码器模块 采用了 6 个 Decoder Block; GPT 的架构中采用了 12 个 Decoder Block.
GPT 训练过程
GPT 的训练包括两阶段过程:1.无监督的预训练语言模型;2.有监督的下游任务 fine-tunning.
无监督的预训练语言模型
给定句子
U = [u1, u2, ..., un]
, GPT 训练语言模型时的目标是最大化下面的似然函数:上述公式具体来说是要预测每个词 ui 的概率,这个概率是基于它前面 ui-k 到 ui?1 个词,以及模型 Θ。这里的 k 表示上文的窗口大小,理论上来讲 k 取的越大,模型所能获取的上文信息越充足,模型的能力越强。
GPT 是一个单向语言模型,模型对输入 U 进行特征嵌入得到 transformer 第一层的输 h0,再经过多层 transformer 特征编码,使用最后一层的输出即可得到当前预测的概率分布,计算过程如下:
Wp 代表单词的位置编码,形状是[max_seq_len, embedding_dim]
, We 的形状是[vocab_size, embedding_dim]
.
得到输入张量 h0 后,要将 h0 传入 GPT 的 Decoder Block 中,依次得到 ht:
最后通过得到的 ht 来预测下一个单词:
有监督的下游任务 fine-tunning
- GPT 预训练后,会针对具体的下游任务对模型进行微调。微调采用的是有监督学习,训练样本包括单词序列
[x1, x2, ..., xn]
和 label y. GPT 微调的目标任务是根据单词序列[x1, x2, ..., xn]
预测标签 y.
其中 Wy 表示预测输出的矩阵参数,微调任务的目标是最大化下面的函数:
综合两个阶段的目标任务函数,可知 GPT 的最终优化函数为:
整体训练过程架构图
根据下游任务适配的过程分两步: 1、根据任务定义不同输入, 2、对不同任务增加不同的分类层.
具体定义可以参见下图:
GPT 数据集
GPT 使用了 BooksCorpus 数据集,文本大小约 5 GB,包含 7400w+ 的句子。这个数据集由 7000 本独立的、不同风格类型的书籍组成,选择该部分数据集的原因:
01 书籍文本包含大量高质量长句,保证模型学习长距离信息依赖。
02 书籍未开源公布,所以很难在下游数据集上见到,更能验证模型的泛化能力。
GPT 模型的特点
模型的一些关键参数为:
参数 | 取值 |
---|---|
transformer 层数 | 12 |
特征维度 | 768 |
transformer head 数 | 12 |
总参数量 | 1.17 亿 |
优点
GPT 在 9 个任务上的表现 sota
更易于并行化
缺点
- GPT 语言模型是单向的。
- 针对不同的任务,需要不同的数据集进行模型微调,相对比较麻烦
AR 模型总结
优点
- AR 模型擅长生成式任务。
- AR 模型生成数据较容易。
缺点
- AR 模型不能完全捕捉 token 的内在联系。
思考总结
什么是自回归模型?
答案:从左往右学习的模型,只能利用上文或者下文的信息。
GPT 模型的核心架构?
答案:transformer 的 Decoder 模块 (去除中间的第二个子层).
GPT 的预训练任务?
答案:无监督的预训练 和 有监督任务的微调
序列到序列模型
Sequence to Sequence Model
代表模型 T5
encoder-decoder 模型同时使用编码器和解码器。它将每个 task 视作序列到序列的转换/生成(比如,文本到文本,文本到图像或者图像到文本的多模态任务).Encoder-decoder 模型通常用于需要内容理解和生成的任务,比如机器翻译。
T5 由谷歌提出,该模型的目的为构建任务统一框架:将所有 NLP 任务都视为文本转换任务。
通过这样的方式就能将 NLP 任务都转换成 Te x t-to-Te x t 形式,也就可以用同样的模型,同样的损失函数,同样的训练过程,同样的解码过程来完成所有 NLP 任务。
T5 模型架构与训练过程
T5 模型结构与原始的 Transformer 基本一致,除了做了以下几点改动:
采用了一种简化版的 Layer Normalization,去除了 Layer Norm 的 bias;将 Layer Norm 放在残差连接外面。
位置编码:T5 使用了一种简化版的相对位置编码,即每个位置编码都是一个标量,被加到 logits 上用于计算注意力权重。各层共享位置编码,但是在同一层内,不同的注意力头的位置编码都是独立学习的。
自监督预训练
采用类似于 BERT 模型的 MLM 预训练任务。
多任务预训练
除了使用大规模数据进行无监督预训练,T5 模型还可以利用不同任务的标注数据进行有监督的多任务预训练,例如 SQuAD 问答和机器翻译等任务。
T5 数据集与模型的特点
T5 数据集如下:
作者对公开爬取的网页数据集 Common Crawl 进行了过滤,去掉一些重复的、低质量的,看着像代码的文本等,并且最后只保留英文文本,得到数据集 C4: the Colossal Clean Crawled Corpus.
模型的一些关键参数为:
参数 | 取值 |
---|---|
transformer 层数 | 24 |
特征维度 | 768 |
transformer head 数 | 12 |
总参数量 | 2.2 亿 |
encoder-decoder 模型总结
优点
处理多种 NLP 任务,具有良好的可扩展性;
相比 GPT-2、GPT3 等模型,T5 参数量相对较少,训练速度更快。
缺点
- 训练时间较长、需要更大的算力。
- 模型的可解释性不足。
思考总结
什么是序列到序列模型?
答案:同时使用编码器和解码器,它将每个 task 视作序列到序列的转换 /生成
T5 模型的核心架构?
答案:transformer 架构
T5 的预训练任务?
答案:采用类似于 BERT 模型的 MLM 预训练任务和多任务预训练
大模型主流模型架构
Decoder-only
Decoder-only
LLM 之所以主要都用 Decoder-only 架构,除了训练效率和工程实现上的优势外,在理论上是因为 Encoder 的双向注意力会存在低秩问题,这可能会削弱模型表达能力,就生成任务而言,引入双向注意力并无实质好处。
而 Encoder-Decoder 架构之所以能够在某些场景下表现更好,大概只是因为它多了一倍参数。所以,在同等参数量、同等推理成本下,Decoder-only 架构就是最优选择了。
思考总结
LLM 主要类别架构?
答案:Encoder-Only、Decoder-Only、Encoder-Decoder
自编码模型的基本原理?
答案:是在输入中随机 MASK 掉一部分单词,根据上下文预测这个词。
自回归模型的基本原理?
答案:从左往右学习的模型,只能利用上文或者下文的信息。
序列到序列模型的基本原理?
答案:同时使用编码器和解码器。它将每个 task 视作序列到序列的转换/生成.