问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

干货满满|OpenCSG带你连续学习人工智能系统

创作时间:
作者:
@小白创作中心

干货满满|OpenCSG带你连续学习人工智能系统

引用
1
来源
1.
https://blog.opencsg.com/blog/posts/30/

在人工智能的发展旅程中,连续学习(Continual Learning)作为一项关键技术日渐凸显其重要性。本文深入探讨连续学习的重要性,特别是它如何使AI系统适应持续变化的知识环境,以及这对未来人工智能发展的意义。

1. 连续学习的定义

在人工智能的发展旅程中,连续学习(Continual Learning)作为一项关键技术日渐凸显其重要性。今天OpenCSG和大家一起破题如何持续学习,知识在现实世界中是持续不断产生和演化的。这种学习方式使得AI系统能够模拟人类的学习过程,即不断从新的经验中吸取知识,同时保留旧的记忆。

本文旨在深入探讨连续学习的重要性,特别是它如何使AI系统适应持续变化的知识环境,以及这对未来人工智能发展的意义。通过这一技术,AI不仅能适应新的数据或情境,还能在此过程中累积和优化其知识库,展现出更加人性化和高效的学习能力。

首先,我们来定义连续学习:这是一个过程,其中AI系统从不断变化的数据分布中学习。在现实世界中,数据的分布是动态变化的,而连续学习使AI系统能够适应这种变化,通过顺序接收不同分布的训练样本,从而持续学习和进化。

这种学习方式的一个核心挑战是,如何让AI系统在吸收新知识的同时,不遗忘旧的信息。与迁移学习不同,两者虽然有相似之处,但迁移学习主要集中在如何将在一个任务上获得的知识迁移到另一个任务上,迁移学习对预训练中知识的记忆并不十分关注,而连续学习更加注重如何在学习新任务的同时,保留对旧任务的记忆。

进一步地,我们给出连续学习的数学定义,它涉及到如何通过一系列增量地到达的训练样本来逐步构建和调整AI模型。这些训练样本遵循特定的分布,代表了不同的任务,要求AI模型不仅能够适应新的数据分布,还能在这个过程中保持对之前学习内容的掌握。属于任务 t 的一批训练样本可以表示为

2. 连续学习的应用场景:以代码大模型为例

在AI领域,尤其是在代码生成的大模型中,知识和信息是不断变化的。这就意味着这些大模型需要持续更新和学习,以适应最新的技术和API的变更。这种持续学习和适应的能力是AI领域中连续学习技术的一个关键应用。

如下的例子中我们可以看到Pandas库的一个API更新。Pandas是一个流行的Python数据分析库,它提供高性能的数据结构和数据分析工具。此次更新引入了一个新的数据类型StringDtype,这是为字符串操作提供的一种更加特定和高效的数据类型。更新后的Pandas版本允许用户通过指定dtype=pd.StringDtype()来创建一个Series对象,这个Series对象将使用这个新的数据类型来存储字符串。这样做的好处包括更好的性能,以及内存使用优化。

随着编程语言和库的不断更新,新的函数和方法日新月异,使得模型必须适应这些变化,以维持其实用性和准确性。若没有连续学习机制,每当出现新的更新时,都需要从头开始预训练一个模型,这不仅成本高昂,而且耗时耗力。预训练模型需要大量的数据和计算资源,并且随着模型的复杂性增加,所需的时间和资源也会指数级增长。相反,通过连续学习,模型可以在现有知识的基础上逐步集成新的信息,这种逐步学习和调整的能力是实现持续进步和保持模型最前沿的关键。

3. 连续学习方法所关注的能力

3.1 跨任务泛化性

3.2 稳定性和可塑性

在连续学习的背景下,稳定性和可塑性权衡(Stability-Plasticity Trade-off)是一个关键概念,它描述了神经网络在学习新知识(可塑性)和保留旧知识(稳定性)之间需要做出的平衡。

  • 可塑性是指神经网络对新数据或新任务快速适应的能力。高可塑性意味着网络可以迅速调整其参数来学习新的模式或规则。
  • 稳定性是指网络在学习过程中保持对旧知识的记忆能力。高稳定性的网络在引入新数据时不会轻易丢弃已学习的信息。

