增量学习【1】

Three types of incremental learning(IL)

输入 x ∈ X , 上下文内标签 y ∈ Y , 上下文标签 c ∈ C 输入x\in X, 上下文内标签y \in Y, 上下文标签c \in C 输入xX,上下文内标签yY,上下文标签cC。这些定义意味着,可以根据算法是否知道上下文身份信息,以及是否必须推断来区分这三种情况。因此,每个场景都指定了上下文标签在测试期间是否可用,但不一定说明它们在训练期间是否可用。

内容构成上可以分为三个主要部分:Knowledge Retention(but NOT Intransigence),知识保留。要让机器学会保存学过的知识,同时拥有学习新知识的能力;Knowledge Transfer,知识迁移。我们不仅希望机器可以记住过去的学习到的知识,还希望机器以前学过的知识可以应用到后面的任务中,即知识迁移;Model Expansion(but Parameter Efficiency),模型拓展。当任务太多的时候,模型的容量可能不够,因此这里要求模型能自动扩展容量。

task-incremental learning

一个算法必须逐步学习一组清晰可区分的任务

f : X × C → Y f:X×C\rightarrow Y f:X×CY

任务增量学习的挑战,不是或不应该只是防止灾难性的遗忘,而是找到有效的方法来分享学习表示跨任务,优化性能和计算复杂性和使用信息学习在一个任务来提高性能在其他任务(也就是说,实现积极的向前或甚至向后转移任务之间)。这些仍然是公开的挑战。在现实世界中,任务增量学习的例子是学习玩不同的运动或不同的乐器,因为通常应该演奏哪种运动或乐器总是很清楚的。

domain-incremental learning

一个算法必须在不同的环境下学习相同的问题

f : X → Y f:X\rightarrow Y f:XY

类似于任务增量学习,这个场景可以被描述为一个算法必须逐步学习一组“任务”(虽然现在可能更直观地认为他们是“域”),但至关重要的区别——至少在测试时间算法不知道样本属于哪个任务但是,识别任务并不是必要的,因为每个任务都有相同的可能输出(例如,在每个任务中使用相同的类)。然而,只有在这个场景中,当算法首先识别任务时,使用任务特定的组件才可能实现,但这并不一定是最有效的策略。

这个场景的例子是逐步学习在不同的光照条件下识别物体

class-incremental learning(较难)

一个算法必须逐步学习如何区分越来越多的对象或类

f : X → C × Y f:X\rightarrow C×Y f:XC×Y,也可写作 f : X → G f:X\rightarrow G f:XG,其中 G G G是通过组合 C C C Y Y Y得到的“全局标签空间”

该算法应该能够解决每个单独的任务(即区分一个事件中的类),也能够识别一个样本属于哪个任务(即区分不同事件中的类)。一个重要的挑战是学习区分那些没有被一起观察到的类(学过区分猫狗、猪牛,现在要区分猫牛)

增量学习(或叫终生学习)和迁移学习和多任务学习的区别

增量学习包括 Knowledge Transfer,知识迁移。我们不仅希望机器可以记住过去的学习到的知识,还希望机器人以前学过的知识可以应用到后面的任务中,即知识迁移。这有点类似于迁移学习,不同的地方在于迁移学习不关心模型的遗忘问题,而LLL既需要将知识迁移同时要保证模型能保留学过的知识。不能捡了芝麻丢了西瓜。

如果先学习任务1,再学习任务2,那么机器就忘记任务1学过的东西了。但是如果使用多任务学习的方法同时学习两个任务,就可以取得很好的效果。说明网络容量足以学习两个任务,但是却没有保留学过的知识。多任务学习通常难以代替LLL,因为遇到新任务时,模型需要从头训练,这样无论是存储训练数据的代价还是训练代价都是难以接受的。另一方面,多任务学习可以作为LLL的上界。

