本文是《LLM 时代的经典机器学习:只讲它在哪里重现》系列的第 7 篇(共七篇)。上一篇:评估——从混淆矩阵到 judge 的一致性

六篇正文回答了一个问题:LLM 工作里的哪些问题其实是经典机器学习的老问题,它们的经典解法在 LLM 上还成立吗。第一篇讲什么是学习与泛化,第二篇讲线性回归与逻辑回归并指出奖励模型就是后者,第三篇把六个分类器放在同一份数据上比并算清数据过滤为什么用小模型,第四篇讲聚类与降维,第五篇把 MinHash 与 LSH 的概率算清楚,第六篇讲评估——一切结论是否成立的最后一道关。六篇合起来对应《AI 算法工程师学习地图》的 L2 层,也是总纲那张”重现表”的逐行展开。

本文不讲新内容,做三件事:把六篇压成一张表与六段回顾,把贯穿六篇的几条线拎出来,然后给一套三段式的通关自测——判断与计算、跨篇综合、面试题。各篇末尾的自测检验的是”这一篇读懂了没有”,这里检验的是”六篇能不能连起来用”。第六篇末尾那一节”系列总结”的内容也全部并入本文。

读完这六篇,你应该能回答哪些问题?1 哪些数字与结论必须能脱口而出?2 怎么判断自己是”读过”还是”掌握”了?3

一、总览:系列回答的问题与主线

系列的一句话主张是:看到 LLM 上的一个问题,能叫出它的经典名字——叫出名字,经典解法就在手边。污染是测试集泄漏,reward hacking 是在过拟合的评估器上做优化,judge 的长度偏好是系统误差,过滤器的误杀是精确率与召回率的权衡,”20 个 benchmark 领先 12 个”是多重比较。六篇用同一种方法推进:从概念的定义讲起,用几十行 scikit-learn 跑出一个数字,指出它在 LLM 工作里的形态与失效方式。三条线索交织:概念线(泛化 → 过拟合 → 正则化 → 线性模型 → 分类器 → 聚类 / 降维 → 相似度估计 → 评估指标)、数字线(次数 15 验证误差飙升、Lasso 45/50 系数为零、8B 打分 = 训练算力的 1/3、29 维解释 95%、\(b = 14, r = 8\) 阈值 0.685、500 题配对 \(z = 3.1\))、LLM 线(benchmark 污染 → reward hacking → 奖励模型 → 质量过滤器 → 数据配比 → 万亿 token 去重 → judge 偏差与多重比较)。

回答的问题 一句话结论 必记的数字 / 公式
第一篇:什么是学习 benchmark 涨了 5 个点,怎么知道不是泄漏?奖励模型准确率 80%,为什么 RL 还会钻空子? 测试集只能看一次,参与过决策的数据就不再是测试集;reward hacking = 在一个过拟合的评估器上做优化 30 个点拟合正弦:次数 25 训练 MSE 0.040 低于噪声方差 0.09、验证 0.313;在 20 个测试点上挑最好平均乐观 0.255;误差 = 偏差² + 方差 + 噪声;20 个模型平均把方差 0.060 降到 0.017、偏差不变
第二篇:线性回归与逻辑回归 奖励模型和逻辑回归是什么关系?为什么它的准确率到 80% 就上不去了? 奖励模型 = 逻辑回归作用在两个回答的特征差上、无偏置;准确率上限是标注的一致性 闭式解 \((X^T X)^{-1} X^T y\) 与梯度下降差 \(10^{-14}\);Lasso \(\alpha = 5\) 时 45/50 系数归零,Ridge 0/50;\(P(A \succ B) = \sigma(w^T(x_A - x_B))\);3000 对拟合 91.5% vs 标注上限 91.3%,\(w\) 相关 0.999
第三篇:分类器一家 数据过滤为什么用 fastText 与线性模型而不是 LLM?表格数据为什么是 GBDT 的天下? 不是小模型效果更好,是只有它跑得起——两级做法:大模型标几十万段、小分类器过全部 5000 样本上七个模型 83%–92%,决策树训练 100% 测试 83%;给 15T token 打分:8B 是训练算力的 33.3%、1 亿参数 0.42%、线性模型 0.004%;特征重要性前 6 个占 91%
第四篇:无监督 怎么知道一个语料里有什么主题?4096 维的 embedding 怎么”看”? 聚类是探索不是预测,不需要”正确”;PCA = 中心化数据的 SVD,解释方差比给出有效维度 肘部:\(k\) 从 5 到 6 降 1000、6 到 7 只降 500;两个月牙 K-Means ARI 0.255 vs DBSCAN 1.000;手写数字 64 维里 29 维解释 95%;特征值 = 奇异值² / (n − 1);先 PCA 到 50 维再 UMAP
第五篇:去重 两段文本”相似”到什么程度算重复?MinHash 的阈值怎么定?为什么不用两两比较? MinHash 相等的概率恰好等于 Jaccard;LSH 的 S 曲线中点就是阈值——”Jaccard > 0.7 算重复”是 \(b = 14, r = 8\) 的曲线中点 标准差 \(\sqrt{J(1 - J)/k}\),\(k = 128\) 时 ±0.04、512 字节;\(P = 1 - (1 - s^r)^b\),\(s_{50} = (1 - 0.5^{1/b})^{1/r} = 0.685\);\(r\) 大更严、\(b\) 大更松;2000 段 200 万对 → 267 个候选
第六篇:评估 过滤器”准确率 95%”是什么意思?judge 一致率 80% 够不够?”20 个 benchmark 领先 12 个”算不算? 不平衡时准确率没有信息,看精确率 / 召回率 / AUC;judge 的系统偏差集成消不掉;同一套题永远用配对检验;多个 benchmark 要多重比较校正 召回 ≥ 95% 时阈值 0.40、精确率 0.904;正例 3% 时全判负 95.6%;5 折 0.763 ± 0.022 vs 单次抖 0.078;独立 \(z = 1.38\) vs McNemar \(z = 3.13\);20 个 benchmark 至少一个假显著 61%、领先期望 10 ± 2.2

1. 本文的章节安排

内容
逐篇回顾:核心问题、结论、必记、常见误解
贯穿六篇的五条线:测试集只看一次、偏差-方差与集成、逻辑回归这条骨架、用便宜的近似换掉跑不起的精确、阈值就是权衡
常见误区表
通关自测:A 判断与计算 10 题、B 跨篇综合 5 题、C 面试题 7 题、D 掌握判据
下一步

二、逐篇回顾

1. 第一篇:什么是学习——划分、泛化、过拟合与偏差-方差

核心问题:benchmark 涨了 5 个点,怎么知道不是测试题泄漏?奖励模型的准确率 80%,为什么 RL 还会钻空子?

结论:学习是从有限样本推断没见过的样本,训练误差能算、泛化误差是目标。数据分三份:训练集拟合、验证集选超参数、测试集只看一次——验证集参与了”挑最好”的决策,分数带选择偏差;测试集一旦参与任何决策就变成了验证集。30 个带噪声的点拟合正弦、次数从 1 扫到 25:训练误差单调下降,验证误差先降后升,次数 25 的训练 MSE 0.040 低于噪声方差 0.09(在拟合噪声)、验证 0.313 比直线还差;噪声方差是验证误差的下限。在测试集上直接挑配置,200 次重复平均乐观 0.255——LLM 上的两种形态是污染与过度调参。误差 = 偏差² + 方差 + 噪声:低次偏差大、高次方差大;20 个模型平均,方差降到几十分之一、偏差不变——集成只降方差,self-consistency、judge 平均、model soup 都是集成。正则化是任何把模型拉向简单解的项。奖励模型是 8B 特征提取器加线性头、几万到几十万对数据,容量大、数据少的极端;RL 在它上面优化,专门去找它判断错的地方——reward hacking 就是在一个过拟合的评估器上做优化。

