机器学习——终身学习

终身学习

- AI不断学习新的任务,最终进化成天网控制人类
- 终身学习(LLL),持续学习,永不停止的学习,增量学习

- 用线上收集的资料不断的训练模型

- 问题就是对之前的任务进行遗忘,在之前的任务上表现不好

- 要同时学好任务,可以将数据放一起进行学习,如果没有一起学的话,会忘记之前的一个
例子
20个QA任务



- 同时学习20个任务的时候在一些任务上是表现不错的,同时会一些技能
- 连续学的话不太可能学会所有的


- 多任务训练可以解决问题!使用所有数据进行训练
- 存储问题
- 计算问题
- 多任务训练可以被视为LLL的上限

- 最终我们无法存储所有模型
- 知识无法在不同任务之间转移

- 迁移学习:可以做任务2,因为已经学会了任务1,不关心机器是否仍然能够完成任务1
- 终身学习:即使我已经学会了任务2,我也不会忘记任务1。
- 迁移学习是指将从一个任务学到的知识或模型应用到另一个相关任务中的机器学习方法。通过利用已有任务的知识来加速新任务的学习,以解决数据稀缺或训练时间长的问题。
- 终身学习是一种机器学习范式,旨在模拟人类不断学习的能力,持续积累新知识并适应新环境。终身学习系统可以不断接收新数据、学习新任务,并保持对先前学到知识的更新和利用,以实现持续学习和适应性。
评估

- 一些任务序列和相关内容,包括任务1到任务10的排列、时间单位以及一些类别的描述。


- 三种评估方式:
- 学完所有任务之后,再对每个任务计算指标并计算平均指标
- 每学完一个任务之后跟之前学完自己任务之后的指标进行求差的平均
- 在还没有看过其他任务的时候,使用此时的情况减去第一个
可能的解法

选择性的突触的可塑性



-
为什么会发生灾难性遗忘的内容,涉及到任务1和任务2的错误曲面,其中颜色较深的部分表示损失较小。
-
灾难性遗忘的原因在于神经网络在学习新任务时会忘记先前学习的任务,导致先前任务的信息丢失。在这种情况下,任务1和任务2的错误曲面显示了损失较小的部分,这可能表明神经网络在学习这两个任务时存在一定程度的重叠,导致出现灾难性遗忘。因为神经网络更倾向于记住新任务的信息,而忘记旧任务的信息,这可能会导致先前任务的损失加剧。

-
选择性突触可塑性:基本思想是模型中的一些参数对于先前的任务非常重要。只改变那些不重要的参数;每个参数 θ i θ_i θi都有一个“守卫” b i b_i bi。
-
如果bi为0,表示对应参数θi的“守卫”机制认为该参数对当前任务的重要性较低,可以被视为不重要的参数,会被重新学习。
-
如果bi为正无穷,表示对应参数θi的“守卫”机制认为该参数对当前任务的重要性非常高,是不可或缺的重要参数。在这种情况下,根据“选择性突触可塑性”的概念,这样的重要参数将被视为必须保留不变,不会被改变或调整,以确保先前任务学习到的重要知识得以保留并应用到新任务中。

- 对于任务1和任务2,参数θ2和参数b1较小,而参数b2较大。这意味着可以修改参数θ1,但不改变参数θ2。

- 任务A、任务B和任务C的训练情况,以及使用的训练时间、EWC, L2、SGD等相关信息

- b i b_i bi的设置方式有多种,包括
- 弹性权重保持(Elastic Weight Consolidation,EWC)
- 突触智能(Synaptic Intelligence,SI)
- 记忆感知突触(Memory Aware Synapses,MAS)
- RWalk
- 切片Cramer保留(Sliced Cramer Preservation,SCP)
改变任务的顺序对结果会有较大的影响
GEM
对梯度方向上做选择去更新参数,需要把过去的资料存下来来修改g的方向,不需要大量的资料

- 梯度情节记忆"(Gradient Episodic Memory,GEM)涉及到任务1和任务2,以及负责当前任务的梯度g和负责先前任务的梯度g’之间的关系。梯度g表示当前任务的负梯度,而梯度g’表示先前任务的负梯度,它们之间的乘积大于等于0。这种方法需要来自先前任务的数据以更新方向。
增加网络资源分配

渐进式神经网络

- 渐进式神经网络(Progressive Neural Networks)是一种用于处理逐步增加任务复杂性的神经网络结构。在渐进式神经网络中,每个新任务都会引入一个新的神经网络模块,而不会破坏先前任务的学习。这种方法允许神经网络在逐步学习新任务的同时保留先前任务的知识,从而实现对多任务学习的有效管理和应用。通过逐步增加模块来处理新任务,渐进式神经网络能够在不同任务之间实现知识共享和迁移,提高整体学习效率和性能。
- 渐进式神经网络的一些缺点包括:
- 网络结构复杂性增加: 随着每个新任务引入一个新的神经网络模块,网络结构会变得越来越复杂,可能导致计算资源需求增加和训练时间延长。
- 参数冗余: 每个任务都会引入新的神经网络模块,这可能导致参数冗余,使得模型变得庞大且难以管理。
- 遗忘问题: 在处理多任务学习时,可能会出现遗忘问题,即学习新任务时会影响先前任务的表现,导致灾难性遗忘。
- 知识共享限制: 每个任务有自己独立的神经网络模块,可能限制了不同任务之间的有效知识共享和迁移。
- 训练稳定性: 随着模型复杂性的增加,可能会影响训练的稳定性和收敛速度,增加了调参的难度。
在小数据集上表现还是可以的
PackNet

