前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nature Machine Intelligence | 三种类型的增量学习

Nature Machine Intelligence | 三种类型的增量学习

作者头像
智能生信
发布2022-12-29 17:41:06
6K1
发布2022-12-29 17:41:06
举报
文章被收录于专栏:智能生信智能生信

作者 | 乔剑博 编辑 | 乔剑博

论文题目:

Three types of incremental learning

今天给大家带来一篇剑桥大学有关增量学习的文章。从非平稳的数据流中渐进地学习新信息,被称为“持续学习”,是自然智能的一个关键特征,但对深度神经网络来说是一个具有挑战性的问题。近年来,许多用于持续学习的深度学习方法被提出,但由于缺乏共同的框架,很难比较它们的性能。为了解决这个问题,我们描述了持续学习的三种基本类型或“场景”:任务增量式学习、领域增量式学习和类增量式学习。每一种情况都有自己的挑战。为了说明这一点,作者通过根据每个场景执行Split MNIST和Split CIFAR-100协议,对目前使用的持续学习策略进行了全面的实证比较。作者证明了这三种情况在难度和不同策略的有效性方面存在实质性差异。提出的分类旨在通过形成清晰定义基准问题的关键基础来构建持续学习领域。

一、研究背景

深度学习中一个重要的开放问题是使神经网络能够从非平稳的数据流中渐进地学习。例如,当深度神经网络从一个新任务或数据分布的样本中训练时,它们往往会迅速失去之前获得的能力,这种现象被称为灾难性遗忘。与此形成鲜明对比的是,人类和其他动物能够不断地学习新技能,而不影响之前所学的技能。持续学习领域,又称终身学习,致力于缩小自然智能和人工智能在增量学习能力上的差距。近年来,在医疗诊断、自动驾驶或金融市场预测等应用中部署持续学习算法的潜在效用推动下,机器学习研究的这一领域迅速扩张。持续学习有三种基本类型,或“场景”:(a)在任务增量学习中,算法必须增量地学习一组明显不同的任务;(b)在域增量学习中,算法必须学习同一类型的任务,但这些任务在不同的上下文中;(c)在类增量学习中,算法必须逐步学会区分越来越多的类。本文介绍这三种场景,并指出了与每一种场景相关的不同挑战。

二、三种持续学习场景

在经典的机器学习中,算法可以同时访问所有的训练数据。在持续学习中,数据以序列或若干步骤到达,因此算法只允许从当前步骤访问数据。在本文中,根据随时间变化的数据方面与必须学习的函数或映射的关系,有三种基本方法可以使监督学习问题增量化(表1)。下面,首先直观地描述产生的三个持续学习场景。

表1 三个持续学习场景概述 X为输入空间,Y为上下文内输出空间,C为上下文空间。在本文中,术语“上下文”指的是从观察结果中取样的潜在分布。背景会随着时间的推移而变化。在持续学习的文献中,“任务”一词的使用方式经常与这里的“语境”一词的使用方式类似

2.1 任务增量学习

第一个持续学习场景我们称之为“任务增量学习”(Task-IL)。这种场景最好描述为这样一种情况:算法必须增量地学习一组不同的任务。

任务增量学习的决定性特征是算法总是清楚地知道(在测试时也是如此)必须执行哪项任务。在实践中,这可能意味着明确地提供了任务标识,或者任务是可以清楚地区分的。在这种情况下,可以使用特定于任务的组件来训练模型(例如,每个任务有一个单独的输出层),甚至为要学习的每个任务有一个完全独立的网络。在最后一种情况下,根本就没有忘记。因此,任务增量学习的挑战不是或不应该是简单地防止灾难性的遗忘,而是找到有效的方法在任务之间共享学习到的表示,优化性能和计算复杂度之间的权衡,并使用在一个任务中学习到的信息来提高其他任务的性能(也就是说,在任务之间实现正向甚至向后转移)。这些仍然是开放的挑战。

