想象你是一位班主任,班里有一群学生。自训练(Self-Training)的做法是:让成绩好的学生先做题,把他们写出的答案当作标准答案,再让其他同学照着这些答案学习。而自步学习(Self-Paced Learning)的做法不同:老师在批改作业时,不会对所有学生的答卷一视同仁,而是先挑那些写得比较工整、准确率高的卷子认真批改,给它们更高的权重,对写得很差的卷子先放一放,等学生进步后再回头处理。 这两种做法听起来很像,都是在“挑容易的先做”,但本质上走了两条完全不同的路:自训练在扩充训练数据,自步学习在调整样本权重。理解这个区别,就像分清“复制答案”和“挑卷子批改”——前者改变的是题量,后者改变的是评分标准。

岗位关联

对 AI 从业者来说,准确辨析这两个概念,能帮你在半监督学习、课程学习设计和训练策略选择中做出正确决策,避免方法误用,是面试和实际项目中的高频考点。

目录
  1. 可视化演示
  2. 核心概念引入
  3. 自训练原理
  4. 自步学习原理
  5. 关键区别对比
  6. 适用场景分析
  7. 实践技巧总结
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示自训练与自步学习的核心机制,通过源头/管道/节点/终端四种模式展示关键概念与交互流程。

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

自训练与自步学习:自训练与 自训练与自步学习的基本定义 自训练的伪标签扩充机制 核心机制可视化 自训练与自步学习整体架构与关键组件

核心概念引入

回到班主任的比喻。期末考试结束后,班主任发现班里有很多同学的基础题都没做对,于是想了一个办法:让班上最优秀的几位同学把基础题的答案写出来,然后把这些答案发给其他同学背诵。这就是自训练——用已经学得好的模型(优秀同学)去生成“标准答案”(伪标签),让更多数据加入学习。

与此同时,隔壁班老师采用另一种方法:她不去复制答案,而是把全班同学的卷子都收上来,先只认真批改那些写得完整、错误率低的卷子,对于写得很乱的卷子暂时不批改,等同学们通过前几轮练习进步之后,再回头批改这些难卷子。这就是自步学习——不是给所有样本同样的待遇,而是根据样本的“难度”动态分配不同的权重。

从技术角度讲,这两种方法都属于利用“容易先学”的思想,但它们解决问题的维度完全不同。自训练发生在数据层面:它把无标签数据变成有标签数据,相当于扩充了训练集。自步学习发生在优化层面:它修改的是损失函数中每个样本的系数,相当于改变了训练目标。

有了这个直觉后,我们再分别深入两种方法的内部机制。

自训练:伪标签扩充数据vs自步学习:权重调整样例\displaystyle \text{自训练:伪标签扩充数据} \quad \text{vs} \quad \text{自步学习:权重调整样例}
一句话理解:自训练是“改试卷内容”,自步学习是“改批改标准”。
  1. 核心动词对比自训练的核心动作是“生成新标签”,自步学习的核心动作是“计算新权重”。
    Self-Training:生成伪标签Self-Paced Learning:动态权重\displaystyle \text{Self-Training}: \text{生成伪标签} \quad \text{Self-Paced Learning}: \text{动态权重}
  2. 操作对象区别自训练操作的对象是“数据”,自步学习操作的对象是“损失函数中的样本系数”。
    数据扩充≠权重分配\displaystyle \text{数据扩充} \neq \text{权重分配}

自训练原理

想象班主任让优秀学生当“教师”,给其他同学批改作业。但这位“教师同学”不是每道题都敢批——只有当他非常确定某道题的答案时,才会把答案写上去;如果他自己也拿不准,宁可空着。这个“非常确定”的标准,就是自训练中的置信度阈值。

在自训练中,我们首先用一个已有的模型(称为教师模型)去预测无标签数据的标签。模型会输出一个置信度分数,比如对某张图片预测为“猫”的概率是 0.95。如果这个概率超过我们设定的阈值(比如 0.8),我们就把“猫”这个预测结果当作伪标签,把这张图片加入训练集。这个过程会反复迭代:每次训练后,模型变得更强,又能对更多无标签数据产生高置信度的预测,于是不断有新的伪标签数据加入。

