每周论文23

本周论文:

  1. Reinforcement Learning based Curriculum Optimization for Neural Machine Translation
  2. Curriculum Dropout
  3. Self-Paced Curriculum Learning
  4. Learning the Easy Things First: Self-Paced Visual Category Discovery
  5. Curriculum Learning and Minibatch Bucketing in Neural Machine Translation
  6. Visualizing and Understanding Curriculum Learning for Long Short-Term Memory Networks
  7. LEARNING TO TEACH
  8. Learning to learn by gradient descent by gradient descent
  9. Curriculum Learning of Multiple Tasks

[Reinforcement Learning based Curriculum Optimization for Neural Machine Translation]

使用RL来进行学习curriculum learning,使得模型能够在各式各样的数据集上表现良好(也即高效利用noise很大的数据集,如Paracrawl)。

使用一个指标CDS来将数据切分:

$e$和$f$是翻译对。其中$\theta_c$是在可信任的数据集上训练的模型;$\theta_n$在noisy corpus上训练的(比如Paracrawl)。

RL的几个基本因素:

Observation Engineering:the observation is the vector containing sentence-level log-likelihoods produced by the NMT system for this prototype batch 参考(Reinforced co-training.)

Reward Engineering:The reward is a function of the log-likelihood of the development set of interest.

Action:将数据集分为多个bin,action就是选择在哪个bin里面选择数据集。


[Curriculum Dropout]

顾名思义,就是逐渐增加dropout rate。


[Self-Paced Curriculum Learning]

将self-paced learning与curriculum learning结合。

Curriculum Learning

通过先验知识对example的难度进行预定义,然后按照先后顺序训练模型;

这是一种Instructor-driven的训练方法;并不考虑learner的feedback

Self-paced Learning

是直接将目标函数和curriculum一起结合起来,也即在训练的过程中根据模型的学习情况(loss)调整curriculum。灵活,但不考虑先验知识。

当loss小于$\lambda$时,就被认为是easy sample,$v=1$;若大于$\lambda$则$v=0$。

λ controls the pace at which the model learns new samples, and physically λ corresponds to the “age” of the model

由于学习过程完全被loss主导,因此可能会overfitting。

Self-paced Curriculum Learning

在二者基础上结合,在SPL的框架下引入CL的先验知识。也即既考虑了先验知识,又考虑了模型学习的反馈(loss)。

其中$\Psi$代表了预定义的curriculum的集合。

相当于CL提供了一个弱sample的顺序,建议模型要先学哪些,但他有自由去调整学习目标。
我的理解是,$\Psi$是可以动态增大的。但是模型是否要将集合里的example用于训练还是要看上述的目标函数的,loss小的时候代表的easy example,会用于学习。

这是CL/SPL/SPCL的区别:

思考:

$\lambda$代表了模型的成熟度,控制的是模型自身的competence;而$\Psi$集合大小代表了instructor认为模型的成熟度。这二者的结合能够让模型更灵活。但是competence还是需要一个手动的schedule。


[Learning the Easy Things First: Self-Paced Visual Category Discovery]

将self-paced的思路应用于visual category discovery。与传统self-paced learning不同的是,并没有将self-paced绑定在loss function上。

每一次计算两个指标 objectness和context-awareness。将最简单的选出来训练,然后再计算指标,再选出简单的训练。不断循环。

self-paced与curriculum learning不同,没有一个固定的teacher来判断难易程度,根据每次自己学习的进程来判断难度。本文相较传统self-paced不同,因为将loss和对难易程度的判断两个步骤分离开来。


[Curriculum Learning and Minibatch Bucketing in Neural Machine Translation]

在翻译任务上做了一些训练方法上的组合尝试,给出了一些结论。

Minibatch Bucketing

首先是尝试了在同一个batch里不仅句子长度相同(加速训练),还希望同一个batch内部有某种linguistic的信息(sentence length, number of coordinating conjunctions, number of nouns, number of proper nouns and the number of verbs in the training data pairs)。可能由于他选的这些linguistic并不好,最终并没有发现结果的提升。

Curriculum Learning

对curriculum learning进行了改进,实际上普通的CL间接地强调了easier example,因为他们被sample了多次,所以这里采用了一种新的方法能够让每个example在一个epoch都只被sample一次。

按照难度将样例分为几个bin,首先从最简单的bin开始取样例,直到该bin的剩余样例个数和第二个bin的样例一样,然后从这两个bin剩下的样例中取样例,直到剩下和第三个bin样例个数一样。这样能保证在一个epoch内每个example的概率是一致的。

如何判断难易程度?长度,词的频率等

实验结果


首先,在训练完一个epoch后,使用CL相比没使用CL有提升:


在一个epoch内的训练曲线:

可以看到用CL的在每次新加example后都会有一个陡峭的跳跃。特别要注意按照source长度和按照target长度的CL有很大的不同,可能是按照target的CL给了训练进程一个较大的penalization。