任务增量学习的现实例子是学习演奏不同的乐器或进行不同的运动,因为通常情况下,应该演奏哪种乐器或进行哪种运动总是很清楚的。

2.2 域增量学习

第二个场景我们称为域增量学习(Domain-IL)。在这种情况下,问题的结构总是相同的,但是上下文或输入分布发生了变化,类似于任务增量学习,这个场景可以被描述为一个算法必须增量地学习一组“任务”(尽管现在可能更直观地认为它们是“域”),但关键的区别是,至少在测试时,算法不知道样本属于哪个任务。

但是,没有必要确定任务,因为每个任务都有相同的可能输出(例如,每个任务中使用相同的类)。然而,只有在算法首先识别出任务的情况下,才有可能在此场景中使用特定于任务的组件,但这并不一定是最有效的策略。因此,“通过设计”防止遗忘在领域增量学习中是不可能的,减轻灾难性遗忘仍然是一个重要的未解决的挑战。这方面的例子包括逐步学习在不同的光照条件下(例如室内和室外)识别物体,或学习在不同的天气条件下开车。

2.3 类增量学习

第三种持续学习场景是类增量学习(Class-IL)。对这种情况的最好描述是,一个算法必须逐步学会区分不断增长的对象或类。这个场景经常使用的设置是,遇到一系列基于分类的“任务”(尽管可能更直观地认为它们是“片段”),其中每个“任务”包含不同的类,算法必须学会区分所有的类。

这也可以表示为,算法应该能够解决每个单独的“任务”(即,区分一个集内的类)和识别样本属于哪个“任务”(即,区分来自不同集的类)。例如,一个算法可能首先了解猫和狗,然后了解牛和马;虽然在任务增量学习中,算法不会被期望区分在不同事件中遇到的动物(例如,猫和牛),但在类增量学习中,这是必需的。因此,在这种情况下,一个重要的挑战是学会区分没有一起观察到的类,这对深度神经网络来说是非常具有挑战性的,特别是在不允许存储以前见过的类的例子的情况下。

2.4 对三个场景的解释

为了更正式地定义这三个场景,我们首先考虑一个简单但经常被研究的持续学习设置,在这个设置中,一个分类问题被分成多个部分或片段,必须按顺序学习,不同片段之间没有重叠。在持续学习文献中,这些情节通常被称为“任务”,但在本文中,将它们称为“上下文”。“任务”一词是有问题的,因为在文献中它有几种不同的含义或内涵。本文将仅在学习算法始终清楚样本是否属于该上下文时使用术语任务(任务增量学习的情况就是如此)。

在上面概述的“学术持续学习环境”中(即,基于分类的、无重叠的顺序遇到的环境),可以在这三种场景之间画出清晰的区分。为了说明这一点,我们将每个样本表示为由三个组件组成:输入x∈X,上下文内标签y∈Y和上下文标签c∈C。然后可以根据必须学习的函数或映射与上下文空间C的关系来定义这三个场景。

在任务增量学习中,要学习的映射为f:X×C→Y;在域增量学习中,要学习f:X→Y;在类增量学习中,学习f:X→C×Y。对于类增量学习,映射也可以写成f:X→G,其中G是通过结合C和Y得到的“全局标签空间”。

图1 三种持续学习场景的决策树。可以根据在测试时是否知道上下文标识以及是否必须推断上下文标识来定义场景。

这些定义意味着,可以根据在测试时算法是否知道上下文标识信息,以及如果不知道,是否必须推断出它(图1)来区分这三种场景。因此,每个场景都指定了在测试期间上下文标签是否可用,但不一定是在训练期间它们是否可用。

在任务增量学习和类增量学习中,通常隐含的是在训练过程中提供上下文标签(例如,在监督学习的情况下),但在领域增量学习中,很好的做法是明确地说明在训练过程中是否提供上下文标签(或上下文边界)。

为了说明持续学习场景,本文介绍了以下三个例子。

2.4.1 Split MNIST

