【博士每天一篇文献-算法】Learning without forgetting

阅读时间:2023-10-29

1 介绍

年份:2016
作者:李志忠; 德里克·霍伊姆,伊利诺伊大学
期刊:IEEE transactions on pattern analysis and machine intelligence
引用量:3353
提出一种名为"无忘记学习"的算法,用于在卷积神经网络(Convolutional Neural Network, CNN)中添加新的视觉能力,同时保留原有的能力,而无需使用旧的训练数据。这种算法只使用新任务的数据来训练网络,同时保持原有的能力。相比于常用的特征提取和微调适应技术,以及可能无法获取的原始任务数据的多任务学习,这种方法表现出色。该方法在计算效率上高效,不需要保留或重新应用训练数据,并且在部署上非常简单。通过更多实验证明了作者之前工作的可行性,并与其他方法进行了比较。该论文与诸如蒸馏网络、微调、多任务学习、领域适应、迁移学习、终身学习和不断学习等方法相关。该论文的方法提供了一种更直接的方式来保留对于原有任务重要的表示,相对于微调,它在大多数实验中提高了原有任务和新任务的性能。
类似算法,iead来源: Active long term memory networks
本文主要区别在于用于训练的权重衰减正则化和在完全微调之前使用的预热步骤。
本文使用大型数据集来训练我们的初始网络(例如ImageNet),然后从较小的数据集(例如PASCAL VOC)扩展到新任务。而A-LTM则使用小型数据集进行旧任务和大型数据集进行新任务。相比之下,LWF的实验表明,在没有原始任务数据的情况下,可以保持旧任务的良好性能,同时在新任务上表现得与或者有时比微调更好。

2 创新点

无遗忘学习方法LWF可以看作是反馈网络【 Distilling the knowledge in a neural network 】和微调【 Rich feature hierarchies for accurate object detection and semantic segmentation 】的结合。
微调从在相关数据丰富问题上训练的现有网络的参数初始化,并通过使用较低的学习率为新任务优化参数,找到新的局部最优点。反馈网络的思想是通过学习较简单的网络参数,使其在训练集或大型无标签数据集上产生与一个更复杂的网络集合相同的输出。LWF的方法不同之处在于,LWF使用相同数据来监督学习新任务并为旧任务提供无监督输出引导来解决适用于新旧任务的一组参数。

3 算法

(1)对比的方法
在这里插入图片描述

  • 特征提取: 这种方法使用预训练的深度卷积神经网络(CNN)从图像中提取特征。这些特征然后用于训练新任务的分类器。虽然这种方法不修改原始网络并且可以取得良好的结果,但提取的特征可能不专门用于新任务,并且可能需要进行微调。
  • 微调: 这种方法修改现有CNN的参数以训练新任务。输出层通过随机初始化权重进行扩展,并使用较小的学习率来最小化新任务的损失。有时,网络的某些层被冻结以防止过拟合。微调是使共享参数更具有辨别性的方法。这种方法通常优于特征提取。
  • 多任务学习: 这种方法旨在通过结合所有任务的共同知识来同时改进所有任务。网络的底层是共享的,而顶层是针对特定任务的。多任务学习需要所有任务的数据都存在。
  • 添加新节点到每个网络层: 这种方法在网络的每个层中添加新节点来学习新的辨别特征,同时保留原始网络参数。这可以扩展网络中的参数数量,如果没有足够的训练数据来学习新的参数,则可能表现不佳,因为这种方法需要从头开始训练大量参数。作者尝试扩展原始网络的全连接层,但发现这种扩展在LWF的方法上没有提供改进。

