大模型进化史

Transformer革命(2017年)

Transformer(2017)

起源与发展

Transformer 源自于自然语言处理任务NLP;在计算机视觉领域CV,近年来Transformer逐渐替代CNN成为一个热门的研究方向。此外,Transformer在文本、语音、视频等多模态领域也在崭露头角。

2017 年 Google 在《Attention Is All You Need》中提出了 Transformer 结构用于序列标注,在翻译任务上超过了之前最优秀的循环神经网络模型;与此同时,Fast AI 在《Universal Language Model Fine-tuning for Text Classification》中提出了一种名为 ULMFiT 的迁移学习方法,将在大规模数据上预训练好的 LSTM 模型迁移用于文本分类,只用很少的标注数据就达到了最佳性能。

这些具有开创性的工作促成了两个著名 Transformer 模型的出现:

  • GPT (the Generative Pretrained Transformer);
  • BERT (Bidirectional Encoder Representations from Transformers)。

Transformer 和 LSTM(Long Short-term Memory Networks,长短时记忆神经网络)的最大区别,就是 LSTM 的训练是迭代的、串行的,必须要等当前字处理完,才可以处理下一个字;而 Transformer 的训练是并行的,即所有字是同时训练的,这样就大大增加了计算效率。Transformer 使用了位置嵌入(Positional Encoding)来理解语言的顺序,使用自注意力机制(Self Attention Mechanism)和前馈全连接层进行计算,这是 Transformer 的创新点。

基本结构

在 Transformer 模型中,编码器负责理解和提取输入文本中的相关信息,通常涉及到处理文本的序列化形式,例如单词或字符,并且用自注意力机制(Self-Attention)来理解文本中的上下文关系。

编码器的输出是输入文本的连续表示,通常称为嵌入(Embedding)。这种嵌入包含了编码器从文本中提取的所有有用信息,并以一种可以被模型处理的格式(通常是高维向量)表示。

解码器的任务是根据从编码器接收到的嵌入来生成翻译后的文本(目标语言),其中编码器是双向的,解码器是单向的,需要循环迭代输出。

虽然新的 Transformer 模型层出不穷,它们采用不同的预训练目标在不同的数据集上进行训练,但是依然可以按模型结构将它们大致分为三类:

  • 纯 Encoder (Encoder-Only) 模型(例如 BERT),又称自编码 (auto-encoding) Transformer 模型;
  • 纯 Decoder (Decoder-Only) 模型(例如 GPT),又称自回归 (auto-regressive) Transformer 模型;
  • Encoder-Decoder 模型(例如 BART、T5),又称 Seq2Seq (sequence-to-sequence) Transformer 模型。

Encoder-Only

Encoder-only 架构的 LLMs 仅包含编码器部分。它主要适用于不需要生成序列的任务,只需要对输入进行编码和处理的单向任务场景,更擅长对文本内容进行分析、分类,包括情感分析,命名实体识别。

Encoder-Only 架构的核心思想是利用神经网络对输入文本进行编码,提取其特征和语义信息,并将编码结果传递给后续的处理模块。这种架构的优点是能够更好地理解输入文本的语义和上下文信息,从而提高文本分类和情感分析等任务的准确性。缺点是它无法直接生成文本输出,因此在需要生成文本的任务中不太适用。

Encoder-Only 架构的大模型有谷歌的 BERT、智谱AI发布的第四代基座大语言模型 GLM4(2024年)等。其中,BERT是基于Encoder-Only架构的预训练语言模型。GLM4是智谱AI发布的第四代基座大语言模型,该模型在IFEval评测集上,在Prompt提示词跟随(中文)方面,GLM-4达到了GPT-4 88%的水平。

Decoder-Only

Decoder-Only 架构,也被称为生成式架构,仅包含解码器部分,主要是为了预测下一个输出的内容 / token 是什么,并把之前输出的内容 / token 作为上下文学习。它通常用于序列生成任务,如文本生成、机器翻译等。这种架构的模型适用于需要生成序列的任务,可以从输入的编码中生成相应的序列。同时,Decoder-Only 架构还有一个重要特点是可以进行无监督预训练。在预训练阶段,模型通过大量的无标注数据学习语言的统计模式和语义信息。

