2.3 文本编码与语言模型


文档摘要

2.3 文本编码与语言模型 前面两节我们讲清楚了 Transformer 的积木与组装方式。本节把这些积木用到文本上,看一条字符串如何变成 Transformer 能消化的张量,又如何演化出 BERT、GPT、LLaMA 等当代大语言模型。 一、从字符串到 token:分词 Transformer 不能直接吃字符串,必须先切成 token。中文里 token 可能是一个字、一个词或子词(subword);英文里可能是「play」「ing」两个 token 组成「playing」。

2.3 文本编码与语言模型

前面两节我们讲清楚了 Transformer 的积木与组装方式。本节把这些积木用到文本上,看一条字符串如何变成 Transformer 能消化的张量,又如何演化出 BERT、GPT、LLaMA 等当代大语言模型。

一、从字符串到 token:分词

Transformer 不能直接吃字符串,必须先切成 token。中文里 token 可能是一个字、一个词或子词(subword);英文里可能是「play」「ing」两个 token 组成「playing」。

主流分词算法

算法 思路 代表
BPE(Byte Pair Encoding) 从字符开始,迭代合并最高频的相邻对 GPT-2、GPT-3、LLaMA
WordPiece 类似 BPE,但用似然而非频率选择合并 BERT
Unigram 反向:从大词表开始逐步删除低频项 T5、ALBERT
SentencePiece 把 BPE/Unigram 扩展到任意语言,含空格处理 多语言模型

LLaMA、Qwen、Mistral 等当代大模型几乎都用 BPE 或 SentencePiece 的变体,词表大小通常在 3 万到 15 万之间(GPT-4 的词表 cl100k_base 约 10 万,Qwen2 约 15 万)。

工程价值:词表大小影响一切

  • 词表越大:同样的文本所需 token 数越少,推理越快。中文场景下 Qwen2.5 的 token 效率显著优于 LLaMA 3
  • 词表越大:嵌入矩阵参数越多(embedding 是 \text{词表大小} \times d),小模型会变得「头重脚轻」
  • 多语言:词表必须覆盖各语言子词,否则小语种会「一个字拆成多个 token」,效率低且语义割裂

二、Token Embedding:把离散变成连续

切完 token 后,每个 token 是一个整数 ID。下一步是用一个嵌入矩阵 E \in \mathbb{R}^{V \times d} 把它变成稠密向量:

x_i = E[\text{token\_id}_i] \in \mathbb{R}^d

其中 V 是词表大小,d 是隐藏维度。这一步本质是查表(lookup),无计算开销但有大量参数——LLaMA-7B 中 embedding 占了约 26 亿参数(占总参数的 37%)。

很多模型还会做 embedding scaling

x_i = E[\text{token\_id}_i] \cdot \sqrt{d}

这个缩放是为了让 embedding 与后续位置编码加和时数值量级匹配,避免位置编码信号被淹没。

三、位置编码加上

按 2.2 节的方式,把 token embedding 与位置编码相加:

h_i^{(0)} = x_i + p_i

这一步把「这个 token 是什么」与「它在第几个位置」两个信息打包到一起,送进 Transformer 主干。

四、编码器侧:BERT 与双向理解

BERT(Bidirectional Encoder Representations from Transformers)是 Google 2018 年提出的 Encoder-Only 模型。它的设计哲学是:

  • 双向 Self-Attention 让每个 token 同时看到左右上下文
  • 预训练任务:掩码语言建模(Masked Language Modeling, MLM)——随机遮住 15% 的 token,让模型根据上下文猜回它们
输入: "The [MASK] sat on the mat" 目标: 预测 [MASK] = "cat"

BERT 的输出是每个 token 的上下文相关表示,可以直接接任务头做分类、问答、命名实体识别等理解类任务

但 BERT 不能直接生成文本——它是双向的,无法用于「给定前文预测下一个词」的自回归生成。这是 Encoder-Only 模型的根本局限。

五、解码器侧:GPT 与自回归生成

GPT(Generative Pre-trained Transformer)走的是相反路线:

  • 因果 Self-Attention(带掩码)让每个 token 只能看到左侧
  • 预训练任务:下一个 token 预测(Next Token Prediction, NTP)
输入: "The cat sat on the" 目标: 预测下一个 token = "mat"

这个目标看似简单,却让模型在生成中学会理解——要准确预测下一个词,模型必须学到语法、语义、世界知识、推理能力。

GPT 的输出是「下一个 token 的概率分布」,可以反复采样得到完整序列:

"The cat sat on the" → 预测 "mat" "The cat sat on the mat" → 预测 "." "The cat sat on the mat." → 预测 "<EOS>" 结束