在理想情况下,我们希望网络既有高度的可塑性也有高度的稳定性。然而,在实践中,过高的可塑性可能导致网络在接触新知识时快速遗忘旧知识——这称为灾难性遗忘(Catastrophic Forgetting)。相反,如果网络太稳定,它可能无法有效地学习新信息。因此,神经网络的设计需要在稳定性(避免遗忘旧知识)和可塑性(有效学习新知识)之间找到平衡点。

4. 连续学习的经典方法

4.1 基于增强推理阶段的方法

In-context learning允许语言模型在没有显式更新或重新训练的情况下通过上下文来理解和执行新任务。这项技术使得大型语言模型如同从经验中学习的人类一样,能够通过分析和理解上下文信息来快速适应新任务,而无需进行额外的模型训练。它的工作原理可以通过一个情感分析的案例来阐释,正如下图所示。

在这个例子中,模型通过几个标注了情绪的句子来学习,每个句子后都跟着一个情绪标签,如“Positive”(积极)、“Neutral”(中立)或“Negative”(消极)。模型观察这些句子,并根据它们的内容推断出相应的情绪标签。例如,它学会了收入增加通常对应着积极的情绪,而偿还国家债务的艰难过程则通常被视为消极的。通过这种方式,模型学会了对未标记的句子进行情绪分类,如上图中最后一个句子,模型需要利用前面学到的知识来判断这是一个积极的情绪。

很自然地,在连续学习的情境下,我们也可以通过精心构建的提示来引导模型进行复制、更新和保留知识的操作。在这种学习框架中,in-context learning使模型能够对特定的提示做出反应,并根据上下文中提供的新信息来调整其回答。主要有如下三种类型的例子:

  • 复制(Copying): 提供一个模型输入的例子,包含一个新事实。例如,"新的美国总统是奥巴马·拜登"。随后的问题是关于这个新事实的,如 "美国的总统是谁?"。这要求模型复制它刚接收到的信息。
  • 更新(Updating): 在这个例子中,新事实修改了模型既有的知识,例如 "爱因斯坦专攻物理数学"。然后模型被询问相关的问题,如 "爱因斯坦研究哪个科目?"。模型需要根据新事实更新其回答,反映最新的信息。
  • 保留(Retaining): 在这个阶段,模型接收一个新事实,如 "梅西踢足球打网球",但被问及一个与新事实无关的问题,这要求模型保留其原始的知识库中的信息,而不是用新信息取代它。例如,被问到 "Google的创始人是谁?",模型应该给出旧知识,即创始人是拉里·佩奇。

4.2 基于定位与修改的方法

在连续学习的环境中,“定位和修改”(Locate and Edit)是一个涉及两个步骤的方法,旨在提高模型在处理事实性信息时的准确性和可靠性,同时减少对整体模型重新训练的需求。下图是一个“定位和修改”的典型例子,其中通过这种技术进行了模型权重的直接编辑。这可能包括更改或调整神经网络中某些节点的连接强度,以促进正确信息的流动,同时阻断导致错误预测的信号。

步骤一:该步骤使用因果中介分析来识别出在进行特定主题的事实预测时关键的模型组件。因果中介分析是一种统计技术,用于确定变量之间的因果关系,以及它们是如何通过中介变量相互影响的。在这个环境中,它帮助我们了解在模型生成预测时哪些部分的权重或特征是至关重要的。

步骤二:接着采用一种称为Rank-One Model Editing(ROME)的技术来调整模型权重。ROME允许研究者直接修改对生成模型输出至关重要的参数,而无需对整个模型进行大规模的重新训练。这项技术能够定位到模型权重中的特定层或结构,并进行有针对性的调整,以纠正错误的输出或强化正确的信息。

4.3 基于正则化的方法

