这是有限样本学习的第二部分内容。这次,我们允许使用有限的预算来进行人工打标签的工作。由于预算有限,我们必须非常谨慎地去选取待标记样本。

文章目录


  1. 符号表
  2. 什么是主动学习?
  3. 采集函数
    1. 不确定采样(Uncertainty Sampling)
    2. 多样性采样(Diversity Sampling)
    3. 期望模型变化(Expected Model Change)
    4. 混合策略
  4. 深度采集函数
    1. 不确定性度量
      1. 集成及其近似
      2. 参数空间中的不确定性
      3. 损失预测(Loss Prediction)
      4. 对抗设定(Adversarial Setup)
    2. 代表性度量
      1. 核心集法(Core-sets Approach)
      2. 多样化梯度嵌入(Diverse Gradient Embedding)
    3. 测量对训练影响(Measuring Training Effects)
      1. 量化模型变化
      2. 遗忘事件(Forgetting Events)
      3. 混合方法
  5. 引用

译著:这篇文章翻译自:https://lilianweng.github.io/posts/2022-02-20-active-learning/。感谢 Lilian Weng 的分享。

符号表

符号含义
$K$不同类别的数量
$(\mathbf{x}^l, y) \sim \mathcal{X}, y \in \{0, 1\}^K$带标签数据集。$y$是真实标签的one-hot编码
$\mathbf{u} \sim \mathcal{U}$无标签数据集
$\mathcal{D} = \mathcal{X} \cup \mathcal{U}$整个数据集,包括带标签及无标签样本
$\mathbf{x}$单个样本,可为带标签或无标签
$\mathbf{x}_i$$i$个样本
$U(\mathbf{x})$用于主动学习选择的打分函数
$P_\theta(y \vert \mathbf{x})$参数为$\theta$$softmax$分类器
$\hat{y} = \arg\max_{y \in \mathcal{Y}} P_\theta(y \vert \mathbf{x})$分类起给出的概率最高的预测
$B$标签预算数量(可能被人工标记的样本的最大数量)
$b$批大小batch size

什么是主动学习?

给定一个无标签数据集$\mathcal{U}$和一个固定数量的标签预算$B$,主动学习的目标是从数据集$\mathcal{U}$中选择一个大小为$B$的子集用于打标签,而这个带标签的数据子集可以最大化改善模型的性能。这是学习的一种高效的方式,特别是在给数据打标签非常困难、代价非常大的时候,比如:医学图像。这篇经典的2010年的综述[1] 给出了许多关键的概念。许多传统的方法不能被应用到深度学习中去,这篇文章中的讨论主要聚焦于深度神经网络模型以及使用批量数据进行的训练方式。

主动学习循环工作流示意图;通过智能选择哪个样本来打标签以生成更好的模型。
图 1:主动学习循环工作流示意图;通过智能选择哪个样本来打标签以生成更好的模型。

为了简化讨论,我们在下面的章节中都假设任务是一个$K$分类问题。模型的参数为$\theta$,它输出一个标签上的概率分布$P_\theta(y\vert\mathbf{x})$,可能性最高的预测为$\hat{y} = \arg\max_{y \in \mathcal{Y}} P_\theta(y \vert \mathbf{x})$

采集函数

识别最有价值的待标记样本的过程我们称之为“采样策略”或“查询策略”。我们称在采样过程中使用的评分函数为“采集函数”,记为$U(\mathbf{x})$。评分越高的数据点在打标签后,被认为可以对模型训练越有价值。

这里给出了一些基本的采样策略。

不确定采样(Uncertainty Sampling)

不确定采样策略会选择那些可以让模型输出最不确定预测的样本。虽然大家经常会抱怨深度学习模型给出的预测经常不靠谱,并且和真实的不确定性分布不相关,这里,我们仍然通过模型的输出概率分布来估计不确定性。实际上,深度学习模型通常都过度自信了。不确定性量化公式:

  • 最小信心评分confidence score, 也被称作变动率,variation ratio):$U(\mathbf{x}) = 1 - P_\theta (\hat{y} \vert \mathbf{x})$
  • 边缘评分$U(\mathbf{x}) = P_\theta(\hat{y}_1 \vert \mathbf{x}) - P_\theta(\hat{y}_2 \vert \mathbf{x})$,其中$\hat{y}_1$$\hat{y}_2$分别为最可能和次可能的预测标签
  • $U(\mathbf{x}) = \mathcal{H}(P_\theta(y \vert \mathbf{x})) = - \sum_{y \in \mathcal{Y}} P_\theta(y \vert \mathbf{x}) \log P_\theta(y \vert \mathbf{x})$