Decoder-Only 架构的优点是擅长创造性的写作,比如写小说或自动生成文章。它更多关注于从已有的信息(开头)扩展出新的内容。其缺点是需要大量的训练数据来提高生成文本的质量和多样性。

Decoder-Only 架构的大模型的代表有 GPT 系列、LLaMA、OPT、BLOOM 等。这类模型采用预测下一个词进行训练,常见下游任务有文本生成、问答等,因此被称为 ALM(Autoregressive Language Model)。

Encoder-Decoder

Encoder-Decoder 架构,也被称为序列到序列架构,同时包含编码器和解码器部分。它通常用于序列到序列(Seq2Seq)任务,如机器翻译、对话生成等。这种架构的代表是以 Google 训练出来的 T5 为代表的相关大模型。

Encoder-Decoder 架构的核心思想是利用编码器对输入序列进行编码,提取其特征和语义信息,并将编码结果传递给解码器。然后,解码器根据编码结果生成相应的输出序列。这种架构的优点是能够更好地处理输入序列和输出序列之间的关系,从而提高机器翻译和对话生成等任务的准确性。缺点是模型复杂度较高,训练时间和计算资源消耗较大

Encoder-Decoder 架构的大模型有很多,例如 Google 的 T5 模型、华为的盘古 NLP 大模型等。

其中,华为的盘古 NLP 大模型首次使用 Encoder-Decoder 架构,兼顾 NLP 大模型的理解能力和生成能力,保证了模型在不同系统中的嵌入灵活性。在下游应用中,仅需少量样本和可学习参数即可完成千亿规模大模型的快速微调和下游适配,这一模型在智能舆论以及智能营销方面都有不错的表现。

特点

  • 自注意力机制(Self-Attention):这是Transformer的核心概念之一,它使模型能够同时考虑输入序列中的所有位置,而不是像循环神经网络(RNN)或卷积神经网络(CNN)一样逐步处理。自注意力机制允许模型根据输入序列中的不同部分来赋予不同的注意权重,从而更好地捕捉语义关系。
  • 多头注意力(Multi-Head Attention):Transformer中的自注意力机制被扩展为多个注意力头,每个头可以学习不同的注意权重,以更好地捕捉不同类型的关系。多头注意力允许模型并行处理不同的信息子空间。
  • 堆叠层(Stacked Layers):Transformer通常由多个相同的编码器和解码器层堆叠而成。这些堆叠的层有助于模型学习复杂的特征表示和语义。
  • 位置编码(Positional Encoding):由于Transformer没有内置的序列位置信息,它需要额外的位置编码来表达输入序列中单词的位置顺序。
  • 残差连接和层归一化(Residual Connections and Layer Normalization):这些技术有助于减轻训练过程中的梯度消失和爆炸问题,使模型更容易训练。
  • 编码器和解码器:Transformer通常包括一个编码器用于处理输入序列和一个解码器用于生成输出序列,这使其适用于序列到序列的任务,如机器翻译。

预训练Transformer模型时代(2018 - 2020年)

2017 年 Transformer 架构的引入为自然语言处理开启了一个新时代,其特点是预训练模型的兴起以及对模型规模前所未有的关注。这一时期出现了两个具有影响力的模型家族:BERT 和 GPT,它们展示了大规模预训练和微调范式的强大力量。

BERT(2018.10)

2018年,谷歌推出了 BERT(Bidirectional Encoder Representations from Transformers,双向上下文理解),它使用 Transformer 的编码器(Encoder-Only),与之前单向处理文本(从左到右或从右到左)的模型不同,BERT 采用了双向(Bidirectional)训练方法,使其能够同时从两个方向捕捉上下文

例如:“The bank is situated on the ______ of the river.”

在单向模型中,对空白的理解将严重依赖于前面的单词,并且模型可能难以辨别“bank”是指银行还是河的一侧。

BERT 是双向的,它同时考虑左侧(“The bank is situated on the”)和右侧上下文(“of the river”),从而实现更细致的理解。它理解缺失的单词可能与银行的地理位置有关,展示了双向方法带来的语境丰富性。

