【博士每天一篇文献-算法】Progressive Neural Networks

news2024/11/25 6:53:59

阅读时间:2023-12-12

1 介绍

年份:2016
作者:Andrei A. Rusu,Neil Rabinowitz,Guillaume Desjardins,DeepMind 研究科学家,也都是EWC(Overcoming catastrophic forgetting in neural networks)算法的共同作者。
期刊: 未录用,发表于arXiv
引用量:2791
代码:https://github.com/TomVeniat/ProgressiveNeuralNetworks.pytorch
Rusu A A, Rabinowitz N C, Desjardins G, et al. Progressive neural networks[J]. arXiv preprint arXiv:1606.04671, 2016.
提出了一种深度强化学习架构——渐进式网络(progressive networks),它通过保留一系列预训练模型并在训练过程中学习这些模型之间的侧向连接(lateral connections),从而实现跨任务的知识迁移。既能利用迁移学习的优势,又能避免灾难性遗忘的问题。在Atari游戏和3D迷宫游戏上进行了强化学习评估实验,通过平均扰动敏感性(Average Perturbation Sensitivity, APS)和平均Fisher敏感性(Average Fisher Sensitivity, AFS)两种方法,分析了在不同层次上迁移发生的情况。

2 创新点

提出了一种新的神经网络架构——渐进式网络(progressive networks),它通过保留一系列预训练模型并在训练过程中学习这些模型之间的侧向连接(lateral connections),从而实现跨任务的知识迁移。
在多种强化学习任务(包括Atari游戏和3D迷宫游戏)上广泛评估了这种架构,并展示了它在性能上超越了基于预训练和微调(pretraining and finetuning)的常见基线方法。
开发了一种基于Fisher信息和扰动分析的新颖分析方法,能够详细分析跨任务迁移在哪些特征和哪些层次上发生。

3 相关研究

灵感启发来源:Terekhov A V, Montone G, O’Regan J K. Knowledge transfer in deep block-modular neural networks[C]//Biomimetic and Biohybrid Systems: 4th International Conference, Living Machines 2015, Barcelona, Spain, July 28-31, 2015, Proceedings 4. Springer International Publishing, 2015: 268-279.【模块化网络,引用量82】

4 算法

image.png

  1. 模型初始化:渐进式网络从一个单列的深度神经网络开始,该网络经过训练直到收敛。这第一列网络包含了多个层次,每层有特定的隐藏单元和参数。
  2. 任务切换:当引入新任务时,先前任务的网络参数被“冻结”,即不再更新。然后,为新任务实例化一个具有新参数的新列网络,这些参数是随机初始化的。
  3. 侧向连接:新任务的网络列通过侧向连接接收来自之前所有列的输入。这些连接允许新任务利用先前任务学习到的特征。
  4. 网络架构:每个新任务的网络列都包含一个前馈的深度神经网络,其中每层都接收来自前一层以及所有先前列的侧向输入。
  5. 非线性激活:在所有中间层使用ReLU激活函数(( f(x) = \max(0, x) ))。
  6. 适配器(Adapters):为了改善初始条件和执行降维,在侧向连接中引入了非线性适配器。适配器通常是一个单隐藏层的多层感知器(MLP),用于调整不同输入的尺度并执行投影。
  7. 参数更新:在训练新任务时,只有新列的参数会被更新,而先前列的参数保持不变,从而避免了灾难性遗忘。
  8. 多任务学习:渐进式网络的目标是在训练结束时能够独立解决所有任务,并通过迁移学习加速新任务的学习。
  9. 容量管理:随着任务数量的增加,网络的参数数量也会增加。论文提出可以通过修剪或在线压缩等方法来控制参数的增长。
  10. 实验评估:论文通过在强化学习领域的实验来评估渐进式网络的性能,包括在Atari游戏和3D迷宫游戏中的表现。

5 实验分析

5.1 实验设置