衡量不确定性的另外一种方法依赖于专家模型池,称作QBC(Query-By-Committee)。QBC通过大量的意见来评估不确定性,因此,在整个模型池的成员中维持一定程度的不一致非常重要。给定一个模型池,其中包含$C$个模型,设它们的参数分别为:$\theta_1, \theta_2, \ldots, \theta_C$。不确定性量化公式:

  • 投票熵(voter entropy):$U(\mathbf{x}) = \mathcal{H}(\frac{V(y)}{C})$,其中$V(y)$模型池中投票给类型$y$的模型的数量
  • 一致性熵(consensus entropy):$U(\mathbf{x}) = \mathcal{H}(P_\mathcal{C})$,其中$P_{\mathcal{C}}$为模型池中所有模型的平均预测
  • KL散度$U(\mathbf{x}) = \frac{1}{C} \sum_{c=1}^C D_\text{KL} (P_{\theta_c} | P_\mathcal{C})$

多样性采样(Diversity Sampling)

多样性采样希望找到一个子样本集合,它的分布可以用来代表整个数据集的分布。因为我们希望模型可以在任何数据上都可以工作的很好,而非仅仅在少量数据上可以工作,所以,多样性是非常重要的。此类方法通常依赖于计算样本间的相似性。

期望模型变化(Expected Model Change)

期望模型变化指的是一个样本给模型训练带来的影响。这个影响可以是模型参数权重的变化,也可以是模型训练损失值的改进。后续章节中,我们回顾了一些衡量所选样本对模型影响的工作。

混合策略

上面我们介绍的很多方法都不是互相排斥的。混合样本策略通过衡量样本点的不同属性值,并且将它们合并为单个值。通常,我们想要选择那些具有高不确定性及代表性的样本。

深度采集函数

不确定性度量

模型的不确定性通常分为两大类(Der Kiureghian & Ditlevsen 2009Kendall & Gal 2017):

  • 随机不确定性(Aleatoric uncertainty)是由数据中的噪声(比如传感器在数据采样过程中引入的噪声)引入的,它可能与输入相关或无关。由于我们无法获取确切值,通常我们认为此类不确定性为不可去除的
  • 认知不确定性(Epistemic)指的是模型参数带来的不确定性,我们无法确定模型是否可以解释我们的数据。这种不确定性理论上我们可以通过喂给模型更多的数据来降低

集成及其近似

机器学习素有使用集成方法来改善模型性能的传统。当模型间存在很大不同的时候,集成方法被认为可以给出更优的结果。集成学习理论被许多机器学习算法证明是正确的。举例来说,AdaBoost集成了很多个弱学习器,但是它的表现却可以和单个的非常强的学习器相媲美,甚至超过它。Bootstrapping集成了多次重采样,以实现更准确的估计。随机森林和GBM也是集成学习的很好的例子。

为了更好地理解不确定性估计,一种非常直观的方法就是聚集一堆相互独立训练的模型。但是,由于训练单个深度神经网络模型的代价已经很大了,更不用说训练很多个。在强化学习中,Bootstrapped DQN(Osband, et al. 2016) 中使用了多个值头部(value heads),并且依赖于Q值估计集中的不确定性来引导强化学习中的探索过程。

在主动学习中,一个常用的方法就是使用dropout来模拟概率高斯过程(Gal & Ghahramani 2016)。我们可以在模型推理时,在模型上应用不同的 dropout 掩码来搜集多个样本值来估计模型的不确定性(认知不确定性)。这个过程叫MC dropout(Monte Carlo dropout),在此过程中dropout被应用到每一层的前面。此方法在数学上被证明是和概率深度高斯过程Gal & Ghahramani 2016的一个近似是等价的。这个简单的想法在小数据的分类任务上被证明是有效的。在模型不确定性需要被有效估计的场景下,这个方法得到了广泛的应用。

深度贝叶斯主动学习(Deep Bayesian Active Learning;DBAL)通过MC dropout 来逼近贝叶斯神经网络,从而学习模型权重的分布。在他们的实验中,MC dropout比随机的基线方法以及平均标准差方法表现得更好,性能接近于变动率策略和策略。

DBAL在MNIST数据集上的主动学习结果
图 2:DBAL在MNIST数据集上的主动学习结果。(图片来源:Gal et al. 2017 )

Beluch et al. (2018)比较了基于MC dropout 集成法的模型,发现朴素集成方法(也就是:独立、分别训练多个模型)和变动率的组合可以比其它方法有更好的校准预测。然而,朴素的集成方法太昂贵,所以他们探索了一些可能的更加廉价的选择:

  • 快照集成:使用一个循环学习率调度来训练一个更加含蓄的集成,这样就可以收敛到不同的局部最优解
  • 多样性集成(Diversity encouraging ensemble, DEE):将一个基础的网络训练几轮来用于$n$个不同网络的初始化,这$n$个网络都是用了dropout 来鼓励多样性
  • 多分头法:一个基础模型有多个,每一个都对应一个分类器

