首页 > 其他分享 >持续学习概览

持续学习概览

时间:2023-12-26 20:33:05浏览次数:30  
标签:prompt 训练 概览 持续 学习 任务 参数 lora

持续学习

两个主要问题:

  • 灾难性遗忘
  • 稳定性-可塑性权衡

baseline

Finetune

根据任务顺序依次微调
这个方法是持续学习的下界

Multi-task Learning

多任务学习
这个方法是持续学习的上界

基于Replay(回放)的方法

对之前的关键数据,或模型梯度进行存储或压缩存储。在学习新任务时,为减轻遗忘,可以在训练过程中重放先前任务中存储的样本

sample replay

保存一部分old task的数据,在新任务中每过n step就学一个step
计算成本,存储成本高

梯度情景记忆(Gradient Episodic Memory, GEM)

存储旧任务中具有代表性的一些样本
如果直接把之前的样本混入新任务数据,联合训练,会存在数据量不匹配的问题。
所以,在学习新任务时,约束参数更新的方向与之前所有任务的更新方向(保存的数据上的负梯度)比较相似(这可以通过计算梯度的夹角)
image

这种方法的好处是避免了联合训练带来的数据量不匹配,利用类似于方向正则化的方式进行训练。

LAMOL

如果不想保存旧数据,可以用语言模型来生成回放。可以专门训一个回放模型,或者模型自身就可以用来回放(LAMOL)
image

LAMOL:一边训解决这个task的能力,一边训回放这个task的能力

基于正则化(Regularization)的方法

由于隐私政策等原因,往往无法存储之前的任务信息。在这样的场景下,不保存之前数据,设计巧妙的正则化损失以在学习新数据时限制旧知识的遗忘(譬如限制模型参数的变化范围)

Elastic Weight Consolidation

人脑可以通过减少一些对之前任务重要的突触的可塑性,从而进行突触固化来抵抗遗忘,达到持续学习的目的。EWC方法借鉴人脑的突触固化机制,设计了一种类似的参数固定算法来保留知识。具体做法为:在学习新任务时,在对非常影响之前任务表现的重要的参数上施加损失惩罚,即可达到继续学习的效果。

在训练A任务时,记录更新较大的参数,在训练任务B时,更新这些参数时添加惩罚,使网络保留A任务的记忆。

LwF

Learning without Forgetting

假设给每个任务分配单独的prompt(总之模型参数分为share的和不share的)

不保存旧数据,对新数据在旧任务的prompt上产生一个输出,在训练的时候同时优化旧任务和新任务。(其实相当于不保存数据,每次使用新任务的输入,用旧prompt生成旧任务相关的数据(这样一总结感觉变low了。。。)
image

O-lora

Orthogonal Subspace Learning for Language Model Continual Learning
每来个新任务,分配新lora
在训练的时候,约束新lora与旧lora正交,让新lora在旧lora的正交子空间中更新,训完将lora合并到旧lora
image

基于参数隔离(Parameter isolation-based)的方法

通过对每个任务使用不同的参数,来避免遗忘

image

Progressive Networks

Progressive Neural Networks 2016NIPS
为了防止忘记过去的任务策略,每个任务的网络训练完都被保留了下来,同时固定住参数不再更新,再有新任务的时候,就重新实例化一个新的网络,即增加一个column。同时为了利用以前任务的知识训练新任务,将老任务网络的每一层的输出与当前任务网络每一层输出合并,一起输入下一层。

progressive prompts

PROGRESSIVE PROMPTS: CONTINUAL LEARNING FORLANGUAGE MODELS
一个任务一个prompt,训新prompt的时候,fix之前的prompt,相比Progressive Networks,更省资源

EPI

Rehearsal-free Continual Language Learning via Efficient Parameter Isolation
一个任务一个prefix,统计,保存之前任务对应输入的分布(mean,cov),test的时候根据属于每个分布的概率去挑用哪个prefix来推理

标签:prompt,训练,概览,持续,学习,任务,参数,lora
From: https://www.cnblogs.com/shiiiilong/p/17929069.html

相关文章

  • 【THM】Burp Suite:Repeater(Burp Suite重放器·更新版)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/burpsuiterepeater本文相关内容:学习如何使用Repeater在BurpSuite中重发请求。简介在本文中,我们将重点关注BurpSuiteRepeater模块以探索BurpSuite框架的高级功能,我们将学习如何使用该模块来操作和重新发送......
  • Spring Boot学习随笔- RestFul API(@RestController、@RequestBody、@PathVariable),使用
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十六章、RestFulAPI什么是RESTREST全称是ResourceRepresentationalStateTransfer,中文意思是表述性状态转移,它首次出现在2000年RoyFielding的博士论文中,RoyFielding是HTTP规范的主要编写者之一。他在论文中表......
  • Elasticsearch简明学习(第一天)
    工作相关和扩展核心能力的需要,采用较为简单的方法来学习Elasticsearch,作相关记录备查。一、采用Docker安装sudodockerpullelasticsearch:7.7.0sudodockerimagessudodockerrun--nameelasticsearch-d-eES_JAVA_OPTS="-Xms512m-Xmx512m"-e"discovery.type=single-node"......
  • csi 学习文档
    https://kubernetes-csi.github.io/docs/introduction.htmlhttps://github.com/container-storage-interface/spec/blob/master/spec.md......
  • EMA跨空间学习的高效多尺度注意模块
    跨空间学习的高效多尺度注意模块摘要在各种计算机视觉任务中,通道或空间注意机制在产生更多可识别的特征表示方面具有显著的有效性。然而,通过通道降维来建模跨通道关系可能会对提取深度视觉表征带来副作用。本文提出了一种新型的高效多尺度注意力(EMA)模块。为了保留每个通道上......
  • 青少年学习编程的好处
    各位家长、老师和同学们,大家好!今天我要和大家分享的主题是:青少年学习编程的好处。我希望通过今天的分享,让大家更好地了解编程对于青少年的意义和价值。1.封面-主题:青少年学习编程的好处-副标题:提高逻辑思维,培养创新精神,掌握未来技能-报告人:您的名字2.引言-感谢大家的关注和......
  • vue3学习之Pinia状态管理
    状态管理 src/views/Pinia.vue<scriptsetup>import{ref}from"vue";import{storeToRefs}from"pinia";import{useCounterStore}from"../stores/counter";import{useTodos}from"../stores/todos";//可......
  • vue3学习之逻辑复用
    逻辑复用-组合式函数 src/views/ad/User.vue<scriptsetup>import{useMouse}from"../../js/mouse.js";import{useFetch}from"../../js/fetch.js";import{ref,computed}from"vue";//组合式函数const{x,y}=useMouse();/......
  • 测试开发 | TensorFlow:深度学习的引擎
    深度学习框架是支持深度学习模型开发和训练的关键工具,而TensorFlow作为其中一枚耀眼的明星,凭借其强大的功能和灵活性,成为深度学习领域的首选之一。本文将深入探讨TensorFlow的起源、基本原理、关键特性以及在人工智能领域中的应用。TensorFlow的起源与发展TensorFlow是由GoogleBra......
  • 测试开发 | PyTorch:深度学习的艺术之选
    深度学习框架是推动人工智能技术发展的关键工具,而PyTorch以其灵活的设计、直观的界面和强大的动态计算图而备受欢迎。本文将深入探讨PyTorch的起源、基本原理、关键特性以及在人工智能领域中的广泛应用。PyTorch的起源与发展PyTorch是由Facebook的人工智能研究团队开发的开源深度学......