深入理解NLP模型基石,看清ChatGPT、BERT、T5等模型背后的设计哲学

目录

1. 引言:从Transformer到三大架构

2. 核心思想:三种不同的“使命”

3. Encoder-only(仅编码器)模型

核心原理:双向上下文理解

预训练任务:掩码语言模型(MLM)

代表模型与应用场景

4. Decoder-only(仅解码器)模型

核心原理:自回归生成

预训练任务:语言模型(LM)

代表模型与应用场景

5. Encoder-Decoder(编码器-解码器)模型

核心原理:序列到序列的转换

预训练任务:去噪或跨度损坏

代表模型与应用场景

6. 对比总结与演进趋势

演进趋势:界限的模糊与融合

总结


1. 引言:从Transformer到三大架构

2017年,谷歌一篇名为《Attention Is All You Need》的论文横空出世,其中提出的Transformer架构彻底改变了自然语言处理(NLP)的格局。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全基于自注意力机制,实现了前所未有的并行计算能力和长距离依赖捕捉能力。

然而,在后续的发展中,研究者们根据不同的任务需求,从原始Transformer中衍生出了三大主要架构流派:

  1. Encoder-only(仅编码器)

  2. Decoder-only(仅解码器)

  3. Encoder-Decoder(编码器-解码器)

2. 核心思想:三种不同的“使命”

在深入细节之前,我们可以用一个形象的比喻来理解它们的核心使命:

  • Encoder-only 像一位「分析师」:它的任务是深度理解和分析给定的文本,从中提取信息、情感或关系。它擅长“读”。

  • Decoder-only 像一位「作家」:它的任务是自主生成和延续文本。它根据已有的上文,创造出合理的下文。它擅长“写”。

  • Encoder-Decoder 像一位「翻译官」:它的任务是转换与重构。它将一种形式的输入序列(如英文)转换为另一种形式的输出序列(如中文)。它既“读”也“写”

3. Encoder-only(仅编码器)模型

核心原理:双向上下文理解

Encoder-only模型只使用Transformer架构中的编码器部分。其最核心的特征是双向自注意力机制

什么是双向注意力?
在处理一个词时,模型可以同时关注到它左边和右边的所有词。这意味着模型能够获得对整个句子的完整、全局的理解。

一个简单的代码示例(伪代码):

# 输入句子
sentence = ["今天", "天气", "真", "好"]

# Encoder在处理"天气"这个词时,会同时关注:
context_for_weather = attention("今天") + attention("真") + attention("好")
# 因此它知道"天气"的前后语境,理解更准确。

预训练任务:掩码语言模型(MLM)

为了让模型学会这种深度理解能力,其经典的预训练任务是掩码语言模型

  • 做法:随机遮盖输入句子中的一些词(例如,15%),然后让模型根据所有未被遮盖的词(双向上下文) 来预测被遮盖的原始词。

  • 示例

    • 原始句子:“我今天要去学校上课”

    • 遮盖后:“我今天要[MASK]学校上课”

    • 模型任务:根据“我”、“今天”、“要”、“学校”、“上课”来预测[MASK]位置应该是“去”。

这个过程迫使模型学习词语之间深层的语法和语义关系。

代表模型与应用场景

  • 代表模型BERT 及其变体(RoBERTa, DistilBERT, ALBERT)。

  • 应用场景

    • 文本分类:情感分析、垃圾邮件识别。

    • 命名实体识别:从文本中提取人名、地名、组织名。

    • 自然语言推理:判断两个句子是蕴含、矛盾还是中立。

    • 提取式问答:从给定的文章中找出答案。

优点:在需要深度文本理解的任务上表现出色。
缺点:不擅长生成连贯的、长篇的文本。

4. Decoder-only(仅解码器)模型

核心原理:自回归生成

Decoder-only模型只使用Transformer架构中的解码器部分,并通常使用因果(或单向)自注意力机制

什么是单向注意力?
在生成一个词时,模型只能关注到它之前(左边) 的所有词,而不能看到未来的词。这完美地模拟了人类逐字写作或说话的方式。

一个简单的代码示例(伪代码):

