从零开始理解大模型(一):一切从"猜下一个词"开始

举报
AGENT魔方 发表于 2026/04/15 09:31:50 2026/04/15
【摘要】 本文是「从零开始理解大模型」系列第一篇,本系列共十篇,将从最基础的 “下一个词预测” 出发,逐步构建完整的大模型心智认知,且每篇均附带可运行代码。本篇从 “猜下一个词” 切入,带你开启大模型原理学习之旅。

专栏1.png

欢迎阅读「从零开始理解大模型」系列 —— 本系列十篇文章,从"下一个词预测"到完整的大模型心智模型。每篇配可运行代码。
  • 第一篇:一切从"猜下一个词"开始(本文)
  • 第二篇:Token——大模型眼中的"字"长什么样
  • 第三篇:向量与 Embedding——把文字变成数学
  • 第四篇:Attention——大模型的"阅读理解"机制
  • 第五篇:Transformer 全景——积木怎么搭成大厦
  • 第六篇:训练——70 亿个参数是怎么"学"出来的
  • 第七篇:推理——你按下回车后的这一秒发生了什么
  • 第八篇:上下文窗口——大模型的"工作记忆"
  • 第九篇:Scaling Law——为什么"大力出奇迹"有效
  • 第十篇:从大模型到 Agent——下一个词预测如何长出手脚

作者:十一

你每天都在用大模型——写代码、问问题、翻译文章。但你有没有想过:它到底在"做"什么?

答案简单到令人意外:猜下一个词。

不是"理解",不是"思考",不是"推理"——就是给定前面的文字,预测下一个最可能出现的词。ChatGPT、Claude、DeepSeek,所有大模型的底层任务都是同一个:Next Token Prediction(下一个词预测)

一、先说结论

1.png

句话总结:大模型 = 一个把"猜下一个词"做到极致的概率机器。

二、你可以亲手体验的"下一个词预测"

打开手机输入法,输入"今天天气",看看联想栏——它会建议"真好""不错""怎么样"。这就是下一个词预测。输入法和大模型做的事情本质上相同,区别只在规模

2.png

大模型是把输入法的思路推到了极致。参考信息更多、模型更大、预测更准,于是从"联想下一个词"变成了"生成完整文章"。

三、代码实验一:亲眼看"下一个词预测"

用 GPT-2(1.2 亿参数的小模型,和 GPT-4 架构完全相同)来演示。核心代码只有几行:

input_ids = tokenizer.encode("Thank you very", return_tensors="pt")  # 文字 → token ID
logits = model(input_ids).logits[0, -1, :]   # 模型输出 50257 个原始得分
probs = torch.softmax(logits, dim=0)          # 得分 → 概率
next_token = torch.argmax(probs)               # 选概率最高的

完整可运行代码见附件 predict.py[1],支持命令行传入任意文本。

* 本公众号AGENT魔方后台回复“大模型”,获取配套代码(持续更新)

运行结果

输入: 'Thank you very'
Token IDs: [10449, 345, 845]

模型预测后面最可能的 10 个词:
--------------------------------------------------
   1. ' much'     99.2%  █████████████████████████████████████████████████
   2. ' very'      0.3%
   3. ','          0.3%
   4. 'much'       0.1%
   ...
  剩余 50247 个 token 共占: 0.1%

拼接后: 'Thank you very much'

99.2%——50257 个候选词里,模型把几乎全部概率都押在了 "much" 上。

50257 是怎么来的? 这是 GPT-2 的词表大小——模型认识的所有 "词"(准确说是 token)的数量。它通过 BPE 算法(第二篇详解)从训练数据中统计出来:50000 个高频子词 + 256 个基础字节 + 1 个特殊结束符 = 50257。不同模型的词表大小不同(LLaMA 是 32000,Qwen2 是 151936),但原理相同。模型每做一次预测,就是在自己的词表里给这些 token 逐个打分。

Softmax:得分变概率

模型输出的不是概率,而是 50257 个原始得分(叫 logits)。Softmax 函数把它们转换成加起来等于 1 的概率分布:

P(wᵢ) = e^(logitsᵢ) / Σⱼ e^(logitsⱼ)

效果是:得分高的被放大,得分低的被压缩。 "much" 的 logit 远高于其他词,Softmax 之后变成了 99.2% 的压倒性概率。这个函数在大模型里反复出现(Attention 的归一化也用它),后面的篇章会多次遇到。

试试别的输入python predict.py "The capital of France is"——GPT-2 对这个问题没这么自信,"Paris" 只排第 5 位、概率约 3%。模型越大、预测越准——这是第九篇(Scaling Law)的主题。

四、代码实验二:逐词生成与 Temperature

上面只预测了一个词。把过程循环起来,就是完整的文本生成:

for step in range(max_tokens):
    logits = model(input_ids).logits[0, -1, :]
    probs = torch.softmax(logits / temperature, dim=0)    # 先除以 T,再 Softmax
    next_token = torch.multinomial(probs, 1)               # 按概率随机采样
    input_ids = torch.cat([input_ids, next_token], dim=1)  # 拼接,继续下一轮

