【连续学习之随机初始化算法 】2024Nature期刊论文Loss of plasticity in deep continual learning

1 介绍

年份:2024

期刊:Nature

Dohare S, Hernandez-Garcia J F, Lan Q, et al. Loss of plasticity in deep continual learning[J]. Nature, 2024, 632(8026): 768-774.

本文提出的算法是“持续反向传播”(continual backpropagation),其关键步骤的技术原理是在标准的反向传播算法基础上,持续地、随机地重新初始化网络中一小部分使用最少的单元,以维持网络的多样性和可塑性。根据单元的贡献度(contribution utility)来选择重新初始化的单元。贡献度是通过计算单元的输出和其权重的乘积的绝对值来衡量的。

2 创新点

  1. 持续反向传播算法:提出了一种新的持续反向传播算法,该算法通过在每次迭代中随机重新初始化一小部分使用最少的单元,来维持网络的可塑性和多样性。
  2. 解决可塑性丧失问题:在深度连续学习环境中,标准深度学习方法会逐渐失去可塑性,本文的算法有效地解决了这个问题,使得网络能够在持续学习中保持性能。
  3. 实验验证:通过在ImageNet、CIFAR-100等经典数据集上的广泛实验,验证了持续反向传播算法在监督学习和强化学习问题中维持可塑性的能力。
  4. 对比分析:将提出的算法与传统反向传播、L2正则化、Shrink and Perturb等方法进行了对比,展示了其在维持网络可塑性方面的优势。
  5. 理论联系实际:文章不仅提出了理论算法,还将其实现在多种深度学习网络和学习算法中,证明了其广泛的适用性和有效性。
  6. 深入分析损失可塑性的原因:文章探讨了损失可塑性背后的几个可能原因,包括网络单元的死亡、权重大小的持续增长以及表示的低有效秩,并针对这些原因提出了解决方案。
  7. 开放资源:提供了实验数据和代码的公开访问,促进了研究的透明度和可重复性。

3 算法

3.1 算法原理

持续反向传播算法(Continual Backpropagation)是在标准反向传播算法的基础上进行的改进,其主要目的是在深度连续学习中维持网络的可塑性。算法的关键步骤如下:

  1. 初始化:网络的权重在训练开始前进行随机初始化。
  2. 前向传播:输入数据通过网络进行前向传播,计算预测值。
  3. 计算损失:根据预测值和真实值计算损失函数。
  4. 反向传播:根据损失函数对网络的权重进行反向传播,计算梯度。
  5. 权重更新:使用梯度下降方法更新网络的权重。
  6. 持续注入随机性:在每次迭代中,随机选择一小部分使用最少的单元进行重新初始化,以维持网络的多样性。
  7. 选择重新初始化的单元:根据单元的贡献度(contribution utility)来选择重新初始化的单元。贡献度是通过计算单元的输出和其权重的乘积的绝对值来衡量的。
  8. 保护新单元:新初始化的单元在一定数量的迭代内不会被再次重新初始化,以保护其不被立即覆盖。
  9. 重复:重复步骤2到8,直到训练结束。

3.2 算法步骤

  1. 初始化:随机初始化网络的权重 w 0 , w 1 , … , w L − 1 w_0, w_1, \ldots, w_{L-1} w0,w1,,wL1,其中 w l w_l wl是第 l l l层的权重。同时初始化每个单元的贡献度 u 1 , u 2 , … , u L − 1 u_1, u_2, \ldots, u_{L-1} u1,u2,,uL1为0。
  2. 前向传播:对于每个输入 x t x_t xt,进行前向传播以得到预测值 y t ′ y_t' yt
  3. 计算损失:根据预测值 y t ′ y_t' yt和真实值 y t y_t yt计算损失函数 L ( x t , y t ) L(x_t, y_t) L(xt,yt)
  4. 反向传播:根据损失函数 L ( x t , y t ) L(x_t, y_t) L(xt,yt)对网络的权重进行反向传播,计算梯度。
  5. 权重更新:使用梯度下降方法更新网络的权重:

w l = w l − α ⋅ ∂ L ∂ w l w_l = w_l - \alpha \cdot \frac{\partial L}{\partial w_l} wl=wlαwlL

