持续学习+元学习+无监督学习文章调研(七)

  • LEARNING TO LEARN WITHOUT FORGETTING BY MAXIMIZING TRANSFER AND MINIMIZING INTERFERENCE
    • 持续学习中的迁移-干扰
    • 算法流程
      • RESERVOIR SAMPLING & ER
      • 元学习与Reptile
    • MER全流程
      • 算法及变体
      • 参数选择
    • 实验结果
  • Few-Shot Lifelong Learning, AAAI2021
    • 模型结构&任务定义&基础训练
    • 训练方法
      • 选择特征更新&&Triplet Loss
      • 减小任务间重合
      • 测试阶段
    • 实验结果

LEARNING TO LEARN WITHOUT FORGETTING BY MAXIMIZING TRANSFER AND MINIMIZING INTERFERENCE

这篇文章提出了MER++,一种基于元学习的经验回放算法(meta-experience replay),用来实现前向后向的迁移-干扰平衡。

对于持续学习的研究关注于系统在非iid分布数据上顺序学习多个任务的能力,传统的解决视角关注灾难性遗忘,从而导出了EWC等基于正则化的方法。除了灾难性遗忘外,稳定性-可塑性悖论(stability-plasticity delema)是一个更加复杂和全面的角度,在该场景下,模型不经需要保留旧的知识(stability),也需要快速学习新知识(plasticity),从而推导出了基于权重共享的一系列方法,它们旨在通过有限的权重共享实现快速学习。本文的一个重点在于不仅考虑到了前向情况下的trade-off,而且考虑到了模型反向时的情况,也就是说,在学习是不仅考虑到了当前学习对于过往经验的利用和干扰,也考虑了之后继续学习式的类似情况。和其它类似的工作相比,本文(为权重的共享)提供了更加坚实的理论分析,并且基于这些分析给出了天然的元学习的解决方案。

持续学习中的迁移-干扰

对于一个权重θ\thetaθ,损失函数LLL和两个样本(xi,yi)(x_i,y_i)(xi​,yi​)和(xj,yj)(x_j,y_j)(xj​,yj​),它们的梯度之间的迁移可以表达为∂L(xi,yi)∂θ⋅∂L(xi,yi)∂θ>0\frac{\partial{L(x_i,y_i)}}{\partial{\theta}}\cdot \frac{\partial{L(x_i,y_i)}}{\partial{\theta}}>0∂θ∂L(xi​,yi​)​⋅∂θ∂L(xi​,yi​)​>0,而干扰则相反表示为∂L(xi,yi)∂θ⋅∂L(xi,yi)∂θ<0\frac{\partial{L(x_i,y_i)}}{\partial{\theta}}\cdot \frac{\partial{L(x_i,y_i)}}{\partial{\theta}}<0∂θ∂L(xi​,yi​)​⋅∂θ∂L(xi​,yi​)​<0。

对于传统的平衡这二者的方法(比如梯度对齐)而言,其关注的重点在过去的任务,这就使得所有的方法都忽略了系统对于将来问题的学习潜力。

而如果从元学习的角度来观察上述问题,为了最大化迁移同时最小化干扰,我们就需要对∂L(xi,yi)∂θ⋅∂L(xi,yi)∂θ\frac{\partial{L(x_i,y_i)}}{\partial{\theta}}\cdot \frac{\partial{L(x_i,y_i)}}{\partial{\theta}}∂θ∂L(xi​,yi​)​⋅∂θ∂L(xi​,yi​)​最大化,也就是说对于数据集DDD,我们将学习的损失函数修改为:

然而在具体问题中,有几个问题需要解决:

  1. 损失函数中的样本i和j应该是随机采样的数据点,而在数据流中无法做到,对此本文采取了基于experienc replay的方法。
  2. 和很多元学习方法一样,该损失函数需要进行二阶求导,而本文在实际中采用一阶泰勒展开近似。

算法流程

RESERVOIR SAMPLING & ER