Lself-training=1N∑i=1Nℓ(f(xi),yi)+1M∑j=1Mℓ(f(xj),y^j)⋅I[p(y^j)>τ]\displaystyle \mathcal{L}_{\text{self-training}} = \frac{1}{N} \sum_{i=1}^{N} \ell\left(f(x_i), y_i\right) + \frac{1}{M} \sum_{j=1}^{M} \ell\left(f(x_j), \hat{y}_j\right) \cdot \mathbb{I}\left[p(\hat{y}_j) > \tau\right]

1. 教师模型预测:先用当前模型对无标签样本 $x_j$ 进行预测,得到伪标签 $\hat{y}_j$ 和置信度 $p(\hat{y}_j)$。

{xj,y^j,p(y^j)}←f(xj)\{x_j, \hat{y}_j, p(\hat{y}_j)\} \leftarrow f(x_j)

2. 阈值筛选:设定阈值 τ,只有置信度大于 τ 的伪标签才被保留。

I[p(y^j)>τ]∈{0,1}\mathbb{I}\left[p(\hat{y}_j) > \tau\right] \in \{0, 1\}

3. 联合训练:把伪标签数据和原始有标签数据混合,共同训练模型。

L=Llabeled+Lpseudo-labeled\displaystyle \mathcal{L} = \mathcal{L}_{\text{labeled}} + \mathcal{L}_{\text{pseudo-labeled}}

这里的关键在于,自训练永不修改原始数据的标签,它只是在不断创造新的、带有伪标签的数据。就像班主任从不改动同学原有的作业本,只是不断补充新的练习题和参考答案。

自步学习原理

现在回到隔壁班。这位老师不“复制答案”,而是发明了一套复杂的“卷子筛选法”。她发现学生做第一张卷子时,全班平均分只有 60 分,于是把“批改门槛”设得很低——只要卷面分达到 55 分的卷子就认真批改,低于 55 分的先放着。随着同学们水平提高,她把门槛逐步提高到 65 分、75 分……最终所有卷子都被批改完毕。

自步学习的数学含义是把“门槛”定义为难度系数 k。每个样本 $i$ 有一个损失值 $\ell_i$,如果 $\ell_i < k$,说明这个样本“简单”,给它较高的权重(或者说直接让它在当前轮参与训练);如果 $\ell_i \geq k$,说明这个样本“难”,就把它的权重降为 0,暂时不管它。随着训练进行,k 从 0 逐渐增大,越来越多的样本被纳入训练,最终收敛到完整数据集上的优化。

min⁡w,v∑i=1nviℓi+λΦ(v;k),vi∈[0,1]\displaystyle \min_{w, v} \sum_{i=1}^{n} v_i \ell_i + \lambda \Phi(v; k), \quad v_i \in [0,1]

其中 $v_i$ 是样本权重,$\ell_i$ 是样本损失。第一项是对加权样本求和,第二项是权重正则项,它控制着训练过程从“只学容易样本”逐步过渡到“学习全部样本”。

1. 定义损失:计算每个样本在当前模型下的损失 $\ell_i$,损失越大的样本越难。

ℓi=Loss(f(xi),yi)\ell_i = \text{Loss}\left(f(x_i), y_i\right)

2. 引入权重变量:为每个样本引入权重 $v_i \in [0,1]$,表示该样本对训练的影响程度。

vi∈[0,1]v_i \in [0, 1]

3. 制定正则项:用正则项 $\Phi(v; k)$ 控制权重分布,参数 k 决定了当前“简单样本”的占比。

Φ(v;k)=−∑i=1nvi+k∑i=1nvi2\Phi(v; k) = - \sum_{i=1}^{n} v_i + k \sum_{i=1}^{n} v_i^2

4. 交替优化:先固定模型参数 w 更新权重 v,再固定 v 更新 w,反复迭代。