(1)定义了两个指标量化神经网络在迁移学习过程中特征的重用程度和迁移效果。
**平均Fisher敏感性(AFS)**是量化特征的重要性。AFS通过计算Fisher信息矩阵的对角元素来量化网络策略对每一层特定特征微小变化的敏感性。这有助于识别哪些特征对网络的输出有较大的影响。AFS还可以用来分析在不同任务之间迁移时,哪些特征被新任务所利用。这有助于理解迁移学习的效果和机制。此外,通过在不同层级上计算AFS,研究者可以了解在网络的哪个层次上发生了有效的迁移,是低级感官特征还是高级控制特征。
**平均扰动敏感性(APS)**是直观的特征贡献评估。APS通过在网络的特定层注入高斯噪声,并观察这种扰动对性能的影响,来评估源任务特征对目标任务的贡献。如果性能显著下降,则表明该特征对最终预测非常重要。APS提供了一种直观的方法来观察迁移特征的有效性。通过扰动分析,可以识别出在迁移过程中哪些特征是有益的,哪些可能是有害的。
(2)网络构建过程
image.png
展示了如何通过添加更多的列来逐步构建网络,每个新列都建立在之前学习的任务之上。

5.2 在Pong Soup迁移任务的性能分析

(1)迁移任务效果
“Pong Soup” 实验是为了研究在不同变体的 Pong 游戏中,神经网络如何迁移在原始 Pong 游戏中学到的知识。实验使用了多个经过修改的 Pong 游戏版本,这些变体在视觉和控制层面上有所不同,包括:

  • Noisy:在输入图像上添加了高斯噪声。
  • Black:背景变为黑色。
  • White:背景变为白色。
  • Zoom:输入图像被放大并平移。
  • V-flip、H-flip 和 VH-flip:输入图像在垂直或水平方向上翻转。

image.png
热图展示了不同Pong变体之间迁移学习的效果。颜色的深浅表示迁移得分,得分越高,颜色越深。迁移得分是相对于基线1的性能提升或下降来计算的。得分大于1表示性能提升,小于1表示性能下降。迁移矩阵中的每个单元格对应于一个源任务到目标任务的迁移情况。行代表源任务,列代表目标任务。Baseline2(单列,仅输出层微调)中蓝色区域较多,说明这种方法未能学习目标任务,导致负面迁移。Baseline3(单列,全网络微调)这种方法显示出较高的正面迁移,说明在源任务和目标任务之间存在一定程度的相似性,允许网络通过微调大部分参数来学习新任务。PNN网络在中位数和平均分数上都优于基线3,表明渐进式网络在利用迁移学习方面更为有效。特别是,渐进式网络能够更好地利用先前任务的知识来加速新任务的学习,并且对于兼容性较好的源任务和目标任务,迁移效果更加明显。

(2)不同网络层的特征敏感性分析
image.png
颜色越深表示该列在该层对输出的影响越大,即网络对该特征的依赖性越高。在Pong的不同变体之间迁移时,网络倾向于重用相同的低级视觉特征,特别是那些对于检测球和球拍位置至关重要的特征。尽管一些低级特征被重用,但网络也需要学习新的中级视觉特征来适应任务的变化,如在Zoom变体中所见。通过AFS分析,论文展示了渐进式网络如何在不同层级上有效地迁移和调整特征,以提高在新任务上的性能。

5.3 Atari目标游戏的迁移任务分析

(1)Fisher敏感性分析
image.png
图中说明如果网络过度依赖旧特征而未能学习新特征,可能导致迁移效果不佳。
image.png
展示了平均AFS值与迁移得分之间的关系,正迁移可能发生在对源任务特征的依赖与对目标任务新特征学习的平衡之间。这表明在新任务上学习新特征对于成功的迁移至关重要。
总之,通过Fisher敏感性分析,论文发现在某些情况下,渐进式网络在新任务上既重用了先前任务的特征,又学习了新的特征,这有助于实现更好的迁移效果。