(2)相关的研究
知识蒸馏的方法,其中知识是从一个大型网络或网络组件传递给一个较小的网络,以实现高效部署。

  • A-LTM【Active long term memory networks】是在独立开发的基础上几乎相同的方法,但在实验和结论方面有很大的差异。方法的主要差异在于训练中使用的权重衰减正则化和在完全微调之前使用的预热步骤。本文作者使用大型数据集来训练初始网络(例如ImageNet),然后从较小的数据集(例如PASCAL VOC)扩展到新任务,而A-LTM使用小型数据集用于旧任务和大型数据集用于新任务。A-LTM中的实验发现了比LWF有更大的微调损失,并得出结论认为维护原始任务的数据对于维持性能是必要的。相比之下,实验证明LWF可以在不访问原始任务数据的情况下保持旧任务的良好性能,并在新任务中表现得和甚至更好。作者分析主要的区别在于旧任务-新任务配对的选择,并且观察到由于选择的差异(部分原因是预热步骤)导致的微调对旧任务性能的下降较小。作者认为从训练有素的网络开始并使用较少的训练数据添加任务的实验从实用角度更具有有效性。
  • Less Forgetting Learning【Less-forgetting learning in deep neural networks】也是一种类似的方法,通过阻止共享表示发生变化来保持旧任务的性能。该方法认为任务特定的决策边界不应改变,并保持旧任务的最后一层不变,LWF的方法则通过限制旧任务的输出变化来同时优化共享表示和最终层。LWF在新任务上表现优于Less Forgetting Learning。

