本文是《LLM 时代的经典机器学习:只讲它在哪里重现》系列的第 2 篇(共六篇)。上一篇:什么是学习——划分、泛化、过拟合与偏差-方差;下一篇:分类器一家——从朴素贝叶斯到梯度提升

两个最简单的模型——线性回归(预测一个数)与逻辑回归(预测一个概率)——是后面一切的原型。每一个神经网络的最后一层都是它们之一:前面所有层在做特征提取,最后一层是一个线性回归或逻辑回归。奖励模型也不例外:一个 8B 的 LLM 提特征,上面接一个 \(4096 \to 1\) 的线性头,Bradley-Terry 的 loss 就是逻辑回归的 loss 作用在两个回答的分差上。看清这一点,奖励模型的一切性质——需要多少数据、怎么过拟合、准确率上限在哪——都可以用逻辑回归的语言想。

全篇的核心问题是:

奖励模型和逻辑回归是什么关系?为什么它的准确率到 80% 就上不去了?

一、总览

1. 两个模型一条线

线性回归    ŷ = wᵀx + b            loss = (ŷ − y)²           闭式解 (XᵀX)⁻¹Xᵀy,或梯度下降
   + L2 正则  →  Ridge(= weight decay)      + L1 正则  →  Lasso(稀疏)
逻辑回归    p = σ(wᵀx + b)         loss = −[y log p + (1−y) log(1−p)]   交叉熵,无闭式解,梯度下降
奖励模型    P(A ≻ B) = σ(r(A) − r(B)) = σ(wᵀ(x_A − x_B))     逻辑回归作用在特征差上、无偏置

2. 本文的章节安排

主题 内容
线性回归 模型、最小二乘、闭式解与梯度下降得到同一个答案
Ridge 与 Lasso 加正则项;\(L_2\) 压小、\(L_1\) 压到零;Ridge 就是 weight decay
逻辑回归 sigmoid、交叉熵、决策边界;它是每个分类头的原型
奖励模型 = 逻辑回归 Bradley-Terry 的结构;用 3000 个偏好对拟合一个;准确率上限
其他几个名字 朴素贝叶斯、感知机、SVM 的一句话定位
自测 五道题
本文小结  

配套脚本:02_linear_and_logistic_regression.py

二、线性回归

1. 模型

输入 \(x \in \mathbb{R}^d\)(\(d\) 个特征),预测一个实数:

\[\hat y = w^T x + b = \sum_{j=1}^{d} w_j x_j + b\]

\(w\) 是权重(每个特征一个),\(b\) 是偏置。”线性”指 \(\hat y\) 是 \(x\) 的线性函数。把 \(n\) 个样本摞成矩阵 \(X \in \mathbb{R}^{n \times d}\)(L1 第一篇的形状),全部预测是 \(\hat y = Xw + b\)——一次矩阵乘法。

2. 最小二乘

用什么标准选 \(w\)?最小二乘:让预测与真实值的平方误差之和最小(L0 第八篇第五章):

\[\min_{w, b} \sum_i (w^T x_i + b - y_i)^2\]

它有闭式解:把 \(b\) 并进 \(w\)(给 \(X\) 加一列全 1),对 \(w\) 求导令为零,得到 \(w = (X^T X)^{-1} X^T y\)。也可以用 L0 第七篇的梯度下降迭代。脚本两种都做了:

真实系数        [24.66 59.64 56.82]
闭式解          [24.93 59.98 57.08]  (偏置 -0.14)
梯度下降 2000 步 [24.93 59.98 57.08]  (偏置 -0.14)   两者之差 3.6e-14
sklearn         [24.93 59.98 57.08]

闭式解与梯度下降差 \(10^{-14}\)——同一个最优解。与真实系数差一点是噪声(200 个样本、噪声标准差 5)。深度学习没有闭式解,只能梯度下降;线性回归是唯一一个能把两种方法放在一起对答案的地方,值得亲手做一次。

3. 为什么是平方