必记

  • 三份数据;测试集只看一次;参与了任何决策的数据都不再是测试集。
  • 次数 1:训练 0.272 / 验证 0.308(欠拟合);次数 3:0.082 / 0.094;次数 25:0.040 / 0.313(过拟合);噪声方差 0.09 是下限。
  • 在 20 个测试点上挑最好的配置,200 次重复平均乐观 0.255,68% 的情况下真实更差。
  • 偏差-方差:次数 1 偏差² 0.158、方差 0.025;次数 9 偏差² 0.001、方差 0.060 → 20 个模型平均后方差 0.017、偏差不变。
  • 污染的检测:13-gram 重叠、困惑度对比、私有测试集与动态 benchmark。
  • reward hacking 的经典解法:更多数据、KL 正则、早停、集成、重新标注。

常见误解:”self-consistency 采样多次投票能修正模型系统性地算错某类题”——集成只降方差(随机错),不降偏差(系统性错)。另一个:”benchmark 在团队调了三个月 prompt 之后涨了 5 个点是真提升”——即使题目没泄漏,反复在它上面选配置已经让它变成验证集,那 0.255 的乐观偏差就是它的缩小版。

2. 第二篇:线性回归与逻辑回归——奖励模型的骨架

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

结论:线性回归 \(\hat y = w^T x + b\) 用最小二乘,闭式解 \((X^T X)^{-1} X^T y\) 与梯度下降 2000 步差 \(3.6 \times 10^{-14}\)——深度学习没有闭式解,这是唯一能把两种方法对答案的地方;平方误差是高斯噪声下的最大似然。Ridge 用 \(L_2\) 把所有系数一起压小但没有一个恰好为零,Lasso 用 \(L_1\) 把无用特征压到恰好为零——50 个特征 5 个有用时 \(\alpha = 5\) 让 45/50 归零;Ridge 的梯度 \(2\alpha w\) 就是 weight decay,LLM 用 Ridge 不用 Lasso。逻辑回归 \(\sigma(w^T x + b)\) 加交叉熵,梯度 \((p - y)x\),边界是超平面;任何神经网络分类器都是”前面所有层提特征 + 最后一层逻辑回归”,深度学习只改变了特征从哪来。奖励模型的 Bradley-Terry 结构 \(P(A \succ B) = \sigma(r(A) - r(B))\),\(r\) 线性时 \(r(A) - r(B) = w^T(x_A - x_B)\)——输入为特征差、无偏置的逻辑回归;无偏置是因为交换 A、B 标签反转,两个概率必须和为 1。合成实验 3000 对:\(w\) 与真实相关 0.999,留出集 91.5%,用真实分数判断也只有 91.3%——差的 8.5% 是标注噪声。真实奖励模型 65%–80%、标注员一致率 70%–80%:准确率上限是标注的一致性,超过它就是拟合噪声。

必记

  • 闭式解 \((X^T X)^{-1} X^T y\) 与梯度下降差 \(10^{-14}\);平方误差 ↔ 高斯噪声 MLE,绝对值 ↔ 拉普拉斯。
  • Ridge \(\alpha = 10\):0/50 恰好为零;Lasso \(\alpha = 1\):36/50;\(\alpha = 5\):45/50。Ridge = weight decay。
  • 逻辑回归梯度 \((p - y)x\);乳腺癌 569 条、30 特征、准确率 0.959。
  • 奖励模型:\(P(A \succ B) = \sigma(w^T(x_A - x_B))\),loss \(-\log\sigma(r_A - r_B)\),无偏置;Llama-3-8B 的特征是 4096 维。
  • 91.5% vs 上限 91.3%,\(w\) 相关 0.999;真实场景准确率 65%–80%、标注一致 70%–80%。

常见误解:”奖励模型准确率 78% 太低,应该训得更久”——已接近标注一致率的上限,继续训只是拟合噪声,该改进的是标注一致性与标注指南。另一个:”pairwise loss 是一种特殊的 loss”——它就是把二分类的 \(w^T x\) 换成了 \(w^T(x_A - x_B)\),需要多少数据、怎么过拟合、怎么评估都可以用逻辑回归的语言想。

3. 第三篇:分类器一家——从朴素贝叶斯到梯度提升

核心问题:预训练数据过滤为什么用 fastText 与线性模型而不是 LLM?表格数据为什么至今是 GBDT 的天下?

结论:5000 样本、20 个特征(8 个有用、4 个冗余、5% 标签翻转)的表格数据上:逻辑回归 85%(线性边界,最快最稳,是 baseline)、朴素贝叶斯 84%(冗余特征违反条件独立假设)、KNN 89%(不训练、找 15 个邻居投票)、SVM + RBF 92%(核把边界变弯)、决策树 83%(训练 100%——把翻转的标签也背下来,过拟合的教科书样子)、随机森林 92%(300 棵树 bagging 压掉方差)、梯度提升 91%(顺序地逐棵拟合残差,表格数据的默认最强)。教训不是”梯度提升最好”,而是没有一个模型在所有数据上最好。树模型顺手给出特征重要性——乳腺癌 30 个特征里 6 个占 91%,是调过滤器时最常看的表。KNN 在 LLM 上以检索的形式无处不在(RAG、few-shot 示例选择、去重的候选召回、污染检测),近似最近邻把 \(O(n)\) 降到 \(O(\log n)\)。算力账:一个 token 过 \(N\) 参数模型约 \(2N\) FLOP,训练 8B 模型 \(6ND = 7.2 \times 10^{23}\);用 8B 给 15T token 打分是 \(2.4 \times 10^{23}\)、占 33.3%,1B 4.2%,1 亿参数 0.42%,线性模型 0.004%。所以是两级做法:FineWeb-Edu 用 Llama-3-70B 给 45 万段打 0–5 的教育分、训小 embedding 模型加线性头过全部,DCLM 用 fastText。小分类器带回来的老问题:分布偏移、对少数语体的系统性误杀、阈值。

必记

  • 七个模型:逻辑回归 0.853、朴素贝叶斯 0.837、KNN 0.889、SVM 0.918、决策树 1.000 / 0.826、随机森林 1.000 / 0.919、梯度提升 0.975 / 0.913。
  • 梯度提升调三个超参数:树的数量、深度(3–8)、学习率。
  • 特征重要性:乳腺癌 worst perimeter 0.506,前 6 个占 91%。
  • 打分算力(相对训练 8B / 15T 的 \(7.2 \times 10^{23}\)):8B 33.3%、1B 4.2%、1 亿参数 0.42%、约 1M 的线性模型 0.004%。
  • 两级做法:FineWeb-Edu 45 万段、Llama-3-70B 打分、切 3 分留约 1.3T token;DCLM 用 fastText。
  • 词袋 + 线性分类器训练一秒、80–90%——离 LLM 的差距远小于算力上的差距。

