什么是终身学习(Life Long Learning / Continuous Learning / Never Ending Learning / Incremental Learning)

什么是终身学习(Life Long Learning / Continuous Learning / Never Ending Learning / Incremental Learning)文章目录1.概念区分1.1LifeLongv.s.Multitask1.2LifeLongv.s.Transfer2.终身学习2.1SelectiveSynapticPlasticity2.2G

终身学习(Life Long Learning / Continuous Learning / Never Ending Learning / Incremental Learning)的目的是设计一个网络,在不同的任务上依次训练,并能够胜任所有的任务。而不是像传统的机器学习那样,一个网络只能胜任一个任务。

1. 概念区分

1.1 Life Long v.s. Multi task

终身学习将一个网络在不同的任务上依次训练,而多任务将一个任务同时训练,可以避免遗忘,达到更好的效果。由于这一效果是终身学习无法达到的,通常被认为是终身学习的性能上界。

那么终身学习的价值在哪里呢?实际上,多任务学习在训练任务过多时存在很多问题。例如当我们学习过很多科目,想要学习一门新的科目,多任务学习强迫我们一直携带着之前的课本(存储问题),强迫我们把之前的课本和新课本再阅读一遍(计算问题)。这些问题在训练任务过多的时候将导致无法部署。

1.2 Life Long v.s. Transfer

终身学习和迁移学习的一个很重要的区别在于,迁移学习的目的是利用之前的任务来学习新的任务,因此在学习新任务的时候,我们不在乎模型再在旧任务上的效果;而对于迁移学习来说,我们希望我们的模型在旧任务上面仍然具有好的效果。

2. 终身学习

想要实现终生学习,有一个非常重要的任务是知识保留。因为通常来说,机器学习了一个新的,就会忘记旧的,这一过程被称为Catastrophic Forgetting(灾难性遗忘)。

灾难性遗忘为什么会产生呢?举一个例子,在下图所示的误差空间中,蓝色越深代表误差越小。

  1. 假设初始位置位于 θ 0 \theta^0 θ0
  2. 通过任务1的训练,参数更新到 θ b \theta^b θb这一误差更小的位置。
  3. 在任务2,中以 θ b \theta^b θb为初始继续训练,参数更新到 θ ∗ \theta^* θ

可以看出, θ ∗ \theta^* θ对于任务2来说是误差最小的位置,但是对于任务1来说,效果却很差,可以理解为任务1被遗忘了。

在这里插入图片描述
解决灾难性遗忘有以下几种常用的方法:

2.1 Selective Synaptic Plasticity

Selective Synaptic Plasticity是一种非常常用的方法。它的核心思想是,由于有些参数对过去的模型很重要,通过添加一个额外的损失,使得模型倾向于不改变这些重要的参数,而只改变不重要的参数。

例如,在上图中,由于 θ 2 \theta^2 θ2对于任务1比较重要,而对任务2没有那么重要(只要在椭圆形范围内就可以了)。因此倾向于不改变 θ 2 \theta^2 θ2,使任务2在 θ 1 \theta^1 θ1方向优化。

在这里插入图片描述

(1)SSP损失

SSP的损失定义为: L ′ ( θ ) = L ( θ ) + λ ∑ i b i ( θ i − θ i b ) 2 L'(\theta) = L(\theta) + \lambda \sum_ib_i(\theta_i-\theta_i^b)^2 L(θ)=L(θ)+λibi(θiθib)2其中 θ i \theta_i θi是当前模型的参数, θ i b \theta_i^b θib是之前任务的模型的参数, b i b_i bi是形容参数 θ i b \theta_i^b θib的重要程度的系数。

L ′ ( θ ) L'(\theta) L(θ)的含义为:在当前任务的损失 L ( θ ) L(\theta) L(θ)上,添加一个类似惯性的损失 ∑ i b i ( θ i − θ i b ) 2 \sum_ib_i(\theta_i-\theta_i^b)^2 ibi(θiθib)2,用来迫使重要的 θ i \theta_i θi b i b_i bi较大)靠近 θ i b \theta_i^b θib

(2) b i b_i bi的选择

显然 b i b_i bi的设定对于SSP的结果是至关重要的,那么如何选择 b i b_i bi呢?

首先, b i b_i bi是不可通过上述损失函数直接进行梯度下降求解的,因为机器学习的结果会使得 b i = 0 b_i=0 bi=0,此时损失函数的值最小,但这并不是我们需要的结果。

通常来说, b i b_i bi的值是人为给定的,选取的方式也是很多论文中重点讨论的内容。一个简单的方法如下:试图改变 θ i b \theta_i^b θib的值,观察对于结果的影响,如果变化明显,则说明 θ i b \theta_i^b θib是重要的,需要给定一个较大的 b i b_i bi值;反之则不重要, b i b_i bi较小。

在之前的例子中,改变 θ 2 \theta^2 θ2,会发现损失函数的变化曲线(绿色)梯度较大,因此 θ 2 \theta^2 θ2对于任务1的影响比较大,需要给定一个较大的 b i b_i bi值;而 θ 1 \theta^1 θ1的曲线(蓝色)梯度较小, b i b_i bi较小。

在这里插入图片描述
几种Selective Synaptic Plasticity选取 b i b_i bi方法的论文有:(时间顺序)

  1. Elastic weight Consolidation (Ewc)
  2. Synaptic Intelligence (SI)
  3. Memory Aware Synapses (MAS)
  4. RWalk
  5. Sliced Cramer Preservation (ScP)