模型很容易过拟合recent example,因此如果只提供难一点的example,那么在easy的example就容易下降。所以需要mixing strategy。

从CL by target length可以看出,陡峭的跳跃说明模型在新加入数据之前很快地adapt在短的句子,而长句一进来又很快adapt到长句。这种快速转换似乎说明了模型的快速适应性。
如果不回顾简单的句子,见sorted by length的曲线,可以看到performance很差。
同时如果reverse CL,也即一开始evenly cover所有句子,然后只使用短的句子,那么可以看到一开始效果不错,到后面就降低了,这是因为模型快速适应了生成短的句子,就没法生成test集的正常长度的句子。


注意到以上都是在一个epoch内(也即过完了一遍训练数据)的结论。在这个epoch后继续几种训练方式(基于‘CL by target length’)。

重新从最简单的开始(second epoch of CL by target length),会伤害performance,但到后面还是有提升的。如果在第二个epoch用shuffle的数据训练,那么可以看到是几乎没有提升的,可能是因为模型已经陷入了当前的optimum了。

思考与结论

这里的回顾式的CL,无法减少训练时间,因为要到最后才能获得超越baseline的performance。
同时实验证明了,模型的快速适应性,很容易overfitting到最近的训练样例上,因此要设计mixing strategy。


[Visualizing and Understanding Curriculum Learning for Long Short-Term Memory Networks]

对CL在LSTM的训练的影响进行分析。得到一些结论。

快速回顾了两种CL:One-Pass Curriculum和Baby Steps Curriculum。

One-Pass Curriculum:将训练数据分为几个bucket,然后从简单的bucket开始,训练完简单的bucket之后跳到难的bucket。

Baby Steps Curriculum:从简单的开始,但在增加难的数据后,不会discard简单的数据。

实验&结论


Baby Step在多个任务上都明显更好,如,digit sum

不仅仅是结果好,同时其variance也更小:


在不同复杂度的模型上,CL效果都好,当模型越大,效果的差距会越小。注意到,CL在参数数量更少的情况下效果更好。


在情感分析任务上的结果

首先是使用CL效果好,其次是使用conjunction(是指连接两个情感极性相反句子的词(but等)(conjunctions where a span of text contradicts or supports overall sentiment polarity))效果差距更大。说明使用CL使得模型的鲁棒性更强。

同时CL在使用不同词来预测,其表现较为一致:

同时,在数据量更少的情况下,CL的效果越明显:

结论:
CL在数据少,模型小的情况下很重要。


[LEARNING TO TEACH]

采用RL的方法来进行schedule learning。 主要结构是,一个teacher决定给学生的数据,一个学生通过给定的数据训练,并获得reward和state作为feedback返回给teacher。

teacher的目标是提供数据,loss function和hypothesis space。实际上论文只讨论了数据的提供。目标:

RL的几个要素:

action:随机sample数据,然后从这些sample的数据里再筛选出数据。也即对所有sample的数据打标签,1代表给学生model训练,0则被抛弃掉。

state:实际上就是一些人工定好的feature。数据的feature,比如label category,句子长度,linguistic feature等;student model的feature,也即代表了当前NN被训练得多好的feature,历史training loss和历史的validation accuracy等;还有就是二者的结合,比如predicted probability ;data的loss等

reward:和student model收敛速度相关,也即记录第一个在测试集上准确率超过某个阈值的mini-batch的索引,然后计算:

这是为了鼓励早点收敛。

本篇文章框架设定得很好,但并没有讨论另外两个。


[Learning to learn by gradient descent by gradient descent]

meta-learning的一种方法。被题目吸引,大概看了看。

利用LSTM来学习optimizer的梯度,以帮助模型更好的训练。

其中虚线不回传,实线回传。

同时,注意到为了让参数的顺序对输出没有影响,因为假设每个参数坐标都是独立的,因此使用separate hidden state,但LSTM的参数是共享的,也即每个输入梯度都单独处理。


[Teacher-Student Curriculum Learning]

没仔细看,大概思想是,一个teacher帮忙选择sub-task让student学。

state代表的是student的整个状态,neural network parameters and optimizer state) and is not observable to the Teacher.

action是teacher所采取的动作,也即选择某个task;

observation 是在选择了task后所获得的score;

reward也即在该timestep的score的改变 $r_{t}=x_{t}^{(i)}-x_{t_{i}^{\prime}}^{(i)}$

CL的地方在于从简单的学起(也即带来的改变最大的task),然后当其提升的速率降低了,则降低其sample的概率。

总结起来,CL的几个原则:

理想化的CL:

当某个task的score下降了,说明他忘了这部分的知识,又要提升该sample的概率。


[Curriculum Learning of Multiple Tasks]

学习多个task,按照先后顺序来,而不是联合训练。上一个task学到的weight用于下一个task的初始化。

自动选择task顺序。我的理解是,每当训练完一个subtask,测试所有其他subtask,选择表现最好的那个(某个指标,平均期望误差),然后选择该subtask继续训练。