大模型是怎么"思考"的:Token 到 Logit 的完整流程
输入文本 → Tokenize → Embedding → Transformer Block × N → Softmax → Logit → Sampling。拆解每个环节的本质,直击"AI 幻觉"和"上下文长度"的根源。
一句话总结
大模型本质上是一个超级复杂的条件概率机器:给定前面所有 token,预测下一个最可能的 token。 整个推理过程可以拆成 7 个环节,每个环节都有自己的坑。
完整流程:7 个环节
① Tokenize:把字切成模型能吃的最小单位
模型不认识"大模型"三个字,只认识 token。一个中文 token 大约对应 1.5 个汉字,一个英文 token 大约对应 0.75 个英文单词。 GPT-4 用的是 BPE(Byte Pair Encoding)算法,Qwen / Claude 用的是类似的子词切分。
"大模型是怎么思考的"
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 输出做非线性变换。 这一步负责"把关注到的信息加工成有用的表示"。
④ 重复 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 是常见默认。
理解了这 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 三个矩阵到底在做什么。