不幸的是,所有上面提到的廉价的集成方法的表现都比朴素集成法差。考虑到计算资源的限制,MC dropout是一个相当好并且经济的选择。自然而然地,人们也尝试了将集成法和MC dropout(Pop & Fulop 2018)结合起来来获取一点随机集成带来的额外的性能。

参数空间中的不确定性

反向传播贝叶斯(Bayes-by-backprop,Blundell et al. 2015)直接测量了神经网络的权重的不确定性。这个方法维护了一个权重$\mathbf{w}$的概率分布,由于真实后验分布$p(\mathbf{w} \vert \mathcal{D})$是无法直接获取的,它被建模为一个变分分布$q(\mathbf{w} \vert \theta)$。损失函数为最小化两个分布间的KL散度:

$$ \begin{aligned} \mathcal{L}(\theta) &= \text{KL}[q(\mathbf{w}\vert\theta) \| p(\mathbf{w} \vert \mathcal{D})] \\ &= \int q(\mathbf{w}\vert\theta) \log \frac{q(\mathbf{w}\vert\theta)}{p(\mathbf{w}) p(\mathcal{D}\vert \mathbf{w})} d\mathbf{w} \\ &= \text{KL}[q(\mathbf{w}\vert\theta) \| p(w)] - \mathbb{E}_{q(\mathbf{w}\vert\theta)} [\log p(\mathcal{D} \vert \mathbf{w})] \\ &\approx \log q(\mathbf{w} \vert \theta) - \log p(\mathbf{w}) p(\mathcal{D}\vert \mathbf{w}) & \text{; monte carlo sampling; }q(\mathbf{w} \vert \theta)\text{ & }p(\mathbf{w})\text{ are close.} \end{aligned} $$

典型的,变分分布$q$为对角互相关高斯分布(互相关矩阵为对角阵),并且权重从$\mathcal{N}(\mu_i, \sigma_i^2)$中采样得到。为了保证$\sigma_i$的非负性,它通过了softplus 进行了进一步采样:$\sigma_i = \log(1 + \exp(\rho_i))$,其中变分参数为$\theta = \{\mu_i , \rho_i\}^d_{i=1}$

反向传播贝叶斯的过程简单介绍如下:

  1. 采样$\epsilon \sim \mathcal{N}(0, I)$
  2. $\mathbf{w} = \mu + \log(1+ \exp(\rho)) \circ \epsilon$
  3. $\theta = (\mu, \rho)$
  4. $f(\mathbf{w}, \theta) = \log q(\mathbf{w} \vert \theta) - \log p(\mathbf{w})p(\mathcal{D}\vert \mathbf{w})$
  5. 计算$f(\mathbf{w}, \theta)$$\mu$$\rho$的梯度,然后更新$\theta$
  6. 非确定性通过在推理过程中采样不同的模型权重来计算得到

损失预测(Loss Prediction)

损失目标函数主导着模型的训练。损失值低一般意味着模型可以做出一个好的、准确的预测。Yoo & Kweon (2019)设计了一个损失预测模块,用来预测无标签输入的损失值,并以此作为模型在给定数据上的性能预测。如果损失预测模块给出了不确定性高的预测(高损失值),那么对应的数据样本就会被选择。损失估计模块的是一个简单的MLP加上dropout的结构。该模块使用目标模型的多个中间层的特征作为输入,这些输入在经过一个全局平均池化(Global Averaging Pooling, GAP)操作后连接在一起后,被作为一个全连接层的输入,最后的全连接层输出损失预测。

使用一个带有损失预测模块的模型来做主动学习的样本选择。
图 3:使用一个带有损失预测模块的模型来做主动学习的样本选择。

$\hat{l}$为损失预测模块的输出,$l$为真实的损失。为了训练损失预测模块,一个很简单的选择就是使用MSE$loss=(l - \hat{l})^2$来训练。但MSE在这里并不是一个好的选择。由于目标模型在不断优化过程中,损失值会越来越小,如果使用MSE损失,会让损失预测模块的损失值也同样越来越小。这样的话,此模块显然无法成为一个好的选择指标。这里对于预测模块来说,一个好的学习目标应该能够独立于目标损失值大小的变化。为此,他们这里在训练损失预测模块时,使用了样本对。在每一批数量为$b$的训练数据中,有$b/2$个样本对$(\mathbf{x}_i, \mathbf{x}_j)$,那么我们期望损失预测模块可以正确地预测出哪一个样本的损失值较大。也就是:

$$ \begin{aligned} \mathcal{L}_\text{loss}(\mathbf{x}_i, \mathbf{x}_j) &= \max\big( 0, -\mathbf{sign}(l(\mathbf{x}_i)- l(\mathbf{x}_j)) \cdot (\hat{l}(\mathbf{x}_i) - \hat{l}(\mathbf{x}_j)) + \epsilon \big) \\ \text{其中 } \mathbf{sign}(x) &= \begin{cases} +1 & \text{if }x \gt 0 \\ -1 & \text{否则} \end{cases} \end{aligned} $$

其中$\epsilon$为预设的常数,表示我们希望损失值之间期望达到的差距。

在三个视觉任务的实验上,基于损失预测的主动学习样本选择方法相比于随机方法、基于熵的方法以及核心集方法表现得都要好。

在主动学习中,使用基于损失预测模块的样本选择与其它方法的对比
图 4:在主动学习中,使用基于损失预测模块的样本选择与其它方法的对比。(图片来源:Yoo & Kweon 2019)

对抗设定(Adversarial Setup)

Sinha et al. (2019)提出了一种类似GAN的设定,称作VAAL(Variational Adversarial Active Learning),其中判别器被训练用来区分无标签数据与有标签数据。有意思的是,在VAAL中,主动学习的采集标准不依赖于任务的性能表现。

VAAL 示意图
图 5:VAAL 示意图。(图片来源:Sinha 等人, 2019)
  • $\beta$-VAE学习了一个隐特征空间$\mathbf{z}^l \cup \mathbf{z}^u$,分别对应了有标签与无标签数据。其目标是为了欺骗判别器,令其以为所有数据都是从已标记数据中得来的
  • 判别器$D(\cdot)$基于隐空间的表示$\mathbf{z}$给出样本是否为带标签数据的判断(是输出1,否则输出0)。VAAL会去选择那些判别器评分较低的无标签样本,因为评分低意味着这些样本和先前带标签样本非常不一样。

在VAAL中,用于VAE表征学习的损失函数包含了两个部分,其中一个部分为重建部分(最小化给定样本的ELBO),另外一部分为对抗部分(带标签和无标签数据都是从同样的概率分布$q_{\phi}$中得到):

$$ \begin{aligned} \mathcal{L}_\text{VAE} &= \lambda_1 \mathcal{L}^\text{rec}_\text{VAE} + \lambda_2 \mathcal{L}^\text{adv}_\text{VAE} \\ \mathcal{L}^\text{rec}_\text{VAE} &= \mathbb{E}[\log p_\theta(\mathbf{x}^l \vert \mathbf{z}^l)] - \beta \text{KL}(q_\phi(\mathbf{z}^l \vert \mathbf{x}^l) \| p(\mathbf{\tilde{z}})) + \mathbb{E}[\log p_\theta(\mathbf{u} \vert \mathbf{z}^u)] - \beta \text{KL}(q_\phi(\mathbf{z}^u \vert \mathbf{u}) \| p(\mathbf{\tilde{z}})) \\ \mathcal{L}^\text{adv}_\text{VAE} &= - \mathbb{E}[\log D(q_\phi (\mathbf{z}^l \vert \mathbf{x}^l))] - \mathbb{E}[\log D(q_\phi(\mathbf{z}^u \vert \mathbf{u}))] \end{aligned} $$

其中$p(\mathbf{\tilde{z}})$为单位(标准)高斯分布,是预设的先验分布;$\beta$为拉格朗日算子参数。

判别损失函数为:

$$ \mathcal{L}_D = -\mathbb{E}[\log D(q_\phi (\mathbf{z}^l \vert \mathbf{x}^l))] - \mathbb{E}[\log (1 - D(q_\phi (\mathbf{z}^u \vert \mathbf{u})))] $$
VAAL 在几个图片分类任务上的实验结果
图 6:VAAL 在几个图片分类任务上的实验结果。(图片来源:Sinha et al. 2019)

对比研究表明联合训练VAE和判别器非常重要。结果表明他们的方法对存在偏差的已标记数据集、不同的标签预算以及噪声是鲁棒的。

MAL(Minimax Active Learning;Ebrahimiet al. 2021)是VAAL的扩展。MAL框架由一个熵最小化的特征编码网络$F$接着一个熵最大化的分类器组成。这种最小-最大化的设置降低了有标签数据和无标签数据分布之间的差异。

MAL 框架示意图
图 7:MAL 框架示意图。Ebrahimiet al. 2021

特征编码器$F$将样本编码为一个$d$维的隐向量(已通过L2归一化)。我们假设有$K$个类,分类器$C$的参数为$W \in \mathbb{R}^{d\times K}$

(1) 首先,特征编码器$F$和分类器$C$使用带标签样本进行训练,损失函数使用简单的交叉熵损失来取得好的分类效果:

$$ \mathcal{L}_\text{CE} = -\mathbb{E}_{(\mathbf{x}^l, y) \sim \mathcal{X}} \sum_{k=1}^K \mathbb{1}[k=y] \log\Big( \sigma(\frac{1}{T} \frac{\mathbf{W}^\top F\big(\mathbf{x}^l)}{\|F(\mathbf{x}^l)\|}\big) \Big) $$

(2) 训练无标签样本时,MAL依赖于minimax

$$ \begin{aligned} \mathcal{L}_\text{Ent} &= -\sum^K_{k=1} p(y=k \vert \mathbf{u}) \log p(y=k\vert \mathbf{u}) \\ \theta^*_F, \theta^*_C &= \min_F\max_C \mathcal{L}_\text{Ent} \\ \theta_F &\gets \theta_F - \alpha_1 \nabla \mathcal{L}_\text{Ent} \\ \theta_C &\gets \theta_C + \alpha_2 \nabla \mathcal{L}_\text{Ent} \end{aligned} $$

其中:

  • 最小化特征编码器$F$的熵可以将有相似预测标签的样本拥有相似的特征编码
  • 最大化分类器$C$的熵可以让预测结果遵循一个更加均匀的类分布(这里我的理解是:由于无标签样本的真实标签是未知的,我们不应该在此情况下优化分类器来最大化预测的标签)

判别器的训练方法与VAAL中一样。

MAL中的采样策略既考虑了多样性又考虑了不确定性:

  • 多样性:判别器$D$的评分指示了一个样本与之前见过的样本有多相似。如果评分更接近于0,那么此样本与之前的样本应该更为不同,更应该被选择
  • 不确定性:不确定性由分类器$C$给出。如果熵值较高,那么说明模型无法作出一个确定的预测

实验将MAL与随机、熵、核心集、BALD、VAAL方法进行了对比,在图片分类和分割任务进行了比较。实验结果看起来相当有说服力。

MAL在ImageNet上的性能表现
图 8:MAL在ImageNet上的性能表现。(表格来源:Ebrahimiet 等人, 2021)

CAL (Contrastive Active Learning;Margatina 等人, 2021) 更趋向于选择对照样本。如果标签不同的两个数据点有相似的网络表征$\Phi(\cdot)$,它们在CAL中被认为是对比样本。给定一对对比样本$(\mathbf{x}_i, \mathbf{x}_j)$,它们应该满足:

$$ d(\Phi(\mathbf{x}_i), \Phi(\mathbf{x}_j)) \lt \epsilon \quad \text{且} \quad \text{KL}(p(y\vert \mathbf{x}_i) \| p(y\vert \mathbf{x}_j)) \rightarrow \infty $$