核心思想是通过在损失函数中添加显式的正则化项来平衡旧任务和新任务的需求,通常需要存储一个旧模型的冻结副本作为参考。根据正则化的目标,这类方法可以分为两个子方向:对模型参数进行正则化,对模型的输出或者中间变量进行正则化。

对模型参数进行正则化的一个典型做法是在损失函数中加入一个二次惩罚项,该惩罚项根据每个参数对旧任务执行的“重要性”或贡献来惩罚该参数的变化。如弹性权重合并(Elastic Weight Consolidation ):它允许神经网络在连续学习新任务的过程中,减少对旧任务知识的遗忘。该方法的核心思想是在学习新任务时对模型参数施加约束,从而保护那些对旧任务很重要的参数。

a. 参数重要性:使用Fisher信息矩阵来确定每个参数对旧任务的“重要性”。参数的重要性可以理解为该参数在旧任务上的损失函数中的作用大小。

b. 正则化损失:在训练新任务时,EWC引入一个正则化项到损失函数中,该项对于每个参数的贡献与该参数的重要性成比例。这样,重要的参数在学习新任务时变动得更少,从而保留了对旧任务的记忆。 除了直接限制参数更新的范围来尽可能避免灾难性遗忘,如果我们要想计算出新模型对旧知识遗忘多少,我们应该同时拿到新旧参数和旧数据,但现实情况是新旧参数我们可以拿到,但没有旧数据。

另外一个近似的替代方案是,使用新的数据在旧模型上进行推理,获得一个输出(这里的输出可能是中间某些层的特征,也可能是其他具体任务的结果),再使用更新后的模型在新数据上进行推理,如果二者相差不大,认为模型对过去知识可能没有怎么遗忘。如LwF(Learning Without Forgetting):这是一种用于在深度学习中避免灾难性遗忘的方法。它允许一个神经网络学习新任务,同时保持在旧任务上的性能:

4.4 基于缓冲区重放的方法

该方法的思想是,可以使用一个缓冲区来存储一部分之前的样本,并定期用这些样本来重新训练(或“重放”)模型。此类方法的核心问题是缓冲区的大小是有限的。我们无法存储所有遇到的数据,尤其是在存储资源有限的情况下。那么:哪些数据应该保留在缓冲区中,哪些应该被删除?

这个优化问题是为了减少重放缓冲区中可行样本集合的大小,同时确保样本之间的梯度方向尽可能地互不相似(即它们之间的夹角更大)。直观上,这可以通过最小化样本梯度之间的内积来实现。在优化理论中,内积可以被看作是衡量两个向量相似度的指标,当内积越小(或为负数),意味着两个向量越不相似。

4.5 基于表征优化的方法

想象一下,你有一个书架,而这个书架被分成了几个不同的部分,每部分放置一类书籍。当你获得新的书籍时,你只会放在它对应的部分,而不会影响其他部分的书。

同样,在神经网络中,通过让不同任务的权重位于不同的“书架部分”(也就是正交的子空间),我们可以为每个任务提供专有的知识存储区域,从而在学习新任务时不会干扰到旧任务。

此外,为了在网络权重更新时维持这种正交性,可以使用种特殊的数学工具——Cayley变换(如上所示)。这就像有一个精确的书架管理系统,能确保新加入的书不会误放到其他部分,即使在加入许多新书后,原来的组织结构仍然保持不变。

在神经网络中,权重矩阵Wl通常是自由变化的,不受任何约束。然而,当我们希望权重矩阵的列向量保持正交性时(即任意两个不同列向量的点积为零),权重矩阵就必须位于Stiefel流形上。

Stiefel流形上的优化意味着,在梯度下降或其他优化算法的每一步中,都必须保持权重矩阵的列向量正交。这通常通过一个额外的投影步骤来完成,该步骤会将更新后的权重矩阵重新投影回Stiefel流形上,以确保权重矩阵的列向量保持正交。具体的算法流程如下所示:

同样我们也可以使用元学习来优化表征空间,French (1991)提出稀疏表示可以减轻遗忘。理想的稀疏表示是实例稀疏的,即使用很小一部分激活来表示输入,同时充分利用表示空间。这意味着虽然大多数神经元对给定输入保持不活跃,但每个神经元都会参与表示某些输入。

同时不希望有死神经元,即对所有输入都不活跃的神经元,因为这些神经元无用且应该被舍弃。没有死神经元的实例稀疏表示可以减少遗忘,因为每次更新只改变少量的权重,这样也只影响少量的输入。

在元学习(Meta Learning)中,内层循环(Inner Loop)和外层循环(Outer Loop)是训练过程的两个关键阶段,它们在模型学习如何学习的过程中发挥不同的作用。

a. 内层循环(Inner Loop)内层循环是指在单个任务或一小批任务上进行的快速学习过程。这里的目标是对模型的参数进行调整,以便它能够迅速适应这些任务。在内层循环中,通常使用较小的学习步长,并进行有限次的迭代,因为目的是要快速学习任务,而不是过分优化在这些任务上的性能。在典型的模型如模型无关元学习(Model-Agnostic Meta-Learning, MAML)中,内层循环的更新是基于每个任务的数据来优化任务特定的模型参数。

b. 外层循环(Outer Loop)外层循环则关注在多个任务上的泛化能力。在这个阶段,元学习算法会根据多个任务的学习结果来更新元参数,这些元参数通常决定了模型在面对新任务时的初始设置。外层循环的目的是通过观察模型在内层循环中如何适应各种任务,从而找到最优的元参数,使得模型能够更好地适应尚未见过的新任务。

具体步骤如下:

a. 初始化:
随机初始化元参数θ。这些是整个训练过程中将会进行调整的参数。

b. 准备权重和任务:
随机初始化任务相关的权重W。
从CLP问题的分布p(T)中采样一个任务Ti。

c. 采样训练集
从与当前任务Ti相关的分布p(Sk∣Ti)中采样训练集(在元学习中也叫support set)Strain。

d. 内部循环训练:
将W0设置为W(这是当前任务的初始权重)。
对于Strain中的每个样本(由索引j表示),进行如下操作:
(1)从训练集中取第j个样本(Xj,Yj)。
(2)更新权重Wj,方法是从Wj−1中减去步长α乘以这个样本上的损失梯度。

e. 采样测试集:
从与当前任务Ti相关的分布p(Sk∣Ti)中采样测试集Stest。

f. 更新元参数:
使用测试集Stest上的梯度来更新元参数θ,步长为β。

g. 外部循环结束:
循环结束时,返回模型参数θ。

参考文献:

Javed, Khurram, and Martha White. "Meta-learning representations for continual learning." Advances in neural information processing systems 32 (2019).

Chaudhry, Arslan, et al. "Continual learning in low-rank orthogonal subspaces." Advances in Neural Information Processing Systems 33 (2020): 9900-9911.

Wang, Liyuan, et al. "A comprehensive survey of continual learning: Theory, method and application." IEEE Transactions on Pattern Analysis and Machine Intelligence (2024).Wang, Liyuan, et al. "A comprehensive survey of continual learning: Theory, method and application." IEEE Transactions on Pattern Analysis and Machine Intelligence (2024).

Kirkpatrick, James, et al. "Overcoming catastrophic forgetting in neural networks." Proceedings of the national academy of sciences 114.13 (2017): 3521-3526.

Li, Zhizhong, and Derek Hoiem. "Learning without forgetting." IEEE transactions on pattern analysis and machine intelligence 40.12 (2017): 2935-2947.

Zheng, Ce, et al. "Can We Edit Factual Knowledge by In-Context Learning?." arXiv preprint arXiv:2305.12740 (2023).

De Cao, Nicola, Wilker Aziz, and Ivan Titov. "Editing factual knowledge in language models." arXiv preprint arXiv:2104.08164 (2021).

Wang, Song, et al. "Knowledge editing for large language models: A survey." arXiv preprint arXiv:2310.16218 (2023).

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号