每周论文27

本周论文:

  1. Curriculum Learning for Domain Adaptation in Neural Machine Translation
  2. Dynamically Composing Domain-Data Selection with Clean-Data Selection by “Co-Curricular Learning” for Neural Machine Translation
  3. Pseudo-Labeling Curriculum for Unsupervised Domain Adaptation
  4. Curriculum Learning for Natural Answer Generation
  5. MentorNet: Learning Data-Driven Curriculum for Very Deep Neural Networks on Corrupted Labels

[Curriculum Learning for Domain Adaptation in Neural Machine Translation]

提出将CL用于翻译任务上的domain adaptation。

任务:有些领域相关的翻译没有那么多平行语料,一般有的都是general domain的,还有的就是不知道是什么领域的,比如从网络上爬下来的数据paracrawl,本文就是希望能够更好地利用这些未知领域的数据以训练更好的特定领域模型。

其基本做法是:先训一个generic的模型,然后作为initialization。接着从这些unlabeled domain的数据,根据与特定领域数据集的相似程度排序,然后利用CL从相似性最高的到相似性低的训练。本文是第一个将CL用于domain adaptation。

Pipeline:

排序指标(Domain Similarity Scoring)

第一个问题即,如何判断哪些句子是domain相关的?

记$I$是in-domain的数据;$N$是unlabeled domain的数据,排序所要做的就是根据$I$的数据按照相似度来排序,并取前n个用于训练。

本文使用了两种指标。

Moore-Lewis Method

对于每个在$N$里面的句子$s$都会分配一个分数:

其中$H_{I}$是在$I$上训练的语言模型的cross entropy;$H_{N}$是在从$N$上随机采样的大小与$I$相近的数据所训练得到的语言模型的cross entropy。

该指标越小,代表句子$s$与in-domain数据集$I$更相近。

Cynical Data Selection

循环选择句子构建training corpus来大致对$I$建模。每个iteration,每个sentence都会计算将其加入到已经构建好的training corpus所带来的cross-entropy decrease,而带来最大decrease的句子则被选中,这里的cross-entropy是previously selected n-sentence corpus与I之间的。

Curriculum Learning Training Strategy

首先根据上述指标排序,然后切分成多个shards;训练过程是切分成若干个phase的,每个phase只能用部分的数据;在第一phase,只能用最简单的shard训练,然后随着phase的增加,增加剩余最简单的shard;注意到数据呈现的顺序不是固定的,并不是严格简单到难,而是随机从当前phase能看到的shard中采样。这样能够带来一定的随机性,对模型训练有帮助。

在实验中是将数据分成了40个shards,每个phase随机采样1000个batch。


[Dynamically Composing Domain-Data Selection with Clean-Data Selection by “Co-Curricular Learning” for Neural Machine Translation]

提出将domain-data selection与clean-data selection结合,并提出联合课程学习,用以翻译任务上的domain adaptation。

任务背景描述:domain-data selection是从大数据集上根据特定领域的小数据集选择与该特定领域最相关的数据用以扩充数据量来训练;同理clean-data selection则是选择干净/噪声较少的数据来训练。

本文将这二者的数据选择结合起来并用于CL的训练。

domain/noise的测量

一般是使用language model来衡量。

假设我们有一个general-domain的语言模型$\widetilde{\vartheta}$和一个in-domain的语言模型$\widehat{\vartheta}$,对于一个句子而言其domain相关性就有:

同样,假设我们有$\widetilde{\theta}$的NMT baseline模型,训练于有噪声的数据;$\widehat{\theta}$则是在干净的数据上基于$\widetilde{\theta}$ fine-tune的NMT模型,则衡量noise level有:

问题设置


记$\widetilde{D_{X Y}}$是背景双语数据集,可以是从网上爬下来的,有不同domain和noise;$D_{X}^{\mathrm{ID}}$是in-domain的单语语料,可以较小,我们可以用这个来对domain relevance来排序;$\widehat{D_{X Y}^{\mathrm{OD}}}$是小的,可信任(干净)的out-of-domain的平行语料,我们可以用这份数据来语料的噪声程度做排序;$\widehat{D_{X Y}^{\mathrm{ID}}}$则是双语的in-domain语料,我们在这里假设in-domain的双语预料不存在,希望借助其他三个来学会domain adaptation。

Co-Curricular Learning

$\mathcal{D}_{\lambda}^{\phi}(t, D)$ 是一个selection function,在时间t上返回top λ(t)的经过排序的数据作为训练。

这里使用pace function:

注意这是随着时间递减的。也即我们希望遇到后面越domain相关/数据越干净。一开始是训练一个general的表示,可以理解成是一个initialization,然后后面再用好的数据去fine-tune。

由于既要考虑clean-data又要考虑in-domain data,所以就引出两个策略。

Mixed Co-Curriculum