w∗=min⁡w∑i=1nviℓi(w)w^* = \min_w \sum_{i=1}^{n} v_i \ell_i (w)

自步学习的精髓在于循序渐进。它不改变数据的内容(样本还是那些样本),只改变数据在学习过程中的“出场顺序”和“被重视程度”,就像老师不删改任何一道题,只是决定先批哪些、后批哪些。

关键区别对比

现在我们可以把两种方法放在一张对比表里,就像把两位班主任的做法并排放在一起看。自训练的老师在增加资料:他不断收集新的参考答案(伪标签),题库越来越厚;自步学习的老师在调整策略:她手里的卷子一张没多也一张没少,只是批改的先后顺序和权重在变。

从数学本质来看,自训练的优化目标是:最小化有标签数据损失 + 伪标签数据损失。自步学习的优化目标是:最小化加权后的所有样本损失。一个是新增了求和项,另一个是给每个已有求和项加了系数。

Self-Training: min⁡w∑i∈Lℓi+∑j∈PℓjSelf-Paced: min⁡w,v∑i=1nviℓi+λΦ(v)\displaystyle \text{Self-Training: } \min_{w} \sum_{i \in L} \ell_i + \sum_{j \in P} \ell_j \qquad \text{Self-Paced: } \min_{w, v} \sum_{i=1}^{n} v_i \ell_i + \lambda \Phi(v)

1. 操作对象对比:自训练改变的是“数据集”(加入伪标签样本),自步学习改变的是“权重的集合”。

数据集扩充vs权重向量 v\text{数据集扩充} \quad \text{vs} \quad \text{权重向量 } v

2. 训练目标对比:自训练把所有被批准的伪标签样本一视同仁地加入损失;自步学习为每个样本单独设定权重。

∑jℓjvs∑iviℓi\sum_{j} \ell_j \quad \text{vs} \quad \sum_{i} v_i \ell_i

3. 收敛策略对比:自训练通过多次迭代不断扩大伪标签集;自步学习通过逐步增大难度系数 k 来释放更多样本。

τ 固定或上升vsk 从0渐增\tau \text{ 固定或上升} \quad \text{vs} \quad k \text{ 从0渐增}

所以最容易混淆的原因在于:两者都采用“由易到难”的思想,但一个“易”体现在置信度高(模型很有把握),一个“易”体现在损失小(样本本身容易)——前者是模型的主观自信,后者是样本的客观难度。

适用场景分析

我们在实际项目里怎么选?就像两位班主任要根据班级特点选择自己的策略。如果你面对的是一个半监督学习问题——手里有一堆无标签数据和一撮有标签数据,那么自训练是天然的选择,因为它的核心就是利用无标签数据。

但如果你的问题包含大量噪声标签,比如众包标注的图片数据里很多标签是错的,那自步学习会更合适。因为它可以自动识别出“损失异常高”的样本(大概率是噪声),把它们的权重降低,从而减少噪声对模型的干扰。

半监督场景: 使用自训练噪声/课程场景: 使用自步学习\displaystyle \text{半监督场景: 使用自训练} \qquad \text{噪声/课程场景: 使用自步学习}

1. 半监督适配:自训练需要大量无标签数据来生成伪标签,适配半监督学习。

labeled small+unlabeled large→Self-Training\text{labeled small} + \text{unlabeled large} \rightarrow \text{Self-Training}

2. 噪声适配:自步学习通过损失大小识别噪声样本,降低其权重,适配噪声数据场景。

ℓnoise 大 ⇒vnoise→0\ell_{\text{noise}} \text{ 大 } \Rightarrow v_{\text{noise}} \rightarrow 0

3. 课程适配:自步学习的由易到难特性与课程学习思想天然契合。

k:0→∞ 课程难度逐步提升k: 0 \rightarrow \infty \text{ 课程难度逐步提升}

另外,自步学习也常被用于异常检测任务中——把损失过大的样本视为“异常”或“难例”,不参与主要训练,这在某些图像分类场景下可以有效提升模型泛化能力。

