链接:http://arxiv.org/abs/2010.02500

简介

实现lifelong learning的最大问题便是catastrophic forgetting(机器会把之前的知识忘了)。如何对抗catastrophic forgetting?目前的主流方法有三种:

  1. 正则化:学习新的任务时候,我们让参数不要变化太大(不然就没法做之前的任务了)。
  2. 复述REPLAY:学完一个任务后,存储一些样例,以便之后学新任务的时候使用。
  3. 架构Architectural:为每个任务向现有的基本模型添加特定于任务的参数。当然,也有容量固定的做法,但主要在CV领域使用,一般不好做nlp终身学习。

本文采取了第二种方法。
在本文(2020)年之前,Replay在nlp的应用集中在文本分类和QA,但有三个缺点:

  1. 要存的太多:我们需要一个超大的内存模块,即存储所有训练示例,以实现最佳性能。
  2. 还是会倒退:虽然该模型可以减轻灾难性遗忘,但其局部适应步骤容易产生负迁移,以至于在最近的任务中表现不如没有任何终身学习规则化的朴素基线。
  3. 太慢:它的推理速度非常慢,因为每个测试示例都需要大量的局部自适应步骤。

对此,本文的主要贡献有3点:

  1. 我们确定了终身学习方法的三个基本原则。我们试图在语言学习中描述它们的特点,并收集现有方法中被忽视的缺点的见解。
  2. 基于这一分析,我们提出了一个统一这三个原则的meta-lifelong框架。我们的方法是d 'Autume等人(2019)的直接扩展,它明确地将元学习模型作为局部适应的更好初始化。
  3. 我们进行了大量的实验,以证明我们提出的方法可以利用上述三个原则来实现高效的终身语言学习。我们发现,我们的框架比以前的方法性能更好,同时使用的内存减少了100倍。实验结果表明,该方法能够有效地缓解灾难性遗忘和负迁移,缩小了与多任务学习上限的性能差距。它还可能获得22倍的推理速度。

终身学习的三个基本原则

首先,我们明确一下终身学习的任务形式:
模型按顺序学习Dtrain={D1train,D2train,...,Dntrain}D^{train}=\{ D^{train}_{1},D^{train}_{2},...,D^{train}_{n} \}Dtrain={D1train,D2train,...,Dntrain}共n个任务。
每个任务Dttrain={(xti,yti)}i=1ntD^{train}_{t}=\{ (x^i_t,y^i_t)\}^{n_t}_{i=1}Dttrain={(xti,yti)}i=1nt
目标是学一个网络:fθ:X→Yf_θ:X \rightarrow Yfθ:XY,最小化:

1.Generic Representation通用表征

就像迁移学习一样,跨不同任务传递知识的一个关键思想是学习一种通用表征(如encoder),它能够为所有任务编码有用的信息。
例如,基于正则化的终身学习方法对Loss Function增加了额外的约束,让模型参数θ不要变化那么大。
在语言领域,由于语言模型已经成功地为许多语言理解任务生成高度通用的表示,d 'Autume等人(2019)和Sun等人(2020)都提出使用预训练的语言模型初始化参数,并在DtrainD^{train}Dtrain上进一步训练模型。

2.Experience Rehearsal经历再现

学完一个任务后,存储一些样例,以便之后学新任务的时候使用。

3.Task-specific Finetuning任务特定的微调

在多任务学习中,加入任务特定的参数并对单个任务进行微调已被证明对不同的语言理解任务,甚至多种语言都是有效的。
早期工作将这一想法运用到终身学习中,即:在学习每个新任务时,适当增加一些模型参数。
然而,所有这些方法都需要一个任务描述符,以便知道何时添加新的参数。当不存在这种信号时,局部自适应在推理阶段,使用每个测试样例的K个存储的最近邻进行额外微调。
近期一些工作(d ’ autumn等人,2019;Khandelwal等人,2020)的研究表明,通过预处理模型生成的句子embedding可以有效地测量query的相似度,而局部适应可以提高文本分类、QA和语言建模的性能。

框架

在展示框架之前,我们首先回顾一下当时最先进的方法:改进过的MbPA (Model-based Parameter Adaptation)。并展示了这些原则如何帮助我们识别局限性。

Model-based Parameter Adaptation

MbPA的核心方法是用情节记忆episodic memory模块来进行复述。
改进过的MbPA(MbPA++)包含3大部分:

  1. 一个预测网络 fθf_θfθ
  2. 一个key网络 gΦg_ΦgΦ
  3. 一个记忆模块 MMM