常见误解:”用 LLM 自己判断数据质量最准,所以应该用 LLM 打分”——8B 打分要花训练算力的三分之一,不是小模型效果更好,是只有它跑得起。另一个:”表格数据也该上神经网络”——GBDT 不需要标准化、天然处理缺失值与类别特征、对无关特征鲁棒、小数据不易过拟合,深度学习在表格数据上没有稳定优势。

4. 第四篇:无监督——K-Means、PCA 与 embedding 聚类

核心问题:怎么知道一个语料里有什么主题?4096 维的 embedding 怎么”看”?

结论:K-Means 反复”分配 → 更新中心”,每步不会让簇内平方和变大所以一定收敛,但收敛到局部最优,n_init 多跑几次。\(k\) 用两个判据:肘部法看簇内平方和下降速度突变的位置(真实 6 簇的数据上,5 到 6 降了 1000、6 到 7 只降 500),轮廓系数偏好粗的划分(这里 \(k = 2\) 最高 0.665),两者不一致时按业务定。K-Means 假设簇球形等大,两个月牙上 ARI 只有 0.255;DBSCAN 按密度聚、不用指定 \(k\)、能标离群点,ARI 1.000,代价是 \(\varepsilon\) 难选、大数据慢。聚类在数据工程里是探索工具:文本 → embedding → K-Means \(k = 50\) 或 200 → 每簇抽 5–10 条人读,簇的大小就是主题占比;用法是按簇配比、找垃圾簇、SFT 数据保多样性——三个用法都不需要聚类”正确”。PCA 找方差最大的正交方向,等于协方差矩阵的特征分解,也等于中心化数据的 SVD(特征值 = 奇异值² / (n − 1),两种算法数字相同)。手写数字 64 维里 29 维解释 95% 的方差:数据基本上是低维的,LoRA 对 \(\Delta W\) 低秩的假设是同一种直觉。可视化:PCA 前两维只解释 28.5%,只能分开差别最大的类(0 和 1),3 / 5 / 8 混在一起;t-SNE / UMAP 非线性、不可逆、只保局部,标准做法先 PCA 到 50 维再 UMAP。embedding 空间的各向异性——前几个主成分占绝大部分方差、任意两段文本余弦都在 0.7 以上——让相似度分数失去含义,减均值或白化后再比。

必记

  • 肘部:\(k = 5\) 簇内平方和 8274、\(k = 6\) 7281、\(k = 7\) 6773;\(k = 6\) 时 ARI 0.761;轮廓系数在 \(k = 2\) 最高 0.665。
  • 两个月牙:K-Means ARI 0.255 vs DBSCAN 1.000(2 簇 + 0 个噪声点)。
  • 语料分析流程:embedding → K-Means \(k = 50\) 或 200 → 每簇抽 5–10 条。
  • 手写数字(1797 张 8×8,64 维):前 1 个主成分 14.9%、前 2 个 28.5%、前 10 个 73.8%、前 20 个 89.4%、29 维解释 95%。
  • 协方差特征值 = 奇异值² / (n − 1):前 3 个 179、163.7、141.8 两种算法一致。
  • 先 PCA 到 50 维再 UMAP 到 2 维;各向异性时所有对余弦 > 0.7。

常见误解:”聚类要选对 \(k\)、切对边界才有用”——数据工程里聚类的目的是让人能看,\(k\) 取 50 还是 200 对”看看有什么”影响不大。另一个:”余弦相似度 0.85 说明两段文本很像”——如果这个模型所有向量对余弦都在 0.8 以上,0.85 几乎没有信息,先做一次 PCA 看解释方差。

5. 第五篇:去重——MinHash 与 LSH 的概率

核心问题:两段文本”相似”到什么程度算重复?MinHash 的阈值怎么定?为什么不用两两比较?

结论:先把文本切成 n-gram 集合(\(n\) 取 5 左右),用 Jaccard \(J = \lvert A \cap B \rvert / \lvert A \cup B \rvert\) 定义相似——100 个词改掉 5 个,词级 5-gram 约 25 个受影响,\(J \approx 0.6\)。MinHash 用随机 hash 取集合的最小值,两个集合最小值相等的概率恰好等于 Jaccard,证明只有一行:并集里 hash 最小的元素落在交集里的概率就是交的大小除以并的大小。\(k\) 个签名相等的比例是 \(J\) 的无偏估计,标准差 \(\sqrt{J(1 - J)/k}\):\(k = 128\) 时 ±0.04——用 512 字节代替整个集合。LSH 把 \(k\) 个签名分 \(b\) 组每组 \(r\) 个,任一组全等即候选,候选概率 \(P = 1 - (1 - s^r)^b\) 是一条 S 曲线,过 50% 的位置 \(s_{50} = (1 - 0.5^{1/b})^{1/r}\) 就是这套参数的阈值。FineWeb 用 \(b = 14, r = 8\):\(s = 0.5\) 时候选概率 5%、0.7 时 56%、0.8 时 92%,曲线在 0.685 过 50%——”Jaccard 大于约 0.7 视为重复”不是拍脑袋,是这组 \((b, r)\) 的曲线中点;\(r\) 大更陡更严(\(b = 8, r = 16\) 阈值 0.856),\(b\) 大更松(\(b = 28, r = 4\) 阈值 0.395)。2000 段文本上跑一遍:两两比较 1,999,000 对,LSH 只产生 267 个候选(万分之一);Jaccard ≥ 0.7 的 254 对找到 226(89%),漏掉的都在阈值附近;候选里 10 对是碰巧相似的随机对——LSH 负责不漏,精确比较负责不错杀。工程上精确去重先做、n-gram 粒度按语言定、去重是控制重复的分布而不是消灭一切重复。

必记

  • \(J = \lvert A \cap B \rvert / \lvert A \cup B \rvert\);100 词改 5 词 \(J \approx (100 - 25)/(100 + 25) = 0.6\)。
  • \(P(\min h(A) = \min h(B)) = J\);标准差 \(\sqrt{J(1 - J)/k}\):\(k = 128\) ±0.04、\(k = 1024\) ±0.015;实际用 128–256 个。
  • \(P(\text{候选}) = 1 - (1 - s^r)^b\);\(s_{50} = (1 - 0.5^{1/b})^{1/r}\)。
  • \(b = 14, r = 8\)(112 个 hash):\(s = 0.5 \to 0.053\)、\(0.6 \to 0.211\)、\(0.7 \to 0.565\)、\(0.8 \to 0.924\)、\(0.9 \to 0.9996\);阈值 0.685。
  • \(b = 8, r = 16\) 阈值 0.856;\(b = 28, r = 4\) 阈值 0.395;\(r\) 大更严、\(b\) 大更松。
  • 2000 段:200 万对 → 267 候选;254 对里找到 226;\(10^9\) 段两两比较是 \(5 \times 10^{17}\) 对。

常见误解:”我们用 MinHash 去掉了所有 Jaccard > 0.8 的重复”——LSH 是概率算法,\(b = 14, r = 8\) 下 \(J = 0.8\) 的对有 7.7% 被漏掉,”所有”不成立。另一个:”去重越彻底越好”——去重太狠会把高质量教科书被大量引用这种合理的重复也去掉,实践里去重后再对高质量来源上采样补回来。

6. 第六篇:评估——从混淆矩阵到 judge 的一致性

核心问题:过滤器”准确率 95%”是什么意思?judge 与人类”一致率 80%”够不够?”20 个 benchmark 领先 12 个”算不算?

