论文笔记 Meta-Learning for Batch Mode Active Learning

batch 模式主动学习的元学习方法

摘要

什么是 batch 模式主动学习?挑选一批样例,立刻标注用于训练。

  • 优点:
    • 最符合逻辑。不必等整个挑选过程完成后,再训练。而是边挑选,边训练。
    • 能够最高效地利用人力进行标注。

本文的工作是,利用元学习来学习主动学习算法,在一个小训练集上,挑选一组最佳样例(未标注)来标注加入训练。
实验结果表明,本文提出的主动学习算法比传统的启发式方法更好。所构建的带标签训练集,能更好地改善分类器。

本文的缺点是没有提供源代码。

1 引言

主动学习方法的主流方法是启发式方法,例如,挑选的样例应该具有信息性、多样性、代表性。根据启发式挑选策略,选取 batch 中的最佳样例,这种启发式方法可以扩展到 batch 模式。但是,这会明显导致模型性能不最优,而且会产生过多的冗余样例。虽然有一些针对 batch 模式主动学习算法的研究,但是这些方法的复杂度很高,难以用于大数据集。而且,对主动学习的大多数研究工作都假设未标注样例至少属于我们感兴趣的某个类别。但是,真实数据并不服从这些约束条件,未标注数据通常由干扰项组成,这些干扰项并不属于我们要考察的任何类别。启发式方法可能认为这些干扰项对模型很重要,其实不然。因此作者对 batch 模式主动学习方法的研究兴趣如下:

  1. 应该直接优化其在挑选样例方面的效力。
  2. 挑选样例的算法复杂度应该是线性复杂度。
  3. 应该能够正确处理干扰项。

已有研究工作对主动学习的元学习方法进行了探索,但是还没有用于 batch 模式,也没有用于干扰项。

作者在小样本学习框架下,制定 batch 模式主动学习任务,目标是学到一个元学习模型来改善这个问题。作者在原型网络(Prototypical Networks )的基础上,增加了一个主动学习模型,用于挑选样例进行打标,来提高模型的分类准确率。实验表明,这种新方法比常用的启发式方法更好。

2 batch 模式主动学习的元学习方法

论文笔记 Meta-Learning for Batch Mode Active Learning_第1张图片

本文的另一个缺点是没有给出结构图。这张图是我根据自己的理解画的。

未标注数据集 U = { x ~ 1 , . . . , x ~ M } U=\{\tilde x_1, ..., \tilde x_M\} U={ x~1,...,x~M}

小样本学习任务参数 N-way,K-shot,B-batch

选出 U 的一个子集 A = { x ~ 1 , . . . , x ~ B } A=\{\tilde x_1, ..., \tilde x_B\} A={ x~1,...,x~B} 用于标注,然后添加到支持集 S,得到一个新的支持集 S ′ = S ⋃ A S'=S\bigcup A S=SA

S 的元素个数是 N*K,主动学习挑选样例后,只给 S 中的部分类别添加样例?还是所有类别都添加?每个类别添加的样例数量是否相同?B 的数值应该怎么设定?

目标是用 S’ 最大限度地提高分类器在查询集 Q 上的性能。