该方法由Vitter等在1985年提出,用于在不知道NNN的情况下(一个个样本到来时)在线从NNN个样本中采样MMM个样本的同时确保每个样本被采样的几率均等(简而言之,该方法被用于在每个样本来了之后不断更新Memory Buffer):

使用Buffer进行Experience Replay的方法如下(多头情况下的版本,手动进行不同任务之间的平衡,也可以单头,B里面一直视为一个task):

元学习与Reptile

Reptile元学习方法的优化目标在每一个inner_loop中取s步迭代时可以近似表示如下(见Reptile论文):

而在MER中,由于数据是顺序到来的,因此inner_loop无法通过事先采集好mini-batches来实现,因此内圈改为不断从M中采样。结合了Experience Replay的Reptile优化目标变成如下(详见论文附录I):

不过我感觉这里的两组各两个连加号可以合并,这样整个算法就是一个内圈mini_batches的每个batch又拆分成了batchsize为1的micro_batches,并且最后一个样本始终为当前样本的reptile,不过可能作者是想表示出Batch的概念吧。(这样的算法实际上就是下面的变体1)

MER全流程

算法及变体

整体的算法流程如下,可以看到更新过程和Reptile方法一致:

对于每一个要学习的样本,从Buffer中选择s个batch,每个batch包含k-1个样本,再将当前样本加入到每一个batch中,或者了s个数量为k的batch,对于每一个batch,再拆分成一个个单独的样本(视为batchsize为1的minibatch)进行更新(实际上就对应了reptile的内圈操作),更新完成之后计算和初始值的差距再加到初始值上(Reptile常规操作),然后再顺序对于其它batch进行(注意这里没有对不同batch的结果做平均而是顺序进行,个人认为做平均也可以,是Reptile的两种不同变体罢了)。

还可以推导出两个变体,一个是直接将内圈batch_size设置为1,这样也更符合上面推到的MER优化目标,

另外一个也类似只有一个大的batch,不过对于当前的样本学习率做了增强:

参数选择

从公式推导可以看出,sss越大的情况下,模型越侧重于减少干扰(第二项),因此作者发现增加batch的数量对于性能提升效果显著。(必要时甚至可以减少每个batch的大小至1)

实验结果

作者在监督学习和强化学习的数据上进行了实验,这里只展示监督学习。下表中RA表示训练完成后所有任务的准确性,LA表示任务刚刚学完的准确性,BTI(backward transfer and inference)为所有任务在最后经过了多少性能下降(或提升),可以看到等于前两者之差。所有数据在任务间取平均。

Online指的是简单等一个个样本地学,Independent为各个任务不同输出层,TaskInput为不同输入层。

同时作者还发现在不同的缓存大小下MER稳定超过另一个使用了缓存的方法GEM:

接下来作者提升了任务难度,数据量更少任务更多,本文选择了基于MNIST变换的Many Permutations数据集和Omniglot数据集。对于Online和EWC,作者还尝试了各种变体增强模型对于单个样本的学习能力,但最终也没有让RA超过5.5%。另外,GEM方法在buffer显著小于类数目式不收敛。

除此之外,为了验证作者关于迁移和干扰的猜想,作者在ER和MER的学习过程中记录了每个样本和随机选择的过去五个样本的梯度的点积,可以发现MER促进了知识的迁移:

Few-Shot Lifelong Learning, AAAI2021

本文结合实际学习场景,将few-shot learning和lifelong learning(这里用来表示持续学习)结合起来提出了自己的方法,具体而言包括两个方面:

  1. 对于每一个人物,只选择不重要的参数进行更新从而避免灾难性遗忘。
  2. 对于新任务和旧任务的特征最小化余弦相似度(通过损失函数),从而减少干扰。

模型没有使用任何存储样本进行回放,也不需要知道获得正在进行的任务的学习(class-incremental)。

模型结构&任务定义&基础训练

