深度学习的缺陷在于它通常需要大量的标记数据才能更好的工作, 然而现实中带标签的数据往往难以获取,且为数据打标签的成本过高, 这时便引入半监督学习. 半监督学习是利用未标记数据来解决这一弱点的最有前途的方法之一.
论文地址: Unsupervised Data Augmentation for Consistency Training
代码地址: https://github.com/google-research/uda
会议: NeurIPS 2019
任务: 分类
在本文工作中, 研究了噪声注入在一致性训练中的作用, 并观察到高级数据增强方法, 特别是那些在监督学习中效果最好的方法, 在半监督学习中也表现良好. 因此, 使用高质量的数据增强方法代替传统的噪声注入方法, 以提高训练的一致性. 为了强调在一致性训练中使用更好的数据增强, 将方法命名为无监督数据增强(Unsupervised Data Augmentation, UDA).
文中符号定义如下:
- x x x 为模型输入.
- y ∗ y^* y∗ 为目标的真实预测值.
- p θ ( y ∣ x ) p_{\theta}(y \vert x) pθ(y∣x) 为基于 x x x 来预测 y ∗ y^* y∗ 的学习模型.
- θ \theta θ 为模型参数.
- p L ( x ) p_L(x) pL(x) 为带标签示例.
- p U ( x ) p_U(x) pU(x) 为不带标签示例.
- f ∗ f^* f∗ 为通过学习后的完美分类器.
- q ( x ^ ∣ x ) q(\hat{x} \vert x) q(x^∣x) 为数据增强变换.
Data Augmentation
数据增强旨在通过将转换应用于示例且不更改其标签来创建逼真的训练数据. 形式上, 令 q ( x ^ ∣ x ) q(\hat{x} \vert x) q(x^∣x) 为增强变换, 从中可以根据原始示例 x x x 得到增强示例 x ^ \hat{x} x^. 为了使增强变换有效, 要求从分布中提取的任何示例 x ^ ∼ q ( x ^ ∣ x ) \hat{x} \sim q(\hat{x} \vert x) x^∼q(x^∣x) 与 x x x 共享相同的真实标签. 给定一个有效的增强转换, 我们可以简单地在增强示例上最小化负对数似然.
Supervised Data Augmentation 可以等效地视为从原始监督集构建一个增强的标记集, 然后在增强集上训练模型. 近年来, 在有监督的环境中, NLP, 视觉, 和语音的数据增强设计取得了重大进展. 尽管取得了可喜的结果, 但数据增强大多被认为是"蛋糕上的樱桃", 它提供了稳定但有限的性能提升, 因为这些增强到目前为止只应用于一组通常很小的标记示例. 受此限制的启发, 通过一致性训练框架, 将监督数据增强扩展到半监督学习, 其中有大量未标记的数据可用.
半监督学习中利用未标记的示例来增强模型的平滑性的方式可以概括如下:
- 给定一个输入 x x x, 通过注入噪声 ϵ \epsilon ϵ, 分别计算输出分布 p θ ( y ∣ x ) p_\theta(y \vert x) pθ(y∣x) 和 p θ ( y ∣ x , ϵ ) p_\theta(y \vert x, \epsilon) pθ(y∣x,ϵ). 噪声可以应用于 x x x 或 隐状态, 例如 Adversarial Dropout 对 dropout 进行扰动.
- 然后最小化两个分布 D ( p θ ( y ∣ x ) ∣ ∣ p θ ( y ∣ x , ϵ ) ) \mathcal{D}(p_\theta(y \vert x) \vert\vert p_\theta(y \vert x, \epsilon )) D(pθ(y∣x)∣∣pθ(y∣x,ϵ)) 之间的散度.
此过程强制使模型对噪声不敏感, 因此相对于输入空间的变化更平滑(smoothness). 从另一个角度来看, 最小化一致性损失会逐渐将标签信息从标记示例传播到未标记示例.
与现有工作不同的是, 本文中关注的问题是, 噪声的形式及质量作用于 q q q 后对一致性训练框架的性能的影响. 具体来说, 为了加强一致性, 现有方法通常采用简单的噪声注入方法, 例如添加高斯噪声. 相比之下, UDA 中使用监督学习的更强的数据增强作用于半监督的一致性训练框架中, 研究表明此方法可以带来更卓越的性能.
Unsupervised Data Augmentation (UDA)
i). UDA 模型如下:
与其他基于一致性原则的模型类似, 例如 Mean Teacher, Temporal Ensembling 等, UDA 的最终损失函数也由两部分组成:
- 1.带标签样本的的有监督交叉熵损失 CE loss.
E x 1 ∼ p L ( x ) [ − log p θ ( f ∗ ( x 1 ) ∣ x 1 ) ] \mathbb{E}_{x_1 \sim p_{L(x)}}[-\log p_{\theta}(f^*(x_1)\vert x_1)] Ex1∼pL(x)[−logpθ(f∗(x1)∣x1)]
- 2.一致性惩罚 loss, 以前的版本为无标签数据的 KL 散度, 现在变成了交叉熵.
E x 2 ∼ p U ( x ) E x ^ ∼ q ( x ^ ∣ x 2 ) [ C E ( p θ ~ ( y ∣ x 2 ) ∣ ∣ p θ ( y ∣ x ^ ) ) ] \mathbb{E}_{x_2\sim p_{U(x)}} \mathbb{E}_{\hat{x}\sim q(\hat{x}\vert x_2)}[CE(p_{\tilde{\theta}}(y\vert x_2)\vert\vert p_{\theta}(y\vert \hat{x}))] Ex2∼pU(x)Ex^∼q(x^∣x2)[CE(pθ~(y∣x2)∣∣pθ(y∣x^))]
通过权重因子 λ \lambda λ 将两部分结合成如下:
min θ J ( θ ) = E x 1 ∼ p L ( x ) [ − log p θ ( f ∗ ( x 1 ) ∣ x 1 ) ] + λ E x 2 ∼ p U ( x ) E x ^ ∼ q ( x ^ ∣ x 2 ) [ C E ( p θ ~ ( y ∣ x 2 ) ∣ ∣ p θ ( y ∣ x ^ ) ) ] \underset{\theta}{\min}\mathcal{J(\theta)}=\mathbb{E}_{x_1 \sim p_{L(x)}}[-\log p_{\theta}(f^*(x_1)\vert x_1)]+\lambda \mathbb{E}_{x_2\sim p_{U(x)}} \mathbb{E}_{\hat{x}\sim q(\hat{x}\vert x_2)}[CE(p_{\tilde{\theta}}(y\vert x_2)\vert\vert p_{\theta}(y\vert \hat{x}))] θminJ(θ)=Ex1∼pL(x)[−logpθ(f∗(x1)∣x1)]+λEx2∼pU(x)Ex^∼q(x^∣x2)[CE(pθ~(y∣x2)∣∣pθ(y∣x^))]
其中 θ ~ \tilde{\theta} θ~ 是当前参数 θ \theta θ 的固定副本, 梯度并不通过 θ ~ \tilde{\theta} θ~ 传播.
ii). 针对不同任务的数据增强策略
-
RandAugment for Image Classification. 使用一种名为 RandAugment 的数据增强方法, 该方法受到 AutoAugment 的启发. AutoAugment 使用一种搜索方法将 Python 图像库(PIL)中的所有图像处理转换结合起来, 以找到一个好的增强策略. 在 RandAugment 中, 不使用搜索, 而是从 PIL 中的同一组增强变换中统一采样. 换句话说, RandAugment 更简单, 不需要标记数据, 因为不需要搜索最优策略.
-
Back-translation for Text Classification. 当用作扩充方法时, 回译(Back-translation)是指将语言 A 中的现有示例 x x x 翻译成另一种语言 B, 然后将其翻译回 A 以获得扩充示例 x ^ \hat{x} x^ 的过程. 回译可以生成不同的释义, 同时保留原始句子的语义, 从而显着提高问答的性能. 如下图所示. 论文的案例中, 使用 Back-translation 来解释文本分类任务的训练数据.
-
Word replacing with TF-IDF for Text Classification. 虽然回译擅长维护句子的全局语义, 但对保留哪些单词几乎没有控制. 这个要求对于主题分类任务很重要, 因此, 用低 TF-IDF 值替换.
iii). 训练技巧
- Confidence-based masking. 由于在半监督训练中, 带标签数据与不带标签数据量有显著差别, 因此模型可能很快对带标签数据过拟合, 但对不带标签数据还欠拟合, 所以引入 TSA(training signal annealing, 训练时间退火). 在每个 minibatch 中, 一致性损失项仅在分类类别中的最大概率(置信度)大于阈值 β \beta β 的示例上计算.
- Sharpening Predictions. 与上述过程相结合, 重新计算未标记样本的交叉熵损失, 计算如下:
1 ∣ B ∣ ∑ x ∈ B I ( max y ′ p θ ~ ( y ′ ∣ x ) > β ) C E ( p θ ~ ( s h a r p ) ( y ∣ x ) ∣ ∣ p θ ( y ∣ x ^ ) ) \frac{1}{\vert B \vert}\sum_{x \in B} I(\underset{y'}{\max}p_{\tilde{\theta}}(y'\vert x) > \beta)CE(p_{\tilde{\theta}}^{(sharp)}(y\vert x)\vert\vert p_{\theta}(y\vert \hat{x})) ∣B∣1x∈B∑I(y′maxpθ~(y′∣x)>β)CE(pθ~(sharp)(y∣x)∣∣pθ(y∣x^))
p θ ~ ( s h a r p ) ( y ∣ x ) = exp ( z y / τ ) ∑ y ′ exp ( z y ′ / τ ) p_{\tilde{\theta}}^{(sharp)}(y\vert x)=\frac{\exp(z_y/\tau)}{\sum_{y'}\exp(z_{y'}/\tau)} pθ~(sharp)(y∣x)=∑y′exp(zy′/τ)exp(zy/τ)
其中 I I I 是指示函数, z y z_y zy 是 关于 x x x 标签 y y y 的 logit 值.
- Domain-relevance Data Filtering. 理想情况下, 我们希望使用域外未标记的数据, 因为它通常更容易收集, 但是域外数据的类别分布与域内数据的类别分布不匹配, 这可能导致如果直接使用, 造成性能损失. 为了获得与手头任务相关的域数据, 采用了一种通用技术来检测域外数据. 使用在域内数据上训练的基准模型来推断大型域外数据集中的数据标签, 并挑选出模型最有信心的示例. 具体来说, 对于每个类别, 根据属于该类别的分类概率对所有示例进行排序, 并选择概率最高的示例.
Theoretical Analysis
Problem1: 为什么 UDA 可以提高模型的性能
假设相同标签的样本存在一条边, 否则则无.
- 对于监督学习, 由于没有数据扩充, 所以不存在标签传播.
- 对于强数据增强, 由于有样本扩充, 因此标签信息可以传播到无标注数据上.
- 对于弱数据增强, 由于增强算法不是很好, 扩充出的样本可能并非真实样本, 效果弱于强数据增强.
- 对于强数据增强的 UDA , 直接使用无标签样本扩充, 在训练时产生标签信息传播.
- 对于弱数据增强的 UDA , 效果弱于强数据增强的 UDA.
Problem2: 达到一定错误率所需的标记示例数
在 UDA 下, 让 P r ( A ) Pr(\mathcal{A}) Pr(A) 表示在给定来自 P L P_L PL 的 m m m 个标记示例的情况下, 该算法的错误率:
P r ( A ) = ∑ i P i ( 1 − P i ) m Pr(\mathcal{A})=\sum_iP_i(1-P_i)^m Pr(A)=i∑Pi(1−Pi)m
Experiments
- 在 CIFAR-10、SVHN上进行视觉实验, 结果如下:
可以看到在给定不同大小的标记数据的情况下, UDA 始终优于其他两个模型. 此外, UDA 和 VAT 之间的性能差异显示了基于数据增强的噪声的优越性. UDA 和 VAT 的区别本质上是噪声过程. 虽然 VAT 产生的噪声通常包含真实图像中不存在的高频伪影, 但数据增强主要生成多样化和逼真的图像. 好的数据增强方法都优于噪音注入.
接下来, 直接将 UDA 与之前发布的不同模型架构下的结果进行比较. 在相同的架构下, UDA 的性能明显优于所有已发布的结果, 并且几乎与完全监督的性能相匹配.
- 在 IMDb、Yelp-2、Yelp-5、Amazon-2、Amazon-5、DBPedia 数据集上进行文本实验, 结果如下:
在四种初始化方案中的每一种下, 比较了 BERT 使用和不使用 UDA 的性能结果. 可以看出 UDA 与预训练结合, 在一定概率上会有效果提升.
- ImageNet 数据集的可扩展性测试. 为了评估 UDA 是否可以扩展到大规模和更高难度的问题, 转向以 ResNet-50 为底层架构的 ImageNet 数据集. 最终实验结果如下:
在10%和完整的数据设置中, UDA 与监督相比始终带来显著的收益. 这表明 UDA 任然能够提高模型的性能.