实践技巧总结

当你需要在代码中实现这两种方法时,最重要的一步不是写代码,而是先停下来问自己:我到底想要什么?如果我想“利用无标签数据”,选自训练;如果我想“处理难样本/噪声样本”,选自步学习。(就像班主任先想清楚:我是要加资料,还是要改批改策略?)

在自训练实现中,阈值 τ 的选择非常关键。阈值设得太高,只有很少的无标签数据能被利用;阈值设得太低,会产生大量错误伪标签,反而伤害模型。一个实用的技巧是:先设定一个较高的阈值(如 0.9),然后随着迭代逐步降低阈值,这样初期的伪标签更可靠,后期又能利用更多数据。

τt=τmax⁡⋅exp⁡(−αt)\displaystyle \tau_t = \tau_{\max} \cdot \exp(-\alpha t)

1. 初始高阈值:设置 τ_max 为 0.9 以上,保证初期伪标签质量。

τ0=0.9\tau_0 = 0.9

2. 指数衰减:随迭代轮次 t 增加,阈值按指数衰减,慢慢释放更多伪标签。

τt=τmax⁡e−αt\tau_t = \tau_{\max} e^{-\alpha t}

在自步学习实现中,难度系数 k 的更新同样讲究。k 太大,模型一下子把所有样本都学完,失去了“自步”的意义;k 太小,模型永远只学简单样本,能力得不到提升。通常的做法是 k 按固定步长线性增长,或者根据验证集效果动态调整。

最终的实践经验可以总结为四个字:对症下药。先搞清楚你面对的机器学习问题的关键瓶颈,再决定使用哪种机制。两者并非水火不容,也有研究把自训练生成的伪标签与自步学习的权重分配结合起来使用,但初学者应该先分别掌握每一种的本质,再考虑混合方案。

AI 应用场景

半监督图像分类

阶段:数据准备与模型迭代训练

解决的问题:医疗影像标注成本极高,专业医生标注一张 X 光片需要大量时间。传统监督学习需要大量标注数据,成本无法承受。自训练让模型先用少量医生标注的片子学习,然后对海量未标注影像生成高置信度伪标签,自动扩充训练集。

具体案例:某三甲医院与 AI 团队合作,用 5000 张医生标注的胸片作为种子数据,配合 5 万张未标注影像进行自训练。团队设定置信度阈值 0.95,每轮迭代后通过错误分析剔除部分低质量伪标签,最终将肺炎检测的 F1 分数从 0.82 提升到 0.89。

噪声标签鲁棒训练

阶段:训练策略设计

解决的问题:电商商品分类数据来自爬虫采集,标签噪声率可能高达 20%。如果直接用这些数据训练,模型会被噪声标签带偏。自步学习通过动态权重让模型先学干净样本,再逐步处理噪声样本,自动降低错误标签对模型的影响。

具体案例:某电商平台的商品图片分类任务中,团队使用自步学习(SPL)策略,初始难度系数 k=0.2,每轮增加 0.05,配合课程式训练。相比直接使用全部数据训练,模型准确率从 86% 提升到 92%,且对噪声标签的鲁棒性显著增强。

课程式对抗训练

阶段:模型鲁棒性提升

解决的问题:深度神经网络容易受到对抗样本攻击。传统对抗训练直接加入强对抗样本,训练难度大且早期不稳定。自步学习的思想可以被引入对抗训练,先让学生模型处理简单的对抗扰动,再逐步加大扰动强度。

具体案例:某安全公司的图像识别模型部署前,团队借鉴自步学习的难度递增思想,设置扰动强度 ε 从 0.01 逐步增至 0.05,让模型先适应弱干扰再适应强干扰,最终在 PGD 攻击下的鲁棒准确率提升了 15%。

Python 演示