平方误差对应 L0 第五篇的最大似然:假设 \(y = w^T x + \varepsilon\)、噪声 \(\varepsilon\) 是高斯的,则 \(-\log p(y \mid x)\) 正比于 \((w^T x - y)^2\)——最小二乘就是高斯噪声假设下的 MLE。换成拉普拉斯噪声就得到绝对值误差。

三、Ridge 与 Lasso

1. 加正则项

上一篇说正则化是把模型拉向简单解。给最小二乘加一项:

\[\text{Ridge:}\ \min_w \sum_i (w^T x_i - y_i)^2 + \alpha \lVert w \rVert_2^2 \qquad \text{Lasso:}\ \min_w \sum_i (w^T x_i - y_i)^2 + \alpha \lVert w \rVert_1\]

\(\alpha\) 控制强度。Ridge 用 \(L_2\) 范数、Lasso 用 \(L_1\)(L0 第二篇)。

2. 压小 vs 压到零

50 个特征里只有 5 个真的有用,100 个样本:

无正则         恰好为 0 的系数  0/50   |系数| 均值 4.03   最大 67.34
Ridge α=10     恰好为 0 的系数  0/50   |系数| 均值 3.74   最大 56.75
Lasso α=1      恰好为 0 的系数 36/50   |系数| 均值 2.84   最大 65.66
Lasso α=5      恰好为 0 的系数 45/50   |系数| 均值 2.31   最大 61.44
  • 无正则:45 个没用的特征也得到了非零系数(均值 4)——模型在用噪声特征拟合噪声,这是过拟合的样子;
  • Ridge:所有系数一起压小,但没有一个恰好为零
  • Lasso:把 36–45 个没用的特征压到恰好为零,只留下真正有用的几个——稀疏。\(\alpha = 5\) 时 45/50 为零,恰好对应 5 个有用特征。

原因在 L0 第二篇讲过:\(L_1\) 的惩罚在零点附近不变小,一直有动力把系数推到零并停在零。Lasso 因此是一种特征选择

3. Ridge 就是 weight decay

对 Ridge 的正则项求导得 \(2\alpha w\),梯度下降时每步把 \(w\) 缩小一点——正是 L3 第三篇的 weight decay。LLM 训练里的 weight_decay=0.1 是 Ridge 在几十亿参数上的形态(AdamW 里它与 \(L_2\) 正则有一点微妙的区别,L3 讲)。LLM 几乎不用 Lasso:稀疏性对稠密的 Transformer 权重没有直接用处,它的用武之地是特征工程与剪枝。

四、逻辑回归

1. 从数到概率

分类任务的 \(y\) 是 0 或 1,线性回归的 \(w^T x + b\) 是任意实数,不是概率。逻辑回归把它过一个 sigmoid(L0 第六篇的 \(\sigma\)):

\[P(y = 1 \mid x) = \sigma(w^T x + b) = \frac{1}{1 + e^{-(w^T x + b)}}\]

\(w^T x + b > 0\) 时概率大于 0.5、预测正类;等于 0 的那条线(超平面)是决策边界——逻辑回归的边界是线性的。多类时把 sigmoid 换成 softmax(L0 第五篇),叫 softmax 回归,形式与语言模型的输出层完全一样。

2. 交叉熵

训练目标是 L0 第五篇的模板——把观察到的标签的概率放进 \(-\log\):

\[\mathcal{L} = -\big[\, y \log p + (1 - y) \log (1 - p) \,\big]\]

\(y = 1\) 时是 \(-\log p\)(希望 \(p\) 大),\(y = 0\) 时是 \(-\log(1 - p)\)(希望 \(p\) 小)。它没有闭式解,用梯度下降;梯度是 L0 第七篇的 \((p - y)\,x\)——”预测概率减真实标签,乘特征”。

3. 一个真实数据集

乳腺癌数据:569 个肿瘤、30 个数值特征(半径、纹理、凹点数……)、良性 / 恶性:

398 训练 / 171 测试;准确率 0.959;测试集每样本交叉熵 0.085
|w| 最大的三个特征: ['radius error (-1.08)', 'worst texture (-1.07)', 'mean concave points (-1.01)']
一个样本: 线性部分 wᵀx+b = -13.15 → σ(·) = 0.000 → 预测 恶性,真实 恶性

30 个特征的线性组合过一个 sigmoid,准确率 96%。系数的符号与大小可读:凹点越多、纹理越差,越可能恶性(负号对应”恶性 = 0”的编码)。特征要先标准化(减均值除标准差),否则量纲大的特征主导。

4. 每个分类头的原型

任何神经网络分类器 = 前面所有层做特征提取 \(x = f_\theta(\text{输入})\) + 最后一层 \(\sigma(w^T x + b)\)。L1 第二篇那个小 Transformer 最后的 nn.Linear(d, vocab) + softmax 就是一个 128 类的 softmax 回归,特征是前面 4 层算出的 128 维向量。深度学习改变的是特征从哪来(学出来而不是手工设计),没有改变最后那一步。

五、奖励模型 = 逻辑回归

1. 结构

奖励模型要从”标注员觉得回答 A 比回答 B 好”学出一个标量分 \(r(x, y)\)。L0 第六篇的 Bradley-Terry:

\[P(A \succ B) = \sigma\big(r(A) - r(B)\big), \qquad \mathcal{L} = -\log \sigma\big(r(A) - r(B)\big)\]

如果 \(r\) 是特征的线性函数——\(r(A) = w^T x_A\),\(x_A\) 是 LLM 最后一层对回答 A 的 hidden state(Llama-3-8B 是 4096 维)——那么

\[r(A) - r(B) = w^T (x_A - x_B)\]

代回去:\(P(A \succ B) = \sigma\big(w^T (x_A - x_B)\big)\)。这就是一个逻辑回归,输入是两个回答的特征差 \(x_A - x_B\),标签是”A 是否更好”,没有偏置项(因为 \(\sigma(r_A - r_B) + \sigma(r_B - r_A) = 1\),交换 A、B 标签反转,偏置必须为零)。

2. 拟合一个

脚本造了 300 个”回答”(各一个 16 维特征)、一个真实的”品味”向量 \(w^*\),标注员按 Bradley-Terry 概率 \(\sigma(w^{*T}(x_A - x_B))\) 随机给出偏好(所以标注本身有噪声——两个回答分数接近时标注员像抛硬币),共 3000 对:

Xdiff = feats[i] - feats[j]                                    # 特征取差
clf = LogisticRegression(fit_intercept=False).fit(Xdiff[:ntr], y[:ntr])   # 无偏置的逻辑回归
2993 个偏好对,80% 训练;留出集准确率 0.915(用真实分数判断的上限 0.913——标注本身有噪声)
学到的 w 与真实 w 的相关系数 0.999

3. 准确率上限是标注的一致性

学到的 \(w\) 与真实的 \(w^*\) 相关 0.999——几乎完美——但留出集准确率只有 91.5%,而且用真实分数判断也只有 91.3%。差的那 8.5% 不是模型的错,是标注的噪声:分数接近的两个回答,标注员自己也只是在抛硬币。

真实的奖励模型也是这样:留出集准确率典型值 65%–80%,看起来不高,但标注员之间的一致率本身只有 70%–80%。奖励模型的准确率上限是标注的一致性——超过它就是在拟合噪声(上一篇的过拟合)。所以提升奖励模型的路不是”训得更久”,而是更一致的标注、更清晰的标注指南、以及在分数接近的对上不强求。

4. 两个用处

看清”奖励模型 = 逻辑回归作用在分差上”有两个用处:一,它的一切性质——需要多少数据、怎么过拟合(上一篇)、怎么评估(第六篇:准确率、校准)——都可以用逻辑回归的语言想;二,”pairwise loss”不神秘,它就是把二分类的 \(w^T x\) 换成了 \(w^T(x_A - x_B)\)。L5 后训练系列第二篇讲真实奖励模型的训练细节;DPO(L0 第六篇)则是把这个逻辑回归里的 \(r\) 换成了策略的对数比。