模型包括特征提取网络ΘF\Theta_FΘF​和分类网络ΘC\Theta_CΘC​。
任务被一个个数据集D(1),D(2)...D^{(1)},D^{(2)}...D(1),D(2)...定义,数据集彼此之间没有重叠,其中D(1)D^{(1)}D(1)代表了一个比较大的数据集用于基础训练。

作者直接采用Cross Entropy进行训练,并对各个类提取Prototype用于后续参考,方法为将每一个类的所有样本的特征进行平均。如下式所示:

对于之后的任务(或称Session)t>1,则要使用之前提到的两个思路进行训练,确保持续学习。

训练方法

选择特征更新&&Triplet Loss

对于每一个任务,作者认为激活幅度小的特征是不重要的特征,因此对于特征提取网络ΘF\Theta_FΘF​的每一层选择一个阈值,低于阈值的激活的神经元被用于训练,构成该任务的可训练参数PSTtP^t_{ST}PSTt​(Session Trainable Parameters),其数量为NptN_p^tNpt​,其余的则为知识保留参数PKRtP^t_{KR}PKRt​(Knowledge Retention Parameters)。(这里不确定激活的计算是用当前任务还是什么)

对于输入的任务,采用Triplet Loss函数进行训练,该函数可以最小化类内距离并最大化类间距。下式中yi=yjy_i=y_jyi​=yj​而yi≠yky_i\neq y_kyi​​=yk​。

另外,为了避免更新过大,作者还施加了一个L1正则化损失:

减小任务间重合

用之前同样的方式,还可以计算出当前任务所有分类的Prototype,作者将这些Prototype和之前任务的所有Prototype做余弦相似度计算并最小化之,从而减少任务之间的相互干扰:

其中NPrtN^t_{Pr}NPrt​代表了当前任务的分类数,NPrprevN^{prev}_{Pr}NPrprev​代表了之前所有的分类。

整体损失函数为上面三者结合:

测试阶段

对于当前任务的测试,直接按照之前的公式计算出所有分类的Prototype,然后对于新样本,通过最近邻匹配的方式分类即可。

实验结果

作者再CIFAR100,miniImageNet和CUB200数据集上做了实验。在训练阶段,对于前两者选择了60类的所有样本作为D(1)D^{(1)}D(1)(类似预训练或元训练的阶段),其余类则按照5-way-5shot的方式(也就是说只有一点点样本)形成了8个任务。对于CUB选择前100类预训练,后100类进行10-way-5-shot。测试阶段选择所有类的所有测试样本进行测试。结果如下图:

Joint-CNN表示对于所有类别的样本混合在一起训练,而Ft-CNN在第一个Session后就只finetune分类层。

超参数选择上,对于FSLL,每个Session作者选择10%的参数进行训练。FSLL*表示使用更好的优化器,FSLL-SS表示在Session1阶段增加一个预测旋转的自监督任务。

作者还对于可训练参数的比例,是否进行正则化,是否加入任务间cosine相似度损失,超参数选择等做了消融实验。

感觉作者的方法挺简单直接的,效果还挺好。但我觉得似乎主要是Triplet Loss的功劳,但是这不算创新所以作者没写也没做消融吧。

