大模型原理 · 基石
大语言模型的每一层里都藏着一个结构很简单的网络:乘一个数,加一个数,过一道弯曲的函数,再把结果加起来。这一页从单个神经元讲起,一步步走到通用逼近定理:为什么这样简单的零件,只要数量够多,就能拟合几乎任何曲线。
第一步
一个神经元只做两件事。先做一次线性运算 z = w·x + b:权重 w 决定灵敏度(斜率),偏置 b 决定平移。再把 z 送进一个非线性的激活函数 σ,得到输出 y = σ(z)。
谁是“参数”?只有 w 和 b。它们是可以调的旋钮,训练就是在找它们的值;平时说的“模型权重”,指的就是全部 w 和 b 的集合(严格说 w 叫权重、b 叫偏置)。σ 则是事先选好、写死的公式(sigmoid、tanh、ReLU……),里面没有要学的数,训练时一直不变。下面的滑块里,你调的也只有 w 和 b;切换 σ 相当于换了一种固定零件。
w、b 各自把曲线怎么变、每种激活函数长什么样,见《w、b 和激活函数,在图上长什么样》。
为什么一定要有 σ? 如果去掉激活函数,叠多少层都只是一条直线:w(2)(w(1)x + b(1)) + b(2) = (w(2)w(1))x + (w(2)b(1) + b(2))(右上角数字是层号)。网络能表达的所有“弯曲”,全部来自激活函数。
第二步
把多个神经元并排放就是一个隐藏层。同一个输入 x 同时送进每个神经元,每个神经元各自画出一条被拉伸、平移过的 S 形曲线 hi(x)。从这里开始,参数右上角的 (1)、(2) 表示它属于第几层:第 1 层的权重、偏置记作 wi(1)、bi(1)。
最后再放一个输出神经元,把 h1…h5 当作它的输入。它和第 1 层的神经元做的事一样:每条输入线一个权重,加权求和,再加一个偏置。所以它的参数也叫 w 和 b,只是右上角标 (2):权重 wi(2),偏置 b(2)。唯一的区别是它不套激活函数,直接输出加权和。
有的教材把第 2 层的 w(2)、b(2) 另起名字叫 v、c,指的是同一样东西。
想看这个输出神经元是怎么一步步“长”出来的,以及为什么它的权重 w(2) 非有不可,见《多层神经网络是怎么来的》。
第三步 · 核心
答案是可以,而且证明的思路非常直观。只需要三个观察:
w 很大时,σ(w(x − t)) 在 t 处几乎垂直跳起。t 由偏置决定:b = −w·t。
σ(w(x − t₁)) − σ(w(x − t₂)) 只在 t₁ 到 t₂ 之间为 1,其余地方为 0。
每个凸起乘以目标函数在这一段的值,加起来就是一条贴着目标走的阶梯。
下面按这个方法直接计算出每个神经元的参数,不做任何训练。增加神经元数量 N,看阶梯怎样越来越细。浅红色区域是误差。选“手绘”后可以直接在图上拖动,改画目标曲线。
手绘模式:在图上按住拖动来改画橙色曲线。
定理 · Cybenko 1989,Hornik 1991,Leshno 等 1993
设激活函数 σ 连续且不是多项式。对于有界闭集 K ⊂ ℝn 上的任意连续函数 f,以及任意小的误差 ε > 0,都存在一个宽度 N 和一组参数,使单隐藏层网络
上面的实验台就是一维情形下的构造证明:想要更小的 ε,就切更多段、用更多神经元。
它只保证这样的参数存在。我们在实验台里是照着 f 直接算出参数的,可真实任务里 f 是未知的,只有一堆样本。找参数要靠训练,见下一节。
台阶构造在 n 维输入下要把空间切成小格子,需要大约 (1/ε)n 个神经元,维度一高就爆炸,这叫维数灾难。实践中,把网络加深往往比单纯加宽省得多。
定理只管在 K 上贴合 f,不管网络在没见过的数据上表现如何。训练数据外的行为,取决于数据、结构和训练方法。
第四步
真实的网络不会有人替它算参数。它从随机初始值出发,反复做三件事:计算损失 L = 平均( F(xj) − f(xj) )2;用反向传播算出 ∂L/∂wi(1)、∂L/∂bi(1)、∂L/∂wi(2)、∂L/∂b(2);把每个参数往让损失变小的方向挪一小步。这就是梯度下降。被调整的只有这些 w 和 b,激活函数(这里用 tanh)从头到尾不变。
回到大模型
Transformer 的每一层都有一个前馈网络(FFN),公式和第二步里的一模一样,只是输入输出从一个数变成了一个向量:
以 GPT-3 为例:共 96 层,每层的 FFN 把一个 12288 维的向量送进 49152 个隐藏神经元,再映射回 12288 维。每层里 FFN 的参数量约是注意力部分的两倍,也就是说模型大约三分之二的参数都在这些“隐藏层”里。
可以粗略地这样分工理解:注意力负责在词与词之间搬运信息,FFN 负责对每个位置的向量做一次“任意函数”式的加工。通用逼近定理保证了这种零件原则上什么函数都能表达;梯度下降负责在海量文本上找到那组具体的参数。
下一步值得学的是反向传播(梯度到底怎么算出来)和注意力机制(信息怎样在词之间流动)。
学完上面的内容,来检验一下。每题作答后马上看到解析;点「重做练习」清空重来。