图 2 拆分 MNIST 示意图。Split MNIST 协议是通过将原始 MNIST 数据集拆分为五个上下文而获得的,每个上下文由两个数字组成。

输入(测试时)

预期输出

直观的描述

任务增量学习

图片+上下文标签

上下文内标签(*)

在相同上下文的两个数字之间进行选择(例如 0 或 1?)

域增量学习

图片

上下文内标签

数字是奇数还是偶数?

类增量学习

图片

全局标签

在所有十个数字之间进行选择

表 2 根据三种场景拆分MNIST。当根据每个持续学习场景执行 Split MNIST 协议时,算法在测试时的预期结果概述。(*)对于任务增量学习,在计算层面上,算法是否必须返回上下文标签或全局标签之间没有区别,因为上下文标签可以与上下文标签(提供为input) 获取全局标签。

为了举例说明持续学习场景,图 2 和表 2 显示了如何根据三种场景中的每一种场景执行 Split MNIST,这是持续学习的一个流行的toy problem。

通过是否必须推断上下文标识来区分域增量学习和类增量学习可能是不直观的,因为在类增量学习中,上下文标识通常不会显式地执行,通常,直接映射是从输入空间学习到全局标签的集合。另一种区分这两种情况的方法是通过不同的上下文是否包含相同的类(域增量学习)或不同的类(类增量学习)。然而,应该意识到两个样本是否属于同一个类可以根据不同的角度而改变:在Split MNIST示例中(图2和表2),在域增量学习中,数字“0”和“2”属于同一个类(因为它们都是偶数),但在类增量学习中,它们被认为是不同的类。

任务增量学习,简单说就是任务间互不干扰,每个任务知道需要目标是二分类,是分0和1,分2和3,目标是明确的。域增量学习,理解上就是原先训练的是真实人物动物分类,域增量实现动画人物动物的分类,输出数据分布发生了变化。类增量学习,训练阶段只能看到当前训练数据,测试阶段是测试所有已经训练的类数据。

2.4.2 Permuted MNIST

作为另一个例子,使用Permuted MNIST,原始的MNIST数据集作为task1,用D1表示;之后的每个 task 都基于 MNIST 数据集进行重构,作为 task t,表示为Dt(t>1)。具体重构方法是:对于每个 task t (t > 1),都对 MNIST 中所有图像以相同的方式进行像素重排(randomly permuted)。这样一来,每个 task 都具有和其他 task 完全不同的 input domain(每种 permutation 就是一个 input domain),但学习目标都是对数字 0~9 进行识别。在每个 task 上进行训练之后,模型都要在当前 task Dt以及之前学习过的所有 task{D1, ..., Dt}上验证性能。

图 3 排列 MNIST 示意图

任务增量学习

给出排列,判断数字

域增量学习

排列未知,判断数字

类增量学习

判断数字,判断排列

表3 根据三种场景排列MNIST。描述在根据三个场景中的每一个执行排列MNIST时,期望算法做出的选择类型。

2.4.3 双上下文示例

为了使这三个持续学习场景之间的区别更加直观,这里提供了一个包含两个上下文的简单示例(表4)。在第一个上下文中,显示了猫和鸡的图像,而第二个上下文中显示了狗和鸭的图像。在经历了这两个上下文之后,在测试时提出的问题可以针对这三个场景中的每一个进行不同的表述。在类增量学习(Class-IL)中,因为算法必须能够区分所有类,所以测试时的问题是“它是猫、鸡、狗还是鸭子?”在域增量学习(Domain-IL)中,算法需要决定图像是否属于上下文的第一个类别(即“猫”或“狗”)或第2个类别(即“鸡”或“鸭”),但不知道图像来自哪个上下文;因此,测试时的问题可以表述为“它是哺乳动物还是鸟类?”使用任务增量学习(Task-IL),因为在测试时就知道了上下文标识,所以问题可以更具体:根据测试示例来自的上下文,问题可以是“它是一只猫还是一只鸡?”或者“它是一只狗还是一只鸭子?”

上下文1