给定一个无标签样本$\mathbf{x}$,CAL 运行如下过程:

  1. 在带标签样本中选择在模型特征空间中最相似的$k$个邻居(top-k nearest neighbors),$\{(\mathbf{x}^l_i, y_i\}_{i=1}^M \subset \mathcal{X}$
  2. 计算模型对$\mathbf{x}$$\{\mathbf{x}^l\}$中每个数据输出概率间的KL散度。数据$\mathbf{x}$对照评分(contrastive score)为所有KL散度值的平均值:$s(\mathbf{x}) = \frac{1}{M} \sum_{i=1}^M \text{KL}(p(y \vert \mathbf{x}^l_i | p(y \vert \mathbf{x}))$
  3. 具有高对照评分的样本被选择用于主动学习

在一系列的分类任务中,CAL的实验结果看起来与基于熵的基线方法相似。

代表性度量

核心集法(Core-sets Approach)

核心集是计算几何中的一个概念,它指的是这样一类点集,它包含于另外一个大的点集并且可以近似这个大的点集中的点所构成的形状。近似程度可以通过一些几何指标进行度量。在主动学习中,我们希望一个在核心集上训练的模型模型可以有与在整个数据集上训练的模型相媲美的性能。

Sener & Savarese (2018)将主动学习看作是一个挑选核心集点的问题。假设,训练中一共用到了$N$个样本。在主动学习中,我们将在第$t$步中标记的数据点集合记为$\mathcal{S}^{(t)}$。我们变换一下学习目标函数,得到它的上界:

$$ \begin{aligned} \mathbb{E}_{(\mathbf{x}, y) \sim p} [\mathcal{L}(\mathbf{x}, y)] \leq& \bigg\vert \mathbb{E}_{(\mathbf{x}, y) \sim p} [\mathcal{L}(\mathbf{x}, y)] - \frac{1}{N} \sum_{i=1}^N \mathcal{L}(\mathbf{x}_i, y_i) \bigg\vert & \text{; 泛化误差}\\ +& \frac{1}{\vert \mathcal{S}^{(t)} \vert} \sum_{j=1}^{\vert \mathcal{S}^{(t)} \vert} \mathcal{L}(\mathbf{x}^l_j, y_j) & \text{; 训练误差}\\ +& \bigg\vert \frac{1}{N} \sum_{i=1}^N \mathcal{L}(\mathbf{x}_i, y_i) - \frac{1}{\vert \mathcal{S}^{(t)} \vert} \sum_{j=1}^{\vert \mathcal{S}^{(t)} \vert} \mathcal{L}(\mathbf{x}^l_j, y_j) \bigg\vert & \text{; 核心集误差} \end{aligned} $$

其中,核心集损失定义为标记签样本上的平均经验损失与整个数据集上的损失之差的绝对值。

我们可以将主动学习重新定义为:

$$ \min_{\mathcal{S}^{(t+1)} : \vert \mathcal{S}^{(t+1)} \vert \leq b} \bigg\vert \frac{1}{N}\sum_{i=1}^N \mathcal{L}(\mathbf{x}_i, y_i) - \frac{1}{\vert \mathcal{S}^{(t)} \cup \mathcal{S}^{(t+1)} \vert} \sum_{j=1}^{\vert \mathcal{S}^{(t)} \cup \mathcal{S}^{(t+1)} \vert} \mathcal{L}(\mathbf{x}^l_j, y_j) \bigg\vert $$

这和k中心问题等价:选择$b$个点以满足所有点到这$b$个点的最大距离最小化。这个问题是一个$NP$难问题,可以用贪心算法得到一个近似解。

核心集算法性能比较
图 9:核心集算法与其它算法在CIFAR-10, CIFAR-100, SVHN数据集上的性能对比。(图片来源:Sener & Savarese 2018)

在数据类别比较少的时候,算法可以工作得很好。当数据类别逐渐变多,或数据维度不断增加的时候,核心集方法的效率会下降(Sinha 等人, 2019)。

由于核心集算法的样本选择太昂贵,Coleman 等人, (2020)提出了一个新的算法SVP (Selection via Proxy),他们的算法使用了一个较弱的模型(也就是:更小、更弱的网络结构,没有完全训练)。他们发现使用较弱的模型作为代理可以显著缩短训练模型和选择样本的每次重复数据选择的周期,而不会对最终性能损害太多。

多样化梯度嵌入(Diverse Gradient Embedding)

BADGE(Batch Active learning by Diverse Gradient Embeddings;Ash 等人, 2020)方法既跟踪模型的不确定性也跟踪梯度空间中数据的多样性。不确定性是通过网络最后一层梯度的大小来衡量,多样性通过跨越梯度空间的一组不同样本来衡量。

  • 不确定性:给定一个无标签样本$\mathbf{x}$,BADGE首先计算预测标签$\hat{y}$,而后计算在样本$(\mathbf{x}, \hat{y})$上的损失函数的梯度值$g_{\mathbf{x}}$。他们发现梯度$g_{\mathbf{x}}$的范数可以保守估计样本对模型学习的影响,高置信度的样本趋向于有更小的梯度嵌入。
  • 多样性:给定许多样本的梯度嵌入$g_\mathbf{x}$,BADGE 运行k-means++算法来采样数据点
BADGE 算法
图 10:BADGE 算法,图片来源(Ash 等人, 2020)

测量对训练影响(Measuring Training Effects)

量化模型变化

Settles et al. (2008)引入了一个主动学习的策略,叫做EGL(Expected Gradient Length)。EGL 的动机是找到那些可以在模型上触发最大梯度更新的样本(如果他们的标签是已知的)。

$\nabla \mathcal{L} \mathcal(\theta)$为损失函数的梯度。特别地,给定一个无标签样本$\mathbf{x}_i$,我们假设标签为$y \in \mathcal{Y}$,那么我们可以计算梯度$\nabla\mathcal{L}^{(y)}(\theta)$。由于真实标签$y_i$是未知的,EGL依赖于当前的模型的*可信度 (belief)*来计算梯度变化的期望:

$$ EGL(x_i) = \sum_{y_i \in \mathcal{Y}} p(y = y_i|x)\Vert \nabla \mathcal{L}^{y_i}(\theta) \Vert $$

BALD(Bayesian Active Learning by Disagreement;Houlsby 等人, 2011) 方法旨在识别出那些可以最大化模型权重信息收益(Information Gain)的样本来,这等价于最大化后验熵期望减少。

$$ \begin{aligned} I[\boldsymbol{\theta}, y \vert x,\mathcal{D}] &= H(\boldsymbol{\theta} \vert \mathcal{D}) - \mathbb{E}_{y \sim p(y \vert \boldsymbol{x}, \mathcal{D})} \big[ H(\boldsymbol{\theta} \vert y, \boldsymbol{x}, \mathcal{D}) \big] & \text{; 后验熵期望的减少}\\ &= H(y \vert \boldsymbol{x}, \mathcal{D}) - \mathbb{E}_{\boldsymbol{\theta} \sim p(\boldsymbol{\theta} \vert \mathcal{D})} \big[ H(y \vert \boldsymbol{x}, \mathcal{\theta}) \big] \end{aligned} $$

这里的底层逻辑是 “为模型找到一个关于类别$y$,不确定性最大的$\mathbf{x}$(高$H(y\vert \mathbf{x}, \mathcal{D})$),且对于某个特定的参数$\theta$此样本对应的熵需要最小化(低$H(y\vert x, \theta)$)。”换句话说,每个单独的后验分布置信度较高,而不同的后验分布是多样性的。

BALD最先提出的时候是针对单个样本的,后来Kirsch 等人, (2019)将此方法拓展到批(batch)模式。

遗忘事件(Forgetting Events)

为了研究神经网络是否会逐渐忘记先前学到的信息,Mariya Toneva 等人, (2019)设计了一个实验:他们记录了模型在训练过程中对于每一个样本的预测,而后计算每一个样本从正确到错误(或错误到正确)分类转移的次数。而后,样本可以相应地被分类:

  • 可遗忘(多余)样本:如果样本的类别在训练过程中不断变化
  • 不可遗忘样本:如果样本预测标签在整个训练过程中都一直保持一致。这些样本一旦被学习到之后就不会再被忘记

他们发现存在一大批学习之后就不会再被忘记的样本。带噪声的样本或者带有不“寻常”特征的图片(看上去很难分类)属于最容易忘记的那一部分。实验结果验证了无法忘记的样本可以在不损失模型性能的情况下被安全地移除。

在实际实现的时候,被遗忘的事件仅在样本被包含在当前批训练数据中时才会被计数;也就是,他们在后续的mini-batch数据训练时对同一样本也会计数。遗忘事件的数量在多次实验中都很稳定,并且后面实验中的遗忘事件趋向于第一次学习到的那些。最后,遗忘事件被发现是可以在不同的训练阶段以及不同架构中是可迁移的。

如果我们假设模型在训练过程中预测的不断变化可以作为模型不确定性指标的话,那么事件遗忘就可以被用作主动学习中的样本采集信号。然而,无标签样本的真实标签是未知的。为此,Bengar 等人, (2021)提出了一个叫做标签散度(label dispersion)的新指标。假如在整个训练过程中,对于某个输入样本$\mathbf{x},$$c^\star$是最常被预测的标签。标签散度计算了在所有训练steps中,模型没有给出预测标签$c^\star$的占比:

$$ \text{Dispersion}(\mathbf{x}) = 1 - \frac{f_\mathbf{x}}{T} \text{ where } f_\mathbf{x} = \sum_{t=1}^T \mathbb{1}[\hat{y}_t = c^*], c^* = \arg\max_{c=1,\dots,C}\sum_{t=1}^T \mathbb{1}[\hat{y}_t = c] $$

在他们的实现中,散度在每一轮(epoch)的训练中都被计算了。如果模型对于给定的输入样本模型给出了一致的标签预测,那么标签散度较低,反之则较高。正如下图所示,标签散度与网络的不确定性是相关的:

标签散度与网络不确定性的相关性
图 11:标签散度于网络不确定性的相关性。横坐标:数据点被按照标签散度值进行了排序;纵坐标:模型预测准确率。(图片来源:Bengar 等人, 2021)

混合方法

在批模式(batch mode)下进行主动学习时,一个批次数据中的多样性控制很重要。联想注解(Suggestive Annotation, SA;Yang 等人, 2017)是一个两步混合策略,它目的在于选择既具有高不确定性又具有高代表性的标记样本。其不确定性来源于在带标签样本上训练得到的多个模型的聚合,而代表性依赖于使用核心集方法。

  1. 首先,SA 选择不确定性评分最高的$K$个样本来形成候选池$\mathcal{S}_c \subseteq \mathcal{S}_U $不确定性为使用$bootstrapping$方法训练得到的多个模型所给出预测的不一致度
  2. 下一步是找到一个最具代表性的子集$\mathcal{S}_a \subseteq \mathcal{S}_c$。两个输入特征向量间的余弦相似度用于衡量它们之间的形似度。$\mathcal{S}_a$对集合$\mathcal{S}_{U}$的代表性反映了$\mathcal{S}_a$$\mathcal{S}_u$中所有样本的代表性,定义为:
$$ F(\mathcal{S}_a, \mathcal{S}_u) = \sum_{\mathbf{x}_j \in \mathcal{S}_u} f(\mathcal{S}_a, \mathbf{x}_j) = \sum_{\mathbf{x}_j \in \mathcal{S}_u} \max_{\mathbf{x}_i \in \mathcal{S}_a} \text{sim}(\mathbf{x}_i, \mathbf{x}_j) $$

使用$F(\mathcal{S}_a, \mathcal{S}_u)$来寻找$k$个数据点来形成集合$\mathcal{S}_a$是最大覆盖集问题的一个泛化版。这个问题是NP难的,它最可能的多项式时间的近似算法就是简单的贪心算法:

  1. 初始化:$\mathcal{S}_a = \emptyset, F(\mathcal{S}_a, \mathcal{x}_u) = 0$
  2. 然后:迭代添加样本$\mathbf{x}_i \in \mathbf{S}_c$,满足可以最大化$F(\mathcal{S}_a \cup I_i, \mathcal{S}_u)$,直到$S_a$包含$k$个样本为止

Zhdanov (2019)运行了与SA相似的一个过程,只不过在第二步中,他的方法依赖于$k$-means而不是核心集方法,并且他的候选池大小设置与批大小(batch size)相关。给定一个批大小$b$,以及一个常量$\beta \in [10, 50]$,方法步骤如下:

  1. 使用带标签数据训练一个分类器
  2. 测量每个无标签样本的信息量(使用不确定性指标)
  3. 预测信息量最大的$\beta b \ge b$个样本
  4. $\beta b$个样本进行聚类,得到$B$个聚类集合
  5. 选择$b$个与各个聚类中心点最近的样本作为本轮主动学习的样本

主动学习可以进一步与半监督学习结合来节省预算。CEAL(Cost-Effective Active Learning; Yang 等人, 2017)方法并行运行以下两步:

  1. 通过主动学习选择不确定性的样本,并对其进行打标签
  2. 选择预测置信度最高的样本,给它们打上伪标签。预测置信度通过预测的熵值是否低于一个阈值$\delta$来衡量。由于模型随着时间推移越来越好,阈值应随时间不断衰减
CEAL (cost-effective active learning) 示意图
图 12:CEAL (cost-effective active learning。(图片来源:Yang et al. 2017)

引用本文

@article{weng2022active,
  title   = "Learning with not Enough Data Part 1: Semi-Supervised Learning",
  author  = "Weng, Lilian",
  journal = "lilianweng.github.io",
  year    = "2022",
  url     = "https://lilianweng.github.io/posts/2022-02-20-active-learning/"
}

引用

[1] Burr Settles.Active learning literature survey.University of Wisconsin, Madison, 52(55-66):11, 2010.

[2]https://jacobgil.github.io/deeplearning/activelearning

[3] Yang et al.“Cost-effective active learning for deep image classification”TCSVT 2016.

[4] Yarin Gal et al.“Dropout as a Bayesian Approximation: representing model uncertainty in deep learning."ICML 2016.

[5] Blundell et al.“Weight uncertainty in neural networks (Bayes-by-Backprop)"ICML 2015.

[6] Settles et al.“Multiple-Instance Active Learning."NIPS 2007.

[7] Houlsby et al.Bayesian Active Learning for Classification and Preference Learning."arXiv preprint arXiv:1112.5745 (2020).

[8] Kirsch et al.“BatchBALD: Efficient and Diverse Batch Acquisition for Deep Bayesian Active Learning."NeurIPS 2019.

[9] Beluch et al.“The power of ensembles for active learning in image classification."CVPR 2018.

[10] Sener & Savarese.“Active learning for convolutional neural networks: A core-set approach."ICLR 2018.

[11] Donggeun Yoo & In So Kweon.“Learning Loss for Active Learning."CVPR 2019.

[12] Margatina et al.“Active Learning by Acquiring Contrastive Examples."EMNLP 2021.

[13] Sinha et al.“Variational Adversarial Active Learning”ICCV 2019

[14] Ebrahimiet al.“Minmax Active Learning”arXiv preprint arXiv:2012.10467 (2021).

[15] Mariya Toneva et al.“An empirical study of example forgetting during deep neural network learning."ICLR 2019.

[16] Javad Zolfaghari Bengar et al.“When Deep Learners Change Their Mind: Learning Dynamics for Active Learning."CAIP 2021.

[17] Yang et al.“Suggestive annotation: A deep active learning framework for biomedical image segmentation."MICCAI 2017.

[18] Fedor Zhdanov.“Diverse mini-batch Active Learning”arXiv preprint arXiv:1901.05954 (2019).


扫码关注我们的微信公众号,可获取最新推送哦~~

关注我们
图 13:关注我们

[本]通信工程@河海大学 & [硕]CS@清华大学
这个人很懒,他什么也没有写!

1
12735
1

更多推荐


2022年11月30日