结论:混淆矩阵四个数派生四个指标:精确率问”我说是的有多准”、召回率问”真的是的我抓了多少”,安全过滤要召回、推荐要精确率、数据质量过滤在两者之间;AUC 与阈值无关,是”随机取一正一负、正例分数更高的概率”——比较两个分类器本身用 AUC,决定阈值用精确率 / 召回率,两件事不混。同一个逻辑回归阈值从 0.1 到 0.9 就是不同的过滤器:要求召回 ≥ 95% 时阈值放到 0.40、精确率掉到 0.904;FineWeb-Edu 切 3 分还是 2 分是同一种取舍。正例 3% 时全判负准确率 95.6%,逻辑回归阈值 0.5 准确率 95.9% 但召回只有 0.105——不平衡时准确率几乎没有信息,看 P / R / AUC、挪阈值、加权重采样、按类别分开报。校准问”说 80% 的时候是不是十次八次对”,用可靠性图与 ECE 度量;逻辑回归天然校准好(loss 就是对数似然),树模型与 SVM 排序对但概率不准,要 Platt scaling 或 isotonic regression;AUC 高不等于校准好;RLHF 之后模型校准变差。奖励模型的评估是准确率(上限是标注一致性),judge 的评估是一致性或 Cohen’s kappa,与人和人之间的一致率比;位置、长度、自我偏好是系统偏差,多个 judge 平均消不掉,只能设计消掉。300 条数据上单次划分抖 0.078,5 折给 0.763 ± 0.022。500 题上差 4.2 个点:独立比较 \(z = 1.38\) 不显著,配对(McNemar)只看 45 道分歧题 33 : 12,\(z = 3.13\) 显著——同一套题永远用配对。20 个 benchmark 上两个完全相同的模型至少一个”显著”的概率 61%,”领先 12 个”在随机期望 10 ± 2.2 的一个标准差以内;修正用 Bonferroni、看平均分的置信区间、或预先指定主 benchmark。

必记

  • 精确率 \(TP/(TP + FP)\)、召回率 \(TP/(TP + FN)\);误杀率 = 1 − 精确率;AUC 取值 [0.5, 1]、与阈值无关。
  • 阈值表:0.1 时 P 0.765 / R 0.985;0.5 时 0.920 / 0.938(F1 0.929);0.9 时 0.980 / 0.721;召回 ≥ 95% → 阈值 0.40、精确率 0.904;AUC 0.973。
  • 不平衡:2400 条、正例 105;全判负 0.956;阈值 0.5 准确率 0.959、召回 0.105(漏 94/105)、AUC 0.784;阈值 0.1 召回 0.533、精确率 0.253。
  • 校准:逻辑回归 ECE 0.026、梯度提升 0.014、SVM 0.016;AUC 只看排序。
  • 5 次单次划分 [0.722, 0.722, 0.756, 0.722, 0.678],抖 0.078;5 折 0.763 ± 0.022。
  • 配对:\(z = (33 - 12)/\sqrt{33 + 12} = 3.13\) vs 独立 \(z = 1.38\)(差值标准误 0.030);20 个 benchmark:平均 0.92 个假显著、至少一个 61%、领先期望 10 ± 2.2。

常见误解:”两个质量分类器 AUC 0.90 与 0.93,但前者在阈值 0.5 上 F1 更高,所以前者好”——AUC 高的模型本身更好,F1 的差别是阈值选择的问题。另一个:”judge 与人一致率 82%、人与人 80%,judge 已经够好”——随机一致已经到顶,但系统偏差(位置、长度、自我偏好)不在这个数字里,要分别检查。

三、贯穿全系列的几条线

1. 测试集只能看一次:从 0.255 到 61%

第一篇立下的规矩——参与过任何决策的数据都不再是测试集——在后面每一篇里换一个规模重现。第一篇的原型是 20 个测试点上挑最好的多项式次数,200 次重复平均乐观 0.255;LLM 上它叫污染与过度调参。第二篇的奖励模型把它推到极端:留出集准确率 91.5% 已经等于标注上限 91.3%,再往上就是拟合噪声,”训得更久”只是让训练集分数继续涨、留出集开始降——第一篇那条先降后升的验证曲线。

第三篇把同一件事搬到数据过滤:训练标签是几十万段样本上打的,这些样本不代表全部语料就是分布偏移,分类器对没见过的代码与中文的判断接近随机;第六篇则给出全部的量化工具。300 条数据上单次划分抖 0.078、5 折稳到 ±0.022,是”一次划分的分数有多不可信”的数字;500 题上独立比较 \(z = 1.38\) 与配对 \(z = 3.13\),是”同一套题该怎么比”;20 个 benchmark 上完全相同的两个模型至少一个假显著 61%,与第一篇在测试集上挑最好的 0.255 是同一个机制——在很多个数字里挑最好的那个,挑出来的数字就带了选择偏差。

2. 偏差-方差与集成:降得掉的与降不掉的

第一篇用 100 批数据各训一个模型算出分解:次数 1 偏差² 0.158、方差 0.025,次数 9 偏差² 0.001、方差 0.060;20 个模型平均把方差降到 0.017、偏差基本不变。这一条”集成只降方差”贯穿三篇。第三篇的随机森林是它的教科书实例:单棵决策树训练 100%、测试 83%,300 棵树 bagging 后训练仍 100%、测试 92%——被压掉的全是方差;KNN 的 \(k\) 小了方差大、大了偏差大,是同一个权衡的另一种形态。

第六篇把它用到 judge 上:多个 judge 或多次打分取平均能降低随机误差,但位置、长度、自我偏好是系统偏差——第一篇的”偏差”——平均之后还是偏好长回答,只能设计消掉(对换顺序、控制长度、换家族的 judge)。第一篇提到的”多 seed 结果差异大”与第六篇的交叉验证也在这条线上:你看到的单个数字里有一大块是方差,所以要多 seed 报均值与方差、数据少时做 \(k\) 折。

3. 逻辑回归这条骨架:从分类头到奖励模型到校准

第二篇建立的 \(\sigma(w^T x + b)\) + 交叉熵是三篇的公共骨架。它首先是每一个神经网络分类头的原型——前面所有层提特征、最后一层是逻辑回归,深度学习只改变了特征从哪来;然后它以特征差的形式变成奖励模型 \(P(A \succ B) = \sigma(w^T(x_A - x_B))\),无偏置,pairwise loss 从此不神秘。第三篇里它是所有比较的 baseline(5000 样本上 85%、0.00 秒、最稳最可解释),也是 fastText 一类”词袋特征 + 线性分类器”过滤器的形态——在”这段文本属于哪一类”上,它离 LLM 的差距远小于算力上的差距。

第六篇把它的两个性质变成评估工具。第一,它输出概率、判正要一个阈值,所以同一个逻辑回归阈值从 0.1 到 0.9 就是不同的过滤器;第二,它的 loss 就是对数似然,最大似然估计出来的概率就是频率,所以它天然校准好(ECE 0.026),树模型与 SVM 要 Platt scaling——在分数上再套一个逻辑回归。奖励模型作为逻辑回归也就有校准问题:分差过 sigmoid 后应该等于人类偏好的比例,不等就会影响 RL 里 \(\beta\) 的含义。

4. 用便宜的近似换掉跑不起的精确,再把代价算清