六、其他几个名字

几个经典分类器,知道它们是什么、各自的假设即可,下一篇放在一起比:

  • 朴素贝叶斯:用贝叶斯公式 \(p(\text{类} \mid x) \propto p(x \mid \text{类})\,p(\text{类})\),假设特征之间条件独立(\(p(x \mid \text{类}) = \prod_j p(x_j \mid \text{类})\))。假设几乎从不成立但常常够用,文本分类里做垃圾邮件过滤是它的经典应用。
  • 感知机:逻辑回归去掉 sigmoid、只看符号的祖先(1958)。神经网络的”神经元”就是它。
  • SVM:也是线性边界,但选的是间隔最大的那条(离两类最近的点都最远);加核函数能把边界变弯。它的”间隔”思想在对比学习的 margin loss 里有回声,但不需要为此学对偶。

七、自测

  1. 线性回归为什么用平方误差而不是绝对值误差?各对应什么噪声假设?
  2. 100 个样本、1000 个特征,无正则的线性回归会发生什么?Ridge 和 Lasso 各怎么救?
  3. 逻辑回归的决策边界是什么形状?为什么 XOR 问题它解不了?
  4. 奖励模型的逻辑回归为什么不能有偏置项?
  5. 一个奖励模型在留出集上准确率 72%,标注员两两一致率 75%。还值得继续训吗?该做什么?

答案要点:(1)平方 ↔ 高斯噪声的 MLE,绝对值 ↔ 拉普拉斯噪声;平方对大误差更敏感。(2)\(X^T X\) 不可逆 / 无穷多解、严重过拟合;Ridge 让解唯一并压小系数,Lasso 选出少数特征。(3)超平面(线性);XOR 的两类不能用一条直线分开——需要特征变换或多层(L3)。(4)交换 A、B 标签反转,概率必须满足 \(P(A \succ B) + P(B \succ A) = 1\),只有无偏置时成立。(5)已接近上限(75%),继续训只会拟合噪声;该改进标注一致性、清理分歧大的对、或按类别看哪里差。

八、本文小结

  • 线性回归 \(\hat y = w^T x + b\),最小二乘有闭式解 \((X^T X)^{-1} X^T y\),与梯度下降差 \(10^{-14}\)——深度学习里唯一能对答案的地方;平方误差是高斯噪声下的 MLE。
  • Ridge 加 \(L_2\) 把所有系数压小(= weight decay);Lasso 加 \(L_1\) 把无用特征压到恰好为零(50 个特征 45 个归零)——特征选择;LLM 用前者不用后者。
  • 逻辑回归 \(\sigma(w^T x + b)\) + 交叉熵,梯度 \((p - y)x\);线性决策边界;乳腺癌 30 个特征 96%;它是每一个神经网络分类头的原型——深度学习只改变了特征从哪来。
  • 奖励模型 = 逻辑回归作用在两个回答的特征差上、无偏置:\(P(A \succ B) = \sigma(w^T(x_A - x_B))\)。3000 对拟合出的 \(w\) 与真实相关 0.999,但准确率 91.5% 与标注上限 91.3% 持平——准确率上限是标注的一致性(真实场景 70–80%),超过就是拟合噪声。
  • 朴素贝叶斯(特征独立)、感知机(去掉 sigmoid 的祖先)、SVM(最大间隔):知道假设即可。

下一篇把六个经典分类器放在同一份数据上比一比,然后回答一个数据工程的问题:给 15T token 打质量分,为什么用 fastText 与线性模型而不是 LLM。

本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/linear-and-logistic-regression-the-skeleton-of-reward-models.html)的前提下,欢迎各种形式的转载、翻译或商业引用。


COMMENTS

评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。

×