Gradient Episodic Memory (GEM)

一种类似的方法是Gradient Episodic Memory,但是它不是通过参数,而是通过梯度下降方向的修改来达到减少遗忘的目的。用 g g g表示当前任务的梯度下降方向, g b g^b gb表示之前任务的梯度下降方向,则希望采取一个新的方向 g ′ g’ g,使得 g ′ ⋅ g ≥ 0 g’\cdot g\ge0 gg0(夹角为锐角)。

但是,需要注意的是,由于计算 g b g^b gb需要之前任务的数据来计算下降方向,因此和终身学习的初衷相悖。但是如果采取的数据量较小(例如所占用的空间小于SSP中存储之前模型所需参数量的空间),仍在可接受的范围。

在这里插入图片描述
接下来介绍的几种方法,通过额外的神经网络来解决灾难性遗忘问题。

2.2 Additional Neural Resource Allocation

2.2.1 Progressive Neural Networks

Progressive Neural Networks每次学习一个新任务的时候,保存先前的模型的参数,增加额外的神经网络到模型中,训练的时候只改变新加入的层,通过这样的方式解决灾难性遗忘问题。

但是,这一方法的问题在于,每次新加入任务都会导致更大的模型,在任务数量较大的时候会和多任务模型一样遇到计算量和存储量的问题。
在这里插入图片描述

2.2.2 PackNet

PackNet和PNN正好相反,首先分配一个较大的网络,在每一个任务中只使用其中部分的参数进行更新,在新的任务中改变其他的参数,这样每一个模型的任务都不会遗忘。但是这样同样会导致较大的参数存储量,只是这些参数在一开始就被分配而已。

在这里插入图片描述

2.2.3 Compacting, Picking, and Growing(CPG)

CPG是一种结合PackNet和PNN的方法,即神经网络既可以通过分配来分离不同模型的参数,也可以新加入额外的网络。
在这里插入图片描述

2.3 Memory Reply

Memory Reply的一个例子是Generating Data在训练新任务的时候,同时训练一个数据生成器,用来生成当前(和之前)任务的数据,用于未来的任务。通过数据生成器来取代先前的数据。这一方法通常是有效的,但是会占用额外的空间来储存数据生成器。

在这里插入图片描述

2.4 不同架构网络的终身学习

在之前的例子中,我们都是假设每一个task都是相同的神经网络架构,但是在实际问题中,很可能不同任务的神经网络架构是不相同的,这两篇paper用来解决这种问题:

  1. Learning without forgetting (LwF)
  2. iCaRL: Incremental Classifier and Representation Learning

3. 终身学习的评价指标

当我们在衡量一个终身学习的能力时,我们通常会画出一个矩阵。矩阵的第 ( i , j ) (i,j) (i,j) R i , j R_{i,j} Ri,j表示的意义就是在训练完第 i i i个task时候,模型在第 j j j个任务的表现如何。

在这里插入图片描述
R i , j R_{i,j} Ri,j的意义为:

  • 如果 i > j i>j i>j R i , j R_{i,j} Ri,j反映模型存储学习知识的能力;
  • 如果 i < j i<j i<j R i , j R_{i,j} Ri,j反映矩阵举一反三的能力。

下面我们介绍衡量终身学习的一些参数:

3.1 Accuracy

Accuracy(ACC):表示在模型学习完所有的任务以后,对每一个任务的表现的均值。
A C C = 1 T ∑ i = 1 T R T , i ACC = \frac{1}{T}\sum_{i=1}^TR_{T,i} ACC=T1i=1TRT,i

3.2 Backward Transfer

Backward Transfer(BWT):使用模型在学习最后一个(第 T T T个)任务以后对之前第 i i i个任务的表现减刚刚学完第 i i i个时候的表现的差值(通常为负数)。反映的是模型的记忆能力:
B W T = 1 T ∑ i = 1 T − 1 R T , i − R i , i BWT = \frac{1}{T}\sum_{i=1}^{T-1}R_{T,i}-R_{i,i} BWT=T1i=1T1RT,iRi,i

  • BWT越大,就意味着模型对于之前学会的知识忘记的越多;
  • 如果BWT大于零,就意味着以后学到的知识对于之前学过的是一个促进的作用。

3.3 Forward Transfer

Forward Transfer(FWT):我们以最后一个任务(第 T T T个)为例,这个参数反应的是机器还没有学习 T T T,只是学习了 T T T之前的任务时候,对任务 T T T的效果。我们用机器学习之前 T − 1 T-1 T1个任务时候对任务任务 T T T的表现减去初始化参数时候对任务 T T T的表现。反应的是迁移能力。

F W T = 1 T − 1 ∑ i = 2 T R i − 1 , i − R 0 , i FWT = \frac{1}{T-1}\sum_{i=2}^TR_{i-1,i}-R_{0,i} FWT=T11i=2TRi1,iR0,i

  • FWT衡量机器学习之前任务对现在任务的影响。
  • 如果FWT是正的,那么就说明这个机器是会触类旁通的。

参考文献

  1. 李宏毅的机器学习课程
  2. 机器学习-48-Life-long Learning(终生学习)

今天的文章什么是终身学习(Life Long Learning / Continuous Learning / Never Ending Learning / Incremental Learning)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83314.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注