本文研究了半监督学习中通过自监督训练利用非标记数据的一种方法。具体来说,引入了SentAugment,这是一种数据增强方法,它从有标签的数据中计算特定于任务的查询嵌入,从从网络上爬取的数十亿个无标签的句子库中检索句子(/(ㄒoㄒ)/~~果然是Facebook AI才配做的工作啊)。与以前的半监督方法不同,本文的方法不需要域内无标记数据,因此更普遍适用(我觉得咋不太实用呢,主要是数据量太大了穷逼应该用不起吧?)。 其实本文的思路很简单,捋一遍论文就知道了。
Approach
总体的结构图如图所示:
Large-scale sentence bank
本文的方法依赖于一个大规模的无监督句子语料库,也就是摘要中提到的上亿条数据【1】。该句子嵌入空间不依赖于下游任务,将用于检索与特定任务相关的句子库子集。换句话说,可以通过这个bank对下游数据的训练集进行派生。重点还是派生的方法。为了利用这个句子库,首先需要对句子做表征,本文使用了word2vec以及uSIF【2】(这俩都是无监督的损失)。此外,本文还训练了自己的英语句子编码器,Transformer预先训练了蒙面语言建模,并微调以最大化相似句子之间的余弦相似度,具体的损失函数如下: 其中
x
,
y
x,y
x,y表示一对正例,也就是两个相似的文本;而
x
,
y
c
x,y_c
x,yc?则是负例。
Downstream task embeddings
在有了文本的表示模型之后,对于下游任务的中待处理的句子,可以通过这种相似度的匹配(余弦相似度)去bank中查询相似的文本。本文考虑了三种不同的比较方式:
- all-average。通过对下游任务训练集的所有样本的句子嵌入求平均,我们可以得到一个嵌入。
- label-average。为每个标签构建一个嵌入,对应于每个标签在序列集中的句子嵌入的平均值。
- per-sentence。为每个句子在下游任务的训练集中嵌入一个句子。
Unsupervised data retrieval
接下来,为了从大规模bank中过滤置信度高的数据,并进一步减少相似文本的量级,本文使用了一个Teacher模型计算文本的置信度,从每一类中选取前K个样本,形成最终的合成数据集。之后,扩充(增强)之后的样本便可以应用于具体的下游任务了。本文将数据增强技术与self-training和知识蒸馏相结合,这两种半监督学习技术可以从相关的无注释句子中获益。
Experiment
不同实验的结果:
Refenrence
【1】Ccnet: Extracting high quality monolingual datasets from web crawl data. 【2】Unsupervised random walk sentence embeddings: A strong but simple baseline.
|