LLM-01入门14 min

大模型是怎么"思考"的:Token 到 Logit 的完整流程

输入文本 → Tokenize → Embedding → Transformer Block × N → Softmax → Logit → Sampling。拆解每个环节的本质,直击"AI 幻觉"和"上下文长度"的根源。

TokenizeEmbeddingSoftmaxSampling
这篇文章假设你用过 ChatGPT 或类似产品,但没读过模型原理。读完你应该能在 5 分钟内讲清楚"大模型到底是怎么吐出下一个字的"。

一句话总结

大模型本质上是一个超级复杂的条件概率机器:给定前面所有 token,预测下一个最可能的 token。 整个推理过程可以拆成 7 个环节,每个环节都有自己的坑。

完整流程:7 个环节

① Tokenize:把字切成模型能吃的最小单位

模型不认识"大模型"三个字,只认识 token。一个中文 token 大约对应 1.5 个汉字,一个英文 token 大约对应 0.75 个英文单词。 GPT-4 用的是 BPE(Byte Pair Encoding)算法,Qwen / Claude 用的是类似的子词切分。

示例:同一句话的不同 token 化
"大模型是怎么思考的" 

GPT-4o  (cl100k_base):  ["大", "模型", "是", "怎么", "思考", "的"]  →  6 tokens
Qwen2.5  (BPE):          ["大模型", "是怎么", "思考", "的"]        →  4 tokens
Claude 3 (custom BPE):   ["大模型是", "怎么", "思考的"]            →  3 tokens

坑 1:中文 token 化效率比英文低 2-3 倍。同样是 1000 字的内容,中文消耗的 token 数远高于英文, 这也是为什么中文 API 调用成本往往被低估。

② Embedding:把 token 变成一串数字

切完 token 后,每个 token 会被查表映射成一个固定维度的向量(GPT-4o 是 3072 维,Qwen2.5-7B 是 3584 维)。 这个映射表是模型在训练阶段学出来的,语义相近的 token 在向量空间里距离也相近。

伪代码
# 假设 batch_size=2, seq_len=4, hidden_dim=8
token_ids = [[101, 202, 303, 404], [505, 606, 707, 808]]
embeddings = embedding_layer(token_ids)
# shape: (2, 4, 8) - 每个 token 变成 8 维向量
# 这 8 维数字不是人拍的,是模型"学"出来的

③ Transformer Block:模型的核心计算单元

这是真正的"思考"发生的地方。一个大模型 = Embedding Layer + N 个 Transformer Block + 最终的输出头。 GPT-4o 据说有 120 层 Block,每层 Block 主要做两件事:

a) Self-Attention(自注意力):让每个 token 看到序列里所有其他 token,决定"我该关注谁"。 公式是 Attention(Q, K, V) = softmax(QKᵀ / √d) · V。

b) Feed-Forward(前馈网络):两个全连接层,对 Attention 输出做非线性变换。 这一步负责"把关注到的信息加工成有用的表示"。

整个 Transformer Block 的核心思想:让 token 之间互相"看到"彼此(Attention), 然后各自"思考"(FFN)。堆叠 N 层就形成了深度推理能力。

④ 重复 N 次:层数决定"思考深度"

GPT-3 是 96 层,LLaMA-70B 是 80 层,Qwen2.5-72B 是 80 层。层数越多,能处理的复杂推理链条越长, 但代价是计算成本线性增加。这就是为什么"大模型"既贵又慢。

⑤ 输出头:把隐藏状态变成"下一个字的概率分布"

最后一层 Transformer Block 的输出(每个 token 一个高维向量)会被送进一个"语言模型头"(LM Head), 转换成一个概率分布——也就是词表上每个 token 出现的概率。

伪代码
hidden_state = transformer(embeddings)  # (batch, seq_len, hidden_dim)
logits = lm_head(hidden_state)         # (batch, seq_len, vocab_size)
# vocab_size 在 GPT-4o 是 100,256,Qwen2.5 是 151,936
# logits[-1] 就是"下一个 token 是什么"的未归一化分数

⑥ Softmax:把分数变成概率

Logits 是任意实数,要变成概率需要用 Softmax:每个 token 的概率 = exp(它的 logit) / 所有 token 的 exp(logit) 之和。 这样所有概率加起来等于 1,可以解释为"模型认为下一个 token 是 X 的可能性有多大"。

坑 2:温度(Temperature)参数。Softmax 前除以一个温度系数 T: T→0 时退化为贪心(永远选概率最高的),T→∞ 时变成均匀分布(完全随机)。 实战中 T=0.7 是写作,T=0.2 是代码生成,T=1.0 是默认。

⑦ Sampling:从概率分布里挑一个 token

最后一步是从概率分布里"抽样"出一个 token。常见策略:

· Greedy / Argmax:永远选概率最高的。缺点是文本会重复、僵硬。

· Top-p (Nucleus Sampling):从累积概率达到 p 的最小集合里随机抽。p=0.9 是最常用配置。

· Top-k:从概率最高的 k 个 token 里随机抽。k=40 是常见默认。

坑 3:AI 幻觉的根源。模型只是在"按概率挑下一个字",它并不知道事实。 如果训练数据里某话题的高频回答是错的,模型就会自信地输出错误信息——这就是"幻觉"。 修法的本质是改变概率分布(RAG / 微调 / Prompt 引导),不是让模型"更努力思考"。

理解了这 7 步,你能解释这些现象

· 上下文长度限制 = Self-Attention 是 O(N²) 计算,token 越多越贵,所以有上限。

· 推理成本 = token 数:每个 token 都要跑完整 7 步,token 数 ≈ 钱。

· 模型的"知识截止" = 训练数据没覆盖到的内容,概率分布里就没有合理输出。

· Few-shot Prompt 有效 = 在输入里展示几个例子,模型通过 Attention 注意到这个模式,调整输出概率。

· Temperature 越低越像"重复" = 概率最高的 token 被反复选。

下一步

理解了"Token 到 Logit"的全流程,下一篇 LLM-02 Attention 机制:Q/K/V 矩阵运算的直观理解会深入 Self-Attention 内部,拆开 Q/K/V 三个矩阵到底在做什么。