大模型不是黑盒:一张图看懂底层算法体系的核心骨架
这两年大模型火了之后,有个现象特别有意思:很多人用得很溜——写文案、做总结、甚至写代码,但一问到“这玩意儿底层的算法体系是什么样的”,基本就是三个字:“不知道。”
不是说非得让每个人都去手推公式,但如果你连大模型底层是由哪些算法模块拼起来的都说不清楚,那你永远只能当一个“调用者”,而不是“理解者”。今天这篇不贴任何代码,纯粹用最直白的逻辑,把大模型底层的算法体系骨架给你捋清楚——就像看一个人,你不用解剖他,但至少要知道他有几根骨头。
第一根骨头:表示学习——怎么让机器“理解”文字
这是所有大模型的地基。机器不认识汉字,只认识数字。所以第一步永远是把“文字”转成“向量”(一串数字)。
早期做法是 One-hot 编码,一个词对应一个编号,简单粗暴但不含任何语义关系。后来 Word2Vec 提出了“分布式表示”的概念——用一串数字的“位置关系”来表达词的含义。比如“国王”和“女王”的向量距离很近,方向指向性别差异,这就是词向量的“语义空间”。
到了大模型时代,这个思路被放大到了极致。现在的嵌入层(Embedding Layer)把每个 token 映射成一个高维向量(一般是 768 维到 4096 维),这些向量不仅携带词义,还通过预训练过程把“语法规则”、“常识知识”都编码在了位置关系里。你喂给模型的不是文字,是一个高维空间里的坐标点。
第二根骨头:注意力机制——怎么让机器“抓重点”
表示学习解决了“怎么读”的问题,注意力机制解决的是“读什么”的问题。
注意力机制的核心逻辑其实就是一个词:相似度匹配。你有 Q(查询)、K(键)、V(值)三个矩阵。Q 去和所有 K 算“像不像”(点积),越像的就给越高的权重,然后用这个权重去加权求和 V,得到最终的输出。
白话版就是:你读一段话时,眼睛不会平均分配注意力,而是聚焦在关键词上。模型也一样——算 Q 和 K 的匹配度,实际上就是“判断当前这个词和句子里的哪个词最有关系”。
更关键的是 Multi-Head(多头注意力) ,相当于同时用多组 Q/K/V 去算不同角度的“相关性”。有的头负责捕捉“主谓关系”,有的头负责捕捉“指代关系”,有的头负责捕捉“修饰关系”。多头机制让模型能够并行地关注不同类型的信息,这是 Transformer 表达力远超 RNN/LSTM 的根本原因。
第三根骨头:位置编码——怎么让机器“看懂顺序”
RNN 靠循环天然带有顺序信息,但 Transformer 是并行的——所有 token 同时输入,它不知道谁在前谁在后。为了解决这个问题,必须在输入向量里额外加一份“位置信息”。
原版 Transformer 用的是 正弦/余弦函数生成的位置编码,把位置的绝对值和维度索引组合起来,形成一组固定的编码向量加到每个 token 的嵌入上。这种编码的优势是不需要额外参数、且能泛化到训练时没见过的长度。
后来有了更复杂的相对位置编码(如 RoPE、ALiBi),核心思路是让模型关注“两个 token 之间的距离”,而不是“token 在句子里的绝对坐标”。位置编码的演进史,本质上就是“怎么让模型更自然地把顺序信息吸收进去”的探索史。
第四根骨头:前馈网络——怎么让机器“做变换”
注意力机制做的是“关联和聚合”,但模型还需要一个模块来做“变换和映射”——这就是前馈网络(Feed-Forward Network, FFN)。
FFN 在 Transformer 里是每个位置独立过的一个两层全连接网络,中间带一个 ReLU(或 GELU)激活函数。从信息论的角度看,注意力负责从全局找信息,FFN 负责把找到的信息做非线性变换,映射到更丰富的表征空间。
有个有意思的发现是:Transformer 里 FFN 的参数量占了总参数的 2/3 左右,但很多模型压缩工作都在剪它。为什么?因为 FFN 存在大量“知识记忆”——它存储了大量事实性知识,但也存在大量冗余。这也是 MoE(混合专家模型)的出发点:用多组 FFN 分而治之,每次只激活其中一部分,用更少的计算跑更多的参数。
第五根骨头:归一化与残差——怎么让机器“稳定地深下去”
深度网络的噩梦是“梯度消失”或“梯度爆炸”——信号传不了几层就稀碎了。为了让 Transformer 能堆到几十上百层,必须有两个组件保驾护航:
残差连接(Residual Connection) :每层的输出 = 该层变换 + 原始输入,让梯度有一条“高速公路”直接传回底层,保证深层训练不会退化。
层归一化(Layer Normalization) :把每层输入的分布拉回均值为 0、方差为 1 的标准状态,防止各层输入分布剧烈变化导致训练不稳定。
这两个看似“小工具”的设计,是 Transformer 能扩展到千亿参数的关键。没有它们,模型在几十层就崩了,更别提现在的上百层堆叠。
第六根骨头:生成策略——怎么让机器“决定说什么”
模型训练好后,最后一层输出的是每个 token 的概率分布,但怎么从这个分布里挑出最终输出的词?这就是生成策略在管的事。
贪心解码:每次都挑概率最高的那个词,快但容易陷入平庸。束搜索(Beam Search):保留 Top-K 条候选序列,综合评估后再选最优,在翻译、摘要等确定性任务中效果更好。采样策略:让模型从概率分布里随机抽样,配合温度参数(Temperature)控制“随机程度”——温度越低越确定,温度越高越天马行空。
另外还有 Top-K 采样(只从概率最高的 K 个词里抽)和 Top-p(核采样)(从累积概率达到 p 的最小集合里抽),本质都是在“多样性”和“质量”之间找平衡。
最容易被忽视的骨头:数据流与工程底座
最后必须提一个容易被忽视但极其重要的底层支撑:整个算法体系是运行在分布式计算引擎上的。
模型参数存在哪里?怎么在几百张 GPU 卡之间切分?前向传播和反向传播怎么流水线化?怎么在训练中途 checkpoint 存盘?这些属于“系统架构”层面的设计,但直接决定了算法能否真正跑起来。以 Transformer 为核心的模型结构,天然适配 GPU 的并行计算模式——注意力矩阵乘法可以充分压榨 Tensor Core,这也是为什么大模型选择了这套架构而不是别的。
说在最后
如果把大模型比作一栋摩天大楼,以上六根“骨头”就是它的承重结构:表示学习是地基,注意力机制是框架,位置编码是楼梯,前馈网络是房间,归一化与残差是防震设计,生成策略是门窗怎么开。
你不必成为建筑师才能住进这栋楼,但如果你对这栋楼的骨架一无所知,一旦它摇晃(模型出幻觉),你只会慌张,不知道去哪找承重墙。
先读懂骨架,再谈精装。 这是理解大模型最快、也是最扎实的路。
暂无评论