BERT的关键创新点包括:

  1. 掩码语言建模(MLM):BERT不是预测序列中的下一个单词,而是被训练来预测句子中随机掩码的词元。这迫使模型在进行预测时考虑句子的整个上下文——包括前面和后面的单词。例如,对于句子 “The cat sat on the [MASK] mat”,BERT会根据周围的上下文学习预测出 “soft”。

  2. 下一句预测(NSP):除了MLM,BERT还在一个名为下一句预测的次要任务上进行训练,在这个任务中,模型学习预测两个句子在文档中是否连续。这有助于BERT在需要理解句子之间关系的任务中表现出色,如问答和自然语言推理。

BERT-wwm(2019)

2019年,哈工大和科大讯飞联合发表中文BERT-WWM模型的论文。

BERT-wwm 调整的地方在于MLM过程中使用全词掩码(Whole Word Mask)

上述提到,BERT 使用 WordPiece 对句子进行切分 tokens,并且会产生 Subword,如果 Subword 被选中 mask,那么整个单词都会进行 mask,而原来的则不会。

例如:playing被拆分为 play##ing 两个Subword,当 ##ing 被选中mask时,那么 play 也会同时进行mask。

中文和英文不同,英文最小的 token 是一个单词,而中文中最小的 token 却是字,词是由一个或多个字组成,且每个词之间没有明显的分割,包含更多信息的是词,对全词 mask 就是对整个词都通过 mask 进行掩码。

例:

原始文本: 使用语言模型来预测下一个词的probability。
分词文本: 使用 语言 模型预测 下 一个 词 的 probability
原始Mask输入:使用 语言 [MASK] 型[MASK] 测 下 一个 词 的 pro [MASK] ##lity
全词Mask输入 使用 语言 [MASK] [MASK][MASK] [MASK] 下 一个 词 的 [MASK] [MASK] [MASK]

RoBERTa(2019)

RoBERTa 出自 Facebook,提出了一种鲁棒性更强的 BERT 模型预训练方法。RoBERTa 的预训练语料更多、Batch size更大、训练更久,具体改进如下:

(1)静态Mask变动态Mask

Bert在整个预训练过程,选择进行mask的15%的Tokens是不变的,也就是说从一开始随机选择了这15%的Tokens,之后的N个epoch里都不再改变了。这就叫做静态Masking。

而RoBERTa一开始把预训练的数据复制10份,每一份都随机选择15%的Tokens进行Masking,也就是说,同样的一句话有10种不同的mask方式。然后每份数据都训练N/10个epoch。这就相当于在这N个epoch的训练中,每个序列的被mask的tokens是会变化的。这就叫做动态Masking。

这样做的目的是:动态mask相当于间接的增加了训练数据,有助于提高模型性能。

(2)移去NSP任务

Bert为了捕捉句子之间的关系,使用了NSP任务进行预训练,就是输入一对句子A和B,判断这两个句子是否是连续的。两句子最大长度之和为512。

RoBERTa去除了NSP,而是每次输入连续的多个句子,直到最大长度512(可以跨文章)。这种训练方式叫做(FULL-SENTENCES),而原来的Bert每次只输入两个句子。

这样做的目的是:实验发现,消除NSP损失在下游任务的性能上能够与原始BERT持平或略有提高。这可能是由于Bert一单句子为单位输入,模型无法学习到词之间的远程依赖关系,而RoBERTa输入为连续的多个句子,模型更能俘获更长的依赖关系,这对长序列的下游任务比较友好。

SpanBERT(2019)

SpanBERT 出自Facebook,在 BERT 的基础上,针对预测 spans of text 的任务,在预训练阶段做了特定的优化。

SpanBERT所做的预训练调整主要是以下三点:

  • 使用一种span masking来代替BERT的mask;
  • 加入另外一个新的训练目标:Span Boundary Objective (SBO)
  • 使用单个句子而非一对句子,并且不使用Next Sentence Prediction任务。

span masking 每次都会通过采样文本(X)的一个片段(span),得到一个子集(Y∈X)。在每次采样过程中,首先,随机选取一个片段长度,然后再随机选取一个起点,这样就可以到一个 span 进行 mask 了;span 的长度会进行截断,即不超过10;另外,span 的长度是指 word 的长度,而不是 subword,这也意味着采样的单位是 word 而非 subword,并且随取的起点必须是一个 word 的开头。

ERNIE(2019.3)

