基于交叉可视训练的半监督序列建模

背景

半监督学习结合迁移学习是一个研究热点,预训练表征与多种形式的半监督学习是互补的。
这篇论文(具有交叉视训练的半监督序列建模(Semi-Supervised Sequence Modeling with Cross-View Training)),思想是确保对不同输入视图预测与主模型的预测一致,这和word dropout类似,允许利用未标注数据来加强模型的鲁棒性。与mean teacher等self-ensemble模型相比,是专门为nlp设计的。

1 介绍

无监督的表示学习算法,如word2vec和ELMo,提高了许多有监督的NLP模型的准确性,主要是因为它们有利于大量未标记的文本,而有监督的模型仅在主要训练阶段期间从有标记数据中学习。因此,我们提出了跨视图训练(CVT),这是一种半监督学习算法,使用标记和未标记数据的混合来改进Bi-LSTM句子编码器的表示。在标记的示例中,使用标准监督学习。在未标记的示例中,CVT教导了辅助预测模块,其看到输入的受限视图(例如,仅一部分句子)以匹配看到整个输入的完整模型的预测。由于辅助模块和完整模型共享中间表示,这反过来改进了完整模型。

现在利用无标签数据的主要方法是预训练+微调。预训练过程中,只利用无标签数据。更早的半监督学习方法,自我训练模型,是连续从混合的有标签、无标签数据中,学习。这篇论文使用交叉可视训练来进行序列建模(这种模型也是自我训练)。

自我训练中,模型在标记的样本正常学习,并且作为未标记样本的teacher Model,对这些样本进行预测,并且预测获得样本作为训练样本再次训练获得一个student model。
但是,这样存在过拟合的情况,就是,模型的训练样本已经得到他的预测结果。通过加入噪声,对student model可以产生较好的效果(对图像数据而言),但是对文本这种离散输入,加入噪声有点困难。
这篇论文解决思路是引入多视图学习,使用不同视图的输入,尽量让模型获得一致的输出。这种CVT方法,引入辅助预测模块——吧词向量表示作为预测目标,这样就引入了student model。每个student model的输入时模型中间层表示的子集。
其中,student model连接到共享的bi-lstm编码器。基于此,提出使用序列标记器的辅助预测模块,并且应用于英语到越南语机器翻译方面。
CVT方法可以有效与多任务学习相结合,只需在共享的Bi-lstm编码器为不同任务添加额外的预测模块。

2 cross-view training

2.1 方法
Dl={(x1,y1),(x2,y2),...,(xN,yN)}\mathcal D_l = \left \{ {(x_1,y_1),(x_2,y_2),...,(x_N,y_N)} \right\}表示有标签数据集,Dul={x1,...,xM}\mathcal D_{ul} = \left\{ {x_1,...,x_M} \right\}表示无标签数据集。使用pθ(yxi)p_\theta(y|x_i)代表xix_i输出的类别.
基于交叉可视训练的半监督序列建模

模型对有标签样本输入,容易学到Washington是一个“位置”,对于无标签样本,辅助预测模块是通过训练得到相同的预测。
CVT方法中,模型交替学习一小部分的有标签样本和一小部分的无标签样本。对于有标签样本,CVT使用标准的交叉熵:
Lsup(θ)=1Dlxi,yiDlCE(yi,pθ(yxi)\mathcal L_{sup}(\theta) = \frac{1}{|\mathcal D_l|}\sum\limits_{x_i,y_i \in \mathcal D_l } {CE(y_i, p_{\theta}(y|x_i)}

CVT k个辅助预测模块学习无标签样本时,预测模块通常是一个小型神经网络(比如,一个隐层结一个softmax层)。并且输入时xix_i的一小部分,记为hj(xi)h^j(x_i),实际中,可以将LSTMs的输出结果作为输入。

对未标记样本,模型首先通过推理产生软标签pθ(yxi)p_{\theta}(y|x_i)。CVT训练辅助预测模块来保证与主预测模块的一致性,预测目标为最小化loss:
LCVT(θ)=1DulxiDulD(pθ(yxi),pθj(yxi))\mathcal L_{CVT}(\theta) = \frac{1}{|\mathcal D_{ul}|} \sum\limits_{x_i \in \mathcal D_{ul}} D( p_{\theta}(y|x_i), p_\theta^j(y|x_i) )

D为KL散度。pθ(yxi)p_\theta(y|x_i)为主模型预测值,训练过程中,这个值固定,也就是辅助模块,可以学会初始化主要模块。CVT通过增强模型的表示学习来工作。随着辅助模块的学习,输入的表示质量提升,预测效果也提升,主预测模型性能也提升。
总的损失函数为:L=Lsup+LCVT\mathcal L = \mathcal L_{sup} + L_{CVT}. 使用随机梯度下降来减少损失。特别的是,交替使用有标签样本减少LsupL_{sup}和无标签样本减少LCVTL_{CVT}.

3 训练模型

3.1 依赖性解析

基于交叉可视训练的半监督序列建模


reference:

  1. 论文;
  2. 机器之心 18年nlp研究
  3. 开源代码