python51 行
import numpy as np def self_training(X_label, y_label, X_unlabel, model, conf_thresh=0.8, max_iter=5):    """自训练:反复用模型对无标签数据打伪标签并扩充训练集"""    X_train = list(X_label)    y_train = list(y_label)    for _ in range(max_iter):        model.fit(np.array(X_train), np.array(y_train))        proba = model.predict_proba(np.array(X_unlabel))        max_prob = np.max(proba, axis=1)        pseudo_y = np.argmax(proba, axis=1)        high_conf = max_prob > conf_thresh        for x, y in zip(X_unlabel[high_conf], pseudo_y[high_conf]):            X_train.append(x)            y_train.append(y)        X_unlabel = X_unlabel[~high_conf]    return model def self_paced_loss(model, X, y, k):    """自步学习:按损失大小给样本分配权重 v,损失越大权重越低"""    probs = model.predict_proba(X)    sample_loss = -np.log(probs[np.arange(len(y)), y] + 1e-8)    weights = np.where(sample_loss < k, 1.0, 0.0)    return sample_loss, weights def train_with_self_paced(model, X, y, epochs=10, k_max=2.0, k_step=0.1):    """使用自步学习策略训练:难度系数 k 逐步增大"""    k = 0.1    for epoch in range(epochs):        loss, v = self_paced_loss(model, X, y, k)        # 实际训练时在这里用 v 作为样本权重调用模型训练        # 这里展示权重分布和难度系数的变化        print(f"epoch {epoch}: k={k:.2f}, 参与训练样本数={int(np.sum(v))}/{len(y)}")        k = min(k + k_step, k_max)    return k if __name__ == "__main__":    from sklearn.linear_model import LogisticRegression    from sklearn.datasets import make_classification     X, y = make_classification(n_samples=300, n_features=10, random_state=42)    X_label, y_label = X[:100], y[:100]    X_unlabel = X[100:]     clf = LogisticRegression()    clf = self_training(X_label, y_label, X_unlabel, clf, conf_thresh=0.7)    print("自训练完成,模型参数维度:", clf.coef_.shape)     clf2 = LogisticRegression()    clf2.fit(X_label, y_label)    train_with_self_paced(clf2, X_label, y_label, epochs=5)
目的:分别模拟自训练的伪标签扩充流程和自步学习的权重分配流程,辅助理解两者在算法实现上的区别。
  1. model.fit(np.array(X_train), np.array(y_train))先用当前训练集拟合模型,这相当于让“教师模型”先学习。
  2. max_prob = np.max(proba, axis=1)计算每个无标签样本的最高置信度,作为是否打伪标签的依据。
  3. pseudo_y = np.argmax(proba, axis=1)取概率最大的类别作为伪标签,也就是“复制答案”。
  4. X_train.append(x)把高置信度的无标签样本加入训练集,这正是自训练的本质:扩充数据。
  5. sample_loss = -np.log(...)用交叉熵计算每个样本的损失,损失大意味着样本“难”。
  6. weights = np.where(sample_loss < k, 1.0, 0.0)损失小于难度系数 k 的样本权重为 1,大于的权重为 0,这是自步学习的核心筛选逻辑。
  7. k = min(k + k_step, k_max)难度系数逐步增大,训练由易到难,模拟课程学习过程。

常见误区

误区我一直以为自训练和自步学习都是“先学简单的再学难的”,只是应用场景不同,本质上是一回事。面试时候把两个概念混着说,结果被面试官问了半天区别。

正解两者虽然都体现“由易到难”的思想,但操作维度完全不同。自训练是数据层面的扩充——给无标签数据生成伪标签,加入训练集;自步学习是优化层面的权重调整——不改变数据,只改变损失函数中每个样本的加权系数。本质区别就像“增加题库”和“改变评分权重”,一个是扩充学习资料,一个是调整学习侧重点。

为何常见:因为两者在文献中经常被放在一起讨论,都涉及“简单样本优先”的策略,初学者看到它们相似的训练曲线或示意图,就容易忽略内部机制的本质差异。

误区模型输出高置信度(比如 0.95)的伪标签,那这个标签大概率是对的,可以放心加入训练集。

