持续学习综述

1.概述

本文为对持续学习的个人学习总结。主要参考邱锡鹏老师的《神经网络与深度学习》这本书和以下论文。

《A Comprehensive Survey of Continual Learning: Theory, Method and Application》

2.概念阐述

持续学习本身概念不难理解,但与其相关的各种“学习”混杂在一起就让我理解起来相当痛疼,这里就分别列出来,简述一下。

2.1迁移学习

迁移学习(Transfer Learning)是指两个不同领域的知识迁移过程,利用源领域(Source Domain)中学到的知识来帮助目标领域(Target Domain)上的学习任务。源领域上的训练样本数量一般远大于目标领域。

一个样本空间及其分布可以成为一个领域。

听起来是不是和微调(Fine-Tuning)有点像,微调本质上可以算作迁移学习应用到神经网络的一种具体方法或者说技巧。微调利用预训练好的模型学习新任务,只有输出层从头训练,其它层则根据源模型的参数进行微调,这有助于提高模型的泛化能力。

迁移学习又分成两种,归纳迁移学习(Inductive Transfer Learning)和转导迁移学习(Transductive Transfer Learning)。

归纳学习:在训练数据集上学习到使得期望风险最小的模型。

转到学习:学习一种在给定测试集上错误率最小的模型(在训练阶段就可以利用测试集的信息)。

2.1.1归纳迁移学习

归纳迁移学习一般有两种迁移方式:

(1)基于特征的方式:将预训练模型的输出或者是中间层的输出作为特征直接加入到目标任务的学习模型中。

(2)微调

2.1.2转导迁移学习

转导迁移学习是一种从样本到样本的迁移,直接利用源领域和目标领域的样本进行迁移学习。

通常假设源领域有大量的标注数据,而目标领域没有标注数据,但有大量的无标注数据。

领域适应(Domain Adaptation)是转到迁移学习的一个子问题,假设源领域和目标领域有相同的样本空间,但数据分布不同。主要方法是学习一个映射函数,使得源领域和目标领域的边际分布相同。这样提取的特征是领域无关的。

2.2多任务学习

多任务学习(Multi-task Learning)是指同时学习多个相关任务,让这些任务在学习过程中共享知识,利用多个任务之间的相关性来改进模型在每个任务上的性能和泛化能力。

多任务学习可以看作一种归纳迁移学习,主要挑战在于如何设计多任务之间的共享机制。

2.3元学习

元学习(Meta-Learning)是指在面对不同任务时,可以动态调整学习方式(比如动态选择合适的模型或动态地调整超参数等)的能力,也称为学习的学习(Learning to Learn)。

2.4持续学习

持续学习(Continual Learning),或者说终身学习(Lifelong Learning),增量学习(Incremental Learning)是指像人类一样具有持续不断的学习能力,根据历史任务中学到的经验和知识来帮助学习不断出现的新任务,并且这些经验和知识是持续累积的,不会因为新的任务而忘记旧的知识。

持续学习在学习知识上和归纳迁移学习很像,但是归纳迁移学习的目标是优化目标任务的性能,不关心知识的累计。同时也和多任务学习也十分类似,但不同之处在于持续学习并不是所有任务同时学习的,有时间上的持续性和先后性。

持续学习最主要的问题是灾难性遗忘(catastrophic forgetting),就是说当模型适应了一个新的分布会导致对旧分布的适应能力大大下降。

持续学习其实最主要期望的两种能力从定义就能看出来:

通过历史任务的经验和知识辅助新任务的学习

在学习新任务的同时不忘记就得经验和知识

分别对应学习可塑性(learning plasticity)记忆稳定性(memory stability)

就结果来说,持续学习应对新旧任务都可以有很强的泛化能力。最重要的就是在模型更新时确保资源的效率(resource efficiency),接近于只用新训练样本。

这很好理解,因为假设拥有无穷的计算量和存储空间,那直接把原始任务的数据和网络原封不动保存起来,再训练一个新的模型就可以了,也谈不上灾难性遗忘了。持续学习的一个关键问题是想尽可能保持网络“样貌”(这里用样貌是因为结构参数都可能改变,但变化不大)的同时,达成上述目标。

2.5各种学习

在我个人理解,各种学习都想要设计一种通用网络来完成所有任务,不过出发点或者说目标各不相同,以人脑为终极目标来举例子的话会好理解一些。

