Skip to content

输入关键词开始搜索

主动学习实验:熵采样真的比随机采样更有效吗


这次实验想验证一个很具体的问题:

当标注数据有限时,主动学习能不能比随机挑样本更划算?

实验任务是 IMDB 情感分类。

我把训练集看成一个“未标注池”,一开始只给模型少量已标注样本。之后模型每一轮自己挑一批样本进行“标注”。这里的标注是模拟的,因为 IMDB 原本就有真实标签,只是实验中先把它们藏起来。

本次主要比较两种采样策略:

random sampling
entropy sampling

最终结果如下:

策略标注比例标注样本数AccuracyF1
random10%25000.85260.8572
random30%75000.87510.8758
random50%125000.88010.8798
entropy10%25000.85290.8539
entropy30%75000.87680.8747
entropy50%125000.88430.8830

整体看,熵采样在 Accuracy 上略高于随机采样,但优势不算大。


很多机器学习任务里,数据本身并不难获得,难的是标签。

比如文本分类任务中,原始文本可以批量收集,但每条文本属于哪个类别,需要人工判断。

如果每条数据都人工标注,成本会很高。

主动学习的思路是:

不要盲目标注所有数据
让模型优先挑选最值得标注的样本

更直白一点:

模型先告诉我们它最拿不准哪些样本,然后我们优先给这些样本打标签。

这样做的目标不是让模型看更多数据,而是让有限的标注预算更有价值。

在文本分类任务中,常见主动学习策略包括:

随机采样
不确定性采样
熵采样
margin sampling
least confidence
多样性采样
代表性采样

这次实验只做课程要求里的两个策略:

random sampling
entropy sampling

IMDB 是一个经典英文电影评论情感分类数据集。

任务很简单:

输入:一段电影评论
输出:正面评价或负面评价

标签含义是:

0 = negative
1 = positive

数据规模如下:

训练集:25000 条
测试集:25000 条

我使用全样本进行实验。

训练集被当作主动学习的样本池,测试集只用于最终评估。


本实验没有使用 BERT,而是采用传统文本分类方案:

TF-IDF 特征
SGDClassifier 线性分类器
modAL 主动学习框架

这样做有两个原因。

第一,图片要求中明确提到了 modAL。这个框架更适合和 scikit-learn 模型配合,用来快速实现池式主动学习。

第二,主动学习需要反复训练模型、查询未标注池。如果直接用 BERT,每一轮都要重新训练和预测,成本会明显增加。用 TF-IDF 加线性分类器,实验更快,也更容易观察采样策略本身的影响。

实验参数如下:

配置项设置
数据集IMDB
特征方法TF-IDF
最大特征数50000
分类器SGDClassifier
初始标注数500
每轮查询数500
记录点10%、30%、50%
评价指标Accuracy、F1

实验流程可以概括为:

随机抽取 500 条样本作为初始标注集
训练分类器
使用采样策略选择下一批样本
读取真实标签,模拟人工标注
加入训练集重新训练
在 10%、30%、50% 标注比例处评估模型

随机采样是最简单的 baseline。

它不考虑模型当前的判断,也不看样本难度,只是随机选择一批未标注样本加入训练集。

它的作用是提供一个对照:

如果不用主动学习策略,只是随机标注,模型能达到什么效果?

随机采样结果如下:

标注比例标注样本数AccuracyF1
10%25000.85260.8572
30%75000.87510.8758
50%125000.88010.8798

可以看到,随机采样本身已经很强。

只用 10% 标注数据时,Accuracy 就达到了 0.8526。

这说明 IMDB 这个任务在 TF-IDF 加线性分类器设置下并不算特别困难。


熵采样属于不确定性采样的一种。

它关注的是模型预测分布的不确定程度。

对于二分类任务,如果模型预测某条评论为正类的概率接近 0.5,说明模型很犹豫,这条样本就更值得标注。

简单理解:

模型越不确定
样本信息量可能越高
越应该优先标注

熵采样的结果如下:

标注比例标注样本数AccuracyF1
10%25000.85290.8539
30%75000.87680.8747
50%125000.88430.8830

熵采样在 Accuracy 上三个记录点都略高于随机采样。

不过 F1 指标在 10% 和 30% 标注比例下略低于随机采样,只有在 50% 时超过随机采样。

所以这次实验不能简单说熵采样全面胜出。

更准确的说法是:

熵采样在 Accuracy 上略有优势,但整体提升有限。


两种策略的 Accuracy 对比如下:

标注比例Random AccuracyEntropy Accuracy提升
10%0.85260.8529+0.0003
30%0.87510.8768+0.0017
50%0.88010.8843+0.0042

F1 对比如下:

