热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[论文阅读]PrototypeAugmentationandSelfSupervisionforIncrementalLearning

论文地址:https:openaccess.thecvf.comcontentCVPR2021htmlZhu_Prototype_Augmentation_and_S

论文地址:https://openaccess.thecvf.com/content/CVPR2021/html/Zhu_Prototype_Augmentation_and_Self-Supervision_for_Incremental_Learning_CVPR_2021_paper.html
代码:https://github.com/Impression2805/CVPR21_PASS
发表于:CVPR 21


Abstract

尽管深层神经网络在许多单个任务中的表现令人印象深刻,但在增量学习新任务时,深层神经网络会遭受灾难性的遗忘。最近,人们提出了各种增量学习方法,一些方法依靠存储数据或复杂的生成模型取得了可接受的性能。然而,存储以前任务的数据受到内存或隐私问题的限制,而生成模型在训练中通常是不稳定和低效的。在本文中,我们提出了一个简单的基于非示范的方法,名为PASS,以解决增量学习中的灾难性遗忘问题。一方面,我们提出为每个旧类记忆一个代表类的原型,并在深度特征空间中采用原型增强(protoAug)来保持以前任务的决策边界。另一方面,我们采用自监督学习(SSL)来为其他任务学习更多的通用和可转移的特征,这表明SSL在增量学习中的有效性。在基准数据集上的实验结果表明,我们的方法明显优于基于非示范的方法,并且与基于示范的方法相比取得了相当的性能。


I. Motivation

在这里插入图片描述
本文的方法包含两个部分:Prototype Augmentation与Self-Supervision。对于PA,其解决的是决策边界在训练新任务后发生漂移,从而导致灾难性遗忘的问题,属于比较经典的motivation,没有什么好说的;而这里的自监督SS就比较有意思了,文中指出对于旧任务最优的参数可能对于新任务而言是一种糟糕的参数初始化,因此使用自监督学习来学习更具有可转移性的特征,这样既能使新任务的特征更容易被学习,同时也能尽可能去保证旧任务的特征不被破坏。


II. Method

在这里插入图片描述
图中的左右两部分分别展示了SS与PA的步骤。对于自监督,具体做法是对输入新类样本进行旋转,从而制造"伪"新类,通过让分类头尝试去区分新类与伪新类从而达到更自然特征过渡的目的;对于原型扩充,其实就是给原型向量添加高斯噪声。


III. Prototype Augmentation

本文没有显式的去存储旧类的原始图像,所以可以认为是一种无示范的方法。不过,对于现在大多数的无示范方法,虽然没有去存储旧类样本本身,取而代之的值存储旧类的原型向量(即该类所有样本的特征平均)。而对该原型向量的扩充方式也很简单,就是加个高斯噪声:Ftold,kold=μtold,kold+e∗rF_{t_{o l d}, k_{o l d}}=\mu_{t_{o l d}, k_{o l d}}+e * r Ftold,kold=μtold,kold+er


IV. SSL based Label Augmentation

本文的自监督思想主要来源于此文[1]。具体做法是,对于KKK个新类的所有任务样本,对其进行数据扩充,也就是旋转90,180,270度:Xt′=rotate⁡(Xt,θ),θ∈{90,180,270}\mathbf{X}_{t}^{\prime}=\operatorname{rotate}\left(\mathbf{X}_{t}, \theta\right), \theta \in\{90,180,270\}Xt=rotate(Xt,θ),θ{90,180,270} 。按照我们以往的认知,将一个样本旋转后,其类别是保持不变的。但是这里将经过三种不同旋转方式处理后的样本视为了三种"新类",并赋予相应的新类标签Yt′\mathbf{Y}_{t}^{\prime}Yt(而非Yt\mathbf{Y}_{t}Yt)。文中指出这一做法可以放松学习过程中的不变约束,从而提升任务的性能。这种解释相当于也是加入自监督提升性能的"套路"。


推荐阅读
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了 BERT 模型中 Transformer 的 Attention 机制,包括其原理、实现代码以及在自然语言处理中的应用。通过结合多个权威资源,帮助读者全面理解这一关键技术。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文深入探讨了二叉搜索树(Binary Search Tree, BST)及其操作,包括查找、插入和删除节点。同时,文章还介绍了平衡二叉树(AVL树)的概念及调整方法,并详细讨论了如何判断两个序列是否构成相同的二叉搜索树。 ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
author-avatar
渴死的鱼2502872325
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有