其中, α \alpha α是学习率。

  1. 持续注入随机性:在每次迭代中,随机选择一小部分使用最少的单元进行重新初始化。具体步骤如下:
    • 对于每一层 l l l,计算每个单元的年龄 a l a_l al
    • 找出年龄大于成熟阈值 m m m的单元,即成熟单元。
    • 从成熟单元中随机选择 ρ ⋅ n l \rho \cdot n_l ρnl个单元进行重新初始化,其中 n l n_l nl是第 l l l层的单元数, ρ \rho ρ是替换率。
    • 重新初始化这些单元的权重为0,并将它们的贡献度 u l u_l ul和年龄 a l a_l al重置为0。
  2. 贡献度更新:对于每个单元,根据其输出和权重的乘积的绝对值更新其贡献度:

u l [ i ] = η ⋅ u l [ i ] + ( 1 − η ) ⋅ ∣ h l [ i ] ⋅ w l + 1 [ i , k ] ∣ u_l[i] = \eta \cdot u_l[i] + (1 - \eta) \cdot \left| h_l[i] \cdot w_{l+1}[i, k] \right| ul[i]=ηul[i]+(1η)hl[i]wl+1[i,k]

其中, h l [ i ] h_l[i] hl[i]是第 l l l层第 i i i个单元的输出, w l + 1 [ i , k ] w_{l+1}[i, k] wl+1[i,k]是连接第 l l l层第 i i i个单元到第 l + 1 l+1 l+1层第 k k k个单元的权重, η \eta η是贡献度的衰减率。

  1. 重复:重复步骤2到7,直到训练结束。

4 实验分析

随着任务数量的增加,传统反向传播算法的性能逐渐下降,表明了可塑性丧失。这意味着网络在连续学习新任务时,其学习能力逐渐减弱。

比较了本文算法持续反向传播(Continual Backpropagation)、L2正则化和Shrink and Perturb算法在相同连续学习任务中的表现。

标准PPO(Proximal Policy Optimization)学习算法在非静态蚂蚁问题上的表现。图中还展示了对PPO优化器(Adam)进行特别调整后的表现,以及添加持续反向传播或L2正则化后的表现。标准PPO算法在非静态蚂蚁问题上表现灾难性,即随着时间的推移,其性能急剧下降。对PPO的Adam优化器进行特别调整可以减轻这种失败,但并不能完全解决问题。添加持续反向传播或L2正则化是必要的,以确保算法能够长期保持良好的性能。

  1. 现有方法的局限性

    • 流行的深度学习方法(如Adam、Dropout和归一化)实际上增加了可塑性的损失。
    1. Adam优化器:Adam优化器是一种自适应学习率的优化算法,它结合了Momentum和RMSprop的特点。然而,文章中提到,Adam优化器在连续学习任务中可能会导致网络快速失去多样性,表现为有效秩的显著下降和死单元(即在所有样本中输出始终为零的单元)的增加,这些都是可塑性损失的标志。
    2. Dropout正则化:Dropout是一种常用的正则化技术,通过在训练过程中随机丢弃(即设置为零)一部分神经元的输出,以减少过拟合。但文章中指出,Dropout在某些情况下可能会加剧可塑性损失,尤其是在较高的Dropout率下,可能会导致网络中的一些单元在面对新任务时无法恢复活力。
    3. 归一化技术:归一化技术(如Batch Normalization)通过规范化层的输出来减少内部协变量偏移,加速训练过程。尽管归一化在初始任务中可能表现出较好的性能,但文章发现,在连续学习环境中,归一化技术可能会导致网络在后期任务中性能下降,这可能是因为归一化层在面对新任务时无法适应数据分布的变化。
  2. L2正则化的作用

    • L2正则化通过惩罚大权重来减少可塑性损失,防止权重过大,从而保持网络的可塑性。
  3. Shrink and Perturb方法

    • Shrink and Perturb通过缩小权重并添加随机噪声来减少可塑性损失,增加了网络的多样性。
  4. 持续反向传播算法

    • 提出了一种新的持续反向传播算法,通过在训练过程中重新初始化一小部分使用最少的单元来维持网络的可塑性。
  5. 持续反向传播的效果

    • 持续反向传播在多个任务中表现出色,几乎没有可塑性损失,并且能够在整个学习过程中保持高稳定秩和低死单元比例。
  6. 小权重与可塑性

    • 发现保持小权重的算法(如持续反向传播、L2正则化和Shrink and Perturb)能够减少可塑性损失。
  7. 随机性注入

    • 注入随机性(如持续反向传播和Shrink and Perturb)可以提高网络的有效秩和降低死单元数量,从而提高性能。
  8. 选择性重新初始化的优势

    • 持续反向传播选择性地重新初始化单元,这比全面重新初始化更有效,因为它可以利用已有的学习成果来加速新任务的学习。
  9. 算法的适应性

    • 持续反向传播算法能够适应不同的替换率,并且对于维持可塑性具有较宽的适用范围。