样例挑选过程:

  • A 的概率 p ( A ) = p ( x ~ 1 , . . . , x ~ B ) = ∏ i = 1 B p ( x ~ i ∣ x ~ 1 , . . . , x ~ i − 1 ) p(A)=p(\tilde x_1, ..., \tilde x_B)=\prod_{i=1}^Bp(\tilde x_i|\tilde x_1, ..., \tilde x_{i-1}) p(A)=p(x~1,...,x~B)=i=1Bp(x~ix~1,...,x~i1)
  • 假设已建立一个子集 A = { x ~ 1 , . . . , x ~ j ∣ j < B } A=\{\tilde x_1, ..., \tilde x_j|jA={ x~1,...,x~jj<B}
  • 参数化分布 p ( x ~ ∣ A ) = p ( x ~ ∣ x ~ 1 , . . . , x ~ j ) p(\tilde x|A)=p(\tilde x|\tilde x_1, ..., \tilde x_j) p(x~A)=p(x~x~1,...,x~j)
  • 挑选下一个未标注样例,加入 A
    • 从初始支持集 S 得到原型网络分类器的一组原型 { c k } k = 1 K \{c_k\}_{k=1}^K { ck}k=1K
    • 计算每个未标注样例 x ~ i ∈ U \tilde x_i\in U x~iU 的一组统计量 ∏ ( { c k } k = 1 K , x ~ i ) \prod\left(\{c_k\}_{k=1}^K, \tilde x_i\right) ({ ck}k=1K,x~i),给这组原型。
    • 使用这些统计量计算得到两个概率分布 p q u a l i t y ( x ~ ) p_{quality}(\tilde x) pquality(x~) p d i v e r s i t y ( x ~ ∣ x ~ 1 , . . . , x ~ j ) p_{diversity}(\tilde x|\tilde x_1, ..., \tilde x_j) pdiversity(x~x~1,...,x~j) ,在这两个分布上的下个未标注样例,添加到 A
  • 直到 A 的元素个数达到 B

2.1 质量分布
对于每个未标注样例,使用其统计量,可以计算(根据其质量挑选该样例的)概率:

p q u a l i t y ( x ~ ) ∝ e x p ( q i ) , 其 中 q i = f q ( ∏ ( { c k } k = 1 K , x ~ i ) ) p_{quality}(\tilde x)∝exp(q_i),其中 q_i=f_q\left(\prod\left(\{c_k\}_{k=1}^K, \tilde x_i\right)\right) pquality(x~)exp(qi)qi=fq(({ ck}k=1K,x~i))

f q f_q fq 是一个具有参数 q 的多层感知机 MLP。

根据学到的样例分类统计量,预测该样例对于已存在的分类器的有用性(质量),进而得到挑选该样例的概率分布。

训练过程就是学习这个概率分布,让预测概率逼近真实概率。

2.2 多样性分布
对于每个未标注样例,其统计量也可用于计算特征向量来描述该未标注样例与分类器的关系:

ϕ i = f ϕ ( ∏ ( { c k } k = 1 K , x ~ i ) ) \phi_i=f_\phi\left(\prod\left(\{c_k\}_{k=1}^K, \tilde x_i\right)\right) ϕi=fϕ(({ ck}k=1K,x~i))

其中 ϕ i ∈ R D ′ \phi_i\in R^{D'} ϕiRD f ϕ f_\phi fϕ 是一个具有参数 φ 的多层感知机 MLP。

多样性分布的目标是,使得挑选的未标注样例与 A 中的样例尽可能不同,根据每个样例的特征向量计算其相似度。根据未标注样例的多样性来计算其被选中的概率:

p d i v e r s i t y ( x ~ i ∣ A ) ∝ e x p ( v ( ϕ i ) / T ) , 其 中 v ( ϕ i ) = m i n x ~ j ∈ A { sin ⁡ θ i j } p_{diversity}(\tilde x_i|A)∝exp(v(\phi_i)/T),其中 v(\phi_i)= min_{\tilde x_j\in A}\{\sin θ_{ij}\} pdiversity(x~iA)exp(v(ϕi)/T)v(ϕi)=minx~jA{ sinθij}

其中 θ i j θ_{ij} θij 是特征向量 ϕ i \phi_i ϕi ϕ j \phi_j ϕj 的夹角,T 是一个学到的温度参数,通过 T 可以控制该分布的平面。如果某个样例的特征向量与 A 中样例的特征向量越趋向于正交,那么该样例被选中的概率就会越大。

2.3 专家的乘积 (Product of experts)

Product of experts (PoE) 是一种机器学习技术,是把多个简单分布的输出进行结合,对概率分布进行建模。

怎样结合?从字面看,应该是乘法。概率用乘法更合理。且看公式

未标注样例被选中的最终概率分布,是其质量分布和多样性分布的乘积。

p ( x ~ ∣ A ) ∝ p q u a l i t y ( x ~ ) ⋅ p d i v e r s i t y ( x ~ i ∣ A ) ⋅ l x ~ ∉ A p(\tilde x|A)∝p_{quality}(\tilde x)\cdot p_{diversity}(\tilde x_i|A)\cdot l_{\tilde x\notin A} p(x~A)pquality(x~)pdiversity(x~iA)lx~/A

其中 l x ~ ∉ A l_{\tilde x\notin A} lx~/A 是指示变量,强制去除 A 中样例的支持。

2.4 训练
通过更新模型参数 θ ′ = { ϕ , q , T } \theta'=\{\phi, q, T\} θ={ ϕ,q,T},使得对于任意给定的小样本学习任务(支持集 S,未标注数据集 U,查询集 Q),都能得到 p θ ′ ( x ~ ∣ A ) p_{\theta'}(\tilde x|A) pθ(x~A) 用于构建子集 A ⊆ U A\subseteq U AU 组成新的支持集 S ′ = S ⋃ A S'=S\bigcup A S=SA, 使得模型在查询集 Q 上取得更高的分类性能。采用梯度下降法来训练模型:

∇ θ ′ E p θ ′ ( A ) [ C ( Q ∣ S ⋃ A ) ] ≈ 1 T ∑ t = 1 T [ ( C ( Q ∣ S ⋃ A t ) − β − t ) ∇ θ ′ log ⁡ p θ ′ ( A t ) ] , 其 中 A t 服 从 分 布 p θ ′ ( A ) \nabla_{\theta'}E_{p_{\theta'}(A)}[C(Q|S\bigcup A)]\approx\frac{1}{T}\sum_{t=1}^T[(C(Q|S\bigcup A_t)-\beta_{-t})\nabla_{\theta'}\log p_{\theta'}(A_t)],其中 A_t 服从分布 p_{\theta'}(A) θEpθ(A)[C(QSA)]T1t=1T[(C(QSAt)βt)θlogpθ(At)]Atpθ(A)

其中 C ( Q ∣ S ⋃ A ) C(Q|S\bigcup A) C(QSA) 是支持集为 S ′ = S ⋃ A S'=S\bigcup A S=SA 时,模型在查询集 Q 上的准确率。

β − t = 1 T − 1 ∑ t ′ ≠ t T C θ ( Q ∣ S ⋃ A t ′ ) \beta_{-t}=\frac{1}{T-1}\sum_{t'\neq t}^TC_{\theta}(Q|S\bigcup A_{t'}) βt=T11t=tTCθ(QSAt) 是基线。

