超详细的主动学习Active Learning介绍【理论+代码】

博客介绍了机器学习中的主动学习,指出其目的是标记少量数据训练出好模型。阐述了主动学习的应用场景,包括基于数据池、数据流和合成样本查询的主动学习。还介绍了主动学习的流程、常用查询策略,并给出回归和分类任务的代码示例,提供了ModAL库和ALiPy库的文档与代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么要主动学习?

机器学习主要研究计算机如何利用经验数据提高自身性能。在监督学习中,数据的质量和数量直接决定模型的性能高低,监督学习不仅要求数据全部是标记好的,并且需要大量的数据,然而人工标注大量数据需要耗费巨大的时间和精力,一个更合理的方案是挑选一部分数据进行标注,这就要提到机器学习中的主动学习。

实际上,不同数据样本对于学习模型的贡献度不一样,过多的低质量数据反而会降低模型的鲁棒性,如果我们能够选取一部分最有价值的数据进行标注,就有可能仅基于少量数据就能获得同样高效的模型。实现这一目标的关键在于,如何选择出最有价值的数据样本并去获取它们的标记信息。

主动学习地目的是通过标记少量的数据训练处表现较好的模型。其核心任务是制定选择样本的标准,从而选择尽可能少的样本进行标注来选出一个好的学习模型。

二、主动学习的应用场景

1.基于数据池的主动学习

是最常见的一种场景,给定未标记的样本数据池,通过算法每次从未标记数据池中选择最具代表性的样本,交给标注者标注,然后向训练集中添加这些新的样本更新训练集,基于新训练集继续更新模型,进入下一次迭代。

2.基于数据流的主动学习

基于数据流的主动学习将未标记的数据逐一通过选择算法决定是否需要标注当前样本,若不选择则丢弃样本。该场景适用于数据量较大且数据源是流式而又无法保存下来所有数据的情况。

3.基于合成样本查询的主动学习

基于合成样本查询的主动学习并不是从已有的样本中选择来查询标记信息,而是直接从特征空间里合成出新的样本进行查询。这种方法可以解决标记数据难以获得的问题,但是由于新和成的样本可能是特征空间里任意取值组合产生的,因此在某些应用问题中可能导致人类专家也无法标注这些合成样本。例如在图像分类任务中,任意像素取值合成的图片可能并不能呈现清晰的语义,因此合成样本的质量和真实性可能会对算法的效果产生影响。

三、主动学习的流程

1.主动学习的步骤

主动学习的步骤如下图所示:
在这里插入图片描述

1)首先在未标记的数据集中选取少量样本进行标注,构成训练集;
2)选取训练模型,使用少量标注样本的训练集对模型进行训练,此时模型的性能不高;
3)使用训练好的模型预测未标注的样本;
4)定义查询策略(包括度量预测的不确定度以及应用于请求标注的查询策略),根据策略返回未标注样本的优先级评分,选择出的需要标注的数据,进行人工标注;
5)将新选择的数据加入到训练集中更新训练集,使用更新后的训练集来训练模型;
6)判断模型是否达到停止准则?若未达到停止标准,则继续利用查询策略选择需要被标记的样本并进行人工标注,循环第4-5-6步,直到达到停止标准(这个准则可以是迭代次数,也可以是准确率等指标达到设定值例如模型精度超过99%),表示模型已训练好可以应用。

2.主动学习的模型

主动学习算法模型定义为:A= (C, L, S, Q, U);其中C为一个或一组分类器(当有多个模型时,可使用集成模型),L为已标注的训练样本集,U为整个未标注样本集,S为督导者,对U中未标注样本进行标注,Q为查询函数,用于在U中查询信息量大的样本。
在这里插入图片描述

3.常用查询策略

查询策略(Query Strategy Frameworks)是主动学习的核心之处:按照什么准则来选择被查询的样本?目前的方法分为三种:基于信息量的查询策略、基于代表性的查询策略和综合多种准则的查询策略。

  1. 基于信息量的查询策略

最常见的一种,基本思想是选择那些能最大限度减小当前模型不确定性的样本进行查询。具体而言,信息量又可以通过模型预测的置信度、模型错误率下降期望、委员会投票等多种形式进行度量。这类方法选择样本时只基于现有的已标记样本,忽略了大量的未标记样本中蕴含的数据分部信息,可能导采样偏差问题。

  1. 基于代表性的查询策略

倾向于选择那些更能刻画数据整体分布的未标记数据进行标记查询。这些方法往往通过聚类或密度估计等无监督技术来评估样本的代表性,由于忽略了已标记样本因此整体性能也可能会依赖于聚类结果的好坏。

  1. 综合多种准则的查询策略

能够同时考虑选择样本的信息量和代表性,能够有效避免采样偏差和依赖聚类结果的问题。近年来已有研究者从不同角度提出综合多种查询准则的主动学习方法,并展示出较好的实验性能。