5 思考

(1)本文中如何评价学习能力?如何评价可塑性?

  1. 学习能力的评价
    • 正确分类的百分比:在监督学习任务中,通过测量测试集上正确分类的图像百分比来评估网络在每个任务上的学习能力。
    • 累积奖励:在强化学习任务中,使用累积奖励作为主要性能度量,即在一系列动作中,代理获得的总奖励。
    • 性能比较:将连续学习(增量学习)的网络性能与从头开始训练的网络性能进行比较,以评估学习能力。
  2. 可塑性的评价
    • 性能下降:可塑性丧失表现为随着任务的增加,网络性能的下降。如果网络在后续任务中的表现不如早期任务,这直接表明了可塑性的丧失。
    • 单位活跃度:通过测量网络中活跃度低于1%的单元数量的增加来评估可塑性。如果许多单元变得不活跃或冗余,这表明网络的可塑性在下降。
    • 稳定秩:通过计算网络表示的稳定秩来评估可塑性。稳定秩低意味着网络单元不提供多样性,这与可塑性丧失有关。
    • 权重大小:通过监测网络权重的平均大小来评估可塑性。权重的持续增长可能与可塑性丧失有关,因为大的权重可能导致学习速度变慢。
    • 算法比较:通过比较不同算法(如标准反向传播、L2正则化、Shrink and Perturb、持续反向传播)在连续学习任务中的表现,来评估它们维持可塑性的能力。

(2)在网络结构中哪些部分实现重更新初始化?

  1. 识别低效单元
    • 算法会监测网络中每个单元的贡献度(contribution utility),这是一个衡量单元对其下游消费者重要性的指标。贡献度低的单元被认为是低效的。
  2. 选择性重初始化
    • 只有那些成熟(即经过一定数量的更新迭代)且贡献度低的单元会被选中进行重初始化。这样做是为了保护新加入的单元不被立即重置,因为它们需要时间来成熟并展示其价值。
  3. 重初始化过程
    • 对于被选中的单元,其输入权重会被重新从初始分布中采样,而输出权重则被设置为零。这样做是为了确保重新初始化的单元不会立即影响网络已经学到的功能。
  4. 更新单元状态
    • 重初始化的单元的贡献度和年龄会被重置,以便它们可以重新开始学习和适应新的任务。
  5. 网络层级
    • 重初始化可以在网络的任何层级进行,但通常关注那些对最终输出影响最大的单元,这些单元通常位于网络的较深层。
  6. 替换率(Replacement Rate)
    • 算法中有一个参数称为替换率(ρ),它控制着在每次迭代中被重初始化的单元的比例。这个比例通常设置得非常小,意味着在大量的更新迭代中只有极少数单元会被替换。

(3)如何计算神经元贡献度?

  1. 定义贡献度
    • 对于第 l l l层的第 i i i个单元,其贡献度 u l [ i ] u_l[i] ul[i]是其所有输出连接的贡献度之和。
  2. 计算每个连接的贡献度
    • 每个连接的贡献度是单元的输出和其权重的乘积的绝对值。对于连接第 l l l层第 i i i个单元到第 l + 1 l+1 l+1层第 k k k个单元的权重 w l + 1 [ i , k ] w_{l+1}[i, k] wl+1[i,k],其贡献度为:

∣ h l [ i ] ⋅ w l + 1 [ i , k ] ∣ \left| h_l[i] \cdot w_{l+1}[i, k] \right| hl[i]wl+1[i,k]