Temperature T 的作用写在公式里一目了然:

P(wᵢ) = e^(logitsᵢ / T) / Σⱼ e^(logitsⱼ / T)

3.png

整可运行代码见附件 generate.py[2],默认跑三组 Temperature 对比实验。

* 本公众号AGENT魔方后台回复“大模型”,获取配套代码(持续更新)

运行结果示例

Temperature = 0.3(保守):
  'The meaning of life is to be found in the way we live.'
  ← 每步选的词概率 10%-30%,几乎每次结果一样

Temperature = 1.5(奔放):
  'The meaning of life is pretty complicated, especially when you realize how small we are.'
  ← 每步选的词概率不到 1%,每次结果不同

生成 = 循环预测。 你在 ChatGPT 里看到的"打字机效果"不是动画——那就是模型真实的工作方式,一个 token 一个 token 地生成。每步都是同一个操作:算 logits → Softmax → 选 token → 拼上去 → 继续。

五、一个颠覆直觉的事实

预测下一个词就能写文章、做翻译、解数学题?

是的。当你把"预测"做到足够好,很多能力会自动涌现:

翻译:输入 "Translate to French: The cat is on the mat →",模型预测 "Le"、"chat"……在预测中完成了翻译。

数学:输入 "127 + 385 =",模型预测 "5"、"1"、"2"——在预测中完成了计算。

代码:输入 "def sort_list(",模型依次预测参数、函数体……

这些能力不是专门训练出来的——它们是"预测下一个词"的副产品。 模型在训练时读过大量翻译文本、数学题、代码,"学"到了:在特定格式的输入后面应该接什么。

这个洞察是理解整个系列的地基:大模型的一切能力,都是"预测下一个词"在不同场景下的表现。

六、从"预测"到"对话"

你问大模型问题时,它明明在"回答"——这和"预测下一个词"有什么关系?

看看模型实际看到的输入:

<|system|>你是一个有帮助的助手。<|end|>
<|user|>法国的首都是哪里?<|end|>
<|assistant|>

模型的任务就是预测<|assistant|>后面应该接什么词:"法"、"国"、"的"、"首"、"都"、"是"、"巴"、"黎"、"。"

"回答问题"不是一种独立的能力。 它只是"预测下一个词"在对话格式下的表现。模型训练时见过海量"问 → 答"文本,所以看到问题格式的输入时,预测出来的词自然构成了回答。

如果你读过「从零开始理解 Agent」系列,你会记得 Agent 的核心是一个循环——LLM 预测 → 工具调用 → 结果反馈 → LLM 继续预测。Agent 的每一个决策——用哪个工具、传什么参数、什么时候停止——都是一次"猜下一个词"。

七、所有大模型都一样吗?

GPT-4、Claude、DeepSeek、Llama……底层真的都是"预测下一个词"?

是的。差别不在"做什么",而在"做得多好"

4.png

底层任务完全相同:给定前文,预测下一个 token。这就像所有汽车都是"燃烧燃料推动活塞"——但法拉利和五菱宏光体验天差地别,差别在工程细节。

八、这个系列要讲什么

这篇建立了最核心的直觉:大模型 = 预测下一个词。但留下了很多问题:

"文字怎么变成数字?" —— tokenizer.encode 做了什么?→ 第二篇:Token

"模型内部怎么算的?" —— model(input_ids) 里发生了什么?50257 个 logits 怎么来的?→ 第三~五篇:向量、Attention、Transformer

"参数怎么学出来的?" —— 模型凭什么知道 "Thank you very" 后面接 "much"?→ 第六篇:训练

"为什么生成有快有慢?" —— 第一个 token 等得久?KV Cache?→ 第七篇:推理

每篇解开一个黑盒,到第十篇结束时,你会拥有大模型"从输入到输出"的完整心智模型。

九、结语

大模型不神秘。

它做的事情和你手机输入法一模一样——预测下一个词。只不过,当这个"预测"被推到极致——参数够多、数据够大、训练够久——涌现出来的东西,看起来像是在"思考"。

All models are wrong, but some are useful. — George E. P. Box

所有模型都是"错"的——它不是真的在理解语言。但足够好的预测,就是足够好的近似。

下一篇,我们打开第一个黑盒:模型看到的不是"文字",而是"token"。


本文配套代码:predict.py[1](单步预测)、generate.py[2](逐词生成 + Temperature 对比)。需要 Python 3.8+、transformers、torch。


容器模仿.png

公众号后台回复“大模型

获取本系列文章配套代码(持续更新)


「从零开始理解大模型」是「从零开始理解 Agent」的姊妹系列。Agent 系列讲"四肢"——怎么通过工具和循环做事。本系列讲"大脑"——内部怎么运转。建议对照阅读。


相关链接
[1]  predict.py: https://github.com/GitHubxsy/nanoAgent/blob/claude/organize-teaching-materials-4hnRP/llm-from-scratch/predict.py

[2]  generate.py: https://github.com/GitHubxsy/nanoAgent/blob/claude/organize-teaching-materials-4hnRP/llm-from-scratch/generate.py
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。