持续学习+元学习+无监督学习文章调研(七)相关推荐

  1. weka分类器怎么设置样本类别_NeurIPS 2020 | 港中文MMLab自步对比学习: 充分挖掘无监督学习样本...

    本文介绍一篇港中文MMLab发表于NeurIPS 2020的论文<Self-paced Contrastive Learning with Hybrid Memory for Domain Ad ...

  2. weka分类器怎么设置样本类别_自步对比学习: 充分挖掘无监督学习样本

    本文为香港中文大学MMLab实验室博士生葛艺潇投稿. 本文介绍一篇我们发表于NeurIPS-2020的论文<Self-paced Contrastive Learning with Hybrid ...

  3. weka分类器怎么设置样本类别_NeurIPS 2020 | 自步对比学习: 充分挖掘无监督学习样本...

    本文介绍一篇我们发表于NeurIPS-2020的论文<Self-paced Contrastive Learning with Hybrid Memory for Domain Adaptive ...

  4. 自步对比学习: 充分挖掘无监督学习样本

    本文为香港中文大学MMLab实验室博士生葛艺潇投稿. 本文介绍一篇我们发表于NeurIPS-2020的论文<Self-paced Contrastive Learning with Hybrid ...

  5. 基于深度强化学习的机器人运动控制研究进展 | 无模型强化学习 | 元学习

    1.基于深度强化学习的机器人运动控制研究进展 1.1 深度强化学习 1.1.1 强化学习简介: 强化学习(Reinforcement Learning, RL)利用试错机制与环境进行交互,旨在通过最大 ...

  6. 机器学习学习笔记之——无监督学习之降维、特征提取与流形学习

    降维.特征提取与流形学习 前面讨论过,利用无监督学习进行数据变换可能有很多种目的.最常见的目的就是可视化.压缩数据,以及寻找信息量更大的数据表示以用于进一步的处理. 为了实现这些目的,最简单也最常用的 ...

  7. 全图表征学习算法之无监督学习和基于卷积神经网络的监督学习

    https://www.toutiao.com/a6640000238176174600/ 2018-12-28 19:12:09 已有的全图表征学习算法包括无监督和有监督两类,其中有监督算法又可以分 ...

  8. 多类别不平衡分类-解决方案:概述【集成学习、数据重采样、深度学习(元学习)、异常检测】

     类别不平衡(又称长尾问题)是指在分类问题中,类别之间的表示质量/样本数量不平等. 类别不平衡在实践中广泛存在,例如金融欺诈检测.入侵检测.医疗辅助诊断等罕见模式识别任务. 类的不平衡往往会导致传统机 ...

  9. 小样本学习元学习经典论文整理||持续更新

      本文整理了近些年来有关小样本学习的经典文章,并附上了原文下载链接以及论文解读链接.关注公众号"深视",回复"小样本学习",可以打包下载全部文章.该文我会持续 ...

最新文章

  1. STM8L之外部中断
  2. Computer:成功解决安装软件时需要系统空间环境辅助程序(比如Microsoft Visual C++2010 x86 Redistributable安装失败)
  3. Method Area(方法区)
  4. 中国人自己的框架——蚂蚁金服RPC框架结构分析
  5. ml回归_ML中的分类和回归是什么?
  6. java python 运行 内存_Python C Java中字符串在内存中的存储
  7. 重新认识访问者模式:从实践到本质
  8. 格式化代码php,格式化php代码的两种方法
  9. 登陆获取cookie
  10. Xcode9.x变很卡
  11. 为什么 jsp 还没有淘汰?
  12. 你还在用HTTP吗?HTTP/3都来了。。。
  13. php模拟登录其他网站,PHP利用Curl模拟登录并获取数据例子
  14. 移远BC26使用总结
  15. STM32学习——矩阵键盘
  16. opencv读取海康威视摄像头
  17. 店宝宝:京东重新进军社区团购
  18. 告马云书 -- 谈阿里云OS 删除用户应用事件
  19. android 视频、图片混合轮播控件zbanner
  20. 斐波那契数列(经典兔子繁殖问题)

热门文章

  1. Python最佳学习路线图
  2. lol丢失base.dll文件怎么办?base.dll文件下载
  3. Java编程:Java里的协程
  4. JavaFX源码分析实战:如何设置窗体标题小图标和任务栏图标
  5. 树形DP(HDOJ1011 2196 4003 5148 POJ2342)
  6. 计算机管理 服务无响应,电脑任务栏假死点击没反应的解决方法(win7与xp)
  7. 数据分析与数据挖掘实战案例本地房价预测(716):
  8. c语言初学知识点,C语言学习关于数据类型的一些知识点(初学者)
  9. android各版本api区别,Android各个版本API的区别
  10. FFMPEG入门资料---001---介绍和参数说明