Curriculum Learning schedule 总结

Curriculum Learning主要有两块:①sample的难度定义;②设定特定的schedule

本文总结一下不同论文中出现的Curriculum Learning schedule,并将其分为几类。

不定期更新…

论文总结

Early

Curriculum Learning

在shape recognition任务上是达到switch epoch或者直到触发early stopping换难的数据

Learning to execute

naive strategy: 当valid没有提升时增加难度;mix: 选择一个难度范围,随机sample;前二者的结合:部分是naive部分是mix

2015

Self-Paced Curriculum Learning

本质是self-paced learning

Curriculum learning of multiple tasks

SVM模型直到收敛再换难的数据

2016

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

直到p个epoch或收敛再增加较难的数据。

2107

Automated Curriculum Learning for Neural Networks

RL自动选择task(multi-task)

Curriculum Learning for Multi-Task Classification of Visual Attributes

直到loss最小再切换至另一数据

Curriculum Learning and Minibatch Bucketing in Neural Machine Translation

分为多个bin,当第一个bin的数据被取得剩下第二个bin的一半,添加第二个bin的数据,从两个bin剩下的样例中取,直到剩下的和第三个bin样例数一样。以此类推

Teacher-Student Curriculum Learning

按概率,概率与速率相关,RL动态选择能让模型提升速率最大的task,当速率下降,概率也下降,当某个task的score下降了,说明他忘了这部分的知识,又提升该sample的概率

2018

An Empirical Exploration of Curriculum Learning for Neural Machine Translation

将数据分为多个shard,训练的每个phase增加一个shard的数据。

LEARNING TO TEACH

利用RL帮助模型选择数据,也即有一个teacher模型给数据打标签,1代表给学生model训练,0则被抛弃掉

Curriculum Learning for Natural Answer Generation

根据概率从两个shard采样,采样概率会随着epoch而改变。

2019

Curriculumnet: Weakly supervised learning from large-scale web images

分成3个shard,到收敛后添加新的shard

On The Power of Curriculum Learning in Training Deep Network

设定固定iteration数后增加数据

Reinforcement Learning based Curriculum Optimization for Neural Machine Translation

将数据切分为多个bin,利用RL动态选择训练哪个bin

Dynamic Curriculum Learning for Imbalanced Data Classification

将数据分为几个shard,按概率采样,有schedule调整概率

Simple and Effective Curriculum Pointer-Generator Networks for Reading Comprehension over Long Narratives

当没有提升时,换部分数据到简单的数据set内,直到所有数据都被换,再将整个数据集换成另一个。

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

单调递减的光滑曲线控制当前可用于训练数据的大小。

Curriculum Learning for Domain Adaptation in Neural Machine Translation

分成shard,每个训练的phase增加一个shard。

Pseudo-Labeling Curriculum for Unsupervised Domain Adaptation

分多个shard,收敛后加shard

Competence-based Curriculum Learning for Neural Machine Translation

给定一个单调递增的曲线控制当前可用于训练的数据的比例。

分类

按大类有三种:一种控制训练可见的数据;一种控制当前训练数据被sample的概率;另一种RL直接替模型选择。

对于第一类而言,可分成:

  1. 给定schedule
    1. 每k个step就增加p%可见的数据
    2. 将数据分为m个shard,每k个step/phase则增加一个shard
    3. 其他更精细的schedule。如sample到剩多少时添加新数据(Curriculum Learning and Minibatch Bucketing in Neural Machine Translation),或swap新数据到旧数据里(Simple and Effective Curriculum Pointer-Generator Networks for Reading Comprehension over Long Narratives)
  2. 达到某个条件:到epoch数或收敛就增加一个shard或换数据(Curriculum learning of multiple tasks)

对于第二类而言,可分为:

  1. 定义一个平滑schedule函数,与epoch或step挂钩。比如,Curriculum Learning for Natural Answer Generation或Dynamic Curriculum Learning for Imbalanced Data Classification。一般此类都是将数据分为几个块,概率是定义在块上而不是sample上
  2. RL控制,与当前模型对该数据的表现相关(Teacher-Student Curriculum Learning)

对于第三类RL而言,较为丰富:
有确定multi-task的task顺序的;
有从多个预定义的bin中动态选择哪个bin的数据的;
从被sample到的batch中选择可让模型训练的;
还有动态控制所有数据被sample的概率。

未来可以做一个表格,将属于某类的都归在一起。