我的论文笔记频道
【Active Learning】
【论文笔记01】Learning Loss for Active Learning, CVPR 2019
【论文笔记02】Active Learning For Convolutional Neural Networks: A Core-Set Approch, ICLR 2018
【论文笔记03】Variational Adversarial Active Learning, ICCV 2019
【论文笔记04】Ranked Batch-Mode Active Learning,ICCV 2016
【Transfer Learning】
【论文笔记05】Active Transfer Learning, IEEE T CIRC SYST VID 2020
【论文笔记06】Domain-Adversarial Training of Neural Networks, JMLR 2016
【Differential Privacy】
【Universum Learning】
论文传送《Active Learning For ConvolutionalNeural Networks: A Core-Set Approch》
这篇文章数学证明部分非常多,有兴趣可以去原文附录阅读定理和引理的证明,文中还引用了很多非常重要的结论,有其他文章中的证明。
从第四节开始是重点,笔者花费了一定时间才理解作者的优化思路。
使用普适的框架、在非常丰富的有监督数据上进行训练,就使得卷积神经网络被成功地应用在很多识别和学习任务上。但由于收集大量带标签图片代价很高,这样的方法在实践中显得过于严格。一种减轻这个问题的方法就是找到一些巧妙策略,从很大的收集来的数据中选择若干图像进行标注,也就是主动学习。
作者的实证研究表明,很多文献(literature)中的主动学习经验规则(active learning heuristics)在应用到基于批量(查询)背景的CNN上并不高效。受他们的局限性启发,文章将主动学习问题定义为核心集合选择 core-set selection,也就是选择一个数据点集合,使得模型从中学习的成果在剩余的数据点上也有充满竞争力的表现。
作者更进一步提出一个理论成果,可以通过数据点的几何结构(geometry of the datapoints)来描绘任何被选择的子集的表现。作为主动学习算法,文章选择的子集应该要在选定的特征描述(characterization)下取得最好的结果。作者的实验表明他们提出的方法显著地超越了现有的图像分类实验的方法。
注意,在CNN上应用主动学习必须要批量选取数据进行查询,这和传统的分类背景不同,原因是:
关于数据相关性,我的理解是:
让模型一次查询多个样本,模型会选择不确定但是相似的几个数据打包查询,这样实际上带来了冗余,也就是数据之间高度相关。
因为作者把主动学习任务定义为核心集合选择问题(Core-Set Selection),文献中最接近的问题自然是核心集合选择。这个问题是对一个完全标记的数据集进行挑选,选出一个子集以使模型在这上面训练的效果尽可能接近模型在完整训练集上的训练效果。作者总结具体的算法有:
无监督子集选择算法 是和作者的工作最相近的算法,It uses a facility location problem to find a diverse cover for the dataset. 作者的算法稍有不同,使用了一个不一样的facility location problem的公式。原来是用min-sum,作者用的是minimax的形式。更重要的是,作者是第一次把这种算法应用到主动学习问题上,并对于CNNs给出了理论上的保证。
Notation | Explanation |
---|---|
X X X | 特征空间 |
Y = 1 , . . . , C Y={1,...,C} Y=1,...,C | 标签空间 |
l ( ⋅ , ⋅ ; w ) : X × Y − > R l(·,·;w) : X \times Y -> R l(⋅,⋅;w):X×Y−>R | 损失函数 |
η c ( x ) = p ( y = c ∥ x ) \eta_c(x)=p(y=c\|x) ηc(x)=p(y=c∥x) | 各类专用的回归函数, λ η − L i p s c h i t z \lambda^\eta-Lipschitz λη−Lipschitz连续 |
Z = X × Y Z = X \times Y Z=X×Y | 总体 |
{ x i , y i } i ∈ [ n ] \{x_i, y_i\}_{i\in[n]} { xi,yi}i∈[n] | 从总体概率分布 p z p_z pz中i.i.d抽出 n n n个无标签数据 |
s 0 = { s 0 ( j ) ∈ [ n ] } j ∈ [ m ] s^0=\{s^0(j)\in[n]\}_{j\in[m]} s0={ s0(j)∈[n]}j∈[m] | 初始化有标签数据集,大小为 m m m |
A s A_s As | 用有标签数据集 s s s进行训练得到的参数 |
b b b | 每一轮查询的预算,即查询的个数 |
基于池的主动学习第一轮查询的目标被定义为
min s 1 : ∣ s 1 ∣ ≤ b E x , y ∈ Z [ l ( x , y ; A s 0 ∪ s 1 ) ] (1) \mathop {\min }\limits_{ {s^1}:|{s^1}| \le b} {E_{x,y\in{Z}}}[l(x,y;{A_{ {s^0} \cup {s^1}}})] \tag{1} s1:∣s1∣≤bminEx,y∈Z[l(x,y;As0∪s1)](1)
第 k + 1 k+1 k+1轮查询的目标实际上就是
min s k + 1 : ∣ s k + 1 ∣ ≤ b E x , y ∈ Z [ l ( x , y ; A s 0 ∪ s 1 . . . ∪ s k + 1 ) ] (2) \mathop {\min }\limits_{ {s^{k+1}}:|{s^{k+1}}| \le b} {E_{x,y\in{Z}}}[l(x,y;{A_{ {s^0} \cup {s^1}...\cup {s^{k+1}}}})] \tag{2} sk+1:∣sk+1∣≤bminEx,y∈Z[l(x,y;As0∪s1...∪sk+1)](2)
每一轮查询完数据之后都要对模型进行重新的训练,然后进行评估。训练可以采用两种方式
E x , y ∈ Z [ l ( x , y ; A s ) ] ≤ ∣ E x , y ∈ Z [ l ( x , y ; A s ) ] − 1 n ∑ i ∈ [ n ] l ( x i , y i ; A s ) ∣ + 1 ∣ s ∣ ∑ j ∈ s l ( x j , y j ; A s ) + ∣ 1 n ∑ i ∈ [ n ] l ( x i , y i ; A s ) − 1 ∣ s ∣ ∑ j ∈ s l ( x j , y j ; A s ) ∣ (3) {E_{x,y\in Z}}[l(x,y;{A_s})] \le \\ |{E_{x,y\in Z}}[l(x,y;{A_s})] - \frac{1}{n}\sum\limits_{i \in [n]} {l({x_i},{y_i};{A_s})} | + \\ \frac{1}{ {|s|}}\sum\limits_{j \in s} {l({x_j},{y_j};{A_s})} +\\ |\frac{1}{n}\sum\limits_{i \in [n]} {l({x_i},{y_i};{A_s})} - \frac{1}{ {|s|}}\sum\limits_{j \in s} {l({x_j},{y_j};{A_s})} | \tag{3} Ex,y∈Z[l(x,y;As)]≤∣Ex,y∈Z[l(x,y;As)]−n1i∈[n]∑l(xi,yi;As)∣+∣s∣1j∈s∑l(xj,yj;As)+∣n1i∈[n]∑l(xi,yi;As)−∣s∣1j∈s∑l(xj,yj;As)∣(3)
第一部分:generalization error 由于是同分布,泛化能力好。而且被系统研究过,可以把这部分误差界定住(Xu & Mannor(2012))
第二部分:training error 可以非常非常小
第三部分:core-set error 本文关注的关键部分
后文作者假设training error == 0,generalization error 也忽略了
根据文中的定理,我们对core-set error可以求出这样的上界
∣ 1 n ∑ i ∈ [ n ] l ( x i , y i ; A s ) − 1 ∣ s ∣ ∑ j ∈ s l ( x j , y j ; A s ) ∣ ≤ δ ( λ l + λ μ L C ) + L 2 log ( 1 / γ ) 2 n (4) |\frac{1}{n}\sum\limits_{i \in [n]} {l({x_i},{y_i};{A_s})} - \frac{1}{ {|s|}}\sum\limits_{j \in s} {l({x_j},{y_j};{A_s})} | \le \delta ({\lambda ^l} + {\lambda ^\mu }LC) + \sqrt {\frac{ { {L^2}\log (1/\gamma )}}{ {2n}}} \tag{4} ∣n1i∈[n]∑l(xi,yi;As)−∣s∣1j∈s∑l(xj,yj;As)∣≤δ(λl+λμLC)+2nL2log(1/γ)(4)
其中,损失函数 l ( ⋅ , y ; w ) l(·,y;w) l(⋅,y;w) 对于任意固定的 y , w y, w y,w 满足 λ l − L i p s c h i t z \lambda^l-Lipschitz λl−Lipschitz 连续条件,回归函数满足 λ η − L i p s c h i t z \lambda^\eta-Lipschitz λη−Lipschitz 连续条件,s 是训练集 { x i , y i } i ∈ [ n ] \{x_i, y_i\}_{i\in[n]} { xi,yi}i∈[n] 的一个 δ s \delta_s δs 覆盖,并且有概率 1 − γ 1-\gamma 1−γ 使得 l ( x s ( j ) , y s ( j ) ; A s ) = 0 , ∀ j ∈ [ m ] l(x_{s(j)}, y_{s(j)};A_s)=0, \forall j \in[m] l(xs(j),ys(j);As)=0,∀j∈[m]
由于假设training error == 0,上式左侧可以直接写为 1 n ∑ i ∈ [ n ] l ( x i , y i ; A s ) \frac{1}{n}\sum\limits_{i \in [n]} {l({x_i},{y_i};{A_s})} n1i∈[n]∑l(xi,yi;As)
上界部分可以简略地写成阶的形式,文中还给出了这张可视化图:
蓝色的点就是有标签数据集 s s s 中的点,红色的就是 [n]\s 中的点,对每一个蓝色点做半径为 δ s \delta_s δs 的邻域,并集就是一个覆盖。上界只和 δ s \delta_s δs 与 1 n \sqrt{\frac{ {1}}{ {n}}} n1 有关,但是 n n n 在一个问题中固定,我们就只需要最小化 δ s \delta_s δs 来让总体损失最小化。
最后目标就化简成了让 δ \delta δ覆盖最小化:
min s 1 : ∣ s 1 ≤ b ∣ δ s 0 ∪ s 1 {\min _{ {s^1}:|{s^1} \le b|}}{\delta _{ {s^0} \cup {s^1}}} s1:∣s1≤b∣minδs0∪s1
更直白的
min s 1 : ∣ s 1 ≤ b ∣ max i min j ∈ s 1 ∪ s 0 Δ ( x i , x j ) (5) \mathop {\min }\limits_{ {s^1}:|{s^1} \le b|} \mathop {\max }\limits_i \mathop {\min }\limits_{j \in {s^1} \cup {s^0}} \Delta ({x_i},{x_j}) \tag{5} s1:∣s1≤b∣minimaxj∈s1∪s0minΔ(xi,xj)(5)
最小化覆盖半径 δ \delta δ就是让无标签数据离有标签数据最近距离的最大值最小化。
这是一个NP问题,但是可以用K-Greedy算法得到一个** 2-OPT solution**,这样得到的结果有理论保证,如果设
O P T = min s 1 : ∣ s 1 ∣ ≤ b max i min j ∈ s 1 ∪ s 0 Δ ( x i , x j ) OPT = \mathop {\min }\limits_{ {s^1}:|{s^1}| \le b} \mathop {\max }\limits_i \mathop {\min }\limits_{j \in {s^1} \cup {s^0}} \Delta ({x_i},{x_j}) OPT=s1:∣s1∣≤bminimaxj∈s1∪s0minΔ(xi,xj)
那么有
max i min j ∈ s 1 ∪ s 0 Δ ( x i , x j ) ≤ 2 ∗ O P T \mathop {\max }\limits_i \mathop {\min }\limits_{j \in {s^1} \cup {s^0}} \Delta ({x_i},{x_j}) \le 2*OPT imaxj∈s1∪s0minΔ(xi,xj)≤2∗OPT
语言表达起来就是贪心算法选择的查询集合不一定导致最优的 δ s 0 ∪ s 1 \delta_{s^0\cup s^1} δs0∪s1 但是不会超过两倍的最优值。即加载 O P T OPT OPT 和 2 O P T 2OPT 2OPT 之间。
贪心算法流程图:
在一次迭代中选择b个无标签数据,分b次选择。每一次选择与当前有标签数据点距离最远的那个无标签数据,并把它加入到有标签数据之中。故需要注意这b次选择和直接选b个不同。
Notation | Explanation |
---|---|
u j u_j uj | 当一个数是有标签的, u j = 1 u_j=1 uj=1 |
ξ i , j \xi_{i,j} ξi,j | 当数据 i i i 离有标签数据 j j j 最近且不在 δ \delta δ 覆盖内 ξ i , j = 1 \xi_{i,j}=1 ξi,j=1 |
w i , j w_{i,j} wi,j | 数据 i i i 离有标签数据 j j j 最近,被覆盖或者属于上面那类 |
Δ ( x i , x j ) \Delta(x_i,x_j) Δ(xi,xj) | 两个数据输出的概率分布之间的 l 2 l_2 l2距离 |
Ξ \Xi Ξ | 可以当作 o u t l i e r outlier outlier不被覆盖的个数 |
算法结构如下:
一开始先用贪心算法做了一个初始化的查询集合 s g s_g sg。之后通过二分查找获得 O P T OPT OPT 的真实值,在 M I P MIP MIP 中代入 δ = O P T \delta = OPT δ=OPT 求解出 { i s . t . u i = 1 } \{i s.t.u_i = 1\} { is.t.ui=1}
关于其中的二分查找,稍作说明。
算法流程中的 u b ub ub 就是 O P T OPT OPT 的 u p p e r b o u n d upper bound upperbound, l b lb lb 就是 O P T OPT OPT 的 l o w e r b o u n d lower bound lowerbound。 因为通过贪心算法得到的 δ 2 − O P T ≤ 2 O P T \delta_{2-OPT} \le 2OPT δ2−OPT≤2OPT,那么有 δ 2 − O P T 2 ≤ O P T ≤ δ 2 − O P T \frac{ {\delta_{2-OPT}}}{ {2}} \le OPT \le \delta_{2-OPT} 2δ2−OPT≤OPT≤δ2−OPT 我们把两端分别作为 u b ub ub 和 l b lb lb 的初始化值,然后就进行二分查找,直到 u b = l b ub=lb ub=lb,就找到了 O P T OPT OPT 的值。
查找的过程中,如果 M I P MIP MIP 问题有解,说明 l b ≤ O P T ≤ l b + u b 2 lb \le OPT \le \frac{ {lb+ub}}{ {2}} lb≤OPT≤2lb+ub,那我们需要把 u b ub ub 变小;反之亦然,这就是 i f − e l s e if-else if−else的作用。
上图是作者的方法与其他方法对比的结果,上面一排是进行弱监督学习,即在有标签数据集 s s s 之外,也利用了 [n]\ s s s 的信息。下面一排是纯监督学习,只利用 s s s。
作图说明作者方法和基于不确定性查询相比,查询的结果在 F e a t u r e M a p Feature Map FeatureMap 上分布更加均匀,有利于总体分布的表现,效果更好。
右下角的图说明对于贪心算法2-OPT solution的优化是有明显效果的。
[1] Sener O, Savarese S. Active learning for convolutional neural networks: A core-set approach[J]. arXiv preprint arXiv:1708.00489, 2017.
[2] https://arxiv.org/pdf/1708.00489.pdf),