5.4 3D迷宫游戏的迁移任务性能分析

image.png
即使在简单游戏中,PNN网络也能通过学习新的视觉特征来提高性能,这些特征对于识别不同任务中变化的奖励物品很重要。

6 思考

(1)论文的算法过程和模型比较简单,但是其中的适应器(Adapter)是什么作用?具体是怎么实现的?在代码中如何体现?
适配器通过在侧向连接中引入非线性,帮助网络更好地初始化新任务的学习,从而加速收敛。
还用于执行降维操作。这是因为随着网络逐渐增加新列来学习新任务,输入特征的维度也在增长。适配器通过减少特征维度,帮助网络更有效地处理这些高维输入。
适配器的设计确保了随着网络逐渐增加新列,由于侧向连接产生的参数数量与原始网络参数的数量级相同,从而控制了模型的参数增长。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET MAUI Sqlite数据库操作(一)

一、安装 NuGet 包 安装 sqlite-net-pcl 安装 SQLitePCLRawEx.bundle_green 二、配置数据库(数据库文件名和路径) namespace TodoSQLite; public static class Constants {public const string DatabaseFilename "TodoSQLite.db3";//数据库…

ModuleNotFoundError: No module named ‘MySQLdb‘

python项目运行遇到报错:ModuleNotFoundError: No module named ‘MySQLdb’ 解决办法 1、安装依赖 pip install pymysql2、新增配置 在项目的__init__.py文件中添加以下代码即可解决。 import pymysql pymysql.install_as_MySQLdb()

tim定时器 输入捕获模式下 TIM–ICStructinit(TIM–ICStructinit) 这个值 解析

主要需要看着图来理解 1.这是stm中文手册的图 2.这是解析 我觉得写的不错 注:有个很坑的地方 我觉得是stm32中文手册的问题 他写的解释只写了tim输入2 3 4和ic1 2 3 4,少写了一个输入1 第一次看见很不好理解

vue2动态路由实现

实现一个简单的动态路由&#xff1a; 1、先定义菜单页面组件的结构&#xff0c;使用的是elementUI的NavMenu 导航菜单 <template><div><el-menu default-active"1" router><el-submenu :index"item.path" v-for"item in menu_…

Android14音频进阶之CarAudioManager::getOutputDeviceForUsage流程分析(七十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

C数据结构:排序

目录 冒泡排序 选择排序 堆排序 插入排序 希尔排序 快速排序 hoare版本 挖坑法 前后指针法 快速排序优化 三数取中法 小区间优化 快速排序非递归 栈版本 队列版本 归并排序 归并排序非递归 ​编辑 计数排序 各排序时间、空间、稳定汇总 冒泡排序 void Bub…

嵌入式linux系统中设备树的经典使用方法

第一:设备树简介 大家好,今天主要给大家分享一下,如何使用linux系统里面的设备树,详细分析如下。 可以参考的官方文档有: 官方文档(可以下载到 devicetree-specification-v0.2.pdf): https://www.devicetree.org/specifications/ 内核文档: …

MNIST手写字符分类

MNIST手写字符分类 文章目录 MNIST手写字符分类1 数据集2 模型构建3 训练4 模型保存5 推理6 模型导出7 导出模型测试 1 数据集 MNIST手写字符集包括60000张用于训练的训练集图片和10000张用于测试的测试集图片&#xff0c;所有图片均归一化为28*28的灰度图像。其中字符区域为白…

LabVIEW水箱液位控制系统

介绍了如何使用LabVIEW软件和硬件工具开发水箱液位控制系统。系统集成了数据采集、实时控制和模拟仿真技术&#xff0c;展示了高精度和高可靠性的特点&#xff0c;适用于需要精细水位调节的工业应用。 项目背景 在制造和化工行业&#xff0c;液位控制是保证生产安全与效率的关…

第3章 Unity 3D着色器系统

3.1 从一个外观着色器程序谈起 新建名为basic_diffuse.shader的文件&#xff0c;被一个名为basic_diffuse.mat的材质文件所引用&#xff0c;而basic_diffuse.mat文件则被场景中名为Sphere的game object的MeshRenderer组件所使用。 basic_diffuse.shader代码文件的内容如下所示…

51.Python-web框架-Django开始第一个应用的增删改查

目录 1.概述 2.创建应用 创建app01 在settings.py里引用app01 3.定义模型 在app01\models.py里创建模型 数据库迁移 4.创建视图 引用头 部门列表视图 部门添加视图 部门编辑视图 部门删除视图 5.创建Template 在app01下创建目录templates 部门列表模板depart.ht…

java+vue3+el-tree实现树形结构操作

基于springboot vue3 elementPlus实现树形结构数据的添加、删除和页面展示 效果如下 代码如下&#xff0c;业务部分可以自行修改 java后台代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.daztk.mes.common.annotation.LogOperation…

高通Android 12 右边导航栏改成底部显示

最近同事说需要修改右边导航栏到底部&#xff0c;问怎么搞&#xff1f;然后看下源码尝试下。 1、Android 12修改代码路径 frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java a/frameworks/base/services/core/java/com/android/server/wm/Display…

树莓派4B_OpenCv学习笔记6:OpenCv识别已知颜色_运用掩膜

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 学了这些OpenCv的理论性知识&#xff0c;不进行实践实在…

Roboflow 图片分类打标

今天准备找个图片标注工具&#xff0c;在网上搜了一下&#xff0c;看 Yolo 的视频中都是用 Roboflow 工具去尝试了一下&#xff0c;标注确实挺好用的&#xff0c;可以先用一些图片训练一个模型&#xff0c;随后用模型进行智能标注。我主要是做标注然后到处到本地进行模型的训练…

springboot的WebFlux 和Servlet

Spring Boot 中的 Servlet 定义&#xff1a; 在 Spring Boot 中&#xff0c;Servlet 应用程序通常基于 Spring MVC&#xff0c;它是一个基于 Servlet API 的 Web 框架。Spring MVC 提供了模型-视图-控制器&#xff08;MVC&#xff09;架构&#xff0c;用于构建 Web 应用程序。…

【Mac】增加 safari 体验的插件笔记

Safari 本身的功能不全面&#xff0c;探索积累了一点插件笔记&#xff0c;提升使用体验&#xff1b;但后面因为插件或会影响运行速度&#xff0c;就全部都禁止了。做个笔记记录一下。 Cascadea 相当于 stylus&#xff0c;可以自定义页面。测试过几个&#xff0c;只有几个可行。…

Java:爬虫htmlunit抓取a标签

如果对htmlunit还不了解的话可以参考Java&#xff1a;爬虫htmlunit-CSDN博客 了解了htmlunit之后&#xff0c;我们再来学习如何在页面中抓取我们想要的数据&#xff0c;我们在学习初期可以找一些结构比较清晰的网站来做测试爬取&#xff0c;首先我们随意找个网站如下&#xff…

【StableDiffusion】Embedding 底层原理,Prompt Embedding,嵌入向量

Embedding 是什么&#xff1f; Embedding 是将自然语言词汇&#xff0c;映射为 固定长度 的词向量 的技术 说到这里&#xff0c;需要介绍一下 One-Hot 编码 是什么。 One-Hot 编码 使用了众多 5000 长度的1维矩阵&#xff0c;每个矩阵代表一个词语。 这有坏处&#xff0c…

美国空军发布类ChatGPT产品—NIPRGPT

6月11日&#xff0c;美国空军研究实验室&#xff08;AFRL&#xff09;官网消息&#xff0c;空军部已经发布了一款生成式AI产品NIPRGPT。 据悉&#xff0c;NIPRGPT是一款类ChatGPT产品&#xff0c;可生成文本、代码、摘要等内容&#xff0c;主要为为飞行员、文职人员和承包商提…