标注比例Random F1Entropy F1变化
10%0.85720.8539-0.0033
30%0.87580.8747-0.0011
50%0.87980.8830+0.0032

平均来看:

Accuracy 平均提升约 0.0021
F1 平均变化约 -0.0004

也就是说,熵采样确实带来了一点 Accuracy 提升,但幅度并不明显。


Accuracy 曲线中,两条线整体走势接近。

随着标注比例增加,随机采样和熵采样的效果都在提升。

10% → 30%:提升比较明显
30% → 50%:提升变小

这说明模型在前期对新增标注数据更敏感。

当标注比例已经达到 30% 以后,再继续增加标注样本,收益开始变小。

这种现象也比较符合直觉:模型一开始缺少标签,多给一些标注样本能快速改善效果;后面模型已经学到主要模式,新增数据带来的边际收益会下降。


这个结果其实很正常。

我觉得主要有三个原因。

IMDB 是经典二分类任务。

TF-IDF 加线性分类器已经能得到不错的结果。

随机采样在 10% 标注比例下就达到了:

Accuracy = 0.8526

baseline 已经很高,熵采样可提升空间自然有限。

2. 批量查询会削弱精细选择能力

Section titled “2. 批量查询会削弱精细选择能力”

本实验每轮查询:

500 条样本

批量查询的好处是运行快。

但它也会带来一个问题:模型一次性挑很多样本,样本之间可能重复、相似,主动学习的选择优势会被稀释。

如果每轮只查询 50 条或 100 条,熵采样可能更有优势,但实验轮数会增加很多。

熵采样只看模型是否犹豫。

但模型最犹豫的样本,不一定覆盖了足够多的数据模式。

有些高熵样本可能非常相似。

如果只挑这些样本,模型获得的信息不一定比随机采样多很多。

这也是主动学习中经常遇到的问题:只看不确定性,可能忽略样本多样性。


这次实验的主要结论有三个。

第一,更多标注数据确实能提升模型效果。

无论是随机采样还是熵采样,Accuracy 和 F1 大体上都随着标注比例增加而提高。

第二,熵采样在 Accuracy 上略优于随机采样。

尤其在 50% 标注比例下:

random Accuracy = 0.8801
entropy Accuracy = 0.8843

提升为:

+0.0042

第三,主动学习并不是一定大幅领先随机采样。

在这次实验里,熵采样的优势比较小,F1 指标在部分记录点还低于随机采样。

这说明主动学习效果会受到很多因素影响,例如:

任务难度
特征表示
模型类型
不确定性估计质量
查询批大小
样本多样性

结合这次实验,我觉得主动学习更适合这些场景:

数据容易收集,但标签昂贵
未标注样本数量很大
人工标注预算有限
模型能给出相对可靠的不确定性
样本之间差异较大
希望尽快找到高价值训练样本

例如:

医学文本标注
法律文档分类
舆情风险识别
工业缺陷检测
专业领域文本审核
低资源语种分类

这些任务的共同点是:原始数据不一定难拿,但高质量标签很贵。

这种情况下,主动学习的意义会比 IMDB 这种标准数据集更明显。


这次实验只是一个基础版本。

后续可以继续做几个改进。

当前每轮查询 500 条样本。

可以改成:

50
100
200

这样能更细地观察主动学习策略的影响。

缺点是训练轮数会增加。

当前只跑了一个随机种子。

如果要让结果更稳,可以跑:

seed = 1
seed = 2
seed = 3
seed = 4
seed = 5

然后取平均值和标准差。

这样可以避免某次随机初始样本影响结论。

除了随机采样和熵采样,还可以加入:

least confidence
margin sampling
BALD
core-set
diversity sampling

这样可以更完整地比较主动学习策略。

当前实验使用 TF-IDF 和线性模型。

后续可以尝试:

BERT-tiny
DistilBERT
bert-base-uncased

不过主动学习需要反复训练和预测,使用深度模型后耗时会明显增加。


这次实验用 IMDB 情感分类任务比较了随机采样和熵采样两种主动学习策略。

实验结果表明:

熵采样在 Accuracy 上整体略优于随机采样
两种策略的 F1 差距很小
标注比例越高,模型效果越好
主动学习收益在当前设置下并不明显

最核心的结果是:

策略10% Accuracy30% Accuracy50% Accuracy
random0.85260.87510.8801
entropy0.85290.87680.8843

我的理解是:

主动学习不是一个保证稳赢随机采样的方法,它更像是一种节省标注成本的策略。它是否有效,取决于模型的不确定性是否可靠,以及被选中的样本是否真的能补足模型当前的弱点。

在这次 IMDB 实验中,熵采样确实略有优势,但优势不大。

如果放到标注成本更高、类别更复杂、样本差异更大的任务里,主动学习的价值可能会更明显。