Life Long Learning论文初探————Online Fast Adaptation and Knowledge Accumulation(OSAKA)

基本知识简介

一. 基本概念

Life Long learning 也可以被叫做continual Learning、incremental learning,强调在不断的,一直学习下去。相比于传统的机器学习,我们只针对一个特定的任务(例如:猫狗图片分类),Life Long Learning则是会有一系列顺序的任务(任务之间存在一定关系),即由多个传统机器学习任务组成(如下图)
在这里插入图片描述

二. 相关问题:灾难性遗忘

提到Life Long learning,最直接也是必须要面对的就是新知识的获取必然会导致旧知识的遗忘,这也就是灾难性遗忘。当前面对这个问题也提出了许多方法,如下图:
在这里插入图片描述
这里主要讲一下Regularization-based中的Prior-focused的几个案例。

三.解决方案

Selective Synaptic Plasticity

L 1 ( θ ) = L ( θ )   +   λ ∑ b i ( θ i   −   θ i b ) 2 L^1(\theta) =L(\theta)\ +\ \lambda \sum{b_i(\theta_i\ - \ \theta_{i}^b)^2} L1(θ)=L(θ) + λbi(θi  θib)2
其中 L ( θ ) L(\theta) L(θ)为当前任务的损失函数,后面一项目的是让参数不要偏离太多,b代表当前参数的影响程度,b越大说明这个参数对模型影响越大,越容易提高模型损失。
在这里插入图片描述
这里有图片帮助理解,颜色越深说明损失越小,在Task1上,梯度自然指向深的地方,假设 θ \theta θ走一步走到了b点,对于当前我们可以求出损失的二阶导数,发现在 θ 2 \theta_2 θ2上变化很剧烈,因此b2也需要设立相对较大,保护这个方向的参数。
现在你肯定好奇那么这个b怎么确定呢?这个就是接下来要分析的方法。

Elastic Weight Consolidation (EWC)

两个公式:
这个是我们的损失:
L 1 ( θ ) = L ( θ )   +   λ ∑ F i 2 ( θ i   −   θ i b ) 2 L^1(\theta) =L(\theta)\ +\ \lambda \sum{\frac{F_i}{2}(\theta_i\ - \ \theta_{i}^b)^2} L1(θ)=L(θ) + λ2Fi(θi  θib)2
这个是F求解方式
F   =   [ ∇ l o g ( p ( y n ∣ x n , θ A ∗ ) ) ∇ l o g ( p ( y n ∣ x n , θ A ∗ ) ) T ] F\ =\ [\nabla log(p(y_n|x_n,\theta^*_A))\nabla log(p(y_n|x_n,\theta^*_A))^T] F = [log(p(ynxn,θA))log(p(ynxn,θA))T]
可以看一下代码具体展示细节:
在这里插入图片描述

Memory Aware Synapses (MAS)

在这里插入图片描述
累计损失方法是少一个1/2,所以就不写了
在这里插入图片描述

Sliced Cramer Preservation (SCP)

在这里插入图片描述
在这里插入图片描述
介绍完这几种理论,其实还有一些方法可以。例如可以用GAN方法生成出之前训练的参数或者添加一些新的network去稳定数据,这里大家可以自行收集。

OSAKA论文

一. 背景

OSAKA:

  1. 任务变化随机采样的(个人理解是任务是任何时候随机到来,且数据也是随机)
  2. 任务边界未知(没有明确有多少个任务)
  3. 目标分布是有相关性的
  4. 多种不稳定的级别设定
  5. 任务会可再现(以前的任务会重新产生)
    可以发现,我们之前看到的方法具有明确的任务边界以及任务不再线,与OSAKA的场景发生了不同,同时OSAKA目标是评价累积的正确率而不是只看最终正确率。
    针对这个,作者结合MAML思想,一方面让模型能尽快收敛,另一方面,也希望模型使用能更加适应新任务。同时由于任务是可再现的,因此我们需要采取一个指标就是判断当前任务和之前训练过的是否接近,从而进行学习而且不会灾难性遗忘。

二. 方法

作者提出了continual-MAML,这个模型包括两方面,一个是进行预训练,与MAML一致,目的是尽快收敛获得好的模型参数。
之后针对不同时间到来的任务进行学习

在这里插入图片描述
简要介绍一下算法:
首先是预训练, θ \theta θ是元学习中模型初始参数 ϕ \phi ϕ是训练 θ \theta θ参数,我们inner loop不断更新 θ \theta θ之后累积梯度更新 ϕ \phi ϕ
之后我们进行对当前任务学习,一样先将训练好的 ϕ \phi ϕ传给我们的参数,然后去更新一轮新的参数,若两个参数之间所带来的损失小于设定值,我们即更新学习率,g是一个函数,映射在0-1之间,这种情况,可以发现是当新任务相近时,所以我们可以去调整我们的原始参数。否则只是去适应参数,更多的细节大家可以看论文和代码介绍的。

猜你喜欢

转载自blog.csdn.net/qq_45478482/article/details/120957946