为了学习通用表征,MbPA++使用BERT来初始化fθf_θfθgΦg_ΦgΦ。每一步,模型通过训练数据(xti,yti)∈Dtrain(x^i_t,y^i_t)∈D^{train}(xti,yti)Dtrain来优化损失函数:

为了确定是否要将训练样例添加到内存模块MMM中,我们用预先设定的概率绘制一个伯努利随机变量来控制内存大小。
为了对抗catastrophic forgetting,在MMM中选一个子集SSS(每ntrn_{tr}ntr个样本中选nren_{re}nre个),从而设定replay损失:

在推理阶段,使用key网络gΦg_ΦgΦ(训练时是固定的)将输入数据编码为key,得到第iii个数据xix_ixiKKK个最近邻上下文NxiN_{xi}Nxi。然后执行局部自适应梯度更新,实现针对特定任务的微调,实现以下目标:

尽管它很有效,但mbpa++的性能提高是以大内存存储和慢推理速度为代价的。这种低效的根源在于它不够协同一致——这三个原则是独立执行的,没有密切的相互作用。特别是:

  1. 学习到的通用表征没有对局部适应进行优化,因此需要更多的步骤来实现鲁棒性能;
  2. 内存模块是随机选择的,缺乏有效减小内存大小的系统选择方法;
  3. 局部适应在每个测试例中只使用少数邻域,因此在内存较小的情况下容易出现过拟合和负迁移。

Synergistic Meta-lifelong Framework

我们注意到在mbpa++中培训和测试之间存在着差异。
具体来说,通用表征直接对Eq.(2)中的任务损失进行训练,在测试时经过局部适应后进行预测。

因此,模型总是对它所看到的最新任务过拟合,而且它永远不会学习如何有效地经历再现。
然而,根据CLS理论,人类学习系统在本质上是互补的——我们学习结构化知识的方式,也能使我们快速适应情景性信息。
因此,为了解决MbPA++的训练测试差异,我们将通用表征的训练目标从如何更好地执行当前任务,改为如何有效地适应情景记忆。

因此,我们利用meta learning范式交叉三个关键原则,提出了MbPA++的扩展:

  1. 为了解决训练和测试的差距,我们的框架学习了一个为局部适应定制的通用表征。
  2. 为了实现稳健的局部适应,内存模块使用基于多样性的选择标准来减少内存大小。
  3. 适应小内存,该框架利用粗糙的局部适应来缓解负迁移。

下图中概述了完整的框架,之后我们将详细介绍细节。

算法流程:

通用表征

我们将局部适应融入到通用表征的训练中。
简单来说,我们利用元学习的思想,将局部适应作为基本任务,通用表征作为元任务。即:通用表征经过训练,使其在局部适应后表现良好(又称学习适应)。
因此,对于每个训练示例(xti,yti)∈Dtrain(x^i_t,y^i_t)∈D^{train}(xti,yti)Dtrain,我们将Eq.(2)中的任务损失定义为元任务损失:

其中ααα为当前学习速率。
注意,微分需要计算梯度的梯度,这可以通过现代自动微分框架实现。
直观上,我们先用梯度步逼近局部适应,然后对适应后的网络进行优化。

经历再现

基于与元任务丢失相似的原理,我们将式(3)中的记忆replay损失重构为meta-replay损失:

目的是促进所有任务的有效局部适应。

我们使用与MbPA++相同的replay率。
此外,我们提出了一种基于多样性的选择准则,来确定是否应该在内存模块中加入训练样例(xti,yti)∈Dtrain(x^i_t, y^i_t)∈D^{train}(xti,yti)Dtrain
在这里,我们利用关键网络gφg_φgφ通过xtix^i_txti到现有内存的最小距离来估计多样性:

其中p(xti)p(x^i_t)p(xti)是样本xxx被选中的概率,β是缩放参数。
一种直觉的做法是:选择与现有内存不太相似的样例,从而覆盖数据分布的不同部分。
如后文所示,该方法优于基于不确定性的选择规则(Ramalho和Garnelo, 2019):利用预测网络fθf_θfθ的确定性水平来选择示例。
这是因为当内存MMM不能真实反映数据分布时,局部适应容易产生负迁移。

任务特定的微调

在内存较小的情况下,每个测试样例的局部适应容易产生负迁移。
这是因为关联较小的内存样本更有可能被包含在NxiN_{xi}Nxi中,模型很容易过拟合。
因此,我们考虑更粗粒度的局部适应。例如,我们可以对测试示例进行聚类,并对每个聚类独立进行局部适应。经过试验,本文发现将这就足够了。
我们将所有测试样例视为单个集群。因此,我们将整个内存视为邻居,并从它中随机取样。
和原来的局部适应相比较(相同的batch大小和梯度步骤),这样做有两个好处:(1)对负迁移更鲁棒,(2)更快。

