永远学习:为什么人工智能难以适应新挑战
理解深度学习的局限性并追求真正的持续适应
欢迎来到雲闪世界。
“智者适应环境,正如水适应水瓶。”——中国谚语
“适应或灭亡,现在和以往一样,是大自然的必然法则。”——赫伯特·乔治·威尔斯
近年来,人工智能取得了长足的进步。所有这些系统都以某种形式使用了人工神经元。这些算法的灵感来自它们的生物对应物。例如,神经元会聚合来自先前神经元的信息,如果信号超过某个阈值,它会将信息传递给其他神经元。这个想法由权重矩阵和激活函数表示。其他示例可以在卷积网络(受视觉皮层启发)或遗传算法中找到。在训练过程中,各种神经元之间的连接(由权重表示)会加强或减弱,类似于神经元突触的强度。这个过程是随机梯度下降(SGD)和反向传播算法的基础,几十年来几乎没有发生任何变化。
描述智力和生物成分之间的这些相似性有助于更好地理解,但也很危险。首先,生物系统比人们想象的要复杂得多,而且人们使用了强迫性的简化。其次,其中一些比较是不准确的。持续学习就是这种情况。
在本文中,我们将回答以下问题:
-
什么是持续学习?它为什么重要?
-
所有的深度学习架构都会丧失可塑性吗?
-
什么原因导致可塑性丧失?
-
如何解决?
TL;DR 和参考资料位于文章末尾。
什么是持续学习?
大脑非常灵活,能够适应新任务和新类型的信息。相比之下,神经网络在适应数据流的变化方面存在问题。
例如,大型语言模型 (LLM)是通用模型,在预训练期间使用大量数据进行训练。微调是一种让模型学习新知识或技能的系统。但是,微调存在两个问题:
-
在微调过程中,大多数权重都保持冻结。
-
它可能导致忘记技能和知识,增加出现幻觉的风险新旧数据之间的这种动荡关系目前尚未完全理解
-
这使得持续学习在实践中无法实现。我们冒着损害模型功能的风险。很难平衡新数据对模型预先获得的知识的影响。
结果是这些微调技术远非完美。因此,人们通常更愿意从头开始训练新模型或使用其他策略,例如检索增强生成 (RAG)。
然而,从头开始训练新模型的成本很高,但有时这被认为是唯一的选择。这远非最佳选择,许多现实世界的应用需要模型适应变化(预测金融市场、市场、物流需求、控制系统等)。
为什么神经网络无法获取新信息?
主要有两个问题:
-
灾难性遗忘。模型会忘记之前学到的东西
我们将重点关注可塑性的丧失
当我们尝试训练一个预先训练好的模型时,它无法学习新信息或新技能,这就失去了可塑性。更技术性地说:
理想情况下,这个新的训练过程是从昨天的模型的参数初始化的,也就是说,它是从这些参数“热启动”的,而不是重新初始化。然而,热启动似乎会损害深度神经网络的泛化。
使用热启动(持续学习期间)[10] 训练的模型在测试集中表现较差。因此,持续学习似乎会损害模型的泛化能力,从而损害其适应新数据的能力。
一些研究表明,这是因为学习有一个关键阶段,这个阶段在训练的早期阶段(记忆阶段)和后期阶段都会出现信息减少(重组)。改变这个初始阶段会损害训练和泛化本身。
其他研究似乎证实了学习有两个阶段(记忆和细化)[3]。然而,这并不能解释为什么在呈现新数据时会失去可塑性。其他研究表明梯度下降、损失表面和架构选择(规范化将促进更好地维持可塑性)[4] 发挥了作用。然而,这个问题仍然悬而未决,我们将在本文后面详细讨论。
可塑性的丧失是所有深度学习模型中普遍存在的现象
灾难性遗忘的研究比可塑性丧失要多得多。不幸的是,很少有研究关注它。因此,我们不知道可塑性丧失是一个普遍问题还是某些参数选择的特殊情况。
为了证明可塑性损失影响所有深度学习模型,可塑性损失应该在所使用的不同架构、参数和算法之间保持一致。然而,当今的模型有数十亿个参数,使得系统操作变得复杂。在这项研究 [5] 中,他们试图通过在两个主要数据集上进行测试来弥补这一缺陷:ImageNet 和 CIFAR。
ImageNet 包含 1000 个图像类别(总共 100 万张图像),是最著名的图像分类基准。作者进行了 0.5 M 个二元分类任务(每次处理两个类别)来测试持续学习中可塑性的丧失。换句话说,作者训练一个模型来区分“狗”和“猫”,然后训练它进行一项新任务(区分“叶子”和“花”),依此类推。在第一个任务结束后测量准确度,然后在每个后续任务结束后测量准确度。任务的难度相同,但如果模型的性能下降,则意味着它已经丧失了可塑性。
作者在这些设置中测试了不同类型的深度学习网络和不同的参数。使用标准反向传播,模型在前几个任务中表现良好,但随后它们很快失去可塑性,直到它们的表现与线性模型相似。因此,一个针对一项任务进行良好调整的模型在面对新任务时开始迅速失去性能,直到它低于基线。
研究证实,正则化有助于维持神经可塑性。更一般地说,正则化方法旨在保持网络权重较小。L2正则化似乎有助于维持可塑性,但原因尚不清楚。
在后来的实验中,作者使用了CIFAR(最流行的图像数据集之一,包含 100 个类别)。他们采用包含残差连接的 18 层ResNet模型 [11](实际上是计算机视觉领域使用最广泛的模型之一),并开始在 5 个类别上进行训练。之后,他们开始添加更多类别,直到达到 100 个类别。
每次添加后,都会在所有可用类别上测试模型的性能。这可以视为在数据集不断扩大的同时训练模型的情况(就像随着时间的推移而扩大的社交网络)。由于作者关注的是可塑性而不是遗忘,因此在添加新类别时不会删除旧类别。与此同时,作者训练从头开始在所有可用类别上训练的模型(如果模型首先在五个类别上进行训练,然后在第二次迭代中在另外 5 个类别上进行训练,则从头开始的模型直接在 10 个类别上进行训练)
最初,增量训练似乎比重新训练更好,但随着类别的增加,模型失去了可塑性。添加图像类别后,性能开始越来越差。经过几个类别之后,基线(从头开始训练的模型)的改进就消失了,而通过添加类别,性能会显著下降。同样,在使用规范化技术的情况下,性能下降较少(Shrink and Perturb [12] 是一种也使用 L2 规范化的算法)。
持续学习在强化学习中有着重要的用途。代理必须能够探索和学习环境,而环境是可以改变的。例如,在视频游戏中,前几关可能与后几关有很大不同,需要代理适应新的挑战。
在这项研究 中,作者分析了蚂蚁类机器人探索周围环境并获得奖励的行为。他们每隔几百万步就改变摩擦系数,这样模型就必须重新学习如何行走(模拟机器人的新任务)。
再次,该模型显示性能下降和缺乏可塑性。有趣的是,即使在这些设置中,正则化技术也能提高可塑性。
我们现在知道,可塑性的丧失是普遍存在的,但为什么会发生呢?
塑性丧失的原因
正则化技术有助于保持可塑性,这一事实表明可塑性与模型权重的某些属性有关。毕竟,正则化技术对权重施加了限制。
从某种意义上说,模型中真正随时间变化的是它的权重。这些权重是随机初始化的,但随后在模型学习任务时会优化权重。稍后,如果我们为另一项任务进行训练,这些权重应该针对下一个任务进行优化(依此类推)。但这不会发生,因为模型会失去可塑性。因此,最初这些权重可以针对一项任务进行优化,这意味着在第一个时期,它们必须具有某些允许它们学习的特定属性(一个或多个属性在训练过程中会丢失)。
这些特性的丧失应该可以解释可塑性的丧失。
我们可以研究在训练过程中权重的哪些属性会发生变化,尤其是当模型开始失去可塑性时。这应该有助于我们了解原因。
在训练过程中,在失去可塑性的同时,恒定单位的比例也在增加。当一个神经元变为恒定时,由它产生的梯度变为零或接近零。同样,这个权重不再变化,我们可以将其定义为不再具有自适应性或可塑性。在ReLU 激活的情况下,当神经元对每个输入产生零时,它们被定义为死神经元 [6–7]。我们可以注意到,可塑性的丧失伴随着死神经元的增加
一旦一个单元死亡,它就永远死亡了。这意味着死亡神经元的增加对应于网络学习能力的下降(活跃神经元越少,神经网络的容量就越小)。
另一个有趣的现象是,权重的平均幅度会增加,而性能则会下降。一般来说,权重幅度的增长与梯度下降中的学习速度变慢和收敛速度降低有关。
与可塑性丧失同时出现的第三个有趣现象是表示的有效秩下降。有效秩考虑每个维度如何影响矩阵引起的变换。简而言之,有效秩与信息量有关。包含重要信息的维度越少,矩阵中填充的冗余信息就越多。对于神经网络的权重矩阵,隐藏层的有效秩表示产生该层输出所需的神经元数量。它越低,产生该层输出所需的神经元就越少(因此大多数神经元不会产生有用的信息)。随着训练的增加,网络的有效秩会降低,因此产生相关信息的神经元就会减少,网络的表示能力也会降低。这无助于学习新信息,因为我们可以依赖少数有用的神经元。
这些因素解释了为什么我们以前经常看到正则化技术带来的改进。L2 正则化确实降低了权重的大小,但不会影响死单元和有效排名。收缩和扰动是 L2 正则化和随机高斯噪声注入的组合,因此它也可以减少死单元的数量。然而,这两种技术都无法解决第三个问题。
我们如何在模型中提高神经元的可塑性?
提高网络可塑性
我们需要一种方法,让我们拥有较小的权重、较少的死神经元(减少休眠),并保持网络的可变性。通过了解需求是什么,我们可以修改神经网络学习保持可塑性的方式。
在反向传播的初始步骤中,权重被随机初始化,这允许高度可变性。这种可变性随后在训练过程中消失(连同可塑性)。然后我们可以通过重新初始化一些权重来增加可变性。但是,我们必须小心,以免破坏网络所学到的东西。因此,我们应该只重新初始化少数几个网络未使用的权重。一般来说,神经元的激活会告诉我们它有多有价值。如果一个神经元对其他神经元的贡献很小,它就不会传递重要信息,因此我们可以重新初始化它们
这种方法称为连续反向传播,可以保持更多的可塑性。
因此,持续反向传播似乎可以在很长一段时间内保持网络可塑性。遗憾的是作者没有在 LLM 上进行测试。
临别感想
总体而言,大多数持续学习研究都集中于保持网络稳定性(保留在先前任务中学到的信息,从而避免灾难性遗忘)。然而,可塑性的缺乏会影响网络获取新信息和新技能的能力,在持续学习中同样重要。最近的研究阐明了这种可塑性丧失的原因。有趣的是,可塑性的丧失是反向传播算法本身固有的。事实上,可塑性的缺乏在各种架构和任务中普遍存在,这一事实就证明了这一点 [5]。
一方面,正则化技术促进了可塑性,而其他常见参数选择显然会使问题恶化(dropout、ADAM 优化器)。直到最近我们才知道原因;今天我们知道这是权重爆炸、神经元休眠和效率等级之间的微妙平衡 [5、8、9]。因此,我们可以修改反向传播以考虑这些因素。
持续反向传播 [5] 是一种保持可塑性的有趣方法。它是一种简单的方法,并且计算量不大,它重新初始化通常贡献较小的神经元(这些神经元通常是在试图减小模型尺寸的技术中被修剪的神经元)。
持续反向传播使用效用度量来查找和替换低效用单元,这意味着它基于启发式方法,因此不是最佳方法。此外,大多数这些研究都是在玩具模型上进行的(即使它们是广泛的基准),而不是在 LLM 等模型上进行的。看看持续反向传播等方法如何作用于 LLM,以及它们是否允许这些模型学习新知识或新技能,将会很有趣。
无论如何,可塑性的丧失是自然神经元和人工神经元之间的一个显著区别。持续学习对于许多应用都很重要,例如机器人遇到新地形,或将 LLM 应用于专业领域和新任务。今天,我们更好地了解了问题的根源以及如何提高模型的可塑性,但仍然存在悬而未决的问题(需要进一步研究)。
感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)
相关文章:

永远学习:为什么人工智能难以适应新挑战
理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境,正如水适应水瓶。”——中国谚语 “适应或灭亡,现在和以往一样,是大自然的必然法则。”——赫伯特乔治威尔斯 近年来,人工智能取得了长足的进步。所…...

【spring】 Jackson :@JsonIgnore 注解
@JsonIgnore 是 Jackson 库中的一个注解,用于在序列化和反序列化过程中忽略某个字段。也就是说,当对象被转换为 JSON 或从 JSON 转换为对象时,带有 @JsonIgnore 注解的字段将不会被包含在内在这个示例中,ignoredField 字段将不会出现在生成的 JSON 字符串中。 import com.…...

Dependencies与DependencyManagement的区别
现在Maven项目管理,在开发中时比较常用的,在一些项目汇总遇到依赖冲突的问题之后,还是没有能有一个很好的解决办法,这次就来看看在使用Maven管理依赖的过程中dependencies与dependencyManagement的区别。 DepencyManagement应用场…...

git svn 日记
1. git log -p -1 --name-only 该命令用于查看最新的一次提交记录的详细信息,包括文件更改情况。 git log:显示 Git 仓库的提交历史。-p:显示每次提交的差异 (diff),也就是文件内容的修改部分。-1:表示只显示最近的一…...