(3)算法步骤
首先对于一个新任务来说,我们模型已经有了在之前任务训练的出来的共享参数 θ s \theta_s θs和旧任务参数 θ n \theta_n θn
,对于当前新到来的任务我们有了 X n X_n Xn Y n Y_n Yn
初始化:
首先是根据新任务数据拟合出来一个旧任务标签
Y o = C N N ( X n , θ s , θ o ) Y_o = CNN(X_n,\theta_s,\theta_o) Yo=CNN(Xn,θs,θo)
随机初始化: θ n \theta_n θn
训练:
旧任务预测出的结果:
Y o ′ = C N N ( X n , θ s ′ , θ o ′ ) Y_o'=CNN(X_n,\theta_s',\theta_o') Yo=CNN(Xn,θs,θo)
新任务预测结果:
Y n ′ = C N N ( X n , θ s ′ , θ n ′ ) Y_n'=CNN(X_n,\theta_s',\theta_n') Yn=CNN(Xn,θs,θn)
最后定义损失函数即可:
L o s s = λ 0 L o l d ( Y o , Y o ′ ) + L n e w ( Y n , Y n ′ ) + R ( θ s , θ o , θ n ) Loss = \lambda_0L_{old}(Y_o,Y_o')+L_{new}(Y_n,Y_n')+R(\theta_s,\theta_o,\theta_n) Loss=λ0Lold(Yo,Yo)+Lnew(Yn,Yn)+R(θs,θo,θn)
其中对于旧任务预测 L o l d L_{old} Lold,作者使用了蒸馏的交叉熵损失函数的方式,即
L o l d ( Y o , Y o ′ ) = − ∑ i = 1 l y o ′ ( i ) l o g y o ′ ( i ) L_{old}(Y_o,Y_o') = -\sum_{i=1}^{l}y_o'^{(i)}logy_o'^{(i)} Lold(Yo,Yo)=i=1lyo(i)logyo(i)
y o ′ ( i ) = ( y o ′ ( i ) ) 1 / T ∑ j ( y o ′ ( i ) ) 1 / T y_o'^{(i)} = \frac{({y_o'^{(i)})}^{1/T}}{\sum_j({y_o'^{(i)})}^{1/T}} yo(i)=j(yo(i))1/T(yo(i))1/T
对于新任务 L n e w L_{new} Lnew,采用交叉熵损失函数
L n e w = − y n l o g y n ^ L_{new} = -y_n log{\hat{y_n}} Lnew=ynlogyn^
使用带有正则化的 SGD 训练网络
1) 首先固定 θ s \theta_s θs θ o \theta_o θo不变,然后使用新任务数据集训练 θ n \theta_n θn 直至收敛;
2) 然后再联合训练所有参数 θ s \theta_s θs θ o \theta_o θo θ n \theta_n θn 直至网络收敛。

4 实验分析

(1)实验设计
原始旧任务数据集:ImageNet [4]的ILSVRC 2012子集和Places365-standard [30]数据集
新任务大规模数据集:PASCAL VOC 2012图像分类[31](VOC)、Caltech-UCSD Birds-200-2011细粒度分类[32](CUB)和MIT室内场景分类[33](Scenes)、MNIST [34]
ImageNet [4]的ILSVRC 2012子集和Places365-standard [30]数据集、
权重:使用开放的ImageNet和Places365-standard上预训练的原始网络模型
(2)分析角度

  • 添加单个新任务到网络中的效果研究
  • 逐一添加多个任务的效果研究
  • 考察数据集大小对结果的影响
  • 考察网络设计对结果的影响
  • 进行消融研究:探究不同的保留响应损失函数、扩展网络结构以及使用较低学习率进行微调等方法对保持原有任务性能的有效性

5 代码

https://github.com/ngailapdi/LWF/blob/master/model.py

6 思考

LwF可以看作是蒸馏网络和微调的结合。LwF的整个训练过程和联合训练(Joint Training)有点类似,但不同的是LwF 不需要旧任务的数据和标签,而是用KD蒸馏损失去平衡旧任务的性能,完成了不需要访问任何旧任务数据的增量训练。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/145948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在Qt设计师(Qt Designer )控件面板加入自定义控件

目录 1. 问题的提出 2. 本次开发环境说明 3. 具体实现 4. 注意的问题 5. 参考链接 1. 问题的提出 在Qt开发中,经常利用Qt设计师(Qt Designer )把界面设计好,将界面放到ui文件中,将逻辑处理放到cpp文件中&#xff…

Docker - 网络

Docker - 网络 理解Docker0 # 我们发现这个容器带来网卡,都是一对对的 # evth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一段连着协议,一段彼此相连 # 正因为有了这个特性,evth-pair 充当一个桥梁&#xff0…

图片高清重建

图像超分辨率重建(super resolution,SR)是指利用计算机将一幅低分辨率图像(low resolution,LR)或图像序列进行处理,恢复出高分辨率图像(high resolution,HR)的一种图像处理技术。简单…

腾讯云4核8G服务器CVM标准型S5实例租用五年价格表

腾讯云服务器网整理五年云服务器活动 txyfwq.com/go/txy 配置可选2核4G和4核8G,公网带宽可选1M、3M或5M,系统盘为50G高性能云硬盘,标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器,睿频…

【C#学习】button:只显示图片

第一步:设置按钮背景图片,并且图片随按钮大小变化 第二步:设置按钮使之只显示图片 button1.FlatStyle FlatStyle.Flat;//stylebutton1.ForeColor Color.Transparent;//前景button1.BackColor Color.Transparent;//去背景button1.FlatAppe…

修改Openwrt软路由的web端口

如何修改openwrt路由器的web访问端口号? 在OpenWrt路由器上,如何修改Web访问端口号,通常涉及到修改HTTP服务器的配置文件。默认情况下,OpenWrt使用的HTTP服务器是uHTTPd。 以下是修改Web访问端口号的步骤: 一、通过…

Meta开源支持1000多种语言的文本转语音与语音识别大语言模型

据不完全统计,地球上有超过7000多种语言,而现在的大语言模型仅仅只涉及到了主流的100多种语言。相对全球7000多种语言来讲,这仅仅只是其中的一小部分。如何让全球的人获益,把大语言模型扩展到更多的语言上,一直是大语言模型研究的重点。Meta发布了涵盖 1406 种语言的预训练…

一篇文章教会你什么是C++异常

一篇文章教会你什么是C异常 C语言传统的处理错误的方式断言检查返回值检查全局错误码设置全局错误处理函数 C异常概念基本概念注意事项 异常的使用异常的抛出和捕获异常的重新捕获异常安全异常规范 自定义异常体系C标准库的异常体系1. std::exception2. std::bad_alloc3. std::…

【算法每日一练]-图论(保姆级教程 篇1(模板篇)) #floyed算法 #dijkstra算法 #spfa算法