上下文2

猫&鸡

狗&鸭

测试时提问

Task-IL

“是猫还是鸡?”or“是狗还是鸭子?”

Domain-IL

“是哺乳动物还是鸟类?”

Class-IL

“是猫、鸡、狗还是鸭子?”

表4 一个双上下文示例

三、持续学习的策略

3.1 上下文相关的组件

减少上下文之间干扰的一种方法是使用特定于上下文的组件。也就是说,仅将网络的某些部分用于特定的上下文(如图4)。特定于上下文的组件的一个常见示例是多头布局,这意味着每个上下文都有一个单独的输出层。通过为每个上下文以不同的方式控制网络的节点或权重,还可以在网络上强加上下文特异性或模块化。这种特定于上下文的门可以被学习,例如使用进化算法、梯度下降。实现上下文专一性的另一种方法是添加新组件,从而在学习新上下文时动态扩展网络。

图 4 上下文相关的组件,网络的某些部分只用于特定的上下文。

在这种策略的极端情况中,每个上下文都有一个完全独立的网络。在这种情况下,根本就没有遗忘。

然而,这种完全隔离不具有良好的缩放特性,并且它排除了上下文之间的正向迁移。我们认为,该策略的一个具体案例,即可用的计算资源(例如参数数量)被划分到所有上下文,并且为每个上下文学习一个单独的网络,是任务增量学习问题的一个重要但经常被忽视的基线,在此基础上,成功的任务增量学习方法应该能够改进。

原则上,特定于上下文的组件只能用于任务增量学习,因为需要上下文标识来选择正确的特定于上下文的组件。然而,当与识别样本所属上下文的算法相结合时,这种策略也可以用于域或类增量学习。在这方面,有必要指出,上下文识别是一个类增量学习问题,因为必须学习的映射是f:X→C的形式。

上下文特定组件的使用由上下文相关门控(XdG)表示,该门控为每个上下文屏蔽随机选择的隐藏单元子集;以及单独的网络方法,其中在所有上下文上划分可用的参数预算,并且针对每个上下文学习单独的网络。

3.2 参数正则化

另一种流行的持续学习策略是参数正则化。为了减少遗忘,该策略鼓励对过去上下文重要的神经网络参数在学习新上下文时不要改变太多(图5)。该策略可以从贝叶斯角度出发,因为参数正则化方法通常可以被解释为对神经网络的参数执行顺序近似贝叶斯推断。

图5 参数正则化。在学习新上下文时,鼓励对过去上下文重要的参数不要改变太多。

进行参数正则化的一种常见方法是在损失中添加正则化项,该项通过对其对先前上下文的重要性的估计进行加权来控制网络参数θ的变化:

其中L是当前上下文的损失,θ*是相对于其变化收到惩罚的参数向量(例如,在最后一个上下文中完成训练后的θ值),Σ是对先前上下文中的重要参数的估计,‖·‖_Σ是加权范数。通常,使用加权L2范数,在这种情况下正则化项由下式给出:

另一种进行参数正则化的方法是将梯度投影到与过去上下文的重要内容梯度正交的子空间中,以鼓励不干扰先前存储的信息的参数更新。

参数正则化的一个关键方面是估计参数对于先前上下文的重要性。一种流行的方法是使用最后一个上下文的Fisher信息矩阵,因为在某些假设下,它反映了参数的微小变化会增加损失。通常使用Fisher信息的对角近似,该近似假设所有参数都是独立的,但可以通过使用替代近似来放宽该假设。Fisher信息的缺点是其计算成本很高。通过在训练期间在线估计每个参数的重要性,其他几种参数正则化方法具有显著更低的计算开销。

参数正则化不需要存储观测值,它可以用于所有三种场景。许多参数正则化方法在训练期间假设离散的上下文和关于上下文切换的知识,这是在正则化项通常被更新时,但这种假设有时是放松的。

参数正则化方法包括弹性权重合并(EWC),该方法使用Fisher信息的对角近似估计参数重要性;以及基于训练轨迹在线估计参数重要性的突触智能(SI)。

