前向传播的组成:给中学生的极简版

#2025/12/29 #ai

想象你在玩一个“猜下一个词“的游戏。

你写了半句话“我喜欢吃“,让电脑猜下一个词。电脑怎么猜出来的?这就是前向传播要做的事。


目录

🎮 把大模型想象成一个游戏关卡

前向传播就像玩游戏通关,你的输入(文字)要经过三道关卡,最后得到输出(预测的下一个词)。

你的输入 → [关卡1](分词器) → [关卡2](嵌入层) → [关卡3](Transfromer 块) → 电脑的输出  
"我喜欢吃"                              "苹果"  

🚪 关卡1:分词器(把话拆成“暗号“)

电脑听不懂中文或英文,它只认数字。分词器就是个“翻译官“。

举个例子

  • 你输入
    • “我喜欢吃苹果”
  • 分词器干了啥
    1. 先切词:["我", "喜欢", "吃", "苹果"]
    2. 再查字典,把每个词变成数字 ID:[123, 456, 789, 234]

类比

  • 就像你去图书馆,书名是“哈利波特“,但系统里存的是编号“B12345“。

🔢 关卡2:嵌入层(把数字变成“坐标“)

拿到数字 ID 后,电脑还是不能直接用。嵌入层就是个超级大表格,每个 ID 对应一排数字(向量)。

举个例子

  • ID 123(“我”)→ 查表 → [0.5, -0.3, 0.8, ...](一串小数)
  • ID 456(“喜欢”)→ 查表 → [0.2, 0.9, -0.1, ...]

为什么要这样?

  • 因为电脑要做数学计算(加减乘除),只能用数字。
  • 这些小数就像地图上的坐标,意思相近的词(比如“喜欢“和“爱“)在地图上会挨得很近。

🧠 关卡3:Transformer 块(核心“大脑“)

这是最复杂的部分,但你可以把它想象成32 层楼的大厦,每一层都在“思考“这句话。

长啥样?

第 1 层:处理词向量,输出新的向量  
第 2 层:继续处理,输出更新的向量  
第 3 层:...  
...  
第 32 层:输出最终理解后的向量  

每一层干了啥?

每层都在做两件事

  1. 自注意力:看看其他词对当前词有啥影响
    • 比如处理“它“这个词时,要看看前面说的是“猫“还是“狗“
  2. 前馈神经网络记住见过的知识
    • 比如记住“苹果通常和’吃’一起出现“

类比:就像写作文,你要:

  1. 回头看看前面写了啥(注意力
  2. 想想老师教过的词汇和句型前馈网络

🎯 关卡4:语言建模头(最后“投票“)

经过 32 层思考后,电脑得到了一个“理解向量“。现在要决定:下一个词到底是啥?

语言建模头就像一个投票机:

  • 理解向量变成 50000 个分数(假设词典有 5 万个词
  • 每个分数代表这个词成为“下一个词“的可能性
# 假设词典  
词典 = ["我", "你", "苹果", "香蕉", ..., "太阳"]  # 共 50000 个词  

# 模型算出的分数(数字越大,可能性越高)  
分数 = [1.2, 0.5, 8.9, 2.1, ..., 0.3]  

# 选分数最高的  
下一个词 = "苹果"(因为它的分数是 8.9,最高!)  

📊 完整流程图(用你能懂的话说)

你输入:"我喜欢吃"  
    ↓  
[关卡1:分词器]  
    把话拆成词 → 变成数字 ID  
    "我喜欢吃" → [123, 456, 789]  
    ↓  
[关卡2:嵌入层]  
    每个 ID 查表变成向量  
    123 → [0.5, -0.3, ...]  
    456 → [0.2, 0.9, ...]  
    789 → [0.1, 0.4, ...]  
    ↓  
[关卡3:Transformer 块(32 层楼)]  
    第 1 层:初步理解  
    第 2 层:深入思考  
    ...  
    第 32 层:全面理解  
    ↓  
[关卡4:语言建模头]  
    给 5 万个词打分  
    "苹果" 得 8.9 分 ✅(最高)  
    "香蕉" 得 2.1 分  
    ...  
    ↓  
输出:"苹果"  

🤔 为什么叫“前向传播“?

因为数据是从前往后单向流动的:

输入 → 分词器 → 嵌入层 → 第1层 → 第2层 → ... → 第32层 → 输出  

就像水从山顶流到山脚,只能往一个方向走。


💡 一句话总结

前向传播 = 把你的话(文字)扔进一个“四道关卡“的机器,经过翻译(分词)、查表(嵌入)、深度思考(32 层 Transformer)、投票(语言建模头),最后吐出预测的下一个词。


🎓 记忆口诀

文字进来先翻译 🔤(分词器)  
数字查表变坐标 📍(嵌入层)  
三十二层慢慢想 🧠(Transformer 块)  
最后投票选答案 🗳️(语言建模头)