百度文心1.0认为BERT模型没有考虑到句子里的先验知识。比如这个句子:哈尔滨是黑龙江的省会,国际冰雪文化名城。

  • 模型很容易通过「哈」与「滨」预测到「尔」这个单词,仅仅需要通过局部共现关系,完全不需要上下文的帮助;
  • 而无法直接通过黑龙江与哈尔滨的关系来预测「哈尔滨」。

因此,如果模型能够学到这些先验知识,那模型应该可以获得更可靠的语言表征。ERNIE的改进主要体现在mask的方式上,将中文单字的 mask 改为连续的实体词和短语 mask。

另外,ERNIE 在 Bert 的基础上,预训练的语料引入了多源数据知识,包括了中文维基百科,百度百科,百度新闻和百度贴吧(可用于对话训练),数量分别为21M、51M、47M、54M。

并且,在中文使用了繁体字到简体字的转换,英文上的大写到小写的转换,最终的词表大小为17964。

之后清华也出了一个版本的ERNIE,它将知识图谱融入到语言模型的预训练之中,使用TransE来获取知识图谱中的实体向量,然后将实体向量嵌入到BERT中。

比如,不知道《Blowin’ in the Wind》是歌曲、《Chronicles: Volume One》是书籍,就很难准确认出鲍勃・迪伦的词曲作者和作家这两个身份。ERNIE 为了解决这个问题,同时利用大规模文本语料和知识图谱来训练。

GPT(2018 - 2020)

GPT-1(2018.6)

2017年,Google推出了Transformer模型,这一架构因其在性能上的显著优势迅速吸引了OpenAI团队的注意。OpenAI随后将研发重点转移到Transformer架构,并在2018年发布了GPT-1模型。GPT-1是基于生成式预训练(Generative Pre-Training)的Transformer架构,采用了仅有解码器(Decoder-Only)的Transformer模型,专注于预测下一个词元。

然而,GPT-1由于规模与BERT-Base相当,且在公开评测数据集上的性能未能达到最优,因此没有在学术界引起足够的关注。

特点:

  • 单向自回归训练:GPT使用因果语言建模目标进行训练,在这种训练方式中,模型仅根据前面的词元预测下一个词元。这使得它特别适合文本完成、摘要和对话生成等生成任务。
  • 下游任务微调:GPT的关键贡献之一是它能够针对特定的下游任务进行微调,而无需特定任务的架构。通过简单地添加一个分类头或修改输入格式,GPT可以适应情感分析、机器翻译和问答等任务。

GPT-2(2019.2)

GPT-2继承了GPT-1的架构,并将参数规模扩大到15亿,使用大规模网页数据集WebText进行预训练。与GPT-1相比,GPT-2的创新之处在于尝试通过增加模型参数规模来提升性能,同时去除针对特定任务的微调环节探索使用无监督预训练的语言模型来解决多种下游任务,而无需显式地使用标注数据进行微调(即zero-shot)。

GPT-3(2020.5)

OpenAI在2020年推出了具有里程碑意义的GPT-3模型,其模型参数规模扩展到了175B(1750亿),相较于GPT-2提升了100余倍,标志着对模型扩展的极限尝试。

GPT-3首次提出了“上下文学习”概念,允许大语言模型通过少样本学习解决各种任务,消除了对新任务进行微调的需求。

参考链接

LLM的3种架构:Encoder-only、Decoder-only、encode-decode - 知乎

Hello! · Transformers快速入门

史上最详细Transformer讲解以及transformer实现中文版完形填空(掩蔽字训练MASK) 内容详细易懂且附有全部代码_transformer mask-CSDN博客

【超详细】【原理篇&实战篇】一文读懂Transformer-CSDN博客

第四篇:一文搞懂Transformer架构的三种注意力机制 - 知乎 (zhihu.com)

[ai笔记13] 大模型架构对比盘点:Encoder-Only、Decoder-Only、Encoder-Decoder_encoderonly和decoderonly的区别-CSDN博客

大模型进化史:从Transformer到DeepSeek-R1的AI变革之路 - 知乎

BERT模型系列大全解读 - 知乎

BERT-WWM - 知乎

万字长文带你纵览 BERT 家族 - 知乎

长文梳理!近年来GPT系列模型的发展历史:从GPT-1到GPT-4o(前世、今生)_gpt发展历程-CSDN博客