其中, h l [ i ] h_l[i] hl[i]是第 l l l层第 i i i个单元的输出。

  1. 更新贡献度
    • 贡献度是一个运行平均值,使用衰减率 η \eta η来更新。对于第 l l l层的第 i i i个单元,其贡献度 u l [ i ] u_l[i] ul[i]在时间 t t t的更新公式为:

u l [ i ] = η ⋅ u l [ i ] + ( 1 − η ) ⋅ ∑ k = 1 n l + 1 ∣ h l [ i ] ⋅ w l + 1 [ i , k ] ∣ u_l[i] = \eta \cdot u_l[i] + (1 - \eta) \cdot \sum_{k=1}^{n_{l+1}} \left| h_l[i] \cdot w_{l+1}[i, k] \right| ul[i]=ηul[i]+(1η)k=1nl+1hl[i]wl+1[i,k]

其中, n l + 1 n_{l+1} nl+1是第 l + 1 l+1 l+1层的单元数。

  1. 初始化贡献度
    • 在训练开始时,所有单元的贡献度被初始化为0。
  2. 重初始化单元的贡献度
    • 当一个单元被重初始化时,其贡献度被重置为0。

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

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

相关文章

Android Studio | 连接手机设备后,启动App时出现:Waiting For DebuggerApplication (App名)...

在这种情况下,打开目录文件,出现 Is:/storage/emulated/: Permission denied 问题分析: 以上两种情况表明应用程序试图访问Android设备的存储空间中的/storage/emulated/目录,但是没有足够的权限去执行这个操作。 解决办法&…

NodeRed使用心得,实现增删改查等

使用场景介绍 在VUE中使用nodeRed实现对节点的 增删改查等功能,且储存成功之后下点击时启动对应流程 安装与配置 1.安装NodeRed npm install -g --unsafe-perm node-red 安装完成后,你可以通过运行以下命令来启动Node-RED node-red-start2. 配置文件 N…

金仓数据库安装-Kingbase v9-centos

在很多年前有个项目用的金仓数据库,上线稳定后就没在这个项目了,只有公司的开发环境还在维护,已经好多年没有安装过了,重温一下金仓数据库安装,体验一下最新版本,也做一个新版本的试验环境; 一、…

“AI考训分析系统:让考试和训练更智能、更高效

大家好,我是你们的老朋友,一个资深的产品经理。今天咱们来聊聊一个教育领域的新宠儿——AI考训分析系统。这个系统可是个厉害角色,它不仅能帮学生提高学习效率,还能让老师们的工作变得更加轻松。下面我就跟大家伙儿分享一下这个系…

UE5 丧尸类杂兵的简单AI

A、思路 1、关卡初始化时,自动产生随机巡逻点,小兵到达后,去另一个随机巡逻点。 2、加入视力,发现主角后,不再巡逻,而开始追击主角并攻击。条件循环。 3、加入听力。主角的奔跑与射击会产生噪音&#xf…

【Compose multiplatform教程11】【组件】TextField组件

查看全部组件​编辑https://blog.csdn.net/b275518834/article/details/144751353 TextField 功能说明:提供用户输入文本的功能,可设置默认文本、提示文本以及文本样式,方便获取用户输入的内容,常用于数据采集场景。示例场景&am…

C# 将图片转换为PDF文档

将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片。此外,PDF文件还具有强大的安全特性,将图片转换为PDF后,我们可以通过设置密码来文件内容不被泄露。本文将介绍如何将JPG/PNG图片转换为PDF文档。 文章…

计算机的错误计算(一百九十三)

摘要 用两个大模型化简计算 其中有关数字取弧度,结果保留5位有效数字。一个大模型进行了一次化简,另外一个大模型没有化简。两个大模型​​​​​均给出错误结果。 例1. 化简计算 其中有关数字取弧度,结果保留5位有效数字。 下面是与一个…

大模型-ChatGLM-6B模型部署与微调记录

大模型-ChatGLM-6B模型部署与微调记录 模型权重下载: 登录魔塔社区:https://modelscope.cn/models/ZhipuAI/chatglm2-6b 拷贝以下代码执行后,便可快速权重下载到本地 # 备注:最新模型版本要求modelscope > 1.9.0 # pip instal…

