Activate Learning 入门

date
Nov 10, 2022
Last edited time
Mar 28, 2023 08:05 AM
status
Published
slug
Activate_Learning入门
tags
DL
DataCenric
summary
老存货了
type
Post
Field
Plat

Activate Learning

在主动学习中,算法从一组未标注的数据点中选择信息量最大的点,比如具有高信息增益的点或模型在其上具有不确定性的点,然后再进行人工标注。这种方法的好处是,所需的数据数量比标准的监督学习所需的数据量要少得多。
简单来说, 主动学习的思路就是选择一批容易被错分的样本数据,让人工进行标注,再让机器学习模型训练的过程。
从二进制分类的例子中,我们可以很容易地理解和可视化为什么我们只选择几个特定的数据样本进行标记。
notion image
在上图中,(a) 表示一个未标记数据集的大型池。现在如果我们随机选择一些样本进行标记和训练,算法将预测决策边界,如(b)所示。现在,如果我们采用主动学习采样策略来选择用于标记和训练的数据样本,那么主动学习算法将只选择最接近实际决策边界的数据样本,而忽略不相关的数据样本,如 © 所示。
在机器学习的建模过程中,通常包括样本选择,模型训练,模型预测,模型更新这几个步骤。在主动学习这个领域则需要把标注候选集提取和人工标注这两个步骤加入整体流程,也就是:
  1. 机器学习模型:包括机器学习模型的训练和预测两部分;
  1. 待标注的数据候选集提取:依赖主动学习中的查询函数(Query Function);
  1. 人工标注:专家经验或者业务经验的提炼;
  1. 获得候选集的标注数据:获得更有价值的样本数据;
  1. 机器学习模型的更新:通过增量学习或者重新学习的方式更新模型,从而将人工标注的数据融入机器学习模型中,提升模型效果。
notion image
通过这种循环往复的方法,就可以达到人工调优模型的结果。

Active Learning Scenarios

  1. Membership Query Synthesis: In this, the active learning algorithm generates a new unlabeled instance within the input space and queries the oracle for labeling.
  1. Stream-based Selective Sampling: In stream-based selective sampling, the unlabeled data sample is continuously being sent from the data source to the active learner. The active learner has to decide whether to ask the oracle to label the current data sample or not based on a query strategy. The distribution of the data coming from the data source may change over time.
  1. Pool-based Sampling: In this scenario, the data samples are chosen for labeling by the oracle from the pool of unlabeled data samples. In contrast to stream-based selective sampling, we can focus on more than one data sample at a time. Most informative data samples are selected from the pool of unlabeled data samples based on some sampling strategies or informativeness measure. This is the most common learning situation for active learning algorithms.

Query Strategy Frameworks