# 生成句子:"今天天气真好"
# 模型生成过程是逐步的:
input_ids = ["<开始>"]
step1: input_ids = ["<开始>"] -> 模型预测下一个词为 "今天"
step2: input_ids = ["<开始>", "今天"] -> 模型预测下一个词为 "天气"
step3: input_ids = ["<开始>", "今天", "天气"] -> 模型预测下一个词为 "真"
step4: input_ids = ["<开始>", "今天", "天气", "真"] -> 模型预测下一个词为 "好"
# 每一步都只能看到当前和之前的信息。

预训练任务:语言模型(LM)

其预训练任务非常简单直接:给定前文,预测下一个词

  • 示例

    • 输入:“我今天要”

    • 目标输出:“去”

    • 输入:“我今天要去”

    • 目标输出:“学校”

这个过程训练了模型掌握语言的语法、常识和逻辑流,使其能够生成流畅的文本。

代表模型与应用场景

  • 代表模型GPT系列(GPT-3, GPT-4)、Llama系列、ChatGPT等。

  • 应用场景

    • 文本生成:写文章、故事、诗歌、代码。

    • 对话系统:开放域聊天机器人。

    • 思维链推理:通过逐步推导解决复杂问题。

优点:拥有强大的生成能力和创造性。
缺点:在需要深度理解整个输入的任务上(如翻译、摘要)可能不如Encoder-Decoder模型直接有效。

5. Encoder-Decoder(编码器-解码器)模型

核心原理:序列到序列的转换

这是最通用的架构,完整保留了原始Transformer的设计。它由两部分组成:

  1. Encoder:负责理解输入序列,将其编码成一个富含语义的中间表示(可以看作一个“思想向量”或“上下文”)。

  2. Decoder:负责生成输出序列。它基于Encoder提供的“上下文”和已经生成的部分输出,以自回归的方式逐个生成目标词。

预训练任务:去噪或跨度损坏

这类模型的预训练目标通常是让模型学会如何重构或转换输入。

  • 示例(T5模型)

    • 原始句子:“我今天要去学校上课”

    • 损坏后:“我今天要<X>学校<Y>” (遮盖了连续的词段)

    • 模型任务:输出 “<X> 去 <Y> 上课”

这直接训练了模型“根据输入生成输出”的序列转换能力。

代表模型与应用场景

  • 代表模型T5BART、原始Transformer(机器翻译)。

  • 应用场景

    • 机器翻译:将中文序列转换为英文序列。

    • 文本摘要:将长文章序列转换为短摘要序列。

    • 生成式问答:根据问题生成答案,而非提取。

    • 文本风格迁移:将正式文本转为口语化。

优点:在需要转换和重构的任务上最为直接和有效。
缺点:结构相对复杂,训练和推理成本通常更高。

6. 对比总结与演进趋势

特性 Encoder-only(分析师) Decoder-only(作家) Encoder-Decoder(翻译官)
注意力机制 双向注意力(全上下文) 单向/因果注意力(只能看前面) Encoder双向,Decoder单向
核心能力 理解与分析 生成与延续 转换与重构
典型任务 文本分类、NER、情感分析 文本生成、对话、创意写作 翻译、摘要、问答
代表模型 BERT, RoBERTa GPT系列, Llama T5, BART
输入/输出 一序列进,一序列出(用于分析) 一序列进,一序列出(用于生成)

一序列进,另一序列出

演进趋势:界限的模糊与融合

值得注意的是,随着模型的发展,这些界限正在变得模糊。

  1. Decoder-only的统治地位:像GPT-4和Llama这样的超大规模Decoder-only模型,通过在海量数据上训练和指令微调,在很多本该由Encoder-only或Encoder-Decoder模型擅长的任务上(如摘要、问答)也表现出色。这使得Decoder-only架构成为了当前大语言模型的主流。

  2. 统一架构的尝试:例如,GLM模型提出了一种通用语言模型架构,试图在一个模型中融合三种架构的优势。T5则将所有任务都视为“文本到文本”的转换,统一了范式。


总结

Encoder-only、Decoder-only和Encoder-Decoder三大架构,是NLP模型发展的三条核心路径,它们分别对应着“理解”、“生成”和“转换”这三大核心任务。

  • 当你需要进行深入的文本分析时,Encoder-only模型是你的不二之选。

  • 当你需要模型进行自由创作或对话时,Decoder-only模型展现了其强大的能力。

  • 当你需要将一个序列转换为另一个序列时,Encoder-Decoder模型提供了最直接的解决方案。

Logo

更多推荐