- 先训练一个大的模型,在不同的任务时只用其中的一部分
- PackNet是一种用于神经网络压缩和加速的方法。它采用了一种称为“PackNet”的结构,通过将神经网络的参数分组打包,以实现更高效的计算和存储。PackNet的主要思想是将网络参数分成多个组,每个组称为一个“包”(pack),然后对每个包应用特定的压缩技术,例如低秩近似、量化或剪枝等,以减少参数量并提高计算效率。
- 通过使用PackNet,可以在不损失太多性能的情况下大幅减少神经网络的参数量和计算复杂度,从而实现模型的轻量化和加速。这种方法在资源受限或对速度要求较高的场景下特别有用,可以帮助提高模型的推理速度和在嵌入式设备上的部署效率。
内存回复

内存回复(Memory Replay)是一种机器学习中的技术,用于增强模型的学习和泛化能力。在传统的机器学习训练中,通常使用静态的训练数据进行模型的训练和更新。然而,内存回复引入了一种记忆机制,允许模型在训练过程中保存和重播先前的经验。
内存回复的基本思想是将具有代表性的训练样本存储在一个内存缓冲区中,然后在后续的训练中周期性地从内存中提取样本,并将其与当前的训练数据一起使用。这样做的好处是可以增加训练样本的多样性和数量,从而提供更全面和丰富的训练信号,有助于模型更好地捕捉数据中的模式和结构。
生成数据

- 使用生成模型生成伪数据来处理先前任务,以及生成任务1数据、解决任务1、任务2的训练数据和解决任务2等步骤
- 旨在利用生成模型为先前任务生成数据,以帮助解决新任务
增加新类别