从第三篇起,每一篇都有一处”精确做法跑不起,换一个便宜的近似,然后算清这个近似丢了什么”。第三篇的算力账是起点:8B 给 15T token 打分要 \(2.4 \times 10^{23}\) FLOP、训练算力的 1/3,所以大模型标 45 万段、小分类器过全部,代价是分布偏移与系统性误杀;暴力 KNN 是 \(O(n)\),近似最近邻降到 \(O(\log n)\),代价是偶尔漏掉真正最近的。第四篇的聚类干脆放弃”正确”——探索而不是预测——并用 PCA 到 50 维再 UMAP,前者去噪加速、后者好看。

第五篇把这条线算到最精确:\(n\) 段文本两两比较是 \(n^2/2\) 对,\(10^9\) 段是 \(5 \times 10^{17}\),不可能;MinHash 用 128 个整数(512 字节)代替整个 n-gram 集合,代价是标准差 \(\sqrt{J(1 - J)/k}\) ≈ ±0.04;LSH 用概率分桶换掉两两比较,2000 段 200 万对只剩 267 个候选,代价由 S 曲线给出——\(J = 0.7\) 附近的对只有 56% 成候选、254 对里找到 226。第六篇的对应是”LLM 上大模型不做交叉验证(训不起),但分类器与奖励模型照常做”。这条线的方法论是:先算精确做法的代价,再选近似,再用概率或消融给出近似的误差。

5. 阈值就是权衡:三个数字说的是一件事

第三篇结尾、第五篇的 S 曲线、第六篇的阈值表,是同一个概念的三个出场。第三篇说质量分类器的分数切在哪里没有标准答案——FineWeb-Edu 切 3 分留约 1.3T token、切 2 分留几倍多——取决于你有多少数据、模型多大。第六篇给出它的通用语言:阈值高则精确率高、召回率低,要求”漏放不到 5%”就得把阈值放到 0.40、接受精确率 0.904,安全过滤要召回、推荐要精确率、数据质量过滤在中间;类别不平衡时 0.5 这个默认阈值让召回只有 0.105,挪到 0.1 升到 0.533。

第五篇的阈值是概率化的版本:\((b, r)\) 决定 S 曲线,曲线中点 \(s_{50} = (1 - 0.5^{1/b})^{1/r}\) 就是阈值,\(r\) 大更严、\(b\) 大更松,\(b \times r\) 固定时此消彼长;而 LSH 与精确比较的分工——LSH 负责不漏、精确比较负责不错杀——正是召回与精确率的分工。三处的共同点是:阈值不是模型的属性而是使用者的决定,决定之前先看曲线(阈值表、S 曲线、ROC),决定之后用 AUC 那样与阈值无关的指标去比模型本身。

概念 出现的篇 关系
测试集只看一次、选择偏差 一、二、三、六 一给原型(乐观 0.255);二的奖励模型超过标注上限即拟合噪声;三的分布偏移;六的交叉验证、配对、多重比较(61%)
偏差-方差、集成只降方差 一、三、六 一分解并给数字;三的随机森林与 KNN 的 \(k\);六的 judge 系统偏差消不掉、多 seed 与 \(k\) 折
逻辑回归 \(\sigma(w^T x + b)\) 二、三、六 二是原型与奖励模型;三是 baseline 与 fastText 的形态;六的阈值与校准(天然校准好、Platt scaling)
正则化 一、二 一定义为”拉向简单解”(KL、LoRA、早停);二的 Ridge = weight decay、Lasso 稀疏
算力账与两级做法 三、六 三算出 1/3 与 0.42%;六的阈值取舍与 FineWeb-Edu 切几分
相似度与近邻 三、四、五 三的 KNN、余弦、维度灾难、ANN;四的 embedding 各向异性;五的 Jaccard 与 MinHash
阈值与精确率 / 召回率 三、五、六 三的分数切在哪;五的 S 曲线中点、LSH 不漏 / 精确比较不错杀;六的阈值表与 AUC
标注一致性作为上限 二、六 二算出 91.5% vs 91.3%;六把它用到奖励模型准确率与 judge 一致率(人与人 70–80%)
低维 / 低秩 29 维解释 95%;与 LoRA 的低秩假设、PCA = SVD

四、常见误区

误区 为什么错 正确的说法 出处
benchmark 涨了 5 个点就是能力提升 题目可能在预训练语料里(污染),或团队在它上面反复调参使它变成了验证集 没有干净的测试集,评测数字就没有含义;换一份没参与过决策、确认不在语料里的题重测 第一篇
self-consistency 或多个 judge 平均能修正系统性的错 集成只降方差,偏差不变 20 个模型平均把方差 0.060 降到 0.017,偏差² 基本不变;系统偏差只能设计消掉 第一篇
奖励模型准确率 78% 太低,该训得更久 标注员之间一致率只有 70–80%,超过它就是拟合噪声 上限是标注的一致性;改进标注指南、清理分歧大的对 第二篇
奖励模型的 pairwise loss 是一种特殊的 loss 它就是逻辑回归的交叉熵作用在特征差上 \(P(A \succ B) = \sigma(w^T(x_A - x_B))\),无偏置;性质全部用逻辑回归的语言想 第二篇
数据质量用 LLM 打分最准,所以应该用 LLM 8B 给 15T token 打分是训练算力的 1/3 两级做法:大模型标几十万段、小分类器过全部;不是效果更好,是只有它跑得起 第三篇
梯度提升在所有数据上最好 5000 样本上随机森林 92%、SVM 92%、梯度提升 91%,没有一个模型在所有数据上最好 线性模型是 baseline,树的集成是表格数据的默认,按数据形状、规模与预测端成本选 第三篇
聚类结果不”正确”就没用 数据工程里聚类是探索工具,目的是让人能看 \(k\) 取 50 还是 200 对”看看有什么”影响不大;每簇抽几条读 第四篇
两段文本余弦相似度 0.85 说明很像 embedding 各向异性让所有对余弦都在 0.7 以上 先 PCA 看解释方差;减均值或白化后再比,或看它在全部对里的百分位 第四篇
“Jaccard > 0.7 算重复”是经验值 它是 \(b = 14, r = 8\) 的 S 曲线过 50% 的位置 \(s_{50} = (1 - 0.5^{1/14})^{1/8} \approx 0.685\);想改阈值就改 \((b, r)\) 第五篇
MinHash 去掉了”所有” Jaccard > 0.8 的重复 LSH 是概率算法,\(J = 0.8\) 时候选概率 92.35% 约 7.7% 会被漏掉;想抓全就增 \(b\) 或增 \(k\) 第五篇
过滤器准确率 95% 说明很好 正例 3% 时全判负也有 95.6% 不平衡时看精确率 / 召回率 / AUC,准确率几乎没有信息 第六篇
AUC 高的模型给出的概率也可信 AUC 只看排序,不看概率的绝对值 校准看 ECE 与可靠性图;树模型与 SVM 要 Platt scaling 或 isotonic regression 第六篇
20 个 benchmark 领先 12 个就是全面领先 两个完全相同的模型随机期望领先 10 个、标准差 2.2 12 在一个标准差以内;用 Bonferroni、看平均分的置信区间、或预先指定主 benchmark 第六篇

五、通关自测

