系列第 1 篇 / 共 5 篇:先建立完整输入输出链路。
一句话总纲:大模型 = 一个巨大的"预测下一个词"的函数。输入是一串数字向量,输出是一个概率分布。
全程只有矩阵乘法、相加、除、softmax 这几种操作,没有别的魔法。
一、输入侧:文字是怎么"进"模型的
大模型不认识文字,只认数字。文字要经过三件事才能进去。
1. Tokenization(分词)——模型的"字母表"
模型背着一张词表(约 5 万~20 万个 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)= 你肚子里的货开会类比,处理"喜欢"这个词时:
结果示例:模型在"喜欢"这里自动学会重点看"不"(55%)和"猫"(26%),这就是"不喜欢猫"语义的起点。
2. 前馈网络 FFN——散会后的消化
向量 → 矩阵乘1 → 激活函数(压掉负数) → 矩阵乘23. 残差连接 + LayerNorm——保证能"深"
4. 层次感
底层:认字、词法 中层:句法、指代 高层:语义、推理像读文章:字母 → 单词 → 句子 → 中心思想。
三、输出侧:文本是怎么"出"来的
1. 变成概率分布
最后取序列末尾 token 的向量 → 线性层(映射到词表大小)→ softmax:
[...向量] → [猫:0.6, 狗:0.1, 吃:0.08, 飞机:0.001, ...] (10万个概率,和为1)2. 采样(决定选哪个)
3. 自回归循环(一段话是"挤"出来的)
输入: 我不喜欢
预测: "猫" → 拼回: 我不喜欢猫
预测: "。" → 拼回: 我不喜欢猫。
预测: [结束标志] → 停一次只吐一个 token,吐完拼回去再算下一个。这就是为什么输出像"挤牙膏",也是为什么它能保持前后语气一致。
四、全链路一张图
【训练时】
海量文本 → 分词 → 向量化(+位置) → Transformer多层(注意力+FFN)
→ 每个位置输出"下一个词"的概率分布
→ 与真实下一个词对比 → 算损失
→ 反向传播求每个参数的梯度 → 梯度下降微调参数
→ 反复几十万步 → 参数收敛
【推理时】(你的提问)
"猫在屋顶" → 分词 → 向量化(+位置) → Transformer多层(参数冻结)
→ 最后一个位置向量 → 线性层打分 → softmax成概率
→ 采样选一个词 → 拼回输入 → 再算 → 循环直到[结束]
→ 输出完整回答核心一句话:输入 = 文字变数字;处理 = 数字过 Transformer;输出 = 一次次"猜下一个词"的循环。
评论
可以留下你的想法。评论提交后会进入审核,通过后公开展示。