以语言举例子,中国人学习日语相比其他国家的人天生有优势,因为中文中的汉字数据集远大于日语里的汉字,所以中国人学日语汉字就可以迁移自己中文的知识,这可以说是迁移学习。

当一个人同时学多种欧洲语言,比如法语和德语时可以同时促进两种语言的掌握能力,这可以说是多任务学习。

当一个人学习中文时就不能像学习英语一样,并不能直接笔划对应字母,汉字对应单词,词组对应短语的形式,针对不同的语言有不同的学习顺序和方式,元学习就是探索这种不同语言的学习方式。(也可能相同,但元学习侧重点在学习方法,而不是学习的知识)

一个人可以在学了中文后可以更快地学习日语,而在学会日语后又没有忘记中文,也就是对应了持续学习和它的两个特性。

3.持续学习场景(scenario)分类

4.持续学习的评估指标

总体表现(overall performance)——average accuracy(AA),average incremental accuracy(AIA)

记忆稳定性——forgetting measure(FM),backward transfer(BWT)

学习可塑性——instransience measure(IM),forward transfer(FWT)

5.持续学习方法

5.1添加旧模型的正则项;(regularization-based approach)

这个方法的特点就是在损失函数上添加一个平衡新旧模型的正则项,并且通常需要保存一个旧模型的副本作为参考,如下图所示。

第一种是权重正则化,即有选择地对网络参数的变化进行正则化。典型的实施方式是在损失函数上添加二次惩罚项,根据每个参数在执行旧任务时的贡献或“重要性”对其变化进行惩罚。具体算法有著名的可塑性权重巩固(Elastic Weight Consolidation,EWC)。

第二种是函数正则化,针对预测函数的中间或最终输出。这种策略通常采用以前学习过的模型作为老师,当前训练过的模型作为学生,同时实施知识蒸馏(Knowledge Distallation,KD)以减轻灾难性遗忘。理想情况下,知识蒸馏的目标应该是所有旧的训练样本,而这些样本在持续学习中是不可用的。

5.2逼近和恢复旧模型;(replay-based approach)

这是一种近似和恢复旧数据分布的方法。根据回放(replay)内容的不同,这些方法可进一步分为三个子方向。


第一种是经验重放(experience replay),通常在一个小的内存缓冲区中存储一些旧的训练样本。由于存储空间极其有限,主要挑战包括如何构建和利用内存缓冲区。在构建方面,应仔细选择、压缩、增强和更新保存的旧训练样本,以便自适应地恢复过去的训练。

第二种是生成重放(generative replay)或伪重放(pseudo-rehearsal),通常需要训练一个额外的生成模型来重放生成的数据。用于生成重放的生成模型有多种类型,如生成对抗网络(GAN)和变分自动编码器(VAE)等。

第三种是特征重放(feature replay),保持特征级而非数据级分布在效率和隐私方面有很多好处,而这种方法的核心挑战是连续更新特征提取器造成的表征偏移,这反映了特征级的灾难性遗忘。

5.3显示操控优化过程;(optimization-based approach)

持续学习不仅可以通过在损失函数中添加附加项(如正则化和重放)来实现,还可以通过明确设计和操作优化程序来实现。

一个典型的想法是进行梯度投影。一些基于重放的方法,如 GEM、A-GEM、LOGD 和 MER,会限制参数更新,使其与经验重放的方向保持一致,相当于用一些旧的训练样本保留以前的输入空间和梯度空间。与保存旧的训练样本相反,OWM 和 AOP 将参数更新修改为先前输入空间的正交方向。OGD 保留了旧梯度方向,并将当前梯度方向与之正交。

由于正则化和重放最终都是通过修正当前梯度方向来实现的,因此梯度投影对应于类似的修正,但在参数更新中是明确的。

另一个有吸引力的想法是用于持续学习的元学习,它试图针对各种情况获得数据驱动的归纳偏差,而不是手动设计偏差。

5.4学习鲁棒均匀的表示;(representaion-based approach)

这是一类创建和利用表征优势进行持续学习的方法。除了早前的一项研究从元训练中获取稀疏表征之外,目前的研究还试图结合自我监督学习(SSL)和大规模预训练的优势,来改进初始化和持续学习中的表征。这两种策略密切相关,因为预训练数据通常数量巨大且没有明确标签,而 SSL 本身的性能主要通过(一系列)下游任务的微调来进行评估。

