什么是课程学习?
课程学习(CL)是一种从简单的数据向困难的数据训练机器学习模型的训练策略。
随着训练的进行,CL逐渐将更难的样例引入子集,最终在整个训练数据集上训练模型。与在整个训练数据集上直接训练相比,这种CL策略可以提高模型性能和收敛速度。例如,苹果和橙子的图像是清晰、典型且易于识别的。随着模型训练的进展,CL在当前子集中添加了更多“更难”的图像(即更难识别),这类似于人类课程中学习材料的难度增加。
解决什么问题?
传统模型所有的训练样例都是随机呈现给模型的,忽略了数据样本的各种复杂性和当前模型的学习状态。
课程学习有哪些定义?
定义1:最初课程学习的定义
训练T轮,其中QT是训练标准,也是目标训练分布P(z)的重新加权
同时模型中的参数应该遵循以下三种原则:
对于其中原则按照以下理解
1.Qt+1的熵值大于Qt,说明下一次训练的混乱度或复杂度比当前训练要高,例如引入具有更多属性的样本。
2.这里是指下一次训练的数据规模比起当前要增大或不变,一般指代数据数量增加。
3.模型最终要在所有数据集上训练,也即是训练到最后权重为1。
定义2:数据级广义课程学习
抛弃定义1中的三个条件,课程就是在T个训练步骤上对目标训练分布进行重新加权的序列。
这里对于规模和复杂度的变化不再强行要求递增。
定义3:泛化课程学习
更加泛化,抛弃定义1中的三个条件的同时,训练标准的示例包括但不限于损失函数、监督生成、模型容量、输入方案和假设空间。对于训练不再局限于目标分布。
为什么课程学习有效?
1.从优化角度来说:
它首先优化一个更平滑(也更容易)的问题版本,用以寻找“整体的情况”,随后逐渐考虑更不平滑的情况,直至找到目标。
如图所示,从更容易的目标中学习到的局部极小值具有更好的泛化能力,更有可能逼近全局极小值。
在上述处理中,可以将课程学习对前面目标的训练可以作为一个预训练过程,既有助于优化,又为后续目标提供正则化。
2.从降噪角度来说:
这个角度基于训练数据存在噪声/错误注释导致的训练分布与测试分布之间存在偏差的假设。
在速度上的体现
有噪声的数据对应于数据集中较难的示例,而干净的数据则构成较容易的部分。由于CL策略鼓励在更容易的数据上进行更多的训练,一个直观的假设是采用CL学习的模型在更难和有噪声的样本上浪费的时间更少,从而实现更快的训练。
在分布上的体现
训练分布和目标/测试分布共享一个具有大密度的公共高置信度注释区域,这对应于CL中更简单的示例。因此,通过CL策略从更简单的样本开始训练,实际上模拟了从这个高置信度的公共区域学习(作为目标分布的近似值),它将学习引导到预期目标,同时减少了低置信度的噪声样本的负面影响。每个单位的数据分布如图所示。
左侧的训练和目标分布Ptrain(x)和Ptarget(x)的共同密度峰(位于x轴中心)是指共同的高置信度区域,而Ptrain(x)的重尾表示训练分布中相对较多的噪声数据。右图展示了CL中权函数的序列,它最初给有噪声的尾部分配了小的值,在common easy区域分配了大得多的值,并逐渐向所有示例的权值相等移动。基于以上分析,作者将Ptarget(x)表示为Ptrain(x)的加权表达式。
纵轴:表示数据点的权重或密度。在左侧图中,它表示概率密度,而在右侧图中,它表示在课程学习过程中分配给数据样本的权重。权重较高的数据点在模型训练中将被更多地考虑。密度较高的区域意味着在该点附近的数据样本在整体数据集中占比较大。
横轴:表示数据样本的特征空间或某种形式的数据标识。在左侧图中,它表示数据样本,从易子集(干净数据)到完整训练集(包含噪声的数据)的转变。在右侧图中,它同样表示数据样本,但更侧重于展示如何通过权重调整来选择数据样本进行训练。
总之,课程学习可以使得早期模型预测可信度更高,在训练初期,可以给那些高置信度的样本分配较高的权重,而给那些低置信度的样本分配较低的权重。随着模型性能的提高,逐渐增加对低置信度样本的关注,但仍然保持一定的权重差异,以避免模型对噪声数据的过度拟合。
课程学习可以应用到什么场景?
从优化问题的角度出发,引导训练向参数空间中更好的区域(梯度更陡)正则化;可以获得更高效的模型,通常应用于复杂任务或者分布差异大的任务,具体例子如下:稀疏奖励强化学习、多任务学习、GAN训练、NAS;领域适应,不平衡分类
从数据分布的角度出发,去噪,关注高置信度更容易的区域,以减轻有噪声数据的干扰。可以使得模型训练快速,鲁棒性和泛化能力更强。通常应用的任务具有嘈杂、质量参差不齐、异构的数据。具体例子如下:弱监督或无监督学习,NLP任务(神经网络机器翻译,自然语言理解等)
如何为特定的学习任务设计合适的课程?
在设计前我们要明确两个问题:
1)什么样的训练数据应该比其他数据更容易?
2)我们应该在什么时候提供更多更难的数据用于训练,以及提供多少?
问题1)可以使用一个难度测量器Difficulty Measurer,它决定每个数据示例的相对“容易程度”。
问题2)可以使用一个训练调度器Training Scheduler,它根据难度测量器的判断来决定整个训练过程中数据子集的顺序。
首先,所有的训练示例都由难度测量器从最简单到最难排序,并传递给训练调度器。
然后,在每个训练时段t, 训练调度器对一批训练进行采样,从相对简单的示例中获取数据,并将其发送给Model Trainer进行训练。随着训练的进展,训练调度器将决定何时从更困难的数据中采样,(通常)直到从整个训练集中均匀采样。这个时间表有时也依赖于来自Model Trainer的训练损失反馈(图(a)中的虚线箭头),例如,当前模型收敛时,training Scheduler呈现更困难的数据。
需要注意的是,在一些文献中,作者将这两个核心组件分别归纳为计分函数(scoring function)和节奏函数(pace function),它们与难度测量器(Difficulty Measurer)和训练调度器(Training Scheduler)具有相同的目的,而本文选择后者的名称更为抽象和清晰。
根据我们的框架,我们还可以在接下来的两个部分中阐明预定义CL Predefined CL和自动CL Predefined CL的范围。
具体来说,当难度测量器和训练调度器都是由人类先验知识设计而不涉及数据驱动算法时,我们称之为Predefined CL方法。
如果两个组件中的任何一个(或两个)是由数据驱动的模型或算法学习的,那么我们将CL方法表示为Automatic CL
各种类别的课程学习有什么特点?
Predefined CL
常见类型的预定义难度测量器:
对应数据分别是,难度测量器:
Easy中的“+”表示测量值越高,数据example越容易,“-”表示相反的含义。
图表中缩写:POS =词性,SNR =信噪比,SND =信噪比失真,Domain =领域知识,# conj. =协调连词的数量。
训练调度器可以分为离散调度器和连续调度器。不同之处在于:离散调度器在每个固定次数epoch(> 1)或收敛于当前数据子集后调整训练数据子集,而连续调度器在每个epoch调整训练数据子集。
离散调度因其简单、有效而被广泛采用。最流行的离散调度程序被命名为Baby Step,它首先将排序后的数据由易到难分布到桶buckets(或分片shards/桶bins)中,从最简单的桶bucket开始训练。
经过固定次数的训练epoch或收敛后,下一个bucket被合并到训练子集中。最后,在合并并使用所有桶之后,整个训练过程要么停止,要么继续几个额外的epoch。
请注意,在每个epoch,调度器通常会对当前桶bucket和每个桶bucket中的数据进行洗牌,然后对小批量样本进行训练(而不是一次使用所有数据)。
不同调度器
线性调度器
λ linear(t) 是在第 t个训练周期可用的最容易训练样本的比例。
λ0是训练开始时可用的最容易样本的初始比例。
Tgrow是增长到 1 的周期数,即完全访问整个训练集所需的周期数。t 是当前的训练周期数。
根号调度器
根号-p 调度器
p≥1 是一个常数,控制调度器的增长速度。
常见连续调度器的可视化。横轴t为训练历元数,纵轴λ为最简单训练数据子集的对应比例。
基线没有课程学习,从一开始就包括整个训练集。
predefined 需要专业知识,需要人定义,会忽略模型反馈
Automatic,适用广泛,模型动态调整,会动态接受模型反馈。
Automatic CL
自主学习Self-Paced Learning (SPL)
g(v;λ) 是一个简单的负 L1 范数,用于鼓励选择损失较小的样本。
给定w这里更新vi*,为每个样本找到最优的权重 vi∗
给定vi*更新模型参数 w∗的公式,以最小化加权损失。
这是一个阈值函数,如果样本的损失小于参数 λ,则权重为1;否则为0,是训练调度器的一种设计方式:设计一个阈值,使loss低于这个阈值的样本加入训练中;随着训练的推进,不断更新阈值的水平,直到包括整个数据集
** SPL的理论**
SP-正则化
不同自节奏正则化项(SP-regularizers)对应的样本权重 vi∗与样本损失 li之间的关系。这个图的目的是为了直观地比较不同正则化项如何根据样本的损失值动态调整其在训练过程中的重要性。
引入先验知识的spl
这个公式是SPL中的一个扩展正则化项,它在原有的参数 λ 的基础上增加了一个新的平衡因子 γ。
vi是第 i 个样本的权重。
λ 是控制样本权重更新的参数。
γ 是控制多样性正则化强度的参数。
b 是数据集中的组数。
v(j) 是第 j 组样本的权重向量。
这个正则化项的目的是在优化样本权重时,不仅考虑样本的易度(通过 λ控制),还要考虑样本权重的多样性(通过 γ 控制)。这有助于避免模型过度关注某些特定样本或特征,而忽视其他可能同样重要的信息。
这个公式表示在SPL框架下,结合了额外的先验知识或约束条件的优化问题。
E(w,v;λ,Ψ) 是优化目标函数,它结合了模型的损失 li(w) 和正则化项 g(v;λ)。
w 是模型参数。
v 是样本权重向量。
λ 是控制样本权重更新的参数。
Ψ 是一个凸集,表示对样本权重 v 的约束条件,这些条件可以基于先验知识,如样本的重要性顺序或其他属性。
这个公式通过引入额外的约束条件 v∈Ψ,允许在SPL中嵌入更多的先验知识,使得学习过程更加符合特定的应用需求或假设。
以上公式使得SPL算法能够结合额外的先验知识或约束条件,以指导样本权重的更新和模型的学习过程。
关于λ的更新
“老师”根据学生的状态/反馈搜索最佳课程。
这个公式通过计算模型参数 w^t+1(ϵ) 对扰动参数 ϵj的偏导数来更新样本权重。
表示模型参数对扰动参数的敏感度,即扰动参数微小变化对模型参数的影响。
表示根据模型参数对扰动参数的敏感度,以负的元学习率 η调整样本权重。负号表示如果模型参数对扰动更敏感,则减少该样本的权重,反之增加。
max(0,−η∂/∂ϵjw^t+1(ϵ)) 确保更新后的样本权重非负,避免权重变得不合理。
公式是元学习在SPL中的应用,通过考虑模型参数对扰动参数的敏感度来动态调整样本权重。
课程学习与其他学习模型的关系
- 传统机器学习
描述:这是最基本的机器学习设置,其中训练和测试数据都来自同一个分布。
表示:用一个简单的学习者(Learner)表示,通过训练(Training)和测试(Testing)过程来优化模型。 - 课程学习(Curriculum Learning)
描述:课程学习通过设计一个从易到难的学习路径来训练模型,使得模型能够更有效地学习。
表示:图中展示了课程学习的学习者在不同的训练阶段(T1, T2, …, TM)处理不同难度的任务,每个阶段的数据分布逐渐变化,以适应更复杂的任务。 - 多任务学习(Multi-task Learning)
描述:多任务学习涉及同时学习多个相关任务,以共享知识并提高各个任务的性能。
表示:图中用多个任务(T1, T2, …, Tm?)和相应的学习者表示,每个任务可能有不同的数据分布。 - 迁移学习(Transfer Learning)
描述:迁移学习将从一个或多个源任务学到的知识应用到目标任务上,以提高目标任务的学习效率。
表示:图中展示了学习者如何通过迁移在源任务上学到的知识来优化目标任务的学习。 - 元学习(Meta-Learning)
描述:元学习关注如何设计算法,使其能够快速适应新任务。
表示:图中用元学习者(Meta-Learner)表示,通过学习多个任务来优化学习算法。 - 持续学习(Continual Learning)
描述:持续学习关注如何在连续的任务流中保持知识,同时避免灾难性遗忘。
表示:图中用一系列任务(T1, T2, …, Tm?)和相应的学习者表示,学习者需要适应每个新任务,同时保留之前任务的知识。 - 主动学习(Active Learning)
描述:主动学习是一种学习者可以主动选择最有信息量的数据样本进行标注的学习方法。
表示:图中展示了学习者如何通过与标注者(Expert)交互来选择性地标注数据,以提高学习效率。
我在读以下文献时,加入了一些个人理解,可能存在个人理解不对的地方。
参考文献
Wang X, Chen Y, Zhu W. A survey on curriculum learning[J]. IEEE transactions on pattern analysis and machine intelligence, 2021, 44(9): 4555-4576.
Bengio Y, Louradour J, Collobert R, et al. Curriculum learning[C]//Proceedings of the 26th annual international conference on machine learning. 2009: 41-48.
Castells T, Weinzaepfel P, Revaud J. Superloss: A generic loss for robust curriculum learning[J]. Advances in Neural Information Processing Systems, 2020, 33: 4308-4319.