由于训练时未标注样例已经有了标注,所以未标注数据集 U 上的分类准确率可用于增补查询集上的准确率。这种增补能给模型正确反馈,挑选的样例应该有助于区分未标注数据集中的其余样例,因此用 C ( Q ⋃ U ∣ S ⋃ A ) C(Q\bigcup U|S\bigcup A) C(QUSA) 替代 C ( Q ∣ S ⋃ A ) C(Q|S\bigcup A) C(QSA)

3 实验

两个数据集:CIFAR-100 和 miniImageNet,都有 100 个类别,每个类别 600 个样例。

数据集拆分方式,都是训练集 64 个类别,验证集 16 类别,测试集 20 个类别。

初始分类器都是用 5-way,1-shot 任务训练原型网络,然后给支持集添加未标注样例(用不同的 batch 大小)评估性能。

与 3 种常用的启发式主动学习方法进行对比:

  1. 最大熵(Max-Entropy):所挑选的样例,初始分类器对其分类概率的熵最大。
  2. 最小最大相似度(Min-Max Sim):所挑选的样例与其他未标注样例,具有最小的最大相似度。
  3. 随机(Random):随机挑选未标注样例。

论文笔记 Meta-Learning for Batch Mode Active Learning_第2张图片

表1 miniImageNet 的实验结果。左半部分是没有干扰项的数据,右半部分是有干扰项的数据。查询集上准确率的提升百分比是1000个任务的平均值。B 表示挑选的子集大小,M 表示每个任务中未标注数据集的大小。

4 结论与展望

附录A 实验细节

A.1 CIFAR-100 的实验结果

论文笔记 Meta-Learning for Batch Mode Active Learning_第3张图片

表2 CIFAR-100 的实验结果。左半部分是没有干扰项的数据,右半部分是有干扰项的数据。查询集上准确率的提升百分比是1000个任务的平均值。B 表示挑选的子集大小,M 表示每个任务中未标注数据集的大小。

A.2 模型的架构

原型网络采用 Vinyals et al. (2016) 定义的CNN架构。

f ϕ f_{\phi} fϕ 是一个单层 MLP,用于嵌入样例的分类统计量,维度是 40。

f q f_{q} fq 使用 3 层的 MLP,每层维度是 40,最后输出样例质量的 logit。在隐层,对未标注样例使用 batch-normalization。

A.3 样例分类统计量

  • 距离统计量:未标注样例与每个原型的欧氏距离,统计量包括最小值、最大值、均值、偏度、峰度。

每个原型是指什么?初始的支持样例?

  • 分类概率统计量:根据原型对未标注样例进行分类,分类概率分布的统计量包括熵、最小值、最大值、标准差、偏度、峰度。

附录B 相关工作

基于哪些研究,提出了本文的方法。.

你可能感兴趣的:(计算机视觉,机器学习,机器学习,深度学习,神经网络)