3.3 函数正则化

参数正则化的一个重要问题是,深度神经网络的行为以复杂的方式依赖于其参数,这使得准确估计参数对先前上下文的真实重要性具有挑战性。

图6 函数正则化。鼓励先前学习的输入-输出映射在针对新环境进行训练时,不要在特定的一组输入(“锚点”)上改变太多。

因此,直接在神经网络的函数空间中执行正则化可能比在参数空间中更有效(图6)。函数正则化鼓励神经网络的输入-输出映射fθ在一组特定的输入(称之为“锚点”)上不发生太大变化,当在新的环境下进行训练时:

其中L是当前上下文的损失,fθ*是与变化相关的输入输出映射(例如,在最后一个上下文上完成训练后的网络输入输出映射),A⊂X是一组测量fθ和fθ*之间散度锚点。

函数正则化的一个关键方面是锚点的选择。最佳锚点集合包含来自先前上下文的所有输入,但使用该集合在计算上非常昂贵,并且需要存储所有这些输入。另一种方法是使用当前环境中的输入,并测量fθ和fθ* 之间的偏差。优点是这不需要存储观察结果,但不能保证来自当前上下文的输入是合适的锚点。另一项工作将神经网络表述为高斯过程,其允许总结具有诱导点或记忆输入的先前上下文的输入分布,并在贝叶斯框架中执行函数正则化。

对于参数正则化,大多数函数正则化方法可以用于所有三种连续学习场景。这些方法通常假设上下文边界是已知的,但有工作可以放宽这个假设。

对于函数正则化,比较的是无遗忘学习(LwF),它使用来自当前上下文的输入作为锚点;以及记忆过去的功能正则化(FROMP),其使用来自过去上下文的存储示例作为锚点。

3.4 Replay

另一种持续学习策略,称为“回放(replay)”或“排练(rehearsal)”,是用代表先前上下文的数据补充新上下文的训练数据(图7)。通过精确回放或经验回放,来自先前上下文的观察结果存储在内存缓冲区中,并在对新上下文进行训练时重新访问。通常假设可以存储有限数量的数据,一个开放的研究问题是如何最佳地选择样本来填充内存缓冲区。存储观察结果的另一种方法是学习生成模型,以生成要回放的数据。这种生成回放的问题是,增量训练生成模型可能具有挑战性,尤其是当数据复杂时。解决方法可以是生成和回放潜在特征,而不是原始输入,尽管这通常需要对网络的较低的非重放层进行预训练。

图7 Replay。新上下文的训练数据由代表过去上下文的数据补充。重放的数据从M采样,M可以是内存缓冲区或生成模型。

通常,当使用重放时,目标是共同优化当前和重放数据的损失。另一种方法是,在优化当前环境时,使用重放数据的损失作为不等式约束。其理念是,以前的环境损失不应增加,但应允许减少。

回放与功能正则化相似,因为这两种策略都通过在网络的功能空间中操作来保护过去的知识,但不同的是,回放还允许对以前的上下文进行持续训练。虽然正规化的目标是保存所学知识,但回放可以被认为是旨在促进所学知识。然而,重放和函数正则化之间的区别有时是模糊的。例如,生成性重放的一种常见方法是学习输入的生成模型,然后根据网络副本对生成的输入进行的预测对其进行标记,就像在完成对先前上下文的训练之后一样。因此,该版本的生成性重放也是一种功能正则化形式。

回放适用于所有三种连续学习场景。此外,越来越多的文献关注于在没有明确的上下文边界的情况下开发基于回放的方法。回放的一个重要问题是其计算效率,因为它涉及对所有先前看到的上下文的不断再训练。令人鼓舞的是,有人建议,与其重放所有内容,不如只重放与新数据相似的项目就足够了。此外,已经表明,因为“不遗忘”比“学习”更容易,所以重放相对少量的数据就足够了。