A. 判断与计算(10 题)

  1. 30 个点拟合正弦、噪声方差 0.09。某个配置报出验证 MSE 0.07,这个数字在期望意义上可能吗?看到它该先查什么?

    答案

    不可能——噪声方差 0.09 是验证误差的下限(不可约误差),再好的模型也降不到它以下。看到低于下限的分数,先查验证集是否参与过决策(在它上面挑过配置就带选择偏差,第一篇 200 次重复的乐观 0.255 就是这种情况)。

  2. 用第一篇的分解数字:次数 1 偏差² 0.158、方差 0.025;次数 4 偏差² 0.003、方差 0.014;次数 9 偏差² 0.001、方差 0.060;噪声 0.09。三个容量的期望误差各是多少,哪个最合适?

    答案

    误差 = 偏差² + 方差 + 噪声:次数 1 为 \(0.158 + 0.025 + 0.09 = 0.273\),次数 4 为 \(0.003 + 0.014 + 0.09 = 0.107\),次数 9 为 \(0.001 + 0.060 + 0.09 = 0.151\)。次数 4 最合适——容量增加降偏差、升方差,两者之和最小处就是合适的容量。

  3. 1000 个特征里只有 20 个真的有用,想一眼看出是哪 20 个。用 Ridge 还是 Lasso?Ridge 会给出几个恰好为零的系数?

    答案

    Lasso:\(L_1\) 的惩罚在零点附近不变小,会把无用特征推到恰好为零(第二篇 50 个特征里 45 个归零)。Ridge 把所有系数一起压小但没有一个恰好为零(实验里 0/50),做不了特征选择。

  4. 一个奖励模型留出集准确率 86%,而标注员两两一致率 75%。这个数字说明什么?

    答案

    超过了标注一致性的上限——奖励模型能学到的最多就是标注里一致的那部分,超过它就是在拟合噪声(第二篇合成实验里 91.5% 恰好等于用真实分数判断的 91.3%)。要么留出集与训练集有重叠、不再是干净的测试集,要么留出集的题恰好都是分歧小的对;先查数据,不要把它当成好消息。

  5. 用 1 亿参数的 BERT 级模型给 30T token 打分,相对训练一个 8B / 15T 模型的算力占多少?换成约 1M 参数的 fastText 呢?

    答案

    每 token \(2N\) FLOP:\(2 \times 10^8 \times 30 \times 10^{12} = 6 \times 10^{21}\);训练算力 \(6ND = 7.2 \times 10^{23}\);占 0.83%——是第三篇表里 15T 那行 0.42% 的两倍。fastText:\(2 \times 10^6 \times 30 \times 10^{12} = 6 \times 10^{19}\),0.008%,几乎为零。

  6. 一份数据上 K-Means 的簇内平方和:\(k = 5\) 为 8274、\(k = 6\) 为 7281、\(k = 7\) 为 6773;轮廓系数在 \(k = 2\) 最高 0.665。\(k\) 该取几?

    答案

    肘部在 6:5 到 6 降了约 1000,6 到 7 只降约 500,下降速度在这里突然变缓。轮廓系数偏好粗的划分(6 个簇两两靠近形成 3 个大组),两个判据不一致时按业务定——想看几个大主题取 2 或 3,想看细主题取 6。

  7. 两段 100 个词的文本改掉 10 个词,词级 5-gram 大约有 50 个受影响。Jaccard 约多少?用 \(b = 14, r = 8\) 它成为候选的概率约多少?

    答案

    \(J \approx (100 - 50)/(100 + 50) = 0.33\)(第五篇表里改 10 词的真实 Jaccard 是 0.337)。\(s = 0.3\) 时 S 曲线给 0.0009,几乎不可能成为候选——按这套参数它不算重复。

  8. 按 \(b = 14, r = 8\) 的 S 曲线,\(J = 0.6\) 的一对文本被漏掉的概率多少?\(J = 0.9\) 呢?

    答案

    \(J = 0.6\) 时候选概率 0.2111,漏掉 79%;\(J = 0.9\) 时候选概率 0.9996,漏掉 0.04%。前者不是 bug,是阈值 0.685 的定义——0.7 以下本来就不算重复。

  9. 测试集 2400 条、正例 105 条。全判负的准确率是多少?逻辑回归阈值 0.5 召回率 0.105,抓到几个正例、漏掉几个?

    答案

    全判负:\(2295/2400 = 0.956\)。召回 0.105 意味着抓到 11 个、漏掉 94 个——准确率 0.959 看起来比全判负还高,实际几乎没抓到正例。不平衡时看精确率 / 召回率 / AUC。

  10. 同一套 500 题上比两个模型,分歧题 40 道:28 道 A 对 B 错、12 道 A 错 B 对。McNemar 的 \(z\) 是多少,显著吗?若是 20 : 12 呢?

    答案

    \(z = (28 - 12)/\sqrt{28 + 12} = 16/6.32 = 2.53\),超过 1.96,显著。20 : 12 时 \(z = 8/\sqrt{32} = 1.41\),不显著。配对检验只看分歧题,噪声小得多,但分歧题只有几十道时分辨不出一个点的差异。

B. 跨篇综合(5 题)

  1. 你要给一份 40T token 的语料训一个质量分类器,然后决定阈值。用哪些篇的什么来做三个决定:用什么模型、切在哪、怎么评估它?

    答案

    第三篇:算力账——8B 给 15T 打分已是训练算力的 1/3,40T 更不可能,用两级做法(大模型标几十万段、小分类器过全部),标注样本要覆盖代码与非英语否则分布偏移。第六篇:阈值高则留下的干净但少、低则多但脏(FineWeb-Edu 切 3 分留约 1.3T、切 2 分留几倍多),比较两个分类器本身用 AUC,决定阈值看精确率 / 召回率;”高质量”是少数类,准确率不能看。第一篇:评估分类器的留出集不能参与阈值的选择,否则报出的精确率 / 召回率偏乐观。

  2. 奖励模型留出集准确率 78%,RL 训了几千步后奖励一路上涨、人评质量下降。用三篇解释发生了什么,并给出处理顺序。

    答案

    第二篇:奖励模型是逻辑回归作用在特征差上,78% 已接近标注一致率 70–80% 的上限,再训就是拟合噪声。第一篇:8B 特征提取器加几万对数据是容量大、数据少的极端,它学到的是好回答的表面特征(更长、更多列表);RL 在它上面优化就是去它判断错的地方找漏洞——reward hacking。处理按经典解法:加大 KL 正则、限制 RL 步数并监控真实质量(早停)、多个奖励模型取最小或均值(集成)、用当前策略的输出重新标注。第六篇:检查奖励模型的校准——分差过 sigmoid 后应等于人类偏好比例,不等则 \(\beta\) 的含义就变了。

  3. 5 万条 SFT 数据,怀疑里面有大量同一模板生成的近重复、且主题分布失衡。用第三、四、五篇各做什么?

    答案

    第四篇:embedding 后 K-Means(\(k = 50\) 或 200)、每簇抽 5–10 条人读,簇的大小就是主题占比,”这 500 条其实是同一个模板”常常自成一簇,然后按簇采样保多样性。第五篇:对疑似模板簇做精细版去重——n-gram 集合的 Jaccard、MinHash 签名、LSH 按 S 曲线选 \((b, r)\),精确去重先做。第三篇:候选召回本质是 KNN,5 万条可以暴力算,大了用近似最近邻;embedding 上用余弦而不是欧氏距离,且注意第四篇的各向异性会让所有余弦都高。

  4. 新模型在 benchmark A 上比上一版涨了 4 个点。给出一张核查清单,并说明每一项来自哪篇。

    答案

    第一篇:A 是否参与过决策(选 checkpoint、调 prompt)——是则它已是验证集;用 13-gram 重叠与困惑度对比查污染;换私有测试集重测。第六篇:同一套题用配对检验而不是独立比较(500 题差 4.2 个点,独立 \(z = 1.38\) 不显著、McNemar \(z = 3.13\) 显著);分歧题有几道决定了能分辨的最小差异;若同时报了多个 benchmark,做多重比较校正或看平均分的置信区间。第三篇:污染检测的另一种做法是找测试样本在训练数据里的最近邻(KNN)。

  5. 把 5 个 judge 的打分取平均后,与人类的一致率从 78% 升到 81%,但长回答仍然系统性得高分。这两件事分别对应哪篇的什么结论,下一步做什么?

    答案

    第一篇:集成只降方差——78% 到 81% 是随机误差被平均掉的部分;长度偏好是系统偏差,5 个 judge 都有,平均消不掉。第六篇:与人和人之间的一致率(70–80%)比,81% 已到顶,再涨也不是信号;三种系统偏差要分别设计消掉——对换顺序、控制长度或报长度控制后的胜率、换不同家族的 judge 交叉;用 Cohen’s kappa 扣掉随机一致。第二篇:judge 与奖励模型一样,上限是人类标注的一致性,不是模型容量。