- 学习无遗忘(Learning without forgetting,LwF):旨在解决在学习新任务时导致先前任务遗忘的问题。LwF方法通过在训练过程中结合新任务数据和先前任务的知识,以确保在学习新任务时不会忘记先前任务的信息。
- iCaRL: 增量分类器和表示学习(Incremental Classifier and Representation Learning
- 连续学习的三种场景等内容
课程学习

- 不同任务的顺序对最终的结果也是有影响的
- 课程学习(Curriculum Learning)是一种机器学习技术,通过按照难度或复杂性的顺序对模型进行一系列任务的训练。课程学习的思想是通过逐渐呈现越来越具有挑战性的训练样本,促进学习过程。
- 在传统的机器学习方法中,训练数据通常是随机或按照固定顺序呈现的。然而,课程学习承认在模型学习更复杂的概念之前,某些模式或概念可能更容易或更直观地学习。通过以有意义的顺序组织训练数据,课程学习旨在引导模型按照一种课程或教学大纲学习,模仿人类学习的方式。
- 课程可以根据特定问题领域和任务的要求以各种方式设计。例如,在计算机视觉任务中,课程可以从包含清晰模式的简单图像开始,逐渐引入具有遮挡或变化的更复杂图像。类似地,在自然语言处理中,课程可能涉及从简单的句子结构开始,逐渐引入更复杂的语法构造。
- 课程学习的主要动机是提高模型的学习效率和泛化性能。通过逐渐向模型展示越来越困难的示例,它可以在现有知识的基础上构建,并学习更强大的表示。课程学习已在计算机视觉、自然语言处理和强化学习等各个领域证明有效。
相关文章:
机器学习——终身学习
终身学习 AI不断学习新的任务,最终进化成天网控制人类终身学习(LLL),持续学习,永不停止的学习,增量学习 用线上收集的资料不断的训练模型 问题就是对之前的任务进行遗忘,在之前的任务上表现不好…...
一次完整的 HTTP 请求所经历的步骤
1: DNS 解析(通过访问的域名找出其 IP 地址,递归搜索)。 2: HTTP 请求,当输入一个请求时,建立一个 Socket 连接发起 TCP的 3 次握手。如果是 HTTPS 请求,会略微有不同。 3: 客户端向服务器发…...
OpenGL学习笔记【1】——简介
一、OpenGL概念 OpenGL (Open Graphics Library,译名:开放式图形库开放式图形库) 是一种用于渲染 2D 和 3D 图形的跨语言、跨平台的编程接口(API)。 二、OpenGL跨语言 OpenGL 是一个 C 语言库,因此理解 C 语言(或 C)的…...
C语言课后作业 20 题+考研上机应用题
题目 1: 计算圆的面积 描述: 输入圆的半径,计算并输出圆的面积。 题目 2: 判断一个年份是否为闰年 描述: 输入一个年份,判断并输出该年份是否为闰年。 题目 3: 计算并输出斐波那契数列的前10个数 描述: 输出斐波那…...
macOS上基于httpd-dav搭建WebDav服务
文章目录 配置 Apache httpd修改 ServerName启动验证 httpd 服务启用 Dav 扩展服务配置 配置 httpd 扩展 Dav 服务设置共享目录文件夹配置 DavLockDB 目录创建 WebDAV 访客用户 httpd-dav.conf 主要改动部分BasicDigest共享多个目录 授予 httpd 完全磁盘访问权限验证更新配置重…...
Java-设计模式-单例模式
单例模式 从单例加载的时机区分,有懒汉模式/饥饿模式。 从实现方式区分有双重检查模式,内部类模式/Enum模式/Map模式等。在《Effective Java》中,作者提出利用Enum时实现单例模式的最佳实践。 内容概要 实现单例模式的几个关键点 利用Enu…...
图片html5提供的懒加载与vue-lazyload的区别
原生HTML lazy loading特性 <img src"/images/ocean.jpeg" alt"Ocean" loading"lazy"> loading"lazy" 是HTML5的一个原生特性,它允许浏览器延迟加载图片直至图片距离视口很近或者即将进入视口时。这是一种由浏览器…...
golang 根据某个特定字段对结构体的顺序进行排序
文章目录 方法一方法二方法三 在Go语言中,我们可以使用 sort.Slice() 函数对结构体进行排序。假设你有一个结构体,并且希望根据其中的某个字段进行排序,你可以使用自定义的排序函数。 方法一 下面是一个示例代码,假设有一个包含…...
React Router 参数使用详解
React Router 参数使用详解 React Router 是 React 中用于处理路由的常用库,它提供了丰富的功能来管理应用程序的导航和路由状态。在 React Router 中,我们经常需要使用不同类型的参数来处理路由信息,包括 params 参数、search 参数和 state…...
Vue中$set用法解析
当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data 对象中能找到的所有的属性。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值,但是遇到以下情况不会进行数据的双向绑定。 当你利用索引直接改…...
进制,码制及其表示范围
一 进制 1 常见的进制及其简写 十进制(Dec)二进制(Binary)十六进制(Hex)八进制(Octal) 2 进制之间的相互转换 二 码制 1 常用的码制 三 各码制在定点整数时表示的范围 个人推导…...
钡铼技术R40工业4G路由器加速推进农田水利设施智能化
钡铼技术R40工业4G路由器作为一种先进的通信设备,正在被广泛应用于各行各业,其中包括农田水利设施的智能化改造。通过结合钡铼技术R40工业4G路由器,农田水利设施可以实现更高效的管理和运营,提升农田灌溉、排水等工作效率…...
基于龙芯2k1000 mips架构ddr调试心得(一)
1、基础知识 DDR2的I/O频率是DDR的2倍,也就是266、333、400MHz。 DDR3传输速率介于 800~1600 MT/s之间 DDR4的传输速率目前可达2133~3200 MT/s 2k1000内存:板载2GB DDR3 ,可选4GB 使用龙芯芯片最好用他们自己的Bo…...
智能合约语言(eDSL)—— 使用rust实现eDSL的原理
为理解rust变成eDSL的实现原理,我们需要简单了解元编程与宏的概念,元编程被描述成一种计算机程序可以将代码看待成数据的能力,使用元编程技术编写的程序能够像普通程序在运行时更新、替换变量那样操作更新、替换代码。宏在 Rust 语言中是一种功能&#x…...
敏捷开发——elementUI/Vue使用/服务器部署
1. 创建vue项目 2. 安装element-ui组件库 npm i -S element-ui或 npm install element-ui3. 在main.js中导入element-ui组件 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI)element-ui 组件库地址:Element …...
uniapp 使用sqlite时无法读取到db文件中的数据
问题 {“code”:-1404,“message”:“android.database.sqlite.SQLiteException: no such table: user (Sqlite code 1): , while compiling: select * from user, (OS error - 2:No such file or directory),http://ask.dcloud.net.cn/article/282”} at pages/index/index.vu…...
Linux 网络接口管理
为了更深入的了解linux系统,为此做出网络接口管理的知识总结。看起来麻烦,其实一点都不难,相信多看多了解总会是没错的!❤️❤️ 一起加油吧!✨✨🎉🎉 文章目录 前言一、网络配置的文件介绍二、…...
【设计模式】Java 设计模式之模板策略模式(Strategy)
策略模式详解:模式结构、实现与应用场景 一、策略模式概述 策略模式是一种行为设计模式,它使得算法可以独立于使用它的客户端变化。策略模式使得算法可以在运行时切换,从而增强了系统的灵活性和可维护性。在策略模式中,我们定义…...
SpringBoot项目前端Vue访问后端(图片静态资源) 配置
静态资源配置 Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {Value("${file.save-path}")private String fileSavePath;Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {//映射本地文件夹registry…...
colab中数据集保存到drive与取出的方法
from google.colab import drive drive.mount(/content/drive) 一、下载数据集 from datasets import load_dataset max_length 32 # Maximum length of the captions in tokens coco_dataset_ratio 50 # 50% of the COCO2014 dataset# Load the COCO2014 dataset for tr…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
