林小雨转专业学机器学习,考试前一个月疯狂刷题。她每做完一套练习册就记下“练习正确率”,每周参加一次模拟考记下“模考分数”。两周后她画了张图:横轴是刷题数量(50→500 题),纵轴是得分(0~100%)。蓝色的“练习正确率”线一直稳在 95% 上下,红色的“模考分数”线却始终在 70% 徘徊——两条线之间横着一条宽阔的鸿沟。她把图拿给老师看,老师瞟了一眼就说:“别再刷题了,你是把答案背下来了,不是学会了。这不叫努力,叫过拟合。”这张“刷题数—得分”图,就是机器学习里的学习曲线。本文就用这条“刷题曲线”的主线,带你读懂训练分、验证分、偏差与方差,学会用一张图给模型做体检。

岗位关联

对 AI 从业者来说,学习曲线是模型体检的第一张化验单:一眼分辨欠拟合与过拟合,决定“增数据”还是“调模型”,省下大量盲目调参的时间。

目录
  1. 可视化演示
  2. 曲线图解读
  3. 过拟合识别
  4. 欠拟合识别
  5. 收敛判断法
  6. 诊断行动指南
  7. 工具与绘制
  8. 实战应用场景
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

欠拟合——高偏差 训练/验证误差都高 两条线差距小 增数据无效 对策:加容量/减正则 模型容量不足,学不到规律

曲线图解读

把自己想象成林小雨。第一次拿到练习册,她规定自己每天刷 20 题,然后画一张坐标图:横轴写“累计刷题数”,纵轴写“正确率”。她同时记两笔账:一笔是练习册的对错(训练分),一笔是每周模拟考的成绩(验证分)。学习曲线就是这么一张图——训练分数是“平时作业成绩”,验证分数是“模考成绩”,两者成对出现,才构成完整的画像。

机器学习里的学习曲线(learning curve)画的正是这件事:横轴是训练样本量 n(相当于刷题数),纵轴是模型得分(相当于正确率),图上永远有两条线——训练集得分(练习册成绩)和验证集得分(模考成绩)。为什么非要两条线?因为只看练习册,你根本看不出自己是真懂了还是背答案;只有两条线对照,才能暴露训练表现和真实能力的落差。验证得分随样本量增加的经验曲线通常可写成:

c 是理解整张曲线的钥匙。如果 c 低(比如 0.65),说明这条“刷题路线”(模型结构)本身有天花板,数据再多也不顶用;如果 c 高但验证分远低于 c,说明模型有能力,只是“题量”没喂够。再配合两条线的距离,就能判断模型到底“笨”还是“飘”。

对林小雨来说,曲线图就是“练习册成绩 vs 模考成绩”的对比图。横轴是刷题量,纵轴是成绩,蓝线飘在上面、红线趴在下边,必有故事。

Sval(n)=c−anαS_{\text{val}}(n) = c - \frac{a}{n^{\alpha}}
  1. 验证得分$S_{\text{val}}(n)$ 表示用 n 个样本训练出的模型,在没见过的验证集上的得分(如准确率)。刷题数越多,模考成绩通常爬升。
    Sval(n)S_{\text{val}}(n)
  2. 极限天花板c 是样本量趋近无穷时验证得分的极限,代表模型结构本身的“上限”。若 c 低,说明换再多数据也突破不了。
    c=lim⁡n→∞Sval(n)c = \lim_{n\to\infty} S_{\text{val}}(n)
  3. 欠账项$a / n^{\alpha}$ 是“还欠的分数”——数据少时欠得多,数据增多欠账变小,α 越大收敛越快。
    anα,a>0, α>0\frac{a}{n^{\alpha}}, \quad a>0,\ \alpha>0

过拟合识别

林小雨刷到第 200 题时,练习册正确率 98%,模考却只有 71%。她翻看错题,发现模拟考题目稍换说法她就懵。这不是练得不够,而是太熟——她把每道题的“脸”记住了,答案背得滚瓜烂熟,却没掌握背后的解题套路。