基于不确定性采样的查询(Uncertainty Sampling

顾名思义,不确定性采样的查询方法就是将模型中难以区分的样本数据提取出来,提供给业务专家或者标注人员进行标注,从而达到以较快速度提升算法效果的能力。而不确定性采样方法的关键就是如何描述样本或者数据的不确定性,通常有以下几种思路:
置信度最低(Least Confident)
对于二分类或者多分类的模型,通常它们都能够对每一个数据进行打分,判断它究竟更像哪一类。例如,在二分类的场景下,有两个数据分别被某一个分类器预测,其对两个类别的预测概率分别是:(0.9,0.1) 和 (0.51, 0.49)。在此情况下,第一个数据被判定为第一类的概率是 0.9,第二个数据被判定为第一类的概率是 0.51,于是第二个数据明显更“难”被区分,因此更有被继续标注的价值。所谓 Least Confident 方法就是选择那些最大概率最小的样本进行标注,用数学公式描述就是:
其中  ,这里的   表示一个已经训练好的机器学习模型参数集合。  对于  而言是模型预测概率最大的类别。Least Confident 方法考虑那些可信度较低的样本数据。
边缘采样(Margin Sampling)
边缘采样(margin sampling)指的是选择那些极容易被判定成两类的样本数据,或者说这些数据被判定成两类的概率相差不大。边缘采样就是选择模型预测最大和第二大的概率差值最小的样本,用数学公式来描述就是:
其中   和  分别表示对于  而言,模型预测为最大可能类和第二大可能类。
熵方法(Entropy)
熵(Entropy)可以来衡量一个系统的不确定性,熵越大表示系统的不确定性越大,熵越小表示系统的不确定性越小。因此,在二分类或者多分类的场景下,可以选择那些熵比较大的样本数据作为待定标注数据。用数学公式表示就是:
相较于 least confident 和 margin sample 而言,entropy 的方法考虑了该模型对某个   的所有类别判定结果。而 least confident 只考虑了最大的概率,margin sample 考虑了最大的和次大的两个概率。
notion image

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

除了考虑单个模型的不确定性采样方法之外,还可以考虑多个模型的场景,这就是类似集成学习的方法。通过多个模型投票的模式,来选择出那些较“难”区分的样本数据。
在 QBC(Query-By-Committee)的技术方案中,可以假设有  个模型,其参数分别是  ,并且这些模型都是通过数据集  的训练得到的。
在 EQB 方法中,建立模型的方法是不同的。在这种方法中, 个训练集是通过使用原始数据集中的“抽取并放回”策略创建的。原始完整数据集的这 个子集被馈送到 个不同的模型进行训练。然后这些模型用于对未标记的数据样本池进行预测。
QBC 和 EQB 通常也包括两种方法:
投票熵(Vote Entropy)
对于这种多模型  的场景而言,可以用熵来衡量样本数据被这些分类器区分的难易程度,如果这些分类器都把样本数据划分到某一类,则容易区分;如果分类器把样本数据划分到多类,则表示难以区分,需要重点关注。用数学公式表达就是:
其中  表示第  类,求和符号表示将所有的类别  相加,  表示投票给  的分类器个数,  表示分类器的总数,并且  。
平均 KL 散度(Average KL Divergence)

基于密度权重的选择方法(Density-Weighted Methods)

有的时候,某个数据点可能是异常点或者与大多数数据偏差较大,不太适合做样本选择或者区分,某些时候考虑那些稠密的,难以区分的数据反而价值更大。于是,可以在使用不确定性采样或者 QBC 方法的时候,将样本数据的稠密性考虑进去。用数学公式表示就是:
在这里,  表示某个不确定性采样方法或者 QBC 方法,  表示指数参数,  表示第  类的代表元,  表示类别的个数。加上权重表示会选择那些与代表元相似度较高的元素作为标注候选集。
notion image

其他选择方法

  • 期望模型变化(Expected Model Change)
    • 模型变化最大其实可以选择那些使得梯度变化最大的样本数据。
  • 期望误差减少(Expected Error Reduction)
    • 可以选择那些通过增加一个样本就使得 loss 函数减少最多的样本数据。
  • 方差减少(Variance Reduction)
    • 选择那些方差减少最多的样本数据。

Reference

 

Activate Learning for Deep Learning

将主动学习和深度学习结合起来很困难, 原因如下。
  1. 深度神经网络并不擅长判断何时不确定。最终 softmax 层的输出往往过于自信。
  1. 深度神经网络的计算量很大,因此您通常希望一次选择包含许多图像的批次进行注释。
    1. 但是到目前为止我们看到的采集函数告诉我们如何选择单个最佳图像,而不是一批图像。

Deep Bayesian Active Learning(DBAL)

主动学习active learning(一)--基于batch不确定性(MCDropout & BatchBALD)
性能良好的深度学习模型往往需要大量的标注数据来做训练,这对于需要专业知识才能做标注的领域就很不友好,例如医学影像,和我正在做的水下生物图像。各种各样迷惑的珊瑚,非专业的盆友们很难认出这是啥?而费尽心力,辛辛苦苦标注一组,又因为优势品种的珊瑚占据了采集图像的极大比例,也就是极度的样本不平衡,多数的标注都是对头部类的(head-class)带来很多冗余标注,而尾部类(tail-class)的标注样本少的可怜,总之,难搞哦。 这时候就该上线主动学习(active learning)了。 主动学习通过选择合适的样本,论文中经常称之为most informative samples来标注,从而大大减小所需标记的样本数,减少了标注的样本 ,也能缩短训练时间。在介绍具体实现方法之前,先贴出主动学习标注数量和性能的对比图。在我们用的非常令人暴躁的数据集上,使用24%的训练数据即可达到相当可观的效果。 二、基于不确定性的主动学习方法 BALD(Bayesian Active Learning by Disagreement)概念[1] 首先就需要定义我们想要什么样的样本来训练模型,基于不确定性的主动学习方法中经典的MC dropout这一支方法认为,我们想要通过训练样本,尽可能快的减小模型参数\theta可能的假设,也就是最小化给定标注样本D下,参数的不确定性。(原文是The central goal of information theoretic active learning is to reduce the number possible hypotheses maximally fast, i.e. to minimize the uncertainty about the parameters). 在信息论的视角下,也就是最小化条件熵H,式(1) D'=argmin_{D}H[\theta|D] (1) 实际做的时候,需要贪婪找到一个能使当前模型熵最大程度减少的数据点x,也就是式(2) x'=argmax_{x} [ H[\theta|D]-E_{y\sim p(y|x,D)}[H[\theta|D,x,y]] ] (2) 但,模型参数维度很高,直接求解(2)可太难了。所以不如变身,式(2)等价成求解在给定数据D和新增数据点x条件下,模型预测和模型参数之间的互信息,即式(3) argmax_{x}[H[y|x,D]-E_{\theta\sim p(\theta|D)}H[y|x,\theta]] (3) 2.
主动学习active learning(一)--基于batch不确定性(MCDropout & BatchBALD)
基于不确定性的 acquisition function 是许多经典AL算法的重要研究方向。而传统的DL方法很少表现这种模型的不确定性。为了解决这个问题, 深度贝叶斯主动学习被提出, 贝叶斯神经网络描述如下.

Deep Bayesian Network

贝叶斯神经网络能够表现出模型的不确定性。在给定的输入集 输出 属于类别 ,贝叶斯神经网络模型可定义为 , 在参数空间上的先验分布(通常是高斯分布), 概率 通常为 给定. 我们的目标是得到 的后验分布:
对于给定的数据点 其预测 为:

Monte Carlo dropout(MC Dropout)

使用 Monte Carlo dropout,我们将模拟这样一种情况,即每个神经元输出都有一个伯努利先验,乘以该神经元输出的实际值。 现在我们可以通过运行网络并在测试时应用 dropout 从神经元先验中进行采样。如果我们多次应用 dropout 并对结果求和,我们就是在进行蒙特卡洛积分。让我们把它分解成几个步骤:
  1. 我们有一个贝叶斯神经网络和一个输入图像 。为了获得类别 的输出,我们将检查所有可能的权重配置,并根据每个配置的概率对其进行加权。
  1. 我们不知道实际的真实参数分布,但我们可以假设它们属于伯努利分布而对它们进行近似。我们可以模拟伯努利分布,只要使用Dropout就可以了。
  1. 为了近似,我们应用蒙特卡洛积分,通过多次运行有 dropout 的网络,并对结果进行汇总。当 变大时,近似值会变得更好。

Bayesian Active Learning by Disagreement(BALD)

基于不确定性的主动学习方法中经典的MC dropout这一支方法认为,我们想要通过训练样本,尽可能快的减小模型参数 可能的假设,也就是最小化给定标注样本 下,参数的不确定性。
即基于信息论的主动学习核心目标是快速地降低可能的假设数量,即根据香农熵最小化参数的不确定性,用式子表述是:
这个问题是NP-hard,可用贪心近似找到一个能使当前模型熵最大程度减少的数据点 ,也就是下式
但模型参数 维度很高,直接求解计算代价大. 等效的方法是求解在给定数据 和新增数据点 条件下,模型预测和模型参数之间的互信息
互信息大, 表示了 模型预测和模型参数 之间的依赖程度就越高, 那么其真实结果对于模型参数也就越重要.
这里的底层逻辑是 “为模型找到一个关于类别 ,不确定性最大的 (高 ),且对于某个特定的参数 此样本对应的熵需要最小化(低 )。这可以被解释为寻求后验参数对结果的分歧最大的 .
中的 由贝叶斯模型估计的, 其值为 , 我们可以使用 MC Dropout 方法得到. 中的 是使用经过数据集 训练后得到的模型 与 输入 估计得到的. 其第一项 意味找到平均输出具有高熵的样本, 第二项找到抽样模型中平均熵低的样本, 即惩罚那些许多抽样模型没有信心的图像。这样就只保留了模型意见不一致的图像。
互信息的解释
  1. 如果我们使用 MC Dropout 对许多网络进行采样,并且他们对输出不一致,这意味着其中一些网络的参数是错误的。所以我们使用 寻找平均输出中具有高熵的图像, 我们可以使用此图像来更正模型错误的参数.
  1. 但是如果经过 MC Dropout 后的许多网络具有高熵, 那么平均输出的熵也会很高, 也就是说模型普遍认为该样本令人困惑, 也许这个样本是由于有巨大的遮挡导致无法清晰的判别类别, 因此我们需要使用 惩罚那些对许多模型都具有高熵的样本.

Deep Bayesian Active Learning with Image Data

在贝叶斯神经网络中,模型中的每个参数都是从分布中采样的。然后,在进行推理时,我们需要整合所有可能的参数。所以我们使用无限不同网络的集合来计算输出。
我们的目标是找到最大化模型输出和模型参数之间的互信息的图像。
如果我们应用蒙特卡洛近似,我们得到:
为了获得第一项,我们对每个样本运行多次dropout预测,先取平均再算熵。 为了获得第二项,我们进行了多次运行多次dropout预测,测量每次运行的熵,然后取平均值。

主动学习里的模式崩溃 Mode collapse in active learning

notion image
在训练期间,数据集不一定是平衡的。采集策略可能倾向于从某些类别中获取更多的图像。上图显示了这种情况发生在常见的基于不确定性的采样方法上, 而随机采集最终带来的数据集比主动学习要平衡得多。 它表明根据图像的难度来评分是不够的,我们必须以某种方式来优化拥有多样化的数据集。当然,仅仅拥有足够多的所有类别的图片是不够的。理想情况下,我们也要捕捉每个类别中的子类别。这将我们引向下一部分关于 "批量感知 "的方法,在这里我们将看到一些尝试结合不确定性采样多样性采样的工作。
BatchBALD 扩展了 BALD,它通过估计多个数据点和模型参数之间的联合互信息来考虑数据点之间的相关性。

BatchBALD: Efficient and Diverse Batch Acquisition for Deep Bayesian Active Learning

在 BALD 中,单个数据点的采集函数是模型参数和模型输出之间的互信息:
在这项工作中,目标是一次性选择一批图像,所以他们的采集功能改为。
假设我们有 3 个批量大小,并且有两个具有高 BALD 采集分数的图像:,以及另一个与 重复的图像:
如果我们逐个选择批量图像,我们将选择 ,因为它们都有高分。 是多余的,因为 已经存在于批次中。而 BatchBALD 不会选择 ,因为它对总互信息没有任何贡献:
这鼓励添加与该批次中其他图像不同的信息性图像。
计算的小Trick: 由于给定 的情况下, 是条件独立的, 并使用 MC 采样方式从采样模型参数 , 得到第二项: 第一项由于联合分布中没有给定模型参数, 因此 不是独立的, 因此我们不能直接分解. 由 , 再使用公式 , 得到:

Density-based Methods

基于密度的方法,主要是从集合的角度来进行样本选择。核心集的构造是一种具有代表性的查询策略。该思想试图用核心集来表示整个原始数据集的特征空间分布,从而降低标注成本。

Active Learning for Convolutional Neural Networks: A Core-Set Approach

本文是主动学习算法多样性抽样系列中的一个例子,也是一个 "批量感知 "的方法,它试图一次选择一批图像。这里的主要想法是,我们希望训练集能够捕捉到数据集中的多样性。为了找到训练集还不能很好代表的数据,我们需要在每一步找到 "Core Set"。
1.主动学习等价为缩小核心集误差
Core Set 工作首先分析了什么样的样本子集是最有效的。由主动学习得到的损失上界来分析:主动学习挑出样本训练得到的模型损失上界 可以看作由三部分组成:
一个是泛化误差,即真实数据分布与所有训练样本分布的差异带来的误差; 第二部分是训练误差,即深度模型对给定子集拟合的误差; 第三部分是核心集误差,即主动学习选出的样本损失与全体样本损失之间的差别。
作者假定深度模型良好的拟合性保证了泛化误差和训练误差都很小,因此,主动学习目标就是缩小核心集误差。
2.核心集误差等价为特征空间覆盖
但我们在主动学习挑选新样本时,并不知道样本的标签,也就没法直接求核心集损失。在这里,作者通过CNN模型的损失函数的Lipschitz性把核心集损失的上界转换做剩余训练样本与挑选出的标注样本间的最大距离  。因此,主动学习问题等价于选择添加一组标注样本,使得其他样本对标注样本集的最大距离最小,也就是k-center集覆盖问题。
notion image
三、算法实现----greedy求解
在给出了主动学习等价于一个k-center集覆盖问题之后,熟悉算法的盆友会发现,集覆盖他是个NP-hard的问题啊。求解这个问题的一个简单思路就是贪婪求解,每步选最优就得。
  • 找到一个与训练集 距离最大的图像 ,将 添加到 中,重复
我们如何定义图像之间的距离?对于图像,这篇文章使用从网络末端提取的特征向量之间的欧几里得距离。
四、结果
notion image
notion image

Hybrid Query Strategies

融合不确定性和多样性的思路主要有三种
一是完全延续信息论的分析思路,也就是 batchBALD, 在批量选择的过程中不采取每个样本互信息直接相加,而用求并的方法来避免选到冗余样本;  第二种思路比较简单,即先用不确定性标准选出大于budget size的候选集用集覆盖的思路来选择特征差异大的样本最后一种是第二种的扩展,通过在梯度嵌入空间聚类来选样本,从而避开人工给定候选样本集大小的问题。
第一种 (batchBALD)从理论上来看很优雅,从信息论的角度推出怎么在批量选择的场景里选到对模型参数改善最有效的一组样本。但计算复杂度很高,可能并不是很实用,该论文中的实验部分也都是在很小的数据集上完成的。
第二种:二步法,构建候选集+大差异样本——SA
这类方法实现起来最简单,非常启发式。整个主动学习分两步来做,第一步先用不确定性(熵,BALD等)选超出主动学习budget size的候选样本集,在用多样性的方法,选择能最好覆盖这个候选集的一组样本。
Suggestive Annotation: A Deep Active Learning Framework for Biomedical Image Segmentation 中,用Bootstrapping训练若干个模型,用这些模型预测的variance来表示不确定性,之后再用候选集种样本特征相似度来选取与已经选到的样本差异最大的样本,就类似coreset-greedy的做法。
Diversity Enhanced Active Learning with Strictly Proper Scoring Rules 中,基于Proper Scoring Rules给了表示不确定性的度量,先选出不确定性大的前k%个样本,再用kmeans聚类来选择多样的样本。

Diverse mini-batch Active Learning

为了纳入不确定性采样并选择困难的图像,他们使用了加权K-means,其中每个图像都被分配了一个来自不确定性获取函数的权重。
这样不确定性高的样本倾向处于聚类中心的位置。
对于多样性采样,他们使用K-means将数据聚类为K个集群(在图像的情况下,使用从神经网络分类器的中间层提取的特征)。然后选择最接近每个聚类中心的图像,以确保采样的图像是多样化的。
由于K-means可能很慢,他们预先过滤未标记的图像,以保留不确定性分数最高的 图像,并只对它们进行聚类( 通常为10)。
 
 
 
 
第三种:梯度嵌入空间——badge
Deep Batch Active Learning by Diverse, Uncertain Gradient Lower Bounds 其实和第二类方法的思路很像,不确定性的用模型参数就某个样本的梯度大小来表示,多样性用kmeans++来保证。但这个方法很巧妙的地方在于,通过把这个问题丢到梯度嵌入空间来做(而不像第二类方法在样本的特征空间保证多样性),使样本的多样性和不确定性能同时得到保证。
梯度范数大小表示不确定性很好理解,和之前用熵之类的指标来表示不确定性类似,模型预测的概率小,意味着熵大,也意味着如果把这样本标了,模型要有较大的变化才能拟合好这个样本,也就是求出来的梯度大。梯度表示多样性,是这类方法的独特之处,用梯度向量来聚类,选到的差异大的样本就变成让模型参数的更新方向不同的样本,而不是样本特征本身不同。在用梯度表示了不确定性和多样性之后,怎么来选一批既有高不确定性,又不同的样本呢?badge的做法是Kmeans++聚类,第一个样本选梯度范数最大的样本,之后依据每个样本梯度与选到的样本梯度的差的范数来采样新的样本。这里注意这个差是两个向量的差,所以自然的避免了重复的选到梯度方向接近且范数都比较大的一组样本。画个草图解释下,比如下面是个2维的梯度嵌入空间,1,2,3是三个类似的高不确定性的样本,4是不确定度相对较小,但与1,2,3非常不同的样本,BADGE通过计算向量差的大小就能保证选到1,4而非选梯度范数较大但冗余的1,2.
notion image
这种结合的方式没毛病,但有个小的问题,很难说清咋确定这个候选集大小,到底多大能算作高不确定性,能丢到候选集里。
K-means++

Activate Learning with GAN

Variational Adversarial Active Learning(VAAL)

VAAL 的核心思想是用变分自编码VAE来产生一个特征,训练vae的损失包含对抗损失,让VAE尽量使标注样本、未标注样本的特征分布差不多,而判别器则试图分辨标注/无标注样本。如果判别器很确信的认为无标注样本是已标注的,说明这个无标注样本已经能很好的被现有的标注样本表示了,是个很类似的样本,反之,则说明该样本与现有标注样本差别较大,应该选来标注。
notion image
其中 分别是由 参数化的编码器和解码器。是选择为单位高斯的先验, 是优化问题的拉格朗日参数。重新参数化的技巧是用来正确计算梯度的

State-Relabeling Adversarial Active Learning(SRAAL)

SRAAL是VAAL的一个改进版。在VAAL中,判别器的训练的时候只有两种状态,标注/未标注。SRAAL的作者认为,这个搞法忽略了一些信息,有时候任务模型已经能很确信的对某个未标注样本做预测了,就应该降低选择这个样本的优先级,即使按VAAL的角度来说,这个样本还不能很好的被现有标注样本表示(总感觉这地方有那么点问题)。为了实现这个思路,作者给出了一个任务模型预测不确定度的计算函数,用这个函数的输出结果作为生成对抗网络的判别器训练过程中,无标注样本的标签,而不用简单的个一个二值变量。

Learning Loss for Active Learning (LLAL)

这里的主要思想是尝试预测给定输入的学习算法的损失。更高的损失意味着它的图像更难,应该被标注。
notion image
 
他们从中间层提取特征并结合起来预测网络损失。为了学习损失,可以只在损失上增加一个附加项。MSE(Real loss, predicted loss)。但是在训练过程中,损失的规模一直在变化(因为损失通常在下降),它很难学习。作为替代, 在本文中他们建议比较图像之间的预测损失。
流程
  1. 每个大小为 的批次被分成 对图像。
  1. 在每一对中,预测两幅图像的损失。
  1. 这两个损失与 Hinge Loss 进行比较,要求这两个损失之间至少要有一个ξ的距离。
也就是说,loss prediction module 如果存在损失,一定要满足上面最后结果大于0的情况(这里假定 )。这样优化的目标就变成了增大 的预测值 ,减小 的预测值 以此让 loss 趋近于0.
另外当 , 同理.
然后在主动学习过程中,就能找到损失最大一批的图像。
 
 

论文阅读

Active Learning Literature Survey
Similarity Search for Efficient Active Learning and Search of Rare Concepts
ALICE: Active Learning with Contrastive Natural Language Explanations

常用工具

Reference


© Lazurite 2021 - 2024