终生学习(增量学习)概述

2023-10-25 12:20
文章标签 学习 概述 增量 终生

本文主要是介绍终生学习(增量学习)概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概念

    终生学习(Life Long Learning,LLL),又称为Continuous Learning、Never Ending Learning、Incremental Learning,就是机器可以不断学习新知识,而不会忘记学过的知识。LLL需要解决三个问题:Knowledge Retention、Knowledge Transfer、Model Expansion。本文内容总结自李宏毅的PPT。

1.Knowledge Retention

问题提出

    Knowledge Retention(but NOT Intransigence),知识保留。要让机器学会保存学过的知识,同时拥有学习新知识的能力。这里给出一个例子说明存在的问题。下面是两个识别手写数字识别的任务,任务1在手写数字中加入了噪声,如下图所示。

图片1.jpg

    如果先学习任务1,因为任务1更难,那么可以直接迁移到任务2上,效果也不错,如下图左上角所示。如果先学习任务1,再学习任务2,那么机器就忘记任务1学过的东西了,如下图右上角所示。但是如果使用多任务学习的方法同时学习两个任务,就可以取得很好的效果。说明网络容量足以学习两个任务,但是却没有保留学过的知识。

图片2.jpg

    多任务学习通常难以代替LLL,因为遇到新任务时,模型需要从头训练,这样无论是存储训练数据的代价还是训练代价都是难以接受的。另一方面,多任务学习可以作为LLL的上界。

    为什么不每个任务训练一个模型?第一因为我们希望不同任务之间知识的融合可以提高性能,第二当模型很多的时候,难以保存训练的模型。

EWC

    Elastic Weight Consolidation(EWC),前面的任务中学习的模型参数有些是重要的,而有些是可以被改变的,因此可以通过尽量保存前面任务中的重要参数来减小机器的“遗忘”问题。设 θb是前面任务中学习到的参数,每个 θb 拥有一个守卫(guard)参数b,守卫参数用于表明该参数有多重要。那么EWC下的损失函数公式如下:

图片3.jpg

    可以看到 总的损失=常规损失+参数相差。优化的目标是损失值尽可能小,只看上式的后一项,bi越大,则θi和θbi 就需要越接近,这样总的损失值才能变小。经过优化后,bi大的参数θi和θbi的值很接近,从而保留了前面任务学习到的知识。

    从另一个角度看,上式的后一项可以看作一个正则化项。不同于L1或L2正则化,这里的目标是使得某些参数与之前训练好的参数尽可能相近。

    下图表示模型学习任务1和任务2时某两个参数值的变化过程,在不加限制的情况下,学习任务2后,会忘记任务1学过的知识。

图片4.jpg

    若想用EWC解决这个问题,主要的问题是如何确定守卫参数b的值。不同的参数有不同的做法,其中一个方法是根据要守卫的参数的二次导数来确定。优化后的整个模型应该处在一个局部最优值上面,就像在某个山谷里那样。从不同的参数上看这个局部最优值,它的函数曲线是不一样的。比如下图是某两个参数:

图片5.jpg

图片6.jpg

    上图左的2阶导数较小,θ1参数改变影响也不大,因此b1的值小。而上图右2阶导数大,θ2改变影响较大,因此b2的值大。因此上面这个例子中学习到任务2后参数更好的选择如下:

图片7.jpg

    下图是原始的EWC论文上给出的结果:

图片8.jpg

    守卫参数估计的不同方法如下:

    Elastic Weight Consolidation (EWC) http://www.citeulike.org/group/15400/article/14311063 

    Synaptic Intelligence (SI) https://arxiv.org/abs/1703.04200 

    Memory Aware Synapses (MAS) Special part: Do not need labelled data https://arxiv.org/abs/1711.09601 

生成模型

    但是多任务学习作为LLL的上界,有人还是想用它来代替LLL,那么一个重要的问题是解决每个任务的数据集存储问题。其中生成模型是数据存储的解决方案之一。生成模型通过学习任务的数据集,可以生成相似的数据。不断的学习任务的数据,从而可以用一个生成模型代替每个任务的数据集。

图片9.jpg

    相关论文如下:

    https://arxiv.org/abs/1705.08690 

    https://arxiv.org/abs/1711.10563 