这种自回归生成能力是 GPT 系列以及所有当代大语言模型(LLaMA、Qwen、Mistral)的根基。

六、GPT 的工程演化:从 GPT-1 到 GPT-4

GPT 系列每一次迭代主要靠三件事:

维度 演化方向
规模 参数从 1.17 亿(GPT-1)→ 1750 亿(GPT-3)→ 万亿级(GPT-4 估计)
数据 从 WebText 几 GB → CommonCrawl 数 TB → 多模态图文
训练目标 单纯 NTP → 加入指令微调 → 加入 RLHF 人类对齐

GPT-3 的贡献是揭示了「Scaling Law」——损失随参数、数据、算力呈幂律下降,没有明显饱和。这把整个研究界推向了「堆规模」的范式。

GPT-3.5/4 的贡献是「对齐」——通过指令微调与 RLHF,让大模型从「会接话」变成「会回答问题、会拒绝有害请求、会跟随人类意图」。这部分我们在第7章详解。

七、当代 Decoder-Only 大语言模型

LLaMA、Qwen、Mistral 等开源模型都是 Decoder-Only + NTP,但在工程细节上各有创新:

LLaMA 系列(Meta)

LLaMA 引入了几个被广泛复用的工程改进:

  • RMSNorm:去掉 LayerNorm 中的减均值步骤,只做缩放归一化,计算更快
  • SwiGLU:用门控线性单元(GLU)替代 GELU,作为 FFN 激活
  • RoPE:旋转位置编码,支持长上下文外推
  • Grouped Query Attention:Q 头数多于 K/V 头数,节省 KV cache 内存,提升推理速度

LLaMA 3 进一步扩大了词表(128K)、训练数据(15T token)并支持多语言、长上下文。

Qwen 系列(阿里达摩院)

Qwen2/Qwen2.5 的特色:

  • 词表高达 152K,中文 token 效率高(同样中文比 LLaMA 少 30-50% token)
  • 大量高质量中文与代码训练数据
  • GQA + RoPE + SwiGLU 一应俱全
  • 同时发布稠密版本与 MoE 版本

Mistral 系列(Mistral AI)

Mistral 7B 用 Sliding Window Attention(滑窗注意力)让每个 token 关注局部窗口,再通过堆叠层让信息跨窗口传递,平衡了效率与全局性。Mixtral 8x7B 进一步用 MoE(Mixture of Experts) 把参数量提到 47B 但激活参数只有 13B,推理成本接近 14B 模型。

GLM 系列(智谱)

GLM 用了一种「自回归空白填充」预训练目标,介于 BERT 的 MLM 与 GPT 的 NTP 之间,天然支持双向理解 + 单向生成。GLM-4 系列在国内多模态生态中也是重要一员。

八、为什么文本骨干对多模态大模型如此关键

回顾第1章给出的 MLLM 三段式抽象:

\text{MLLM} = \text{Encoder}_\text{模态} + \text{Projector} + \text{LLM}

其中 LLM 这部分几乎全部来自上面这些 Decoder-Only 大语言模型

  • LLaVA 系列用 Vicuna(LLaMA 微调版)作为中枢
  • Qwen-VL 用 Qwen 作为中枢
  • MiniGPT-4 用 Vicuna
  • MiniCPM-V 用 Qwen2.5
  • InternVL 用 InternLM 或 Qwen

这意味着多模态大模型的能力上限,很大程度上继承自底层 LLM。LLM 的指令跟随、推理、知识水平,直接决定了多模态模型的「天花板」。

这也是为什么 2023 年后多模态大模型的能力跟着 LLM 一起飞跃——LLM 的进步被「免费」地传导到了多模态。

九、把整条文本处理链路串起来

最后我们把从字符串到 LLM 输出的完整数据流画一遍:

多模态大模型做的事情,本质上就是在这条流水线的最前端,再插一个「视觉编码器 + 投影器」,把图像 patch 也变成 token 喂进来。具体怎么做,是第3、4、5章的主题。

小结

文本编码经历了「分词 → embedding → 加位置编码 → Transformer 编码」四步。BERT 走双向理解路线,GPT 走单向生成路线,当代大模型几乎全是 Decoder-Only + RoPE + SwiGLU + RMSNorm 的组合。这些 LLM 既是文本任务的强者,也是多模态大模型的中枢底座。

下一节(2.4)我们速览 LLaMA 3、Qwen2.5、Mistral、GLM 等当代文本骨干的最新形态。


发布者: 作者: 渗透测试失败者的小龙虾 转发
评论区 (0)
U