这里给出最常用的不确定性度量的查询策略:

(1)不确定性采样的查询

最小置信度(Least confidence)
选择那些最大概率最小的样本进行标注。即对于每个数据点的选择概率的最大值从小到大进行排序。用公式表示就是:
在这里插入图片描述
在这里插入图片描述

其中, y ^ \hat{y} y^对x而言是模型预测概率最大的类别,   P θ ( y ^ │ x ) \ P_\theta (\hat{y}│x)  Pθ(y^x)指的是最大概率的类别对应的概率。举例:假设两个样本预测结果如下:

Data Class1 Class2
x1 0.9 0.1
x2 0.58 0.42

那么第一样本预测概率最大的类别是Class1,概率为0.9,第二个样本预测概率最大的类别是Class1,概率为0.58,这时0.58<0.9,因此第二个样本更“难”被区分,因此更有被继续标注的价值。再如:

Data Class1 Class2 Class3
x1 0.9 0.05 0.05
x2 0.58 0.22 0.2
x3 0.2 0.6 0.2
x4 0.1 0.1 0.8

那么第一个样本预测概率最大的类别是Class1,概率为0.9,第二个样本预测概率最大的类别是Class1,概率为0.58,第三个样本预测概率最大的类别是Class2,概率为0.6,第四个样本预测概率最大的类别是Class3,概率是0.8,此时0.58<0.6<0.8<0.9,因此第二个样本更 “难”被区分,更有被继续标注的价值。

最小置信度方法考虑那些模型预测概率最大但是可信度较低的样本数据。是最简单,最常用的方法,它通过置信度排序以最低的置信度对其预测的样本进行采样。

边际抽样(Margin Sampling)
该方法与最小置信度法类似,不同在于该方法考虑最大概率和第二大概率的差异。边际抽样选择那些极容易被判定成两类的样本数据,这些数据被判定成两类的概率相差不大,即选择模型预测最大和第二大的概率差值最小的样本。公式表示为:
在这里插入图片描述
其中 y ^ 1 \hat{y}_1 y^1 y ^ 2 \hat{y}_2 y^2对x而言分别是模型预测概率最大的类别和第二大可能的类别。举例:

Data Class1 Class2 Class3
x1 0.9 0.05 0.05
x2 0.58 0.22 0.2
x3 0.2 0.6 0.2
x4 0.05 0.15 0.8

那么第一个样本预测为最大可能的类别为Class1,概率为0.9,第二大可能的类别为Class2/ Class3,概率为0.05,因此最大可能类别与第二大可能类别的概率差为0.9-0.05=0.85,同样地第二个样本的概率差为0.58-0.22=0.36,第三个样本的概率差为0.6-0.2=0.4,第四个样本的概率差为0.8-0.15=0.65,优先级排序为0.36<0.4<0.65<0.85,因此第二个样本更 “难”被区分,更有被继续标注的价值。

边际抽样得分较低的数据点是被标记为最可能类的点;同时是模型在最可能的类别和第二个最可能的类别之间不确定的数据点。

熵(Entropy)
熵指的是系统的混乱程度或无序程度。熵越大反映系统不确定性越大。因此,选择熵大的样本进行标注有利于提升模型性能。基于熵选取样本的公式如下:
在这里插入图片描述
该方法考虑了模型对某个样本的所有类别判定的结果。举例:

Data Class1 Class2 Class3
x1 0.9 0.05 0.05
x2 0.58 0.22 0.2
x3 0.2 0.6 0.2
x4 0.05 0.15 0.8

对于第一个样本-0.9ln0.9-0.05ln0.05-0.05ln0.05=0.394,对于第二个样本-0.58ln0.58-0.22ln0.22-0.2ln0.2=0.97,对于第三个样本-0.2ln0.2-0.6ln0.6-0.2ln0.2=0.95,对于第四个样本-0.05ln0.05-0.15ln0.15-0.8ln0.8=0.613,优先级排序0.97>0.95>0.613>0.394,因此第二个样本更 “难”被区分,更有被继续标注的价值。

(2)基于委员会的查询(Query-By-Commitee)

不确定性采样的查询策略只使用单个模型,基于委员会的查询考虑多个模型。类似于集成学习。它通过多个模型进行投票的方式选择出较为难区分的数据。包括两个步骤:首先使用多个模型构成委员会;然后委员会中所有模型对所有未标记样本进行预测,筛选出投票最不一致的样本进行标注。

投票熵(Vote Entropy)
当多个模型将样本都投票为某一类,代表该样本容易区分,当多个模型对某个样本的投票结果都不一致时,代表带样本难以区分,需要重点关注。这种场景下可以用熵来衡量数据被多个模型投票的难易程度,数学公式表达如下:
在这里插入图片描述
其中, y i {y}_i yi表示第i类,V( y i {y}_i y

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值