正解高置信度不等于高准确率,尤其是当模型本身分布外数据或模型容量不足时,模型可能“过度自信”。这就是为什么自训练通常要设置较高的置信度阈值,并且采用即使用高置信度也难以完全避免错误伪标签的传播。正确做法是:定期用验证集监测伪标签的质量,或者对伪标签数据进行重新加权,避免错误累积。

为何常见:因为人们天然会把“模型对某类预测概率高”等同于“预测正确”,忽略了模型标定(calibration)可能失准的问题。

误区自步学习不就是把损失大的样本丢掉吗?和 hard negative mining 之类的技巧差不多。

正解简单样本过滤是二元操作(保留或丢弃),自步学习通过难度系数 k 动态控制哪些样本被保留,且 k 在训练过程中渐进增大。更一般地,自步学习框架通过正则项 Φ(v; k) 引入了灵活的权重控制机制,样本权重可以是连续的 [0,1] 区间值,而不仅仅是二值的 0 或 1,且它有一个完整的交替优化的理论保证。

为何常见:很多教程为了简化展示,画出的示例图只显示“丢难样本、留易样本”的二元效果,让人误以为只是简单过滤。

误区自训练的主要应用就是半监督图像分类,其他场景用不上。

正解自训练是一种通用框架,可以用于很多任务。比如在自然语言处理中,可以用自训练做无监督段落表示学习;在目标检测中,可以用自训练让模型在大量无标注图片上生成伪检测框并进行自举训练。其核心思想——用模型自己的高置信度预测作为监督信号扩展训练集——具有很强的普适性。

为何常见:市面上很多讲解自训练的文章都拿半监督图像分类举例,导致学习者误以为自训练的适用场景局限于此。

误区自步学习里的 k 就是一个固定的损失阈值,只要损失超过 k 的样本永远不参与训练。

正解k 是一个随训练过程不断增大的动态参数,不是固定的。训练初期 k 很小,只让少量简单样本参与;随着训练推进,k 增大,困难样本逐渐被纳入。自步学习的核心正在于这个“自步”的渐进过程,如果 k 固定不变,那就退化成了简单的固定阈值过滤。

为何常见:部分简化实现的代码确实用了固定阈值的方式,初学者照着代码学习时就容易把“简化实现”当成“核心原理”。

面试题

Q1. 下列关于自训练(Self-Training)的说法,正确的是?

单选题 · easy

  • A.自训练属于典型的监督学习方法
  • B.自训练用模型预测来生成伪标签扩充数据← 正确答案
  • C.自训练通过修改样本权重实现课程学习
  • D.自训练完全不需要任何有标签数据

答案:B。自训练属于半监督学习方法,核心是用有标签数据训练的模型为无标签数据生成伪标签并扩充数据集,因此选 B。它需要少量有标签数据,不是监督学习也不是无监督学习,C 描述的是自步学习。

Q2. 自步学习(Self-Paced Learning)的核心思想是?

单选题 · easy

  • A.为无标签数据生成伪标签
  • B.让模型自动识别并丢弃所有噪声数据
  • C.按样本难度动态调整参与训练的比重← 正确答案
  • D.逐步增加神经网络隐藏层的数量

答案:C。自步学习通过为每个样本分配权重,先学习简单样本,再逐渐纳入困难样本,C 是它的核心思想。A 是自训练的描述;B 是噪声鲁棒训练但不等同于自步学习;D 是网络结构设计,与自步学习无关。

Q3. 自训练中置信度阈值 τ 的作用是什么?

单选题 · mid

  • A.控制模型学习率的大小
  • B.筛选高置信度伪标签以控制噪声← 正确答案
  • C.决定神经网络层数
  • D.调整样本权重衰减速率

答案:B。自训练中,只有置信度超过阈值 τ 的预测才会被当作伪标签加入训练集,目的是过滤低质量伪标签、减少噪声,因此选 B。学习率和网络层数是超参数,与阈值无直接关系。

Q4. 自步学习中的难度系数 k 在训练过程中通常如何变化?

单选题 · mid

  • A.固定不变
  • B.逐渐减小
  • C.逐渐增大← 正确答案
  • D.随机波动