网络结构的适应

    有时候两个任务之间的网络结构不一定相同。比如前面的任务是分类15个类别,后面的任务是分类20个类别,那么两个任务需要的网络是不同的。这里由几个解决方案:

    Learning without forgetting (LwF),https://arxiv.org/abs/1606.09282 

    iCaRL: Incremental Classifier and Representation Learning,https://arxiv.org/abs/1611.07725 

2.Knowledge Transfer

    Knowledge Transfer,知识迁移。我们不仅希望机器可以记住过去的学习到的知识,还希望机器人以前学过的知识可以应用到后面的任务中,即知识迁移。这有点类似于迁移学习,不同的地方在于迁移学习不关心模型的遗忘问题,而LLL既需要将知识迁移同时要保证模型能保留学过的知识。

图片10.jpg

LLL的评估

    一个常见的评估LLL的方法如下:画出下面的表格,横轴表示一个模型在不同任务上的表现,纵轴表示LLL模型学完第几个任务后的模型。

图片11.jpg

    表格中的Ri,j表示训练了任务i之后,在任务j上的性能。若i>j,表示训练任务i后去评估前面学过的任务j。若i<j,表示任务i迁移到任务j的性能。下面是几个总体指标:

图片12.jpg

    Accuracy表示在学完第T个任务后,LLL模型在所有任务上的平均指标。

    Backward Transfer表示在学完第T个任务后,LLL模型对所有任务的指标与刚学完任务时的指标之差,来表示任务记住知识的能力。这个值通常是负的,我们通常希望这个值越大越好。

    Backward Transfer表示在还没有学到某个任务T之前,模型根据别的任务,能够在任务T上获得多少性能。

GEM

    Gradient Episodic Memory(GEM),可以约束梯度提高学过的任务的性能。就是对模型参数稍微修改一下提高性能,如下图所示:

图片13.jpg

    如上图所示,θ是对当前任务优化之前的参数,虚线是当前任务优化该参数的方向,g1和g2是前面的任务优化该参数的方向,g是综合考虑后更新梯度的方向。这个方法需要保存前面任务的梯度数据。

    相关论文:

    GEM: https://arxiv.org/abs/1706.08840 

    A-GEM: https://arxiv.org/abs/1812.00420 

对比

    下面是各种方法实现的LLL的效果的对比:

图片14.jpg

    图顶部表示mnist数据集每次经过置换后得到的新数据集当成新的任务,图中间是旋转后,图下面是CIFAR-100。其中single表示单个模型学完各个任务,independent表示每个任务都独立训练一个模型,multimodal是多任务学习,还有EWC和GEM。

    观察上图的结果,发现GEM的精度最高,其次是多任务学习。

3.Model Expansion

    Model Expansion(but Parameter Efficiency),模型拓展。当任务太多的时候,模型的容量可能不够,因此这里要求模型能自动扩展容量。目前这个问题的研究仍处于早期阶段,其中几个解决方案如下。

(1)Progressive Neural Networks

    论文:https://arxiv.org/abs/1606.04671 

图片15.jpg

    如上图左所示,首先构建一个网络训练任务1。到任务2的时候,重新构建一个网络训练任务2。这个任务2的网络接收任务1的网络的每层的输出作为输入,从而达到融合任务1的作用,如上图中间所示。而任务3网络接收任务1网络和任务2网络的输出,从而可以同时学习任务1 2 3。问题在于每个任务都构建一个网络,当任务很多的时候,参数过多从而导致无法训练。

(2)Expert Gate

    论文:https://arxiv.org/abs/1611.06194 

图片16.jpg

(3)Net2Net

    论文:https://arxiv.org/abs/1511.05641  ,https://arxiv.org/abs/1811.07017 

图片17.jpg

    这个论文主要想解决的是网络容量不够时,如何加入新的神经元而不会导致网络忘记学过的知识。Net2Net的方法如上图所示,新加入的h|3|神经元输入权重与h|2|一致,输出权重是h|2|的一半。这样可以使得网络变宽,但是不会忘记学过的东西。存在的问题是h|2|和h|3|的权重完全一致,会导致更新的梯度也一致,因此需要在两个神经元的权重上加入很小的噪声,使得它们不完全一致。

其它问题

    如下图所示,机器的遗忘程度也和任务学习的先后顺序有关。

图片18.jpg

这篇关于终生学习(增量学习)概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/282548

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学