我们可以直接将clean-data selection与in-domain selection的分数直接加起来作为总的排名分数:

然后再用同一个pace-function选择在时间t下的topk个数据用以训练。

但这个方法的问题在于这两个分数并不一定是同一个量级的,不一定是一个分布族,不应该直接加起来。

Cascaded Co-Curriculum

另一种则是分别定义二者的pace function,然后结合起来。

分别是二者的pace function。

因此结合起来,做两个的交集:

所以每个sample的weight为:

以下是一个toy example:

也即只保留两个指标都选择保留的数据。

CL optimization

该算法如何优化?本文采用EM-style的算法,这是一个迭代的过程。

模型在更新过程中还会反过来重新更新scoring function。

一些思考

原先的CL是从简单到难。这里的是从不相关/不干净 到 相关/干净, 其motivation是希望一开始训练一个general的表示,然后再不断地通过越来越相关/干净的数据去fine-tune。而传统CL则是希望先通过简单的数据使模型更平稳地发展。二者似乎出发点不同,如果严格地说,本文不应该算是一种传统CL(从简单到难)?

实际上论文里面也提到了,这更像是一种multi-task transfer learning,假设每个时间t都是一个task,本文是定义了一系列的task $\mathcal{M}=\left\langle m_{1}, \ldots, m_{t} \ldots, m_{f}\right\rangle$,其中最后的task才是我们感兴趣的(也即in-domain),而中间的task都是一系列的垫脚石,希望能够将知识一步一步地transfer到最终的task上,这也是为什么随着训练过程的进行可用数据越来越少的原因。

那么传统CL与这种multi-task transfer learning之间是否矛盾的地方?二者的motivation听起来都很合理,他们之间是否本质上有一个联结点能够使二者不矛盾?

其实想一想似乎也不矛盾,主要看最终的目的是啥,以及标准是啥。CL是先从简单到难,最终是希望在同一个数据集上表现更好;而本文的transfer leanring则不同,是在general数据集上逐渐引导至特定domain,希望在特定domain的数据集上表现好,而不是希望在训练的general domain上表现好。二者的评测标准是不同的,出发点是不同的,因此应该是不矛盾的。


[Pseudo-Labeling Curriculum for Unsupervised Domain Adaptation]

本文提出一种利用伪标签加上CL训练达到图像分类domain adaptation(领域自适应)的目的。

任务介绍:给定有标签的source,以及无标签的target,其中source与target的领域是不同的,任务的目的是能够利用有标签的source训练得到能够有迁移到target领域能力的模型。

做法:本文利用之前文章CurriculumNet: Weakly Supervised Learning from Large-Scale Web Images提到的density-based clustering,先将图像根据density分类,然后首先对density较大的图像打标签,并利用这些图像训练分类器,然后再对density小一些的打标签,不断更新与打标签训练,最终获得由迁移能力的模型。

方法

记source samples $D_{\mathcal{S}}=\left\{\left(x_{i}^{S}, y_{i}^{S}\right)\right\}_{i=1}^{N_{S}}$ 是有标签的;target samples $D_{\mathcal{T}}=\left\{x_{i}^{t}\right\}_{i=1}^{N_{t}}$ 是无标签的$\hat{\boldsymbol{y}}_{\boldsymbol{i}}^{\boldsymbol{t}}$ 则是伪标签,目的是训练一个$C_t$能够将target samples分类。

$G_f$是共享的特征提取器,$C_t$与$C_s$分别是source/target的分类器,$G_d$是二分类器,输入source或者target,能够判断输入是source还是target samples。

一开始,我们训练$G_f$,$C_s$,$G_d$,因为一开始模型能力弱,打标签的可靠性低:

其中$f$就是$G_f$的输出。

接着,通过之前提到的聚类方法,将target聚为3类,$D_{e}, D_{m},D_{h}$。

给local density高的打标签,假设local density的更为可靠,我们打完这些标签后就开始利用这些来训练$C_s$,然后更新参数,注意到这里更新的是所有与之相关的参数,也包括$G_f$等。

更新完了模型重新对数据打标签,此时就可以将$D_m$的数据用以训练了,然后训练完再更新完标签,就可以将$D_h$用以训练了。

这里的思想有点借鉴了GAN了。


[Curriculum Learning for Natural Answer Generation]

将CL应用于NAG的训练上。

NAG这个任务我不熟,只讨论CL,仍然是从指标定义与训练策略两步讨论。

指标

定义复杂度的指标:
通过两个指标,将sample分为两类:target instance与common instance。

Term Frequency Selector

通过answer的term frequency,如果frequency太大,说明这个词太过于普通,小的TF说明这个词有价值,但太小可能说明是噪声,所以也要设个下限。

Grammar Selector

利用Stanford parser score作为grammar的metric,拥有好的grammar的句子通常有更高的分数,同时由于短句容易获得更高的分数,因此按比例让short与long answer的比例各占0.5。