【Lifelong learning】Efficient Meta Lifelong-Learning with Limited Memory相关推荐

  1. 【论文笔记】PassGAN: A Deep Learning Approach for Password Guessing

    title: "[论文笔记]PassGAN: A Deep Learning Approach for Password Guessing" date: 2019-10-12 la ...

  2. 【论文阅读】Rethinking Spatiotemporal Feature Learning For Video Understanding

    [论文阅读]Rethinking Spatiotemporal Feature Learning For Video Understanding 这是一篇google的论文,它和之前介绍的一篇face ...

  3. 【论文阅读】Decision Transformer: Reinforcement Learning via Sequence Modeling

    [论文阅读]Decision Transformer: Reinforcement Learning via Sequence Modeling 1 本文解决了什么问题? 本文将强化学习抽象为一个序列 ...

  4. 【领域泛化】论文介绍《Learning to balance specificity and invariance for in and out of domain generalization》

    [领域泛化]论文介绍<Learning to balance specificity and invariance for in and out of domain generalization ...

  5. 【论文整理】小样本学习Few-shot learning论文整理收藏(最全,持续更新)

    一.综述类 1. Generalizing from a Few Examples: A Survey on Few-Shot Learning 2. Generalizing from a few ...

  6. 【论文阅读】Gait Lateral Network: Learning Discriminative and Compact Representations for Gait Recognition

    Gait Lateral Network: Learning Discriminative and Compact Representations for Gait Recognition 摘要: I ...

  7. 【论文阅读】 Privacy-Preserving Byzantine-Robust Federated Learning via Blockchain Systems

    这是发表在2022 IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY(TIFS)上的一篇文章 目录 abstract 主要贡献 II. R ...

  8. 【论文导读】DAG-GNN: DAG Structure Learning with GNN

    这也是那篇pianzi的introduction的reference 讲了NOTEARS[也就是文中反复提及的Zheng等人的论文,数学上很basic,如果有时间可以写一下]的一个变种,听起来挺厉害的 ...

  9. 【论文阅读】Parametrized Deep Q-Networks Learning: RL with Discrete-Continuous Hybrid Action Space

    [论文阅读-深度强化学习打王者荣耀]Parametrized Deep Q-Networks Learning: Reinforcement Learning with Discrete-Contin ...

最新文章

  1. SpringMVC:后台将List转为Json,传值到页面
  2. php mysql 权重_PHP对MySql的常用操作
  3. 迷茫的时候看看乔布斯是怎么做的
  4. 20211202:力扣第268周周赛(下)
  5. 一个项目部署多个节点会导致锁失效么_不为人知的分布式锁实现,全都在这里了
  6. linux命令last格式,Linux last和lastlog命令:查看过去登陆的用户信息
  7. matlab2014 下的 libsvm 安装
  8. matlab-排队模型和排队系统仿真
  9. 广州北大青鸟软件工程师班课程简介
  10. 【Docker】MySQL 主从配置(一主一从)
  11. 计算机关机界面设置在哪里,如何修改电脑关机图片_win7电脑关机背景怎么设置图文教程...
  12. android应用开发报告,android移动应用开发-报告书.doc
  13. 请说明Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?
  14. android 浏览器弹窗提示,安卓手机浏览器打开网页弹出安全警告的原因及解决方法...
  15. MySQL数据库面试题(超详细)
  16. Client can't access Jboss server, the port is not accessable.
  17. python生成的word表格设置内容居中
  18. BZOJ4585: [Apio2016]烟火表演
  19. java-模拟自动挡汽车
  20. jQuery随笔20190711~0713(选择器、事件、效果)

热门文章

  1. POI word合并 设置页眉页脚的处理方案
  2. 2023好玩的解压游戏,压力大点开玩可以放松自己
  3. 帝国没有php.ini,帝国cms上传文件大小的限制php.ini设置方法
  4. 第二期招银FinTech精英训练营夺冠之旅
  5. 计算机闭环控制系统原理,闭环伺服控制原理与系统
  6. 实战:Android 时间、天气widget
  7. 工业数据分析技术与实战之数据分析的误区——昆仑数据田春华培训听课记录
  8. 一步一步学Linq to sql:增删改
  9. App内测分发怎么做?蒲公英内测托管平台教程
  10. Arch KDE Plasma 显示和字体调整