原文:
towardsdatascience.com/continual-learning-the-three-common-scenarios-e6c3260fe0cb
随着机器学习模型训练成本的上升 [1],持续学习(CL)作为一种有用的对策应运而生。在持续学习中,机器学习模型(例如,GPT 这样的 LLM)在持续到达的数据流(例如,文本数据)上训练。关键的是,在持续学习中,数据不能存储,因此只有最新的数据可用于训练。那么,主要的挑战就是训练当前的数据(通常称为任务),同时不忘记从旧任务中学到的知识。不忘记旧知识至关重要,因为在测试时,模型是在所有已见任务的测试数据上评估的。这个挑战在文献中通常被描述为灾难性遗忘,也是稳定性-塑性权衡的一部分。
一方面,稳定性-塑性权衡指的是保持网络参数(例如,层权重)稳定以避免遗忘(稳定性)。另一方面,它意味着允许参数变化,以便从新任务中学习(塑性)。持续学习方法从多个方向接近这一权衡,我在之前的一篇文章中对此进行了讨论。
照片由 lionel mermoz 在 Unsplash 提供
本文的重点是持续学习研究中反复出现的根本场景:类增量、域增量以及任务增量学习。场景的选择强烈影响了问题的难度。在本文的剩余部分,我将详细介绍每个场景。正如我在我之前的写作中提到的,我将以推荐论文列表结束,以进一步探索该主题。
类增量学习
类增量学习场景的概念可视化:第二个任务引入了新的类别(汽车、飞机),为此创建了额外的输出神经元。图片由作者提供;使用 draw.io 创建。
类别增量学习(CIL)是一种持续学习场景,假设每个任务(即,每个新的数据部分)引入新的类别。这些类别与之前看到的所有类别都不同。一个现实世界的场景是一辆车从城市开到偏远地区。随着周围环境的变化,车载系统可能遇到完全不同的物体集合(行人 vs. 动物,建筑 vs. 树木,街道 vs. 道路等)。
为了将新数据纳入机器学习模型,模型的输出层通常会被扩展。这意味着为每个新遇到的类别添加 m 个新神经元。
在这种场景中的挑战是,模型在面临测试数据时必须隐式地识别正确的输出神经元集合。也就是说,在训练期间,从数据到神经元集合的映射(例如,行人 <-> 在任务 1 中添加的神经元集合)是清晰的。在训练过程中,每个任务都会引入新的神经元集合。因此,在测试期间,从早期任务的测试数据中可以激活的神经元数量会显著增加。这正是挑战:模型现在必须激活输出层中正确的行人神经元。这项任务并不容易。在广泛研究的 CIFAR100 图像数据集上,如果没有使用特定的 CL 方法(参见这篇文章),CIL 场景的测试准确率低至约 7% [2]。
通常情况下,CIL(持续增量学习)是三种场景中最具挑战性的,因为任务身份(即与任务相关的神经元子集,而不是:针对数据样本的特定输出神经元——那将是标签)仅在训练期间可用。在测试时间,任务身份必须被推断。
领域增量学习
领域增量学习场景的概念可视化:新任务引入了已知类别(人、建筑),但来自不同的领域(下雨、下雪)。图片由作者提供;使用 draw.io 创建。
在领域增量学习(DIL)中,假设每个任务都带来相同的类别,但来自不同的领域。在自动驾驶汽车的实际情况中,这相当于从市中心到郊区的转变。车载系统可能检测到相同的类别集合(行人、宠物、建筑等),但处于新的环境中。
在 DIL(增量学习)中,输出层通常保持固定大小。只有在添加全新的类别时,它才会扩展。除了这个例外,输出层没有特定于任务的神经元集。一般来说,输出层被认为已经编码了类别的知识,而新的任务只是简单地从不同领域传递已知的类别。
在 DIL 场景中,任务标识仅在训练时可用,但在测试时不可用。然而,由于非特定神经元集,在推理时并不需要。此外,这些集不需要从数据中推断出来。这使得 DIL 场景比之前的 CIL 更容易。在 CIFAR100 数据集上,一个简单的 MLP 可以达到约 46%的测试准确率[2]。
任务增量学习
任务增量学习场景的概念可视化:第二个任务引入了新的类别(汽车、飞机),为这些类别创建了一个单独的输出头。图片由作者提供;使用 draw.io 创建*.*
在最后一种场景中,任务增量学习(TIL)使用每个任务单独的输出层。这种场景有时也被称为多头部设置,表示单独的输出头部(通常,输出头部是一个单前馈层)。在自动驾驶汽车的例子中,当选择不同的驾驶模式时,TIL 非常有用。每种驾驶模式(运动型、安静型等)都附带一组动作(=输出神经元),并且这些动作在不同任务(=驾驶模式)之间不同。也就是说,在每种驾驶模式下,只有不同的动作是专有的。
在 TIL(任务增量学习)中,当新任务到来时,模型的输出层(或层)不会被修改。相反,使用单独的特定于任务的输出层。
在这个场景中,任务标识在训练和测试时都是可用的。由于特定于任务的输出层,灾难性遗忘通常很小,如果有的话。它只会在共享骨干的权重被修改时发生——这些权重是头部构建的基础。然而,由于特定于任务的头部也通过其参数编码知识,共享骨干可能不需要进行强烈的修改。
在所有展示的场景中,TIL 是最简单的一个,但需要在测试时提供任务标识(强调:不是标签!)这些标识是必要的,以便加载特定于任务的头部,如果没有提供输入数据,可能需要推断。在 CIFAR10 上,这种场景可以达到约 61%的最终测试准确率[2]。请注意,为每个任务训练一个单独的网络可以被认为是任务增量学习最极端的情况(参看[3])。
结论和推荐阅读
持续学习在持续到达的数据流上训练模型。其主要挑战是平衡稳定性和可塑性,这可以通过遗忘的强度来衡量。遗忘指的是神经元权重的覆盖,导致模型丢失之前学到的知识。然而,根据场景的不同,持续学习变得更容易或更难。
我介绍了以下三种常用的场景:类增量学习,这是通过在新到达的类别上扩展共享输出头而最具挑战性的场景。此场景之后是领域增量学习,其中共享输出头未修改,这使得它更容易。最后,任务增量学习是最简单的场景,因为每个任务都使用一个单独的输出头。
请查看以下阅读推荐(给出论文标题)以进一步探索三种场景:
-
三种类型的增量学习
-
三种持续学习的场景
-
重新评估持续学习场景:分类和强基线案例
参考文献
[1] www.visualcapitalist.com/training-costs-of-ai-models-over-time/; 访问日期 2024 年 10 月 27 日
[2]: Van de Ven, Gido M.,Tinne Tuytelaars 和 Andreas S. Tolias. “三种类型的增量学习.” 自然机器智能 4.12 (2022): 1185–1197.
[3]: Rusu, Andrei A. 等. “渐进式神经网络.” arXiv 预印本 arXiv:1606.04671 (2016).

被折叠的 条评论
为什么被折叠?