答案:C。自步学习中 k 控制着参与训练的样本难度范围,随着模型能力增强,k 逐渐增大,让更多困难样本进入训练,实现由易到难的学习过程,所以选 C。固定不变会退化为简单过滤。

Q5. 以下关于自训练和自步学习区别的描述,正确的有?

多选题 · mid

  • A.自训练改变数据,自步学习改变权重← 正确答案
  • B.自训练是半监督方法,自步学习是优化策略← 正确答案
  • C.自训练和自步学习都只适用于图像分类
  • D.自训练用置信度筛选样本,自步学习用损失筛选样本← 正确答案

答案:ABD。自训练是在数据层面扩充伪标签,自步学习是在损失函数层面调整样本权重,A 和 D 正确;自训练属于半监督学习方法,自步学习是一种通用优化策略,B 正确;两者都可应用于多种任务而非仅图像分类,C 错误。

Q6. 当数据集包含较多错误标签时,更适合选择哪种训练策略?

单选题 · mid

  • A.自训练,因为伪标签可以修正错误
  • B.自步学习,因为可以降低困难/噪声样本权重← 正确答案
  • C.直接用全部数据训练,不需要特殊策略
  • D.增加模型参数量来拟合噪声

答案:B。自步学习能根据损失大小自动降低噪声样本的权重,减少错误标签对训练的干扰,B 正确。自训练本身也会产生伪标签噪声,不能直接修正原始错误标签;用更大模型只会加重过拟合噪声。

Q7. 在半监督学习中使用自训练时,为了提高伪标签质量可以采取哪些措施?

多选题 · mid

  • A.设置较高的置信度阈值← 正确答案
  • B.采用阈值随训练迭代逐渐降低的策略← 正确答案
  • C.完全信任模型的所有预测结果
  • D.定期用验证集评估伪标签质量← 正确答案

答案:ABD。高阈值能初期过滤低质量伪标签(A 对);阈值逐渐降低可在模型更强后利用更多数据(B 对);定期验证能发现伪标签问题(D 对);完全信任模型预测容易导致错误累积,C 错。

Q8. 自步学习的目标函数中,正则项 Φ(v; k) 的主要作用是?

单选题 · hard

  • A.防止模型过拟合特征
  • B.控制样本权重的分布和难度递进← 正确答案
  • C.加快反向传播速度
  • D.减少模型的参数量

答案:B。自步学习中 Φ(v; k) 对权重向量 v 施加正则约束,与难度系数 k 配合控制着哪些样本以何种权重参与训练,实现“由易到难”的平滑过渡,B 正确。它不直接作用于特征或网络结构,也不改变参数量。

Q9. 自训练和自步学习的本质区别在于?

单选题 · hard

  • A.一个用于图像任务,一个用于文本任务
  • B.一个是有监督学习,一个是无监督学习
  • C.自训练改变训练数据的构成,自步学习改变损失函数中的样本权重← 正确答案
  • D.自训练需要神经网络,自步学习只适用于线性模型

答案:C。自训练通过伪标签加入新的样本,改变的是数据构成;自步学习通过权重 v 改变每个样本对损失的贡献,改变的是优化目标中的权重分配,C 正确。两者都适用于多种模型和任务,不限于特定类型或结构。

Q10. 一个团队想同时利用大量无标签数据和已有噪声标签数据,合理的组合策略是?

单选题 · extreme

  • A.只用自训练,忽略数据中的噪声
  • B.只用自步学习,忽略无标签数据
  • C.先用自训练生成伪标签扩充数据,再用自步学习对扩充后数据做权重筛选← 正确答案
  • D.把两种方法独立使用,分别训练两个模型再集成

答案:C。实践中可组合使用:自训练负责将无标签数据转换为带伪标签的数据,扩充训练集;自步学习再根据损失对包括伪标签在内的所有样本进行权重筛选,降低噪声样本影响。相比 D 的盲目集成,C 通过机制互补更能同时解决“数据不足”和“标签噪声”两个问题。