FSMC
RAM ROM RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。 并且RAM的速度要远远高于ROM的速度。 SRAM SRAM 的存储单元以锁存器来存储数据,种电路结构不需要定时…...

NAT技术+代理服务器+内网穿透
NAT技术 IPv4协议中,会存在IP地址数量不充足的问题,所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的,而公网中的IP地址都是唯一的,所以NAT(Network Address Translation&…...

【ABAP】ole2 excel多sheet导入导出
原理就不分享了 原来是用了动态表格,但是要导出不方便,所以就写死了,excel多sheet导入的类放在另一篇文章里 REPORT zcdemo17. INCLUDE ole2incl.DATA: excel TYPE ole2_object,workbooks TYPE ole2_object,workbook TYPE ole2_object…...

图像配准-小结
图像配准:找到一对图像间的几何变换关系,并且将待配准图像根据几何变换关系对齐到参考图像上,从而为图像融合、变化检测/监测提供基础。图像匹配,在某些语境中可能与上面的图像配准指的是一个东西,而在某些语境中可能指…...

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

计算机基础知识-2
x86架构的寄存器 AT&T汇编和Intel汇编的区别 每取出完一条指令,PC会自动+"1",指向下一条要被执行的指令。这里的1是指下一条指令,但是指令本身可能占用多个字节,所以地址可能不是以1叠加 当前执行的是10…...

Ubuntu2204配置连续失败后账户锁定
配置启用pam_faillock sudo nano /etc/pam.d/common-auth在最上面添加以下内容 auth required pam_faillock.so preauth silent audit auth sufficient pam_unix.so nullok try_first_pass auth [defaultdie] pam_faillock.so authfail auditsudo nano /etc/pam.d/…...

windows下安装elasticSearch和kibana
下载es 下载地址官网 下载后是个压缩包(elasticsearch-8.15.0-windows-x86_64),解压即可 启动 配置 改一下 /conf/jvm.options文件,最后加一行编码配置,这个是为了启动后防止控制台乱码 -Dfile.encodingGBK启动es 依赖jdk8环境…...

Java-IDEA模拟一个Redis服务器,与Redis客户端进行一次简单的交互。默认端口号:6379
首先要了解Redis的交互协议。 摘抄: 简单字符串(Simple Strings): 以 “” 开头,例如 “OK\r\n” 表示一个成功的响应。错误(Errors): 以 “-” 开头,例如 “-ERR unknown command\r\n” 表示一…...

WEB服务与虚拟主机/IIS中间件部署
WWW(庞大的信息系统)是基于客户机/服务器⽅式的信息发现技术和超⽂本技术的综合。网页浏览器//网页服务器 WWW的构建基于三项核⼼技术: HTTP:超文本传输协议,⽤于在Web服务器和客户端之间传输数据。HTML:⽤…...

JAVA开源项目 图书个性化推荐系统 计算机毕业设计
本文项目编号 T 015 ,文末自助获取源码 \color{red}{T015,文末自助获取源码} T015,文末自助获取源码 目录 一、系统介绍1.1 业务分析1.2 用例设计1.3 时序设计 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究…...

Spring Boot 注解探秘:HTTP 请求的魅力之旅
在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时…...

TYPE-C USB设计
目录 摘要 TYPE-C电路 握手过程 USB电路 摘要 TYPE-C,是USB的一种接口,USB的第一种接口为常见的USB接口,U盘即为这种接口;第二种接口的形状类似一个凸字,常应用在打印机中,第三种接口即为TYPE-C,支持正…...

Python炒股自动化,怎样理解股票交易性质
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...

Vue2 day-02
目录 一. Vue脚手架(Vue CLI) 1.1 安装新版本的Vue脚手架vue/cli 1.2 用命令创建Vue项目 1.2.1 命令创建vue项目 1.2.2 默认创建 1.2.3 自定义创建 1.2.4 基于ui界面创建Vue项目 1.3 分析Vue脚手架生成的项目结构及代码执行 1.3.1 默认创建文件结构 1.3.2 分开放置文…...

什么?!新版 Node.js V22.5 自带 SQLite 模块啦
前言 2024年7月,Node.js V22.5.0 版本发布,自带了 SQLite 模块,意味着开发者可以直接在程序中使用 SQLite 数据库,而无需引入第三方库👍。 话不多说,感觉来体验一波✈。 安装/升级 我现在用的是21.4.0版…...

Maven持续集成(Continuous integration,简称CI)版本友好管理
从Maven 3.5.0-beta-1 版本开始可以在pom文件中使用 r e v i s i o n 、 {revision}、 revision、{sha1}、${changelist}做为版本的占位符。 一、单module简单使用${revision}的场景 <project><modelVersion>4.0.0</modelVersion><parent><groupId…...

EvoSuite使用总结
1.安装EvoSuite插件 以IDEA为例,在Plugins栏搜索EvoSuite后点击install,安装完成后重启IDEA 2.使用EvoSuite 选中文件右键选择Run EvoSuite 生成成功可以看到如下提示: 注意事项: 生成路径:src/test/java 使用juni…...

Cortex-A7:简单中断处理(不可嵌套中断)机制
0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A…...

k8s HPA
水平自动扩容和缩容HPA HPA全称Horizontal Pod Autoscaler,即pod水平自动伸缩。HPA可以基于CPU利用率对replication controller、deployment和replicaset中的pod数量进行自动扩缩容(除了CPU利用率,也可以基于其他应用程序提供的度量指标cust…...

5G移动网络运维实验(训)室解决方案
随着第五代移动通信技术(5G)的快速普及和工业互联网的迅猛发展,全球制造业正面临着前所未有的深刻变革。5G技术凭借其超高的传输速率、极低的延迟以及大规模的连接能力,为工业自动化、智能制造等领域带来了革命性的技术支持。为了…...

单片机学习笔记
一、单片机帝国的诞生与发展 1.1 单片机的基本概念 单片机是一种集成电路芯片,采用超大规模的集成电路把具有数据处理功能的中央处理器存储器、输入输出端口、外围电路和相关外设集成在一块硅片上构成一个小而完整的微型计算机系统。 一般而言,单片机也…...

SpringBoot中@Value获取值和@ConfigurationProperties获取值用法及比较
SpringBoot中Value获取值和ConfigurationProperties获取值用法及比较 更新时间:2024年08月08日 09:41:48 作者:岳轩子 在Spring Boot中,Value注解是一个非常有用的特性,它允许我们将外部的配置注入到我们的Bean中,ConfigurationProperties用于将配置文件…...

执行任务赚积分
题目描述 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限,请问…...

使用TLS解决Docker API暴露2375端口的问题
问题起因 由于本人开发环境是在 Windows,开发完成后需要使用 Dockerfile 打包镜像,这个过程需要有一个 Docker 服务完成,Windows 安装 Docker 会影响到很多环境,我又不想本地开虚拟机使用 Docker,于是我就索性使用服务…...

Pyspark中catalog的作用与常用方法
文章目录 Pyspark catalog用法catalog 介绍cache 缓存表uncache 清除缓存表cleanCache 清理所有缓存表createExternalTable 创建外部表currentDatabase 返回当前默认库tableExists 检查数据表是否存在,包含临时视图databaseExists 检查数据库是否存在dropGlobalTemp…...