课程学习是机器学习中的一种技术,模型按照难度递增的示例进行训练,其中“难度”的定义可以由外部提供,也可以在训练过程中自行发现。其目的是更快地获得良好性能,或者在无法找到全局最优解时收敛到更好的局部最优解。它基于一个直观的想法,源自人类和动物的学习过程,即从较简单的问题入手可以帮助学习者建立基础,然后再应对更复杂的任务。
该方法已成为现代深度学习和人工智能中的重要工具,应用范围从自然语言处理到自动驾驶。尽管并非每个问题都能从课程学习中受益,但它在多个领域已显示出成功,通常作为一种正则化形式,有助于避免较差的局部最小值。核心思想保持不变:训练数据按难度递增的顺序呈现,而非一次性或随机呈现。
定义难度
课程学习的一个核心挑战是定义什么使示例“简单”或“困难”。这可以根据领域和可用资源以多种方式完成。一种常见的方法是使用人工标注,由专家按复杂度标记示例。例如,在大型语言模型训练中,较短的句子可能被分类为比较长的句子更容易。或者,外部启发式方法可以根据词频、图像分辨率或场景中物体数量等属性分配难度分数。
另一种方法是使用单独模型的性能来自动化难度。预训练模型准确预测的示例被视为较容易,而被错误分类的则较难。这种方法与提升(boosting)有密切联系,在提升中,弱学习器通过关注错误来组合。难度也可以在训练过程中动态测量,例如通过跟踪模型在单个示例上的损失,这导致了自定步调学习策略。
难度定义的差异会显著影响结果。例如,在图像识别中,模型可能先学习简单的形状,如正方形和圆形,然后再转向具有重叠物体的复杂场景。在强化学习中,可以通过减少敌人数量或移除障碍来简化游戏,然后在智能体掌握基础知识后逐步恢复完整环境。
调度策略
一旦定义了难度,下一步就是决定增加难度的调度方式。简单的方法使用固定调度,例如在训练迭代的前半部分呈现简单示例,然后在后半部分混合所有示例。这可能是有效的,但可能会过早引入模型尚未准备好的困难示例。
更自适应的方法,通常称为自定步调学习,根据模型当前性能增加难度。如果模型在简单示例上达到高准确率,算法会自动引入更难的示例;如果性能下降,则可能回退到较容易的数据。这提供了学习与遗忘之间的动态平衡。另一种变体使用概率调度,其中示例从随时间更集中于困难示例的分布中抽取。
每个阶段的多样性也很重要。在简单示例不成比例地相似的数据集中,仅奖励相似性的课程可能使模型过度专门化。为避免这种情况,一些策略明确确保每个小批量包含不同难度的混合。这在计算机视觉或自然语言处理等领域尤为重要,因为这些领域的数据集通常具有固有偏差。
理论考量
课程学习与迁移学习的概念密切相关:其成功假设是,从简单示例中学习的模型可以泛化到更难的示例。例如,在学习识别基本几何形状后,模型可以更容易地学习识别由简单形状构成的船或汽车。从这个意义上说,简单示例提供了一种归纳或启动形式,而困难示例则引入新模式。
该技术通常被视为一种正则化形式,因为它通过逐步引入复杂数据来减少过拟合的机会。2009年Yoshua-Bengio及其同事的早期工作表明,课程学习改善了泛化能力,尤其是在测试集上。然而,其效果并非总是有益的;在某些任务中,先呈现最难示例的反向课程学习已优于传统课程,特别是当最终目标与简单版本差异很大时。
其基本原则是,从小处着手可以让模型学习到不与噪声或复杂细节纠缠的一般原则。这反映了人类的认知学习过程,儿童先学习数字和字母等简单概念,然后才学习阅读或解代数。一些研究人员还提出,课程学习是少数几种能跨多种架构持续提高收敛速度和最终准确率的训练技术之一。
在自然语言处理中的应用
在自然语言处理中,课程学习已应用于词性标注、意图检测、情感分析和机器翻译等任务。例如,在机器翻译中,课程可能从短而简单的句子开始,逐渐增加长度和语言复杂性。在词性标注中,模型通常先在简单英语句子上训练,然后再转向包含不常见语法结构的大型语料库。
像GPT这样的大型语言模型也从带课程的预训练中受益。一些方法按句子长度或稀有词频率对训练语料库进行排序。这可以帮助模型以更稳定的方式获取语法和基本语义。对于情感分析,简单示例可能是带有明确正面词(如“great”)的电影评论,而困难示例可能是带有讽刺和模糊语言的评论。课程已被证明能带来更快的训练速度和更好的基准性能,尤其是在与微调结合时。
即使在语音识别中,也使用了课程学习。例如,ACCAN方法首先在信噪比最低的示例上训练,这是噪声语音任务中反向课程的一个例子。这表明最优顺序可能因领域和噪声类型而异。
在计算机视觉中的应用
图像识别任务从课程中受益匪浅。对于人脸识别,模型可能首先学习正面、光线良好的面部,然后是侧面角度,最后是带口罩或阴影的面部。类似地,在物体检测中,模型可以从每张图像一个物体开始,然后转向包含多个物体的杂乱场景。在这两种情况下,逐步拓宽有助于模型学习基本特征,而不会因视觉复杂性而不知所措。
Bengio等人2009年论文中的一个经典示例涉及几何形状分类,其中形状逐渐增加更多差异,例如模型如何学习区分正方形和三角形,然后再转向重叠形状。使用图像数据集的初步实验,例如来自MIT-CSAIL或Stanford-AI-Lab的数据集,表明课程可以改善收敛性和最终准确率。此后,它已成为许多视觉工具包中的标准选项。
强化学习及其他领域
课程学习通常与强化学习结合使用,用于在简化版本的游戏环境中训练智能体。例如,机器人可能先在空房间中学习抓取物体,然后再在杂乱环境中学习。对于游戏,智能体可能先与较弱的对手对战或使用较短的时间限制,然后逐渐增加难度。这是国际象棋计算机或其他视频游戏中的常见做法。
该方法也可以应用于图学习、矩阵分解,甚至在模型参数数量本身变化的情况下。一些作者包括,例如,在课程中逐步增加神经网络的层数,因为更大的模型更难优化。在机器翻译和问答中,大型模型也受益于同样的想法。
历史与影响
“课程学习”一词由Yoshua Bengio及其同事于2009年引入,他们将其类比为心理学中的塑造技术以及人类结构化教育。他们还承认了Jeffrey Elman的早期工作,他在1993年指出了在神经网络中从小处着手的重要性。此后,该方法已在众多领域得到探索,并且:一项调查表明,如果课程设计得当,它在效率和最终性能上都能带来益处。
如今,课程学习广泛应用于实际深度学习,不仅在学术研究中。它已集成到大型模型的数据管道中,许多开源库支持样本调度。然而,它并非通用解决方案;某些任务可能无法受益,甚至可能因设计不佳的课程而受损。课程及其调度的选择仍是一个活跃的研究领域,当前工作重点是从模型行为自动构建课程。
在大规模预训练时代,例如使用大型语言模型时,数据量的增加使示例排序变得更加重要。面对TB级数据,良好的课程可以降低训练成本,并帮助模型聚焦于显著特征。因此,课程学习很可能继续成为未来生成式人工智能及其他领域进展的关键要素。