C. 面试题(7 题)

  1. 一个 benchmark 提升了几个点,你怎么判断它是真的?

    答案

    答案要点:(1) 先问测试集是不是还是测试集——参与过选 checkpoint、调 prompt 就已是验证集,第一篇在 20 个测试点上挑最好平均乐观 0.255;(2) 查污染:13-gram 重叠、困惑度异常低、留私有或动态测试集;(3) 同一套题用配对检验——500 题差 4.2 个点,独立比较 \(z = 1.38\) 不显著、McNemar \(z = 3.13\) 显著;(4) 分歧题数量决定能分辨的最小差异;(5) 多个 benchmark 一起报时做多重比较校正——20 个里至少一个假显著的概率 61%,领先 12 个在随机期望 10 ± 2.2 之内。 追问方向:为什么配对比独立灵敏;Bonferroni 怎么做;小模型实验多 seed 差异有多大。 好答案与一般答案的区别:一般答案说”跑多次、看置信区间”;好答案先把”泄漏 / 过度调参”与”随机波动”分成两个问题,各给一个能算的数字。

  2. 奖励模型为什么会过拟合、reward hacking 怎么防、它的准确率上限在哪?

    答案

    答案要点:(1) 结构:LLM 提特征 + 无偏置的逻辑回归作用在特征差上,\(P(A \succ B) = \sigma(w^T(x_A - x_B))\);(2) 8B 参数对几万到几十万对数据,容量大、数据少,学到的是表面特征(长度、列表、语气);(3) RL 在它上面优化就是在过拟合的评估器上做优化,去分布外找它判断错的地方;(4) 经典解法逐条对应——更多更多样的偏好对、KL 惩罚(正则化)、限制步数并监控真实质量(早停)、多个奖励模型取最小或均值(集成)、用当前策略的输出重新标注;(5) 上限是标注一致性——合成实验 91.5% 等于用真实分数判断的 91.3%,真实场景标注员一致率 70–80%,留出集 65–80% 是正常的。 追问方向:为什么不能有偏置项;校准对 \(\beta\) 的影响;DPO 与这个逻辑回归的关系。 好答案与一般答案的区别:一般答案说”数据少所以过拟合、加 KL”;好答案能写出它就是逻辑回归,并说出为什么”训得更久”不能突破 80%。

  3. 给你 15T token 的原始语料,设计质量过滤:用什么模型、标签从哪来、阈值怎么定、怎么知道它没有误杀某类文本?

    答案

    答案要点:(1) 算力账:8B 逐段打分 \(2.4 \times 10^{23}\) FLOP,占训练 8B 模型算力的 33.3%,1 亿参数 0.42%,线性模型 0.004%;(2) 两级做法——FineWeb-Edu 用 Llama-3-70B 给 45 万段打 0–5 分、小 embedding 模型加线性头过全部,DCLM 用 fastText;(3) 标注样本要代表全部语料,否则分布偏移,对代码与非英语的判断接近随机;(4) 阈值是精确率 / 召回率的权衡,切 3 分留约 1.3T、切 2 分留几倍多,按有多少数据、模型多大定;(5) 比较分类器本身用 AUC,特征重要性看哪些统计量在起作用;(6) 按语体分开报召回,找系统性误杀——每滤掉一类文本模型就失去一种能力,且在 benchmark 上不一定看得见。 追问方向:高质量是少数类时为什么准确率不能看;分类器的概率要不要校准;聚类怎么帮忙发现被误杀的簇。 好答案与一般答案的区别:一般答案说”训个分类器切个分”;好答案先算算力再选模型,把阈值说成权衡,并主动提分布偏移与误杀。

  4. 一份几十 T 的语料,你怎么知道里面有什么、哪一类占太多、哪些是垃圾?

    答案

    答案要点:(1) 聚类是探索工具而不是预测——embedding → K-Means \(k = 50\) 或 200 → 每簇抽 5–10 条人读,簇大小就是主题占比;(2) \(k\) 用肘部法或轮廓系数,不一致时按业务定,且结果”正确”与否对看有什么影响不大;(3) 垃圾(乱码、导航栏、cookie 提示)常自成一簇,比写规则更快发现;(4) 用法:按簇配比把 20% 的 SEO 垃圾压到 2%、定向补少的主题、SFT 数据按簇采样保多样性;(5) 可视化先 PCA 到 50 维再 UMAP,PCA 前两维只能分开差别最大的类;(6) 各向异性——所有余弦都在 0.7 以上时先看 PCA 解释方差,减均值或白化。 追问方向:K-Means 的球形等大假设什么时候失效(月牙 ARI 0.255 vs DBSCAN 1.0);近重复怎么精细处理(MinHash);聚类与去重的分工。 好答案与一般答案的区别:一般答案说”聚个类看看”;好答案说清它是探索工具、给出流程与三个具体用法,并知道 embedding 相似度的陷阱。

  5. 解释 MinHash + LSH,并说明 FineWeb 的 \(b = 14, r = 8\) 为什么等于”Jaccard > 0.7 算重复”。

    答案

    答案要点:(1) 文本 → n-gram 集合(\(n \approx 5\)),Jaccard 定义相似,改 5% 的词约 0.6;(2) MinHash:随机 hash 取最小值,两集合最小值相等的概率恰好等于 Jaccard——并集里最小的元素落在交集里的概率;(3) \(k\) 个签名相等的比例是无偏估计,标准差 \(\sqrt{J(1 - J)/k}\),\(k = 128\) 时 ±0.04、512 字节代替整个集合;(4) LSH 分 \(b\) 组每组 \(r\) 个、任一组全等即候选,\(P = 1 - (1 - s^r)^b\) 是 S 曲线,中点 \(s_{50} = (1 - 0.5^{1/b})^{1/r}\);(5) \(b = 14, r = 8\) 给 0.685——0.5 时 5%、0.7 时 56%、0.8 时 92%,所以”约 0.7”是这组参数的曲线中点;\(r\) 大更严(8 × 16 → 0.856)、\(b\) 大更松(28 × 4 → 0.395);(6) 2000 段 200 万对只剩 267 个候选,LSH 负责不漏、精确比较负责不错杀。 追问方向:为什么不用编辑距离;想把阈值定在 0.8 怎么反解 \((b, r)\);中文用什么 n-gram;精确去重与 MinHash 的先后。 好答案与一般答案的区别:一般答案背”分桶、相似的碰撞”;好答案能写出 S 曲线公式并说出 0.685 是算出来的而不是经验值。

  6. LLM-as-judge 与人类一致率 80%,够不够?你会怎么评估一个 judge?

    答案

    答案要点:(1) 先与人和人之间的一致率比——人之间也只有 70–80%,80% 已到顶,上限是标注一致性而不是模型容量;(2) 用 Cohen’s kappa 扣掉随机一致(二选一随机也有 50%);(3) 区分随机误差与系统偏差——位置、长度、自我偏好是系统偏差,多个 judge 平均消不掉,只能设计消掉:对换顺序、控制长度或报长度控制后的胜率、换家族交叉;(4) 配对检验能测出系统偏差;(5) 按类别(对话、安全、推理)分开报,像 RewardBench 那样做能力分解;(6) 若 judge 输出概率,看校准——RLHF 之后模型倾向于对错都说 90%。 追问方向:偏差-方差里为什么集成消不掉偏差;judge 与奖励模型的评估有何异同;多重比较在多个类别上的影响。 好答案与一般答案的区别:一般答案说”80% 挺高了”或”越高越好”;好答案把上限、随机一致、系统偏差三件事分开,每一件给出对应的检查。

  7. 给你一张对比表:新模型在 20 个 benchmark 上有 12 个领先、其中 3 个”显著”。你怎么读?

    答案

    答案要点:(1) 随机情况下两个完全相同的模型期望领先 10 个、标准差 2.2,12 在一个标准差以内,不算什么;(2) 5% 显著性水平下 20 个 benchmark 期望 1 个假显著、至少一个的概率 61%,3 个略多于随机但不强;(3) 每个 benchmark 上的比较应该是配对的——同一套题只看分歧题;(4) 校正:Bonferroni(显著性水平除以 20)、或看平均分的置信区间、或预先指定主 benchmark;(5) 很多 benchmark 差几个点本来就在置信区间内,分歧题只有几十道时分辨不出一个点;(6) 再回第一篇:这 20 个 benchmark 有没有参与过选 checkpoint。 追问方向:怎么估一个 benchmark 上差值的标准误;为什么”数领先个数”是一种多重比较;效应大小与显著性的区别。 好答案与一般答案的区别:一般答案数领先个数;好答案先算随机基线(10 ± 2.2、61%),再说该看什么统计量。

