MixText
MixText是ACL2020中的一篇半监督文本分类的论文,原文题目为《MixText: Linguistically-Informed Interpolation of Hidden Space for Semi-Supervised Text Classification》,一作为陈佳奥,佐治亚理工学院 PhD in CS。文章使用TMix数据增强技术,猜测未标记数据的低熵标签,对有标签和无标签混合数据计算损失,在少量标注数据上依然能取得好的效果。
论文:https://arxiv.org/pdf/2004.12239.pdf
开源代码:https://github.com/GT-SALT/MixText
相关工作
之前在半监督文本分类上的研究可分为以下几类:
1,利用变分自编码器(VAEs)重建句子,并利用重建后的潜在变量预测句子标签,例如《Semi-Supervised Models via Data Augmentation for Classifying Interactive Affective Responses》,文章地址:https://arxiv.org/pdf/2004.10972.pdf。
2,模型自训练输出置信预测,在现有的有标签数据上训练一个模型,使他在未标签数据上预测,若预测某一样本属于某一类的概率高,则认为它属于这个类,将该样本纳入训练集,再次训练模型,依次循环,例如《Semi-supervised Learning by Entropy Minimization》,文章地址:https://papers.nips.cc/paper/2004/file/96f2b50b5d3613adf9c27049b2a888c7-Paper.pdf。该方法没有好的理论依据且受到第一次训练数据影响大,可能导致误差累加。
3,添加对抗性噪音后进行一致性训练或者数据增强,对一句子使用 Augmentation之后(比如回译),我们希望模型做出consistent predictions,可以理解为希望模型能识别出增强后与增强前的句子有一致性,是比较常用的方法,相关工作有《Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning》与《Unsupervised Data Augmentation for Consistency Training》,文章地址分别为https://arxiv.org/pdf/1704.03976.pdf与https://arxiv.org/pdf/1904.12848.pdf。
4,使用未标记数据进行大规模预训练,然后使用标记数据进行微调,例如我们熟知的BERT:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》,文章地址:https://arxiv.org/pdf/1810.04805.pdf
以上工作有缺点:1,训练的时候往往将label data与unlabel data分开,分别有不同的loss,将两个loss结合训练,但并没有将label data与unlabel data结合起来,没有利用它们之间的联系信息。2,由于半监督中,未标注数据是巨大的,在模型同时对label data与unlabel data训练时,模型容易对label data过拟合,对unlabel data欠拟合。
introduction
为了克服以上的局限性,作者引入了一种新的数据增强方法,称为TMix。在TMix的基础上,作者引入了一种新的文本分类半监督学习方法MixText,MixText首先猜测未标记数据的低熵标签,然后使用TMix对标签和未标记数据进行插值。MixText可以通过鼓励模型在训练示例之间的线性行为(即插值是线性的),并在学习标记句子时利用未标记句子中的信息,从而有助于挖掘句子之间的隐含关系。
新的数据增强方法:TMix
TMix方法灵感来源于Mixup(一种图片上有名的数据增强方法),用公式表示就是:
其中
λ
\lambda
λ是0-1之间的数,(xi,yi),(xj,yj)是已标注的数据对,xi是输入(图像数据),yi是标签的onehot表示。
作者将Mixup扩展带文本建模上,该算法通过线性插值创建虚拟训练样本,以下为TMix整体框架:
由于文本分类的输入不是图像,作者使用12层BERT-base编码器对句子编码,获得语义表示并据此做出最终预测。在使用TMix时,作者选择在有L层编码器的第m层插入(也就如上图layer m),后面作者对比了在不同层数插值对结果的反馈。
作者对分别上图的上下两部分做了解释:
其中第一个公式算的是对第m层的输出进行线性插值(从第一步到mixup),得到混合后的句子表示,其中
λ
\lambda
λ服从beta(a,a)分布,与mixup思想一样;第二个公式意思就是在插值完成之后,依次接剩下的L-m层,l-1层的输出的隐状态作为第l层模型输入,算的是第l层的输出,一直前向传播到第L层结束,接一个2层的MLP输出类别,此时我们希望模型预测的结果也是输入数据标签的线性插值。
可以看到作者的插值操作是在分类模型里面完成的,选择某一层的隐状态进行插值,后面依旧是正常的模型前向传播的结构。选择在不同层数插值会使模型得到不同的信息:
作者使用KL散度作为TMix的损失:
其中
ϕ
\phi
ϕ是TMix框架中最后一层的参数。mix(yi,yj)是插值后的标签,为onehot表示,公式在图上,||右边就是模型预测出的输入属于哪一类的概率,也是onehot表示。
MixText=TMix+Consistency Training
这里演示如何利用TMix帮助实现半监督学习,也是文章最重要的地方。给定一个有限的带标签文本集
X
l
=
X
1
l
,
.
.
.
,
X
n
l
X_{l}=X^{l}_{1},...,X^{l}_{n}
Xl=X1l,...,Xnl,它们的标签为
y
l
=
y
1
l
,
.
.
.
,
y
n
l
y_{l}=y^{l}_{1},...,y^{l}_{n}
yl=y1l,...,ynl,和一个大的未标签文本集
X
u
=
X
1
u
,
.
.
.
,
X
m
u
X_{u}=X^{u}_{1},...,X^{u}_{m}
Xu=X1u,...,Xmu,其中n和m分别是带标签文本集合与无标签文本集合中的数据数量。
y
i
l
y^{l}_{i}
yil是长度为类别数的标签的onehot编码。
作者认为,MixText框架背后的核心思想是利用TMix对标记和未标记数据进行半监督学习。为了实现这一目标,文章提出了一种标签猜测方法,在训练过程中为未标记的数据生成标签,利用猜测的标签,可以将未标记的数据作为附加的标记数据,并执行TMix进行训练;此外,作者将TMix与额外的数据增强技术结合起来,生成大量增强数据,使算法能在有限的数据上也能工作;最后,作者引入了一个熵最小化损失,使模型在未标记的数据样本上分配尖锐的概率。
MixText的整体框架如下图:
其中
X
l
,
X
u
,
X
a
X_{l},X_{u},X_{a}
Xl,Xu,Xa分别表示已标注数据、未标注数据和未标注增强后数据。
原文中作者将MIxText分成了4个板块来阐述:Data Augmentation、Data Augmentation、TMix on Labeled and Unlabeled Data与Entropy Minimization。
下面依次对应上图的几个部分作解释:
Data Augmentation&Label Guessing
对应的是上图的下面部分,作者使用的增强方式是Back-translations(回译),也就是将一句话翻译成其他语言,再翻译回去,这样能得到与原句不一样的句子但能保留原句子的意义。作者是翻译成了德语然后再翻译会英语。每回译一次就会产生一个数据,重复K次就得到K个增强后的数据
X
u
,
1
a
,
X
u
,
2
a
,
.
.
.
,
X
u
,
K
a
X^{a}_{u,1},X^{a}_{u,2},...,X^{a}_{u,K}
Xu,1a,Xu,2a,...,Xu,Ka,后面用分类器对这些增强后的数据与原始数据一起预测它们的标签分布,由于每一次增强(回译)的质量不会一样,有些质量不高(与原句子意思并不相近),通过引入权重
W
o
r
i
W_{ori}
Wori和
W
k
W_k
Wk,可以控制不同质量的增强对生成标签的贡献,所以后面对预测的标签做加权平均,模型预测加权平均后的结果如下:
得到上图所示的直方图,横轴为类别,纵轴为该样本属于该类别的概率,为了避免加权平均值过于均匀,作者在预测标签上使用了锐化函数:
当T=1时,锐化后的就是原来的分布,当T趋近于0时,预测分布就是onehot向量。可以看到,锐化的作用就是使不同类别概率分布更有区分度。使用锐化后的概率分布作为最后预测的概率分布。
TMix on Labeled and Unlabeled Data&Entropy Minimization
对应的是上图的上面部分,作者将标记文本
X
l
X_l
Xl、未标记文本
X
u
X_u
Xu和未标记增广文本
X
a
X_a
Xa={
X
i
,
k
a
X^{a}_{i,k}
Xi,ka}合并在一起,形成一个超集
X
=
X
l
∪
X
u
∪
X
a
X=X_{l}\cup X_{u}\cup X_a
X=Xl∪Xu∪Xa,相应的标签为
Y
=
Y
l
∪
Y
u
∪
Y
a
Y=Y_{l}\cup Y_{u}\cup Y_a
Y=Yl∪Yu∪Ya,其中
Y
a
Y_a
Ya={
y
i
,
k
a
y^{a}_{i,k}
yi,ka},而且
y
i
,
k
a
=
y
i
u
y^{a}_{i,k}=y^{u}_{i}
yi,ka=yiu,也就是说,所有增强样本与原始未标记样本共享相同的生成标签。
在训练中,在超集X中随机抽取两个样本
(
X
,
y
)
,
(
X
′
,
y
′
)
(X,y),(X^{'},y^{'})
(X,y),(X′,y′)计算
T
M
i
x
(
X
,
X
′
)
TMix(X,X^{'})
TMix(X,X′)、
m
i
x
(
y
,
y
′
)
mix(y,y^{'})
mix(y,y′),使用KL散度计算损失:
最后求的是个期望。
由于
X
,
X
′
X,X^{'}
X,X′是从超集X中随机抽样的,我们从许多不同的类别中插值:标记数据之间的混合,标记和未标记数据的混合,以及未标记数据之间的混合。根据样本是否为标注数据,损失可分为两种类型:
Supervised loss
当抽取的样本为已标注数据,使用监督损失训练模型。
Consistency loss
当抽取的数据中有未标注数据,使用KL散度作为一致性损失计算loss,使用Label Guessing中猜测的标签。
对于无标签的数据,为了使模型在未标记数据上产生置信标签,文章将未标记数据的预测概率熵最小化为自训练损失:
结合这两个损失,我们得到MixText的总体目标函数:
实验结果
作者选择的数据集如下:
作者主要将BERT与google的UDA作为baseline比较。在BERT上作为一个监督式任务,作者下载pretrain的BERT在小的数据上fine-tuning然后预测,UDA是基于consistent training的半监督模型。
不同方法在不同训练集上准确率如下:
应该说MixText是完胜了。
下图是不同模型在不同数量的label data上训练,在5000个未标记数据上的准确率如下:
看到MixText在少标注数据下的效果要远好于其他的方法的。
下图是不同模型loss随着epoch的变化:
可以看到BERT很快出现了过拟合,TMix的loss比较稳定,证明了TMix能够减少模型的过拟合。证明了模型在半监督任务上的实用性。
消融实验
作者做了在不同层数上进行Mix对应的准确率如下:
第一行代表不做mix,即只有BERT作为监督式训练,效果较差。在0,1,2层mix时效果也不好,因为前面几层并没有提取到句子的有用信息。实验表明在7,9,12随机选择一个mix时效果最好。
作者也对比了去掉不同模块后的效果,去验证MixText中每一个模块对效果的贡献度。
具体细节可见源代码。
https://arxiv.org/pdf/2004.12239.pdf
https://www.bilibili.com/video/BV17k4y1y751?spm_id_from=333.1007.top_right_bar_window_history.content.click
NLP学习笔记2022/04/28