在机器学习里,这种“对练过的题过分精通、对没见过的题抓瞎”的状态叫高方差(high variance),俗称过拟合(overfitting)。学习曲线上的表现非常直白:训练曲线高高在上(98%),验证曲线趴在地上(71%),两条线之间的 Gap(差距)又宽又稳。Gap 随样本量的变化可以用下式刻画:

识别过拟合,重点看两件事:一是绝对差距大不大(训练 95% 对验证 70%,Gap 约 25 个百分点);二是差距是否随样本增加明显缩小。过拟合的典型图像是:蓝线在高位几乎不降,红线缓慢爬升却久久追不上,两条线像楚河汉界一样互不汇合。看到这种“鸿沟”,基本可以判定:加数据有效,但治标不治本,根子在模型偷偷背了答案。

林小雨的 Gap 从第 100 题的 22 个百分点缩到第 500 题的 24 个点,几乎没变化——加题量无效,必须换策略。老师说的“背答案”,在曲线上就是这么无情地显现。

G(n)=Train(n)−Val(n)=bnβ+g0G(n) = \text{Train}(n) - \text{Val}(n) = \frac{b}{n^{\beta}} + g_0
  1. 差距定义$G(n)$ 是训练得分与验证得分之差,$G$ 越大说明“平时成绩 vs 真实水平”落差越大。
    Train(n)−Val(n)\text{Train}(n) - \text{Val}(n)
  2. 可缩小的部分$b / n^{\beta}$ 会随样本量增大而缩小——刷题多了,背答案的空间变小,这部分差距可以被“喂数据”治掉。
    bnβ\frac{b}{n^{\beta}}
  3. 顽固残差$g_0$ 是数据无限多也消不掉的差距,由模型结构本身造成,比如决策树不剪枝、特征里混入太多噪声。$g_0>0$ 是过拟合的顽固证据。
    g0=lim⁡n→∞G(n)>0g_0 = \lim_{n\to\infty}G(n) > 0

欠拟合识别

同寝室的阿强是另一种惨:刷到 400 题,练习册 62%,模考 60%。他不是不努力,是基础概念根本没搞懂,练习册和模考“双双扑街”。这种情况在机器学习里叫高偏差(high bias),也就是欠拟合(underfitting)。

学习曲线的形态与过拟合恰好相反:两条线都很低,而且从样本量很小时就开始“贴贴”——蓝线降一点,红线升一点,两线快速汇合成一条低位平稳线。这说明问题不在“题刷得不够”,而在“模型太笨”,结构性地学不会。误差的来源可以用偏差-方差分解来解释:

识别欠拟合也看两件事:两条曲线是否快速汇合、汇合的平台是否够高。如果两线在样本量只有 100 时就贴在一起,且平台停在 0.6,那无论增到 5000 还是 50000 条数据,分数都纹丝不动。此时增数据等于给阿强加练习册——他连基础都不会,刷一万题还是 60 分。正确做法是加大模型容量:换更强的算法、加特征、减少约束。

林小雨对阿强的诊断单上只有一句话:高偏差——底子没打好,刷题无效,回去重修线性模型和特征工程。

E=Bias2+Var+σ2E = \text{Bias}^2 + \text{Var} + \sigma^2
  1. 总误差$E$ 是模型在真实数据上的期望误差,也就是“考试真正扣掉的总分”。
    E[Error]\mathbb{E}[\text{Error}]
  2. 偏差项$\text{Bias}^2$ 是模型结构性的“笨”——比如用直线去拟合有弧度的规律,练多少都差。对应练习册和模考双低。
    Bias2=(E[f^(x)]−f(x))2\text{Bias}^2 = \left(\mathbb{E}[\hat{f}(x)] - f(x)\right)^2
  3. 方差项$\text{Var}$ 是模型对训练数据细节的敏感度,对应“换个题就慌”的波动。过拟合时它大,欠拟合时它小。
    Var=E[(f^(x)−E[f^(x)])2]\text{Var} = \mathbb{E}\left[\left(\hat{f}(x)-\mathbb{E}[\hat{f}(x)]\right)^2\right]
  4. 噪声项$\sigma^2$ 是数据本身的不可约噪声,比如题目本身有歧义,神仙来了也救不了。
    σ2\sigma^2