D. 掌握判据

水平 表现
读过 能说出六篇各讲什么;知道过拟合、Bradley-Terry、GBDT、K-Means、MinHash、McNemar 这些名词
掌握 A 组能不翻书算出 8 题以上;B 组能说出每题用了哪几篇的什么;看到 LLM 上的一个问题能叫出它的经典名字(污染是测试集泄漏、reward hacking 是过拟合、judge 的长度偏好是系统误差、过滤器误杀是精确率召回率的权衡、”20 个领先 12 个”是多重比较)
能教人 C 组每题能给出全部要点并预判追问;能解释六篇里每个反直觉结论(奖励模型不该训得更久、数据过滤用小模型不是因为它更准、聚类不需要正确、0.7 不是经验值、准确率 95.9% 可能几乎没抓到正例)为什么成立,并用几十行 scikit-learn 把它跑出来

通关标准:A 组至少 8 题、B 组至少 4 题、C 组每题能说出一半以上要点。没过的部分回到第二章对应篇的”必记”,再回该篇正文与配套脚本——总纲说的六个脚本跑完、改过参数,L2 就够了。

六、下一步

六篇讲的是经典机器学习在 LLM 工作里重现的那部分,总纲划定的边界之外有几个方向紧邻但不在范围内:

  • 本系列的前置L0 数学(范数、SVD、交叉熵、Bradley-Terry、置信区间)与 L1 工具箱(NumPy、Pandas、scikit-learn 的接口)——第六篇的配对检验与多重比较直接用了 L0 的标准误与 p 值。
  • 深度学习基础(L3):神经网络、反向传播、优化器、正则化在深度网络里的具体形态。那里的过拟合、正则化、评估全是本系列的概念换了一个模型;本系列只到”逻辑回归是分类头的原型”。
  • 预训练的数据工程(L4):怎么抓、怎么清洗、配比怎么定。本系列只给它用到的分类器、聚类、去重三个工具。
  • 后训练算法本身(L5):奖励模型怎么训、RLHF 怎么做、DPO 是什么。本系列只到”奖励模型是逻辑回归、会过拟合、上限是标注一致性”。
  • 深度无监督学习(自编码器、VAE、VQ-VAE)在 L7 多模态系列;SVM 的对偶、EM、决策树的分裂准则、核方法、PAC 学习不在最小集里,想看严格版本翻 Bishop 或 ESL。

这些系列在《AI 算法工程师学习地图》的 L3 至 L7 层各有总纲。回到本系列总纲:《LLM 时代还要学经典机器学习吗:只讲它在哪里重现》

  1. 六组:benchmark 涨了几个点是真的还是泄漏(测试集只看一次、污染与过度调参);奖励模型和逻辑回归是什么关系、为什么准确率到 80% 就上不去(特征差上的无偏置逻辑回归、标注一致性是上限);数据过滤为什么用小模型、表格数据为什么是 GBDT 的天下(算力账、两级做法、没有一个模型在所有数据上最好);一个语料里有什么主题、4096 维怎么看(聚类是探索、PCA = SVD、各向异性);相似到什么程度算重复、阈值怎么定、为什么不两两比较(Jaccard、MinHash 一行证明、S 曲线中点);准确率 95% 是什么意思、一致率 80% 够不够、20 个领先 12 个算不算(不平衡、系统偏差、配对与多重比较)。详见第二章。 

  2. 次数 25 训练 MSE 0.040 低于噪声方差 0.09、验证 0.313;在测试集上挑最好平均乐观 0.255;误差 = 偏差² + 方差 + 噪声,集成只降方差;Lasso 45/50 归零、Ridge = weight decay;\(P(A \succ B) = \sigma(w^T(x_A - x_B))\),91.5% vs 标注上限 91.3%;8B 打分 = 训练算力的 1/3、1 亿参数 0.42%;决策树训练 100% 测试 83%;64 维里 29 维解释 95%;月牙 ARI 0.255 vs 1.0;标准差 \(\sqrt{J(1 - J)/k}\)、\(k = 128\) 时 ±0.04;\(P = 1 - (1 - s^r)^b\),\(b = 14, r = 8\) 阈值 0.685;200 万对 → 267 个候选;召回 ≥ 95% 时精确率 0.904;正例 3% 时全判负 95.6%;5 折 ± 0.022;McNemar \(z = 3.13\) vs 独立 1.38;20 个 benchmark 61% 至少一个假显著、领先期望 10 ± 2.2。详见第一章第三章。 

  3. 用第五章的三段自测:A 组 10 题判断与计算(至少 8 题)、B 组 5 题跨篇综合(至少 4 题)、C 组 7 道面试题(每题说出一半以上要点);D 组的表给出”读过 / 掌握 / 能教人”三级的表现。详见第五章。 

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


COMMENTS

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

×