系列第 1 篇 / 共 5 篇:先建立完整输入输出链路。

一句话总纲:大模型 = 一个巨大的"预测下一个词"的函数。输入是一串数字向量,输出是一个概率分布。

全程只有矩阵乘法、相加、除、softmax 这几种操作,没有别的魔法。

一、输入侧:文字是怎么"进"模型的

大模型不认识文字,只认数字。文字要经过三件事才能进去。

1. Tokenization(分词)——模型的"字母表"

模型背着一张词表(约 5 万~20 万个 token),输入先切成它认识的积木块:

"我不喜欢吃苹果" → [我] [不喜欢] [吃] [苹果]
  • 常见词一个 token;生僻词会被拆成多个子词(BPE 算法:反复合并"出现最频繁的相邻两片")
  • 中文基本一字一 token;英文常见子词组合
  • token 切得越粗,一句话占的 token 越少,能装进上下文的字越多

2. Embedding(向量化)——给每个词一个"坐标"

每个 token 查一张大表(嵌入矩阵),变成一个长向量(如 4096 个数字):

[猫] → (-0.55, 0.92, -1.20, ...)   共4096个数字
  • 向量 = 语义空间里的坐标。语义相近的词,坐标离得近(猫和狗近,猫和汽车远)
  • 可做算术:"国王 − 男人 + 女人 ≈ 女王"
  • 坐标不是人设计的,是训练中学出来的

3. Positional Encoding(位置编码)——给词排顺序

Transformer 一次同时处理所有 token(并行),天生没有先后顺序概念。所以要给每个 token 叠加一个位置信号:

"猫"的向量 + 位置0的编码 → 带顺序信息的"猫"

这样模型才能知道"猫在屋顶"和"屋顶在猫"不一样。

二、处理核心:Transformer

几十到几百层,每层做两件事:注意力交换信息 + 前馈网络消化。

1. 注意力机制(Attention)——灵魂

每个词被三个"镜头"投影成三个角色:

Q(Query)= 你想问什么    K(Key)= 你的名牌    V(Value)= 你肚子里的货

开会类比,处理"喜欢"这个词时:

  1. 拿"喜欢"的 Q 去点乘所有词的 K → 算出关注度投票(点积 = 对应位置相乘再相加,越大越相关)
  2. 缩放后过 softmax → 变成权重(加起来 = 1)
  3. 用权重对所有词的 V 加权求和 → 得到吸收了上下文的新向量

结果示例:模型在"喜欢"这里自动学会重点看"不"(55%)和"猫"(26%),这就是"不喜欢猫"语义的起点。

  • 每个词同时进行(矩阵并行)→ 比老式 RNN 快几个数量级
  • 多头(Multi-head):同时用 32 组镜头,有的管语法、有的管指代、有的管否定
  • GPT 系列是 decoder-only,注意力是因果的(只能看前面的词)→ 这决定了它只能从左往右生成

2. 前馈网络 FFN——散会后的消化

向量 → 矩阵乘1 → 激活函数(压掉负数) → 矩阵乘2
  • 注意力是"小组讨论",FFN 是"各自回工位消化",每个词独立
  • 非线性(激活函数)必须存在:没有它,叠多少层都等于一个线性变换

3. 残差连接 + LayerNorm——保证能"深"

  • 残差:输出 = 原始输入 + 本层结果,像捷径,让信息顺畅穿过上百层
  • 归一化:让数字待在健康范围,训练才稳定

4. 层次感

底层:认字、词法     中层:句法、指代     高层:语义、推理

像读文章:字母 → 单词 → 句子 → 中心思想。

三、输出侧:文本是怎么"出"来的

1. 变成概率分布

最后取序列末尾 token 的向量 → 线性层(映射到词表大小)→ softmax:

[...向量] → [猫:0.6, 狗:0.1, 吃:0.08, 飞机:0.001, ...]  (10万个概率,和为1)

2. 采样(决定选哪个)

  • 贪心:选概率最高的
  • temperature(温度):调高 → 更随机更有创造力;调低 → 更保守准确
  • top-p:只在累计概率达 p 的最小集合里选,砍掉尾巴

3. 自回归循环(一段话是"挤"出来的)

输入:  我不喜欢
预测:  "猫"  → 拼回:  我不喜欢猫
预测:  "。"  → 拼回:  我不喜欢猫。
预测:  [结束标志] → 停

一次只吐一个 token,吐完拼回去再算下一个。这就是为什么输出像"挤牙膏",也是为什么它能保持前后语气一致。

四、全链路一张图

【训练时】
海量文本 → 分词 → 向量化(+位置) → Transformer多层(注意力+FFN)
        → 每个位置输出"下一个词"的概率分布
        → 与真实下一个词对比 → 算损失
        → 反向传播求每个参数的梯度 → 梯度下降微调参数
        → 反复几十万步 → 参数收敛

【推理时】(你的提问)
"猫在屋顶" → 分词 → 向量化(+位置) → Transformer多层(参数冻结)
        → 最后一个位置向量 → 线性层打分 → softmax成概率
        → 采样选一个词 → 拼回输入 → 再算 → 循环直到[结束]
        → 输出完整回答

核心一句话:输入 = 文字变数字;处理 = 数字过 Transformer;输出 = 一次次"猜下一个词"的循环。

评论

可以留下你的想法。评论提交后会进入审核,通过后公开展示。