收敛判断法

林小雨终于明白刷题不是越多越好。那问题来了:刷到多少题才算“够”?她的判断很简单——如果一周内新增 50 题,练习册和模考成绩几乎不动,那就是“收敛”了。

机器学习里的收敛判断同理:随着样本量 n 增大,曲线逐渐变平,得分不再因数据增加而上涨。判断是否收敛,不是看曲线是否绝对水平,而是看“分数对样本量的敏感度”(斜率)是否小于某个阈值:

注意收敛分两个层次:一是验证曲线本身斜率趋近 0(加数据没收益),二是 Gap 收敛到稳定值(该稳定的稳定了,该顽固的持续顽固)。如果验证曲线平了但 Gap 还很大,说明模型已经“吃不下”更多数据——最优解是把模型调对而不是继续投喂数据。反之,若验证曲线还在明显爬升,说明数据量尚处“红利甜区”,加数据立竿见影。

林小雨在笔记本上画了条“止损线”:每周新增 50 题提分不到 0.5 个百分点,就停刷,转去整理错题本。学习曲线教她及时止损,也教模型调优者在平台期节省算力和预算。

∣ΔSΔn∣<ε\left|\frac{\Delta S}{\Delta n}\right| < \varepsilon
  1. 变化率$\frac{\Delta S}{\Delta n}$ 是新增一份样本带来的得分变化,即曲线在当前位置的斜率。
    S(n2)−S(n1)n2−n1\frac{S(n_2) - S(n_1)}{n_2 - n_1}
  2. 取绝对值分数可能因噪声小幅上下浮动,用绝对值排除“假上涨”和“假下跌”的干扰。
    ∣ΔSΔn∣\left|\frac{\Delta S}{\Delta n}\right|
  3. 阈值判断$\varepsilon$ 是容忍度,比如每样本 0.001。斜率低于它,说明已经进入平台期、加数据收益趋近于零。
    ε=10−3\varepsilon = 10^{-3}

诊断行动指南

诊断是为了开药方。林小雨现在会画自己的学习曲线,但最想知道的是:下一步干什么?她总结出一套规则:先看 Gap,再看两条曲线的平均高度。

机器学习的诊断同样有套路。把两条曲线的关键信息提炼成两个数:平均得分水平 $\bar{S}$(训练和验证的平均)和差距 $G$(训练减验证),用它们组合出偏差-方差状态:

开药方的两条主线:高方差 → 增加训练数据、加正则化(约束模型别记太细)、降低模型复杂度(决策树剪枝、神经网络减宽度);高偏差 → 增加特征、换更强模型(线性→决策树→神经网络)、减少正则化约束。别一上来就加数据:若高偏差,加数据等于给阿强加练习册,他连基础都不会,刷一万题还是 60 分。

林小雨按方抓药:自己属高方差,停刷题、精简笔记,少记答案多归纳套路(正则化);阿强属高偏差,先回去补理论、换系统教材(换模型结构)。一条学习曲线,两份个性化处方。