梳理你的思路(从OOP到架构设计)_介绍Android的Java层应用框架01

目录 1、传统无框架 2、 单层框架 3、 复合型框架 4、 双层框架 1、传统无框架 传统上,在没有框架的环境里,应用程序(Application,简称AP或App)会调用平台(如Linux或Windows等)平台的函数,如下图所示: 由于控制权掌握在App开…

基于SpringBoot在线音乐系统平台功能实现十七

一、前言介绍: 1.1 项目摘要 随着互联网技术的迅猛发展和普及,人们对音乐的获取和欣赏方式发生了巨大改变。传统的音乐播放方式,如CD、磁带或本地下载的音乐文件,已经不能满足用户日益增长的需求。用户更希望通过网络直接获取各…

SpringBoot配置文件、热部署、YAML语法、配置文件值注入

SpringBoot的配置文件 文章目录 SpringBoot的配置文件1.SpringBoot的热部署2.配置文件2.1配置文件的作用2.2YAML配置文件:2.3YAML 与 JSON 和 XML 的对比 3.YAML语法3.1键值对3.2值的写法3.3对象、Map(属性和值)(键值对&#xff0…

Linux | 零基础Ubuntu安装部署 Nginx服务

目录 介绍 安装部分 更新 安装 查看状态 测试网页 配置部分 备份默认文件 编辑文件 创建站点文件夹 编辑默认文件 Nginx检测 重新加载Nginx 测试网站 介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。…

云边端一体化架构

云边端一体化架构是一种将云计算、边缘计算和终端设备相结合的分布式计算模型。该架构旨在通过优化资源分配和数据处理流程,提供更高效、更低延迟的服务体验。 下面是对这个架构的简要说明: 01云计算(Cloud Computing) — 作为中心…

springboot 工程使用proguard混淆

在 Maven 构建的 Spring Boot 项目中使用 ProGuard 进行代码混淆时,需要正确配置 Maven 插件和 ProGuard 的混淆规则。由于 Spring Boot 项目通常会依赖大量的反射机制和动态代理,因此必须特别小心确保这些部分在混淆过程中不会被破坏。 步骤 1&#xf…

vue3和springboot使用websocket通信

前端端口&#xff1a;9090 后端端口&#xff1a;8080 vue3 引入依赖&#xff1a; npm install sockjs-client stomp/stompjs vue页面 <template><div><h1>WebSocket 示例</h1><button click"sendMessage">发送消息</button>…

【HarmonyOS】鸿蒙arrayBuffer和Uint8Array互相转化

【HarmonyOS】鸿蒙arrayBuffer和Uint8Array互相转化 前言 ArrayBuffer ArrayBuffer内部包含一块Native内存&#xff0c;该ArrayBuffer的JS对象壳被分配在虚拟机本地堆&#xff08;LocalHeap&#xff09;。与普通对象一样&#xff0c;需要经过序列化与反序列化拷贝传递&#x…

Linux 搭建 nginx+keepalived 高可用 | Nginx反向代理

注意&#xff1a;本文为 “Linux 搭建 nginxkeepalived (主备双主模式) 高可用 | Nginx反向代理” 相关文章合辑。 KeepalivedNginx实现高可用&#xff08;HA&#xff09; xyang0917 于 2016-09-17 00:24:15 发布 keepalived 的 HA 分为抢占模式和非抢占模式&#xff0c;抢占…

Cocos Creator 试玩广告开发 第二弹

上一篇的项目是2d的&#xff0c;现在谈谈对于3d试玩项目的一些经历。 相对于2d来说&#xff0c;3d的项目更接近于Unity的开发&#xff0c;但是也有很多不一样的地方&#xff0c;具体的也可以参考Cocos给他官方示例。 Unity 开发者入门 Cocos Creator 快速指南 | Cocos Creator…

输入框去掉角标

前言 正常情况下&#xff0c;HTML textarea 多行文本输入框会存如下图所示图标&#xff0c; 用户可拉动它改变高度&#xff0c;这是我们不想看到的&#xff0c;所以要去掉它。 去掉后&#xff1a; 解决方案 设置 resize 属性即可&#xff0c;如下代码所示&#xff1a; <…