今天开始讲图论 目录 图的存储 算任意两点的最短路径: floyed算法: 算一个点到其他所有点的最短距离 dijkstra算法: spfa算法: 图的存储 其实:邻接矩阵和链式向前星都能存边的信息,vector只能存点的信息,再搭配上v[]…

2023年【汽车驾驶员(中级)】考试题库及汽车驾驶员(中级)模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 汽车驾驶员(中级)考试题库根据新汽车驾驶员(中级)考试大纲要求,安全生产模拟考试一点通将汽车驾驶员(中级)模拟考试试题进行汇编&…

产品运营的场景和运营策略

一、启动屏 1.概念 启动屏,特指 APP 产品启动时即显示的界面,这个界面一般会停留几秒钟时间,在这个时间内 APP 会在后台加载服务框架、启动各种服务 SDK 、获取用户地理位置、判断有无新版本、判断用户账户状态以及其他系统级别的…

QGIS之十九矢量投影

效果 步骤 1、准备数据 2、Qgis矢量投影 Qgis工具箱中搜索“投影” 3、结果

鸿蒙HarmonyOS从零实现类微信app效果第一篇,基础界面搭建

最近鸿蒙HarmonyOS开发相关的消息非常的火,传言华为系手机后续将不再支持原生Android应用,所以对于原Android应用开发对应的Harmony版本也被一系列大厂提上了日程。作为一个名义上的移动端开发工程师((⊙o⊙)…,最近写python多过A…

【计算机网络】VLAN原理和配置

目录 1、VLAN的原理 1.1、什么是VLAN 1.2、为什么要使用VLAN 1.3、VLAN的三种端口类型 1.4、VLAN的划分方法 2、VLAN的配置 1、VLAN的原理 1.1、什么是VLAN VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上…

十年软件测试老程序告诉你性能测试的左移右移到底能干嘛

常规的性能测试一般都是在测试阶段集成测试时候才开始介入,很容易测试时间不够,可不可以借鉴测试左移右移的思路,更早的介入和发现性能风险,然后在测试阶段更专注于分析优化? 借着这个问题,结合自己的实践…

Maven依赖管理项目构建工具的安装与配置

本篇来自尚硅谷的笔记,在线视频观看:Maven依赖管理项目构建工具,更多笔记欢迎访问:小熊学Java 一、Maven简介 1、为什么学习Maven 1.1、Maven是一个依赖管理工具 ①jar 包的规模 随着我们使用越来越多的框架,或者框…

linux DMA设备驱动详解

一,DMA相关定义(fpga、wait_queue 、device、interrupt、 dma_request_channel 函数、dma_start_transfer函数、poll、read,platform总线) DMA (直接内存读写)是Direct Memory Access的缩写,也就是内存到内存&#xf…

k8s自定义Endpoint实现内部pod访问外部应用

自定义endpoint实现内部pod访问外部应用 endpoint除了可以暴露pod的IP和端口还可以代理到外部的ip和端口 使用场景 公司业务还还没有完成上云, 一部分云原生的,一部分是实体的 业务上云期间逐步实现上云,保证各个模块之间的解耦性 比如使…

使用GPT-4训练数据微调GPT-3.5 RAG管道

原文:使用GPT-4训练数据微调GPT-3.5 RAG管道 - 知乎 OpenAI在2023年8月22日宣布,现在可以对GPT-3.5 Turbo进行微调了。也就是说,我们可以自定义自己的模型了。然后LlamaIndex就发布了0.8.7版本,集成了微调OpenAI gpt-3.5 turbo的…

敏捷开发中如何写好用户故事

写好用户故事是敏捷开发中非常重要的一环,它们是描述用户需求的核心。以下是一些关于如何编写优秀用户故事的建议: 使用标准模板: 一个常用的用户故事模板是“As a [用户角色],I want [功能],so that [价值]”。这种模…