(https://blog.csdn.net/iuiloveyou0/article/details/125691486介绍区别很不错,有些地方不太认可所以改了改)
增量学习目前需要解决的问题:新知识时往往会遭遇“灾难性遗忘”(Catastrophic Forgetting),在学习新任务之后,模型在旧任务上性能灾难性下降。这个问题指向了神经网络模型所面临的普遍问题:稳定性-可塑性困境(stability-plasticity dilemma),其中可塑性代表调整以整合新知识的能力,稳定性则代表在调整过程中保留旧知识的能力。如何提高模型的可塑性,同时兼顾稳定性,在两者间取得平衡,是增量学习研究所面临的挑战。

1 多任务学习
多任务学习使用共享或者部分共享的参数同时学习多个相关的任务,通过多任务联合建模,期望达到更好的泛化性能,减少过拟合。
与增量学习比较,多任务学习以离线学习的方式同时完成所有任务的建模,不存在任务的分批次到达以及模型的迭代和调整。(学到k个任务的知识)

2 迁移学习
迁移学习希望通过源任务和目标任务间知识的迁移,利用在源任务上的知识,提升模型在目标任务上的性能。
与增量学习不同的是,迁移学习不要求模型保留在源任务上的知识。(更好的学习DT)

3 元学习
元学习希望教会模型学习的能力,基于过去训练的经验提高模型的学习能力。给定一系列训练任务,期望模型在新任务上快速调整和学习。
元学习同样不涉及保留过去任务的知识,防止遗忘。

将数据集分为D1~Dk,k份数据集,旨在学习到任务之间的共性能够识别Dt数据集的物体(一般运用于小样本学习中)

4 跨域学习
同时在两个数据集上进行训练,相当于扩展了原数据集帮助学习。(更好的学习DT)

5 在线学习
与离线学习方式相不同,在线学习在流式数据上优化模型。
与增量学习不同,1.在线学习通常要求每个样本只能使用一次,且数据全都来自于同一个任务,假设流式数据在整体上具有独立同分布特性,而增量学习是多任务的,但它允许在进入下一个任务之前多次处理当前任务的数据。同时,2.在线学习不强求模型保留过去的知识,使得模型倾向于拟合当前时效的数据。和增量学习结合,3.在线增量学习时增量学习和在线学习的交叉领域,如果数据以流式方式到达,在线增量学习期望模型流式地学习新数据和新类别,并且具有抗遗忘的能力。(每次只能学习当前数据集的一部分,每个样本只能学一次,旨在越学越能更好的学习数据集D1)

6 持续学习
持续学习设置明确地专注于动态变化的环境,通常划分为需要顺序完成的一组任务。
和增量学习一样,1.无法和以前的任务交互2.模型容量有限(以流的形式,每次学习一堆数据集D1~Dt,旨在还能识别前面的数据集)
增量学习是只能读取前面数据集的部分信息和当前数据集。

增量学习是指在已有的模型上,通过不停地添加新的训练数据来不断改进模型的能力。也就是说,增量学习是一种训练方法,目的是在不重新训练整个模型的情况下,用新的数据更新已有的模型。增量学习通常用于数据量很大或者数据源不断更新的场景。

持续学习是指系统能够在不断接收新数据的同时,不断地更新和改进自己的模型。换句话说,持续学习是一种机器学习的方法论,旨在让机器能够不断地适应新的环境和任务。持续学习通常用于需要长期运行的应用场景中,如自动驾驶、智能客服等。

因此,增量学习和持续学习都是机器学习中的方法,但它们的应用场景和目的略有不同。增量学习更加注重模型的优化和更新,而持续学习则更注重系统的长期适应能力。

vanilla fine tuning

什么是预训练?
假设你现在需要搭建一个NN完成图像分类的任务。首先,你需要随机初始化参数,接着使用训练数据开始训练网络,不断对网络进行调整直至网络的损失值越来越小。当你觉得训练结果达到一个满意的状态后,就可以将模型的参数保存下来,以便在下次执行类似任务时拿出来可以直接使用,并且能够获得较好的结果。这个过程就是pre-training。

什么是微调?
在某天,你想在一个新的数据集上进行图像分类工作。这个时候,你可以直接调用之前保存下来的模型参数作为该任务的初始化参数,然后在训练过程中,根据训练结果不断调整,使结果达到预期状态。你使用的是一个pre-trained模型
之后,你又接收到一个类似的图像分类的任务。这个时候,你可以直接使用之前保存下来的模型的参数来作为这一任务的初始化参数,然后在训练的过程中,依据结果不断进行一些修改。这时候,你使用的就是一个,而过程就是fine-tuning。

5.1.1 Vanilla Fine-Tuning
最正常的微调方法。主要问题是在小数据集上容易过拟合。
注:vanilla的中文是香草。在老美那边,貌似香草味就是咱们的原味。所以原味差不多就是原始版本的意思吧。
给定一个输入文本x,普通的微调方法首先将其转换为“[CLS]x[SEP]”作为模型输入,然后利用PLM对其进行编码。之后,它利用“[CLS]”的隐藏状态h[CLS]来预测输入文本的标签。先前基于PLM的方法(Chen等人,2021a;Wang等人,2022年)都遵循这种微调范式。

5.1.2 Intermediate Fine-Tuning
采用一个足够大的中间数据集帮助微调。主要分为:

1、不同领域的相同任务数据集。
2、相同领域的不同任务数据集。
5.1.3 Multi-Task Fine-Tuning
这种多任务微调方式可以增强PLM的鲁棒性和对大量有标签数据的依赖。主要分为:

Pure Multi-Task Fine-Tuning:采用与主文本生成任务相同,但是领域不同的方法(主要是数据集)。
Hybrid Multi-Task Fine-Tuning:采用与主文本生成任务不同的方法
5.1.4 Parameter-Efficient Fine-Tuning
上述方法耗时,因此介绍这类微调方法

Adapter-based:在每一层添加two feed-forward layers 和 a non-linear layer作为adapter,然后只微调adapter。
Freezing-based:只微调PLM的部分参数
Distillation-based:把PLM中的知识蒸馏到小模型中,然后训练小模型。
5.2 Prompt-Tuning
这部分介绍的就是最近比较火的提示学习在文本生成方向上的应用。简而言之,提示学习就是将文本生成下游任务形式化为和预训练任务相似的language model任务。

5.2.2 Discrete Prompts
5.2.3 Continuous Prompts
5.3 Property-Tuning
对于不同的文本生成任务,在微调PLM的时候我们需要考虑不同的属性(property)。这一小章主要针对三个在文本生成中的重要属性。

5.3.1 Relevance
输出文本中传达的主题语义应该与与输入文本高度相关。

5.3.2 Faithfulness
指生成的内容应符合输入文本的语义,生成的文本符合事实。

5.3.3 Order-Preservation
输入和输出文本中语义单元(单词、短语等)的顺序是一致的。对于摘要生成和机器翻译等任务很重要。

关于增量学习如何处理不同网络结构的类别增量

在这里插入图片描述

关于增量学习如何衡量

横轴表示一个模型在不同任务上的表现,纵轴表示LLL模型学完第几个任务后的模型。
在这里插入图片描述

关于如何提高backward transfer

图片13.jpg

不要完全按照新的gradient来走,保存一些过去的梯度,是的新旧梯度的乘积非负。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
增量学习是一种在机器学习中的技术,可以通过逐步增加新的数据来不断改进和更新模型。在深度学习领域,增量学习技术也被广泛应用。引用中提到了增量学习的两个优点。首先,通过增量学习,我们可以避免将大量数据加载到内存中,从而提高系统的效率。其次,增量学习可以帮助我们减少训练时间,只需要基于预训练的参数执行几次增量学习迭代就可以显著减少学习时间并节省计算资源。 在Matlab中,也有一些关于增量学习的代码示例。引用中提到了一种用于端到端增量学习的Matlab代码,可以用来训练深度学习模型。该代码可以帮助我们逐步增加新的训练样本,并在每次迭代中更新模型以提高整体性能。此外,引用中也提到了可以通过调用训练函数来进一步增强已经训练好的网络,并通过训练日志来验证增量学习的效果。 因此,如果你想在Matlab中进行增量学习,你可以参考这些代码和方法来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [matlab20行代码-EndToEndIncrementalLearning:端到端增量学习](https://download.csdn.net/download/weixin_38589316/18986094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [如何在MATLAB中进行神经网络的增量学习?](https://blog.csdn.net/zhenlingcn/article/details/112479161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值