第一种是实现自我监督学习(基本上是对比损失),以实现持续学习。LUMP 观察到自我监督表征对灾难性遗忘具有更强的鲁棒性,因此通过在新旧任务实例之间进行插值来获得进一步的改进。MinRed通过对存储的旧训练样本进行去相关化处理,进一步提高了经验重放的多样性。

第二种是将预训练用于下游持续学习。一些实证研究表明,下游持续学习明显得益于预训练的使用,预训练不仅能带来强大的知识转移,还能抵御灾难性遗忘。特别是,在使用较大数据量、较大模型量和对比损失进行预训练时,下游持续学习的优势往往更加明显。然而,一个关键的挑战是,预训练的知识需要适应性地用于当前任务,同时保持对未来任务的通用性。

5.5通过设计架构来构建适应任务的参数(architecture-based approach)

上述策略基本上都是通过共享一组参数(即单一模型和单一参数空间)来学习所有增量心理任务,这是造成任务间干扰的主要原因。相比之下,构建特定任务参数可以明确解决这一问题。以往的研究通常根据网络架构是否固定,将其分为参数隔离和动态架构两类。重点放在特定任务参数的实现方式上,并将上述概念扩展到参数分配、模型分解和模块化网络,如下图所示。

参数分配的特点是在整个网络中为每个任务专用一个独立的参数子空间,该架构的大小可以是固定的,也可以是动态的;模型分解将模型明确分为任务共享组件和任务特定组件,其中任务特定组件通常是可扩展的;模块化网络利用并行子网络或子模块,以差异化方式学习增量任务,而无需预先定义任务共享或特定任务组件。

6.具体应用及问题阐述

6.1目标检测

增量对象检测(Incremental Object Detection,IOD)是持续学习在对象检测方面的典型扩展,它依次引入标注了不同类别的训练样本,模型需要正确定位和识别属于先前学习类别的对象实例。与每个训练样本中只出现一个对象实例的视觉分类不同,目标检测通常会同时出现属于新旧类别的多个对象实例。这种共同出现的情况给 IOD 带来了额外的挑战,即在学习新类别时,旧类别的对象实例会被标注为 "背景",从而加剧灾难性遗忘。另一方面,这也使得知识蒸馏自然而然地成为 IOD 的有力策略,因为旧类的对象实例可以从新的训练样本中获取,从而限制新旧模型之间的反应差异。

6.2 语义分割

连续语义分割(Continual Semantic Segmentation,CSS)的目的是以像素为单位预测类别,并在旧类别的基础上学习新类别。与 IOD 类似,新旧类别的对象实例可以同时出现。早期的一些研究利用新旧类别的完整注释进行持续学习。然而,由于重新标注旧类需要大量的费用和时间成本,更多的注意力集中在只使用新类的标注上,这导致旧类被视为背景(称为背景偏移),从而加剧了灾难性遗忘。

6.3 条件生成

条件生成的持续学习(Continual Learning for Conditional Generation,CLCG)与生成重放(replay)密切相关,它可以通过恢复先前学习的数据分布来减轻当前训练的生成模型和/或判别模型的灾难性遗忘。这通常需要保存旧生成模型的冻结副本,以便在新的训练过程中继续生成。由于采样分布通常在训练和测试中都会提供,因此 CLCG 与 TIL 的设置类似,但没有任务特征预测的挑战。

6.4强化学习

由于状态、行动和环境会随着时间的推移而相互作用,因此需要持续强化学习(Continual Reinforcement Learning,CRL)来调整任务之间和任务内部的动态数据分布(分别对应于 TIL 和 TFCL 的设置)。各种持续学习策略不仅适用于虚拟分类,也适用于强化学习(RL)。

6.5自然语言处理

NLP 中持续学习的特点是在Transformer架构中广泛使用预训练,这也是实施参数高效微调技术的动力。预训练转换器每次只需学习几个特定任务参数,就能有效地适应连续到达的任务,包括插入全连接层的适配器调整技术(CPT、CLIF、AdapterCL、ACM、ADA)和使用训练有素的提示标记的提示调整技术(C-PT、LFPT5、EMP)。任务的特定性也可以通过持续学习中的指令来获得,指令会添加一段简短的文字来描述每个任务的核心概念(PAGeR、ConTinTin、ENTAILMENT)。由于预先训练的基础模型取得了巨大成功,这些技术正得到越来越多的应用,并进一步促进了视觉领域的持续学习 。

