MixMatch: A Holistic Approach to Semi-Supervised Learning
这是本系列篇博客介绍的第一篇文章,也是涉及到半监督学习最新进展中的一个子分支–正则化项的最新的进展,这篇文章本身并没有引入新的正则化方法,而是将目前主流的正则化方法集成在一起,可以看作是一个探索性文章,来实际验证一下多个解决同一个问题的技术综合在一起可以达到怎样的效果。
1.研究背景
机器学习以及深度学习在许多场景上取得的成功已经向我们证明了监督学习的强大威力,但是在许多更加复杂的实际场景中,大量的有标注的数据是很难获得,并且通过人工进行数据标注需要花费很多的时间和精力。因此如何有效地利用少量的有标注数据以及大量的无标注数据就成为一个亟待解决的问题。这一问题可以被看作弱监督学习问题的一种,除此之外,若监督学习问题还包括监督信息不完整的情景,例如在目标检测中,只标注当前的图片中含有哪些物体,而不具体标注出这些物体在什么位置。为了解决若监督学习问题,几种常见的学习被提出,包括半监督学习,无监督学习,迁移学习,主动学习等。本文所关注正是半监督学习,其主要目标是如何提高模型的泛化性能。
半监督学习中,一般都含有一个默认的假设:有标注数据和无标注数据服从相同的数据分布,针对一半监督学习问题,一般都将其建模成一个优化问题,大部分的方法都遵循这个框架:
w
=
m
i
n
w
∑
i
=
1
n
l
l
o
s
s
(
x
i
)
+
r
e
g
u
l
a
r
i
z
a
t
i
o
n
w=min_w\sum_{i=1}^{n_l}loss(x_i)+regularization
w=minwi=1∑nlloss(xi)+regularization
其中的
l
o
s
s
loss
loss项对一般是指针对有标记数据的交叉熵损失,
r
e
g
u
l
a
r
i
z
a
t
i
o
n
regularization
regularization一般是针对模型或无标签数据的正则化项约束。
2.算法思想
本算法融合最近的三种主流的用于半监督学习的方法,它们是:
-
熵最小化原则:熵是一个物理学概念,用于反应现实世界的混乱程度,在计算机中,信息熵用来反应数据所包含的信息量的大小,也可以用来衡量置信度。在机器学习中,对于无标签数据可以通过当前模型进行打伪标记,假定总计 K K K个类别,则输出结构为一个 K K K维向量,每一维度可以看作属于每一个类别的置信度。从信息熵的角度进行衡量,熵最大的时候是最混乱的情况,对于到预测结果上,就是各个维度的值都等于 1 K \frac{1}{K} K1,即不能以一个很高的置信度将其分类到某一类别上,熵最小的时候是确定的情况,对应到预测结果上,就是某一个维度为1,其余皆为0,即 [ 0 , 0 , . . . 1 , 0 , . . . 0 ] [0,0,...1,0,...0] [0,0,...1,0,...0],此时,该样本被以最高的置信度划分到某一个类别中,总的来说,对无标签数据加熵最小化这个约束,可以鼓励模型输出更加确信的结果,另一个角度,也是促使模型穿过低密度数据区域,从而使得数据远离相应的决策边界(此处应该有个图说明一下,有时间来补)。
-
一致性正则,一致性正则是一个比较常用的数据增强技术,其基本的技术论点,以图片分类为例,对于同一张图片,经过训练,裁剪、放缩等处理后,其相应的标签仍与原始图片相同,因此,可以约束模型对同一个张图片增强过后的多张图片给出相同的预测结果,一个常用的约束条件为:
∣ ∣ p m o d e l ( y ∣ A u g m e n t ( x ) ; θ ) − p m o d e l ( y ∣ A u g m e n t ( x ) ; θ ) ∣ ∣ 2 2 ||p_{model}(y|Augment(x);\theta) - p_{model}(y|Augment(x);\theta)||_2^2 ∣∣pmodel(y∣Augment(x);θ)−pmodel(y∣Augment(x);θ)∣∣22 -
传统的正则项 在早期的监督学习或半监督学习中,存在一个常用的正则项,比如 l 1 l_1 l1正则以及 l 2 l_2 l2正则,其通过在模型参数进行约束,一方面可以降低模型的复杂度,另一个可以起到特征选择的作用。最近发明的一种数据增广方法叫做Mixup,其从训练数据中任意抽取两个样本,构建混合样本和混合标签,作为新的增广数据
x ^ = λ x i + ( 1 − λ ) x j y ^ = λ x i + ( 1 − λ ) x j \hat{x} = \lambda x_i + (1 - \lambda)x_j \\ \hat{y} = \lambda x_i + (1 - \lambda)x_j x^=λxi+(1−λ)xjy^=λxi+(1−λ)xj
λ \lambda λ是一个0到1之间的正数,代表两个样本的混合比例。
3.具体算法
MixMatch方法集成了以上三种方法,取多家之长,补多家之短, 方法示意图如下图所示,对无标签数据,做数据增广,得到 K 个新的数据。因为数据增广引入噪声,将这 K 个新的数据,输入到同一个分类器,得到不同的预测分类概率。MinMax 利用算法(Sharpen),使多个概率分布的平均(Average)方差更小,预测结果更加自洽,系统熵更小。
其主要的流程如以下所示步骤2-5所示:
步骤2: 使用 MixMatch 算法,对一个 Batch 的标记数据
X
X
X 和一个 Batch 的未标记数据
U
U
U 做数据增广,分别得到一个 Batch 的增广数据
X
′
X'
X′ 和 K 个Batch的
U
′
U'
U′ 。
步骤3-4:对增广后的标记数据
X
′
X'
X′ ,和无标记增广数据
U
′
U'
U′分别计算损失项
步骤5:总体的损失为上述两个损失之和
以上步骤的详细算法流程如下所示:
4.实验结果
本文在CIFAR-10数据集上进行了测试,在 CIFAR-10 数据集上,使用全部五万个数据做监督学习,最低误差能降到百分之4.13。使用 MixMatch,250 个数据就能将误差降到百分之11,4000 个数据就能将误差降到百分之 6.24。结果惊艳。
以及更加直观的对比效果:
作者也进行解剖各部分贡献的实验,结果如下:
个人理解
这篇文章本身并没有引入新的正则化方法,而是综合了目前的主流方法形成了自己的算法,从整体发展上看,这篇文章可以看作是一个填补人们好奇心的一篇实验文章,对于这个方法很大程度上,我们会认为它能够取得很好的效果,但是具体能够好到什么程度,我们还无从知晓,这篇文章就进行了定量的测试帮我们回答了这个问题。从学以致用的角度来看,本文可以看作是一个范例,即当我们想将多个现有技术整合在一个框架中,该如何进行处理的一个范例,并不是简单的讲三个部分单独处理,然后进行相加,这样就成了比较独立的三部分,现在的这种处理方式每一部分都发挥着各自的作用,每个部分都是不可或缺的,而不是互相之间可以替代的,这个是我们在以后进行应用或者设计新的算法时可以借鉴的。放到自己的研究方向上,这个方式也可以做一个实验性质的探究,每一个部分可以探索发挥不同的作用从而整合在一起,可以进行尝试。
[1]: MixMatch: A Holistic Approach to Semi-Supervised Learning
[2]:Semi-supervised Learning by Entropy Minimization