包括的重放方法是深度生成重放(DGR),它在输入级重放生成的表示;脑启发重放(BI-R),其在潜在特征水平上重放生成的表示;体验重放(ER),以“标准方式”重放存储的样本(即,重放数据的损失加上当前数据的损失);以及平均梯度情景存储器(A-GEM),其重放相同的存储样本,但使用重放数据的损失作为不等式约束(即,在重放数据的丢失不能增加的约束下优化的当前数据的损失)。

3.5 基于模板的分类

最后,讨论使用模板的分类,它可以作为类增量学习的策略。通过基于模板的分类,可以为每个类别学习模板(也可以被认为是模型或表示),然后根据哪个模板最适合要分类的样本做出分类决策(图8)。一个关键的优点是,这将一个经常具有挑战性的类增量学习问题重新表述为一个通常更容易解决的任务增量学习问题,其中每个“任务”都是学习特定类的模板[35]。

图8 基于模板的分类。为每个类别学习“模板”(例如,原型、能量值或生成模型),并根据哪个模板最适合要分类的样本进行分类。

一种源自认知科学的流行方法是使用“原型”作为类模板。在深度学习中,原型通常是由神经网络定义的嵌入或度量空间中的类的平均向量。然后将要分类的样本分配给它们最接近的原型类(即,基于嵌入空间中的最近类均值规则执行分类)。对于类增量学习,如果嵌入网络是固定的,则可以通过为每个类存储单个原型来实现该方法。然而,可能需要更新嵌入网络以更好地分离新遇到的类。为了防止原型在嵌入网络进化时漂移,一些方法为每个类存储大量示例,以在嵌入网络发生变化后重新计算或更新原型。另一种放松存储数据需求的方法是基于当前上下文的数据观测到的漂移来估计和纠正原型的漂移。

基于模板的分类的另一个例子是生成分类。在这种情况下,为每个类学习的模板是生成模型,模板对测试样本的适用性通过生成模型下样本的可能性来衡量。与生成重放类似,当合适的特征提取器可用时,可以对潜在特征而不是原始输入执行生成分类。生成式分类不需要存储观察结果,但做出分类决策可能会耗费大量的计算成本。更有效的替代方案可以是使用基于能量的模型,并为每个类别计算能量值而不是似然。

基于模板的方法有iCaRL,以存储示例的平均潜在特征表示作为模板。

四、实验

表5 Results on Split MNIST

表6 Results on Split CIFAR-100

对于Split MNIST(表5)和Split CIFAR-100(表6),作者发现三种持续学习场景之间存在明显差异。使用任务增量学习,几乎所有测试方法都比“无”和“联合”基线表现良好,使用领域增量学习,许多方法的相对性能大幅下降,使用类增量学习,它们甚至进一步下降。

五、总结

持续学习是自然智能的一个关键特征,但对深度学习来说是一个公开的挑战。标准的深度神经网络在接受新任务训练时,往往会灾难性地忘记之前的任务或数据分布。使这些网络能够逐步地学习和保留来自不同上下文的信息已经成为一个激烈的研究主题。然而,尽管持续学习的范围很广,但它缺乏结构,在已发表的论文之间进行直接比较可能会产生误导。在这里,作者指出了持续学习设置之间的一个重要区别,即算法是否知道上下文身份,如果不是,是否必须推断出上下文身份。基于这两种区别,作者确定了持续学习的三种场景:任务增量学习、领域增量学习和类增量学习。

本文中描述的三个持续学习场景为为持续学习定义清晰而明确的基准问题提供了有用的基础。作者希望这将加快进展,弥合自然智能和人工智能之间的差距。此外,作者认为这是一个重要的概念性见解,在计算层面上,有监督学习问题可以以这三种不同的方式递增。也许特别是在现实世界中,持续学习问题通常是复杂的和“混合”的场景,将这三种基本类型的增量学习结合起来处理问题可能是富有成效的。


参考文献

https://www.nature.com/articles/s42256-022-00568-3

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智能生信 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档