{G>τ 且 Sˉ≥p⇒高方差(过拟合)G≤τ 且 Sˉ<p⇒高偏差(欠拟合)\begin{cases}G > \tau \ \text{且}\ \bar{S} \ge p \Rightarrow \text{高方差(过拟合)} \\[4pt]G \le \tau \ \text{且}\ \bar{S} < p \Rightarrow \text{高偏差(欠拟合)}\end{cases}
  1. 平均水平$\bar{S} = (\text{Train} + \text{Val})/2$,衡量模型整体“会不会做”。均值高说明学到了东西,低说明没学会。
    Sˉ=Train+Val2\bar{S} = \frac{\text{Train} + \text{Val}}{2}
  2. 高方差判定Gap 大且均值高 → 平时作业好但一考就砸,优先治过拟合。
    G>τ 且 Sˉ≥pG > \tau \ \text{且}\ \bar{S} \ge p
  3. 高偏差判定Gap 小且均值低 → 平时作业和考试都差,优先治欠拟合。
    G≤τ 且 Sˉ<pG \le \tau \ \text{且}\ \bar{S} < p
  4. 边界情况Gap 和均值都居中,则两个方向微调都行,例如同时加一点正则和加一点数据。
    τ1<G≤τ2\tau_1 < G \le \tau_2

工具与绘制

纸上画曲线太累,林小雨想用代码画。她发现调包一行 sklearn 就能算好。scikit-learn 提供了 sklearn.model_selection.learning_curve 函数:给定模型、特征 X、标签 y、交叉验证折数 cv、样本量序列 train_sizes,它返回每个样本量下的训练得分和验证得分。

验证得分默认走交叉验证——把当前样本量下的训练数据拆成 K 份,轮流留 1 份当验证、其余 K-1 份训练,最后取平均。这么做比单次随机划分稳定得多,曲线不会因为某次运气好坏剧烈抖动:

绘制工作流四步走:定模型 → 定 train_sizes(如从 10% 到 100% 取 8 个点)→ 调 learning_curve 得到三维数组(样本量 × 折数 × 分数)→ 对折数轴取均值和标准差,用 matplotlib 画出两条均值线和标准差阴影带。阴影带很有用:带子宽说明模型对数据切分敏感(不稳定),带子窄说明表现稳健。

林小雨花十分钟画好了自己的“刷题曲线”:蓝色训练线、红色验证线、半透明阴影带。她说自己终于从“瞎猜”进化到“看图说话”。

Eˉcv=1K∑k=1KEk\bar{E}_{cv} = \frac{1}{K}\sum_{k=1}^{K} E_k
  1. K 折划分把训练数据平均分成 K 份,循环 K 次,第 k 次拿第 k 份当临时验证集。
    k=1,2,…,Kk = 1, 2, \dots, K
  2. 单折误差$E_k$ 是第 k 次用其余 K-1 份训练、对第 k 份预测得到的误差。
    Ek=Loss(model−k, foldk)E_k = \text{Loss}(\text{model}_{-k},\ \text{fold}_k)
  3. 取平均K 次结果取平均得到稳健的验证分,避免数据切分偏差导致曲线失真。
    1K∑k=1KEk\frac{1}{K}\sum_{k=1}^{K} E_k

实战应用场景

学习曲线不是课堂玩具。林小雨实习时,组里的模型线上准确率下滑,Leader 第一句话就是:“先画个学习曲线,看看是数据不够还是模型坏了。”实战中学习曲线最重要的用途是预估增数据的收益。假设当前样本量是 $n_1$,想评估是否值得花几万块购买标注数据到 $n_2$,只需看曲线在 $n_1$ 附近的斜率:

三个常见实战动作:模型上线前体检——用全量数据的子集画曲线,若存在严重高方差,先解决数据再谈上线;数据预算申请——向老板汇报“当前曲线斜率 0.15/千样本,买 5 万条预计提升 7 个点”,有理有据;模型迭代评审——对比两个模型的曲线,看谁在相同数据下 Gap 更小、平台更高。

林小雨把学习曲线比喻成体检报告上的“体重曲线”:不检不知道,一检吓一跳。每次训练完模型都顺手画一张,已经成为她的职业肌肉记忆。

ΔE=E(n1)−E(n2)≈∣ΔSΔn∣×(n2−n1)\Delta E = E(n_1) - E(n_2) \approx \left|\frac{\Delta S}{\Delta n}\right| \times (n_2 - n_1)
  1. 收益估计$\Delta E$ 是从 $n_1$ 增到 $n_2$ 期望误差的下降量,代表“花这笔钱买数据值不值”。
    E(n1)−E(n2)E(n_1) - E(n_2)
  2. 斜率外推用当前位置的斜率近似线性外推,曲线越陡收益越大。
    ∣ΔSΔn∣×(n2−n1)\left|\frac{\Delta S}{\Delta n}\right| \times (n_2 - n_1)
  3. 决策准则当 $\Delta E$ 折算的提升高于标注成本时果断买数据,否则省下预算去调模型。
    ΔE>成本阈值⇒买数据\Delta E > \text{成本阈值} \Rightarrow \text{买数据}

AI 应用场景

模型上线前体检

阶段:模型评估

解决的问题:传统做法是拍脑袋决定“模型好像不错,上线上线”,上线后才发现泛化能力差、线上指标崩盘。用学习曲线能在离线阶段就暴露高方差或高偏差,把问题拦截在上线之前。

具体案例:某推荐系统团队上线新召回模型前,用历史 30 天日志画学习曲线,发现训练分 0.97、验证分 0.78,Gap 高达 19 个点。据此判断模型过拟合,团队暂缓上线,改用正则化+增加训练数据,两周后 Gap 缩到 6 个点,顺利上线。

数据标注预算申请

阶段:数据策略

解决的问题:标注数据贵,盲目买数据纯烧钱。学习曲线给出“增量数据的边际收益”,把数据采购从感觉决策变成数据决策。

具体案例:某 NLP 创业公司做意图识别,已标注 8000 条。数据负责人用 learning_curve 画出曲线,发现验证分在 6000 条后平台化,斜率仅 0.002/百条,据此判断再买 2 万条也只能提 1% 左右,性价比极低,转而把预算投给特征工程,效果翻倍。

模型迭代调优流水线

阶段:模型调优

解决的问题:调参工程师面对一堆超参数组合,不知从何下手。学习曲线能区分“数据瓶颈”和“模型瓶颈”,把调优方向收敛到正确的维度。

具体案例:某 AutoML 平台在每次训练后自动生成学习曲线诊断报告,若判定高方差,自动建议“增大正则化系数并追加数据预算”;若判定高偏差,自动建议“切换更强的模型族”。开发者根据报告一键执行,模型迭代效率提升 3 倍。

Python 演示

python39 行
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.datasets import load_digitsfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import learning_curvefrom sklearn.tree import DecisionTreeClassifier  def plot_curve(model, pos, title):    X, y = load_digits(return_X_y=True)    sizes, train_scores, val_scores = learning_curve(        model, X, y, cv=5,        train_sizes=np.linspace(0.1, 1.0, 8),        scoring='accuracy'    )    train_mean = train_scores.mean(axis=1)    val_mean = val_scores.mean(axis=1)    train_std = train_scores.std(axis=1)    val_std = val_scores.std(axis=1)     ax = plt.subplot(1, 2, pos)    ax.fill_between(sizes, train_mean - train_std,                    train_mean + train_std, alpha=0.3, color='#818CF8')    ax.fill_between(sizes, val_mean - val_std,                    val_mean + val_std, alpha=0.3, color='#F43F5E')    ax.plot(sizes, train_mean, 'o-', color='#818CF8', label='train')    ax.plot(sizes, val_mean, 's-', color='#F43F5E', label='validation')    ax.set_title(title)    ax.set_xlabel('training samples')    ax.set_ylabel('accuracy')    ax.legend()    ax.grid(True)  plt.figure(figsize=(10, 4))plot_curve(DecisionTreeClassifier(random_state=42), 1, 'Decision Tree')plot_curve(RandomForestClassifier(n_estimators=100, random_state=42), 2, 'Random Forest')plt.tight_layout()plt.show()
目的:在手写数字数据集上对比“深决策树”和“随机森林”的学习曲线,直观观察过拟合(Gap 大)与健康(Gap 小)两种形态。
  1. learning_curve(model, X, y, cv=5, train_sizes=np.linspace(0.1, 1.0, 8))一次性算出 8 个样本量下、5 折交叉验证的训练/验证得分,返回三维数组。
  2. train_scores.mean(axis=1)对交叉验证的 5 折取平均,得到每个样本量下的稳定得分,避免切分运气影响。
  3. train_std / val_std标准差用于画阴影带,带子宽度反映模型对数据划分的稳定性。
  4. ax.fill_between(...)在均值线周围填充透明度 0.3 的色带,一图看出波动范围。
  5. train_sizes=np.linspace(0.1, 1.0, 8)从 10% 到 100% 均匀取 8 个训练集规模,曲线采样点密且均匀。

常见误区

误区看到验证集分数只有 0.6,立刻断定“模型过拟合了,赶紧加数据”。很多人只盯验证分,完全忽略训练分。

正解过拟合的定义是“训练分高、验证分低”的落差。如果训练分也只有 0.6,那是欠拟合,加数据毫无用处,得先换模型、加特征。验证分低只是“成绩差”,要结合“平时作业成绩”才能判断是笨还是飘。

为何常见:人们本能地只关注最终结果(验证分),忘了对比训练过程(训练分),于是把两种病因混为一谈。

误区看到两条曲线之间差距大,第一反应是“数据不够,再多买几万条”。结果加完数据 Gap 几乎没动,白花钱。

正解Gap 由两部分组成——能靠数据缩小的部分 $b/n^\beta$ 和模型结构决定的顽固残差 $g_0$。如果曲线已进入平台期、Gap 稳定不变,说明 $g_0$ 占主导,加数据治标不治本,应该先调模型结构(正则化、剪枝、降复杂度)。

为何常见:直觉上“见差距就补数据”符合直觉,因为教材反复强调“数据越多越好”,忽略了学习曲线平台期这个关键信号。

误区看到曲线变平,长舒一口气:“练到位了,模型已经达到极限。”于是停止调优。

正解平缓只代表“这个模型结构在当前数据下收敛了”,不代表绝对性能好。它可能收敛在 0.62 的低位平台——那是高偏差的警报,说明模型结构该换;也可能收敛在 Gap 很大的状态——说明还有过拟合的顽固残差。平缓只是“无数据红利”的信号,不是“质量优秀”的证书。

为何常见:把“收敛”和“优秀”画等号,忽略了平台本身的高度和 Gap 的大小,是只看形态不看数值导致的误判。

误区有人觉得只看验证曲线就够了——反正验证分代表真实水平,训练曲线无关紧要。

正解单看任何一条线都无法诊断。验证分低可能是欠拟合也可能是噪声大;训练分高可能是学得好也可能是背答案。必须把两条线对照:差距大的高方差、双低的平台期高偏差、双高且贴近才是理想状态。学习曲线的核心价值恰恰在“两线对比”产生的信息差。

为何常见:人类习惯抓一个数做判断,而学习曲线是“关系型”工具,它的诊断力来自两条线之间的相对关系而非绝对数值。

面试题

Q1. 学习曲线的横轴和纵轴分别是什么?

单选题 · easy

  • A.横轴是训练轮数,纵轴是 Loss
  • B.横轴是训练样本量,纵轴是模型得分← 正确答案
  • C.横轴是模型复杂度,纵轴是准确率
  • D.横轴是正则化强度,纵轴是误差

答案:B。学习曲线研究“数据量对模型表现的影响”,横轴固定是训练样本量(刷题数),纵轴是得分(正确率),两条曲线分别代表训练集和验证集。A 是训练曲线(training curve),C 是模型复杂度曲线,D 是正则化路径,均属概念混淆。

Q2. 学习曲线上“训练分高、验证分低且差距大”最可能说明什么?

单选题 · easy

  • A.模型欠拟合,需要更多数据
  • B.模型欠拟合,需要更强模型
  • C.模型过拟合,泛化能力差← 正确答案
  • D.模型表现健康,无需干预

答案:C。训练分高说明模型把“练习题”背熟了,验证分低说明真实场景抓瞎——这正是过拟合(高方差)的典型画像,排除 A/B/D。做题家平时 98 分、一考 70 分,就是过拟合本尊。

Q3. 学习曲线上两条线快速汇合且平台得分仅 0.6,应优先采取哪项措施?

单选题 · mid

  • A.增加训练样本量
  • B.增加模型复杂度或特征← 正确答案
  • C.增大正则化强度
  • D.降低学习率

答案:B。两线快速汇合且平台低是高偏差(欠拟合)的标志,说明模型结构学不会,增数据无效,应该换更强模型或加特征。增大正则化(C)反而会压低压平平台,学习率(D)与该诊断无关。

Q4. 关于“增加训练数据”对学习曲线的影响,下列说法正确的是?

单选题 · mid

  • A.对过拟合和欠拟合都有显著改善
  • B.对过拟合可能有效,对欠拟合基本无效← 正确答案
  • C.只对欠拟合有效
  • D.对两种问题都无效

答案:B。过拟合的 Gap 中有一部分 $b/n^\beta$ 可随数据增加而缩小,所以加数据对高方差有效;欠拟合的瓶颈是模型结构(Bias 大),曲线已平台化,加数据白费。这与“刷题量增加对死记硬背者有点用、对基础差者无用”的生活直觉一致。

Q5. 判断学习曲线是否“收敛”的正确方法是?

单选题 · mid

  • A.训练曲线不再下降
  • B.验证曲线斜率绝对值小于阈值← 正确答案
  • C.两条曲线完全重合
  • D.训练分达到 100%

答案:B。收敛指的是“再增加样本量,得分几乎不再变化”,即斜率 $|\Delta S / \Delta n|$ 小于给定阈值。完全重合(C)几乎不可能也不必要;训练分高(D)恰恰可能是过拟合信号,A 的“训练不降”也不是收敛的定义。

Q6. 高方差模型的典型学习曲线形态是?

单选题 · mid

  • A.两条线都高且贴近
  • B.两条线都低且快速汇合
  • C.训练线高、验证线低,差距大且不汇合← 正确答案
  • D.训练线低、验证线高

答案:C。高方差 = 训练好、泛化差,对应“蓝线高位、红线低位、鸿沟不消”。A 是理想健康状态,B 是高偏差,D 几乎不存在(验证分通常不会显著高于训练分)。

Q7. 假设验证曲线已进入平台期但 Gap 仍有 0.15,最合理的下一步是?

单选题 · hard

  • A.继续扩大训练数据规模
  • B.调低模型复杂度并加强正则化← 正确答案
  • C.降低验证集难度
  • D.增加训练轮数

答案:B。验证曲线平台化说明增数据无收益,Gap 稳定说明残余差距来自模型结构($g_0$)。此时应调模型——降复杂度、加正则化,而不是加数据或加轮数。C 项是测试作弊,D 项解决不了结构性问题。

Q8. sklearn 的 learning_curve 中 cv=5 的作用是什么?

单选题 · hard

  • A.将全部数据划分为 5 份,5 份都当验证集
  • B.在每个样本量下做 5 折交叉验证,对验证得分取平均← 正确答案
  • C.让模型训练 5 次取最高分
  • D.将样本量序列划分为 5 个区间

答案:B。cv=5 表示在每个 train_size 下,把该规模的数据再切成 5 折,轮流验证,返回的验证得分是 5 折平均($\bar E = \frac{1}{K}\sum E_k$),让曲线更平滑稳健。A 把每折都当验证集说法有误,C/D 与交叉验证无关。

Q9. 学习曲线显示高方差(过拟合),合理的应对策略有哪些?

多选题 · mid

  • A.增加训练数据量← 正确答案
  • B.增加正则化强度← 正确答案
  • C.降低模型复杂度← 正确答案
  • D.增加特征数量

答案:ABC。高方差的本质是“记太细、泛化差”,增数据(A)压缩背答案空间、正则化(B)约束参数别太极端、降复杂度(C)让模型更朴素,三者都能缩小 Gap。加特征(D)通常加剧过拟合,属于反向操作。

Q10. 完整诊断一个模型的偏差-方差状态,至少需要学习曲线提供哪些信息?

多选题 · extreme

  • A.训练集平均分← 正确答案
  • B.验证集平均分← 正确答案
  • C.两条曲线的差距及随样本量的变化趋势← 正确答案
  • D.单次划分的训练集大小

答案:ABC。诊断需要三件套:训练均值(平时成绩)、验证均值(考试成绩)、二者差距及走势(是否收敛、$g_0$ 是否顽固)。D 的“单次划分的训练集大小”是孤立的配置参数,不构成诊断依据。只有综合 A+B+C 才能区分高方差、高偏差、健康三种状态。