6.6 Beyond Task Performance

持续学习的一个主要目的是避免重新训练所有旧的训练样本,从而改善模型更新的资源效率,这不仅适用于多个增量任务的学习,对于常规的单任务训练也很重要。由于基于梯度的优化的性质,网络往往会 "遗忘 "观察到的训练样本,因此需要重复训练才能捕捉到分布,尤其是对于一些困难的例子。
同时,持续学习与隐私保护的两个重要方向相关。第一个方向是联合学习(Federated Learning),即不允许服务器和客户端进行数据通信。典型的情况是,服务器将多个客户端的本地训练参数聚合成一个模型,然后将其发送回来。由于客户端收集的增量数据是动态和可变的,联合学习需要克服营养性遗忘,并促进客户端之间的知识转移,即联合持续学习。为了实现这些目标,FedWeIT 将网络参数分解为全局联合参数和稀疏的特定任务参数,并有选择地聚合后者。FedSpeech [ 采用一组渐进式剪枝掩码来确定参数的位置,并采用一组选择性掩码来重复使用旧知识。GLFC 通过对一些旧训练样本进行知识提炼,克服了灾难性遗忘,并通过梯度补偿缓解了类不平衡问题。CFeD则是利用辅助非标记数据进行知识提炼。
第二种是 "机器非学习"(Machine Unlearning),其目的是在不影响其他知识的情况下,消除特定训练样本的影响。这一方向的代表性方法与持续学习密切相关,如利用训练样本的子集学习单独的模型,利用历史参数和梯度,利用Fisher信息矩阵从参数中移除旧知识,在预训练骨干中添加适应性参数等。

7.交叉研究方向

1.扩散模型是一个正在崛起的先进生成模型,它构建了一个离散步骤的马尔可夫链,逐步为输入添加随机噪声,并学会逐步去除噪声以恢复原始数据的分布。这为生成模型的持续学习提供了新的目标,其在条件生成方面的出色表现可进一步促进生成重放的功效。


2.基础模型(Foundation Model)由于有效利用了大规模预训练,在各种下游任务中取得了令人瞩目的成绩。预训练数据通常数量巨大,而且是增量收集的,这就对高效更新提出了迫切要求。同时,扩大预训练规模有助于知识转移,减少下游任务之间的灾难性遗忘。然而,微调发现模型往往会遗忘预训练的知识[263],这已成为其应用的核心挑战,需要专门的持续学习策略。


3.基于Transformer的架构(Transformer-Based Architecture)已被证明在语言和视觉领域都很有效,并成为最先进基础模型的主流选择。这需要专门的设计来克服灾难性遗忘,同时为在持续学习中保持任务特异性提供新的见解。在 NLP 中开发的参数效率转移学习技术可以作为很好的参考,并被广泛地应用于持续学习。


4.多模态技术,尤其适用于视觉语言对的强制学习和视觉领域的语言基础应用,在很大程度上推动了机器学习的多个方向。作为额外的监督来源,多模态信息的稳定化有可能减轻灾难性遗忘。尤其是大语言模型(LLM)的使用,在训练和测试中都能提供强大的任务识别预测能力。


5.嵌入式人工智能(Embodied AI)是 "互联网人工智能 "时代的新兴范式转变,旨在使人工智能算法和代理能够通过与环境的互动而不是主要从互联网上收集的图像、视频或文本数据集来学习。重要的是,对一般持续学习的研究有助于具身代理从类似于人类的自我中心感知中学习,并为研究人员提供了一个独特的机会,通过对同一个人的长时间观察来追寻终身学习的本质。

8.总结

我之前学习过的神经网络和深度学习知识都可以说是任务驱动的,无论是分类任务,模式识别还是生成模型,通常都是针对具体问题,如何搭建模型和优化算法的,比如YOLO和Transformer这些。这也算是第一次比较认真去直接看脱离具体问题的抽象问题。感觉和attention机制比较像,可能再看一些落地应用和具体算法就不会有这样的错觉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值