在阶段二中,我主要解释的是推理过程,即根据输入 token 预测下一个 token,这一篇补充下训练过程,如何修改那么多参数。
前面的过程和推理一样,从 Layer1 到 Layer96 称之为正向传播,推理过程中只要最后一个 token 的向量,在训练过程中会用到整个 token 序列,是并行计算的。
训练的语料来源于互联网,知识经过过滤( html 标签)、去重、清洗(去掉有害内容)等,一起给 LLM 训练。
LLM 预测的下一个 token 和正确的 token 之间误差称之为 Loss,整体的目标就是将 Loss 最小化。
拿到 Loss 后,再通过反向传播,从 Layer96 到 Layer1 逐级修改参数。
Layer96 会根据 Loss 调节自己的参数,Loss 差距是由于自己这层的参数,和 Layer95 的输入共同决定的。
更新参数的公式为:
<math xmlns="http://www.w3.org/1998/Math/MathML"> 新参数 = 旧参数 − ( 学习率 × 梯度 ) \text{新参数} = \text{旧参数} - (\text{学习率} \times \text{梯度}) </math>新参数=旧参数−(学习率×梯度)
梯度 表示正负方向和大小(比如 -1,+100),学习率表示折扣系数,缓解梯度过于陡峭。
Layer96 调节完后会告诉 Layer95 给他的输入 Loss,Layer95 执行同样的操作后给 Layer94,直到整个参数都会全部微调一遍。
经历多轮调整后,整体的 Loss 降到足够低,LLM 涌现出 "智慧",好似能理解语言了。
参数的摆放是黑盒,我们不知道具体参数是怎么设置的,只能通过检测来判断。人类无法拆开 1760 亿个参数依次校验。
校验的方法用线性探针,即一个线性函数,一元二次方程。
比如训练好了一个影评评分 LLM,看结果向量和评分之间是否有线性关系,如果有的话说明训练结果是好的,在这个向量里面已经隐藏了评分的维度,并且可以方便的分析出来。
或者我们想知道在哪一层 Layer 向量融合了感情维度,也是获取这一层的向量结果,和输入 token 对应的情感,看有没有线性关系。