被选中的就是target instance,也就是比较难的,否则就是common instance,也即比较简单的。

训练策略

希望模型一开始学习简单结构的,短的答案,使得模型学会基本的QA model,然后学会更复杂的内容,能够有能力生成自然的答案,所以先用common instance,然后再用target instance。

采用的是概率采样的schedul。记$Q_{c},Q_{t}$ 分别是common和target instance。一开始希望概率$w_{Q_{c}} \gg w_{Q_{t}}$,然后逐渐$w_{Q_{c}}$减小而$w_{Q_{t}}$增加,最后$w_{Q_{c}} \ll w_{Q_{t}}$。

因此我们有:


[MentorNet: Learning Data-Driven Curriculum for Very Deep Neural Networks on Corrupted Labels]

提出通过训练另一个MentorNet网络来辅助训练网络,用以解决在受污染label的数据上训练的问题。
论文提出的CL是能够数据驱动的,但本质上并不是CL而是SPL。
其实这篇后面的理论没怎么看懂。

基本做法是有一个辅助网络MentorNet,能够给予当前sample到的数据以一定权重,该权重是动态的,而不像传统SPL那样设定一个固定的schedule λ,小于λ的就用于训练,这是由人来确定schedule的,忽略了被训练的网络的反馈,而MentorNet则是数据驱动的,同时MentorNet与StudentNet是可以同时训练更新的。

因此,MentorNet的输出就是每个sample的weight。他主要有两个可学习的地方,一个是学习预定义好的curriculum;另一个就是从数据中学。

可学习的Curriculum

学习预定义的curriculum

实际上就是在拟合预定义的curriculum的值。

$g_{m}$即MentorNet的输出。我们在给定$\mathbf{z}_{i}=\phi\left(\mathbf{x}_{i}, y_{i}, \mathbf{w}\right)$,也即每个sample的一些feature,模型能够输出和预定义的curriculum一样的值。

从数据中学习Curriculum

我们希望从数据集中$\left\{\left(\phi\left(\mathbf{x}_{i}, y_{i}, \mathbf{w}\right), v_{i}^{*}\right)\right\}$学习如何打分,其中v=1表示该label是正确的的。但显然我们不能直接从训练数据中获得该数据集,因为可能存在被污染label的数据。因此论文的做法则是从另一个可信任的小数据集上学习,相当于知识迁移。比如我们可以在CIFAR-10上训练获得这样一个MentorNet然后在CIFAR-100上用。

那么要如何学?

MentorNet在输入epoch的百分比以及label后,过一个embedding;然后另一边将过去的loss以及loss的变化多少过一个双向的LSTM,论文中取LSTM的step size=1,也即只考虑一次过去的变化。然后二者cat起来进入fc层,最终获得了一个概率。其中最后一层是dropout,是论文提出的burn-in的过程。burn-in指的是一开始在训练的前20% epoch让MentorNet固定输出$g_{m}\left(\mathbf{z}_{i} ; \Theta^{*}\right)=r_{i}$,其中$r_{i}$是伯努利分布的采样结果,相当于让training sample随机被dropout p%,这样能让StudentNet更稳定预测,且专注于学习简单的pattern (why?)。

一点思考

从data中学习一个curriculum,也即去尝试给定一定的feature去拟合其label的正确概率,这有点像是meta-leanring在做的事情;同时在cifar10拟合在cifar100使用,也有点迁移学习的感觉。但这篇的本质并不是真正的CL,而是SPL,因为没有预先按照difficulty排序。同时,这让我想起CurriculumNet,CurriculumNet做的也是从不靠谱的数据中学到一个好的模型,他的做法则是利用聚类将数据分为三类然后按顺序训练;而这里则是通过知识迁移,在一个靠谱的数据集上训feature,然后在另一个上面时候用,这也不失为另一种思路,但如果不是同一类型的数据集如cifar10与cifar100,是否能够迁移也不好说。最后,这篇论文可能写得有些绕了,看起来有点累。


[本周论文小结]

本周继续专注于Curriculum Learning的论文。但比较巧的是本周的论文都是将CL应用于比较实际的问题,如corrupted label或者domain adaptation。对于这样的实际问题,更多需要的恰恰是训练方法上的创新,而CL正好是属于这方面的方法,对于解决这样实际问题,如何引入CL是值得关注的。corrupted label切中了当前网络数据很多但噪声很大这一痛点,如何解决这一问题,利用好大数据,或许比设计精巧的模型所能带来的提升更大;而domain adaptation同样也是一大痛点,虽然数据很多,但部分领域相关的数据稀缺,比如翻译领域能收集到的都是新闻的平行语料,或者小语种的数据集很难收集,特定专业领域如医疗的数据也难以获取。因此可以多多关注此类论文,思考如何解决这些实际问题。