持续学习+元学习文章调研(三)
继续进行相关文章的调研。
文章
Continual Unsupervised Representation Learning,NIPS2019
本文针对传统持续学习方法主要针对于有任务标签和任务边界(no task-agnostic),以及以来有标签数据(supervised)的局限性,探讨了新的持续学习方法,无监督持续学习(unsupervised continual learning),“无监督”既体现在任务标签的不可知(甚至没有清晰的任务定义),也体现在监督信息的缺乏,作者任务无监督学习本身也包含了对数据信息的探索,因此也有助于对于任务边界的识别,所以这两方面的问题的解决方案是相互联系的。
作者提出了无监督持续学习的方法Continual Unsupervised Representation Learning(CURL)。
任务定义
文章将整个学习环境建模为以下三个变量的模型
其中,
y
y
y为分类变量或称为任务标识,符合由
π
\pi
π控制的均匀分布,
z
z
z为
y
y
y解码之后控制生成的符合高斯分布的隐变量,被解码之后生成了数据
x
x
x。而整个模型的无监督训练就是为了估计
p
(
y
,
z
∣
x
)
p(y,z|x)
p(y,z∣x),由于改概率无法直接估计,所以采用变分估计的方式,即估计
q
(
y
,
z
∣
x
)
=
q
(
y
∣
x
)
q
(
z
∣
x
,
y
)
q(y,z|x)=q(y|x)q(z|x,y)
q(y,z∣x)=q(y∣x)q(z∣x,y)。
通过前面的建模我们发现,整个过程和变分自编码器(VAE)的推导过程是十分类似的,相对于多了一步(
y
y
y—>
z
z
z)的变分自编码器,如果对变分自编码器有一定的理解,那么理解起来将不会很困难。网络结构和对于损失的推导与变分自编码器都十分类似。
损失函数与模型结构
和变分自编码器一样,通过推到下界(ELBO)从之前的概率公式获得损失函数:
将期望展开可以获得:
这里由于
z
(
k
)
∼
q
(
z
∣
x
,
y
)
z^{(k)} \sim q(z|x,y)
z(k)∼q(z∣x,y)无法直接获得(因为
y
y
y—>
z
z
z是离散化的one-hot选择),因此采用蒙特卡洛随机+重参数化(都是变分自编码器中使用到的方法)进行估计,整个损失函数(当然,实际上是要最大化
L
\mathcal{L}
L)应用到网络构建中就得到了下面的模型结构。
和变分自编码器一样,模型使用神经网络来建模之前的概率分布,左侧的网络最左边的分支就是对
q
(
y
∣
x
)
q(y|x)
q(y∣x)的建模,左侧的另外两个分支(
μ
\mu
μ和
σ
\sigma
σ)以及中间的灰线(采样)就是
q
(
z
∣
x
,
y
)
q(z|x,y)
q(z∣x,y),右侧的神经网络则用来建模
p
(
x
∣
z
(
k
)
)
p(x|z^{(k)})
p(x∣z(k))。正则化项则体现了损失函数中的KL散度(让神经网络给出的分布和
p
(
y
)
p(y)
p(y)和
p
(
z
∣
y
)
p(z|y)
p(z∣y)表示的先验分布不要差距太大)。为了实现最大化
L
\mathcal{L}
L的目标,模型可以自主选择将数据的分类集中或是分散。
当有标签存在时,损失函数也可以很简单地改写为
y
=
y
o
b
s
y=y_{obs}
y=yobs的模式:
除此之外,为了能够决定可能的任务数,并不断应对新的任务,网络还拥有动态扩展功能,当样本的
L
\mathcal{L}
L小于一定值的时候,会被记录进一个集合,当集合的数量达到一定数目的时候,一组新的参数将会产生,初始值为最大可能的类的原来的参数,并使用上面有监督的方式进行微调(认为所有样本都属于新的类)。
实验结果&讨论
作者展示了在MNIST和Omniglot数据集上的结果,并在有监督持续学习和无监督学习(非持续情况下的无监督学习)上也有competitive的结果。模型精巧推导扎实,不过我觉得在大数据集上的应用可能不会很容易,但是确实是无监督持续学习领域的重要基石。
Few-Shot Class-Incremental Learning, CVPR2020
作者首先分析了小样本学习在实际应用中的必要性,并提出直接的小样本迁移会导致对旧知识的遗忘和对新的小样本的过拟合,传统的小样本学习方法往往只关注了后者而没有注意前者,作者因此提出了few-shot class-incremental learning(FSCIL)的任务设置,在class-incremental的情况下做了研究。
任务定义
形式化的定义FSCIL任务,包括了一系列彼此标签互相独立的任务
D
(
1
)
,
D
(
2
)
.
.
.
D
(
k
)
D^{(1)},D^{(2)}...D^{(k)}
D(1),D(2)...D(k)的class-incremental持续学习,其中
D
(
1
)
D^{(1)}
D(1)为大量样本的基础任务(用于小样本学习前的meta-learning或metric-learning)。
传统的持续学习任务经常借助知识蒸馏来对旧记忆进行保存,使用知识蒸馏的持续学习的损失函数的基本形式如下,P为从新旧样本中采样得到的数据(所以还是带了replay操作?)。
而这种方法存在两个问题:1. 数据的不平衡;2. 记忆和学习的trade-off。这些问题在小样本学习中更加关键,因为小样本学习往往有更大的学习率和样本权重。为此,作者直接抛弃了传统的知识蒸馏使用样本的方式,直接从神经网络特征空间的拓扑结构中提取知识信息。
使用Neural Gas表示知识信息
作者使用Neural Gas来表示特征空间的拓扑信息。整个拓扑空间被表示为一组有限的节点,将特征归于一个最近的中心节点(使用欧几里得距离来表示),使用赫伯学习更新。(感觉就是聚类的方法似乎)
复杂的推导过程看不太懂,不过从他的基本原理图可以看出,通过对特征空间的拓扑约束,实现了和replay类似的更有效地调整特征空间以保持旧记忆和适应新记忆(replay也可以看作是一种基于样本的知识蒸馏吧)。在这个过程中也需要记录旧有的任务信息和时间序列等才能进行优化,因此拥有一些额外的空间开销,而且似乎并不是task-agnostic的。
AFEC: Active Forgetting of Negative Transfer in Continual Learning, NIPS 2021
在持续学习过程中,学习新的任务常常可以从之前学习到的任务中吸收经验,然而并不是所有的经验都是有益的,存在着学习后的网络表现不如重新初始化网络的情况,这就是负迁移(Negative Transfer)。在生物大脑中,则能够在信息冲突的情况下有效学习新的任务,这种能力被称为记忆可塑性(memory flexibility),是通过主动遗忘(active forgetting)旧经验中与新知识相冲突的部分来实现的。生物学的实验证明,这种机制与突触扩张(synaptic expansion)和突触融合(synaptic convergence)相关,具体来说,生物神经突触在学习新的知识的时候首先扩展额外的连接学习新的经验,和旧的连接共存,然后通过剪枝将连接数量控制在学习之前的数量。作者实验的场景是不使用预训练,不存储旧的训练数据或进行replay,但该方法和这些条件可以结合使用。
数学与公式推导
在持续学习经典之作EWC中,针对两个任务为例的持续学习的优化目标做了一个推导,即
对
θ
A
,
B
∗
\theta ^{*}_{A,B}
θA,B∗的极大后验概率估计最后的推导结果就是如EWC中一样,针对项
p
(
θ
∣
D
A
t
r
a
i
n
)
p(\theta|D^{train}_A)
p(θ∣DAtrain)的损失项(在假设
p
(
θ
∣
D
A
t
r
a
i
n
)
p(\theta|D^{train}_A)
p(θ∣DAtrain)服从高斯分布时)就可以使用Fishr信息的正则化项:
当我们考虑到需要对任务A进行遗忘时,引入遗忘因子
β
\beta
β进行控制,得到混合的概率分布(
β
\beta
β可以采用搜索得到,
Z
Z
Z为取决于
β
\beta
β的正则化项):
得到的新的估计为:
类似的损失函数为:
所以最后对于损失函数的修改相当于同时考虑到对新数据集最优结果的靠近。而这里要得到
θ
e
∗
\theta^*_e
θe∗就要求我们必须首先针对数据集B训练一组权重,这就是作者提到的Expantion操作。在帮助我们计算完这些损失之后,这一组
θ
e
∗
\theta^*_e
θe∗就可以被抛弃掉了,对应了Convergence操作。
实验&评估
为了模拟Negative Transfer的场景,本文改造了CIFAR-10回归任务进行测试,该任务中,10个类被分散在360°的夹角中,分类改为预测角度的回归任务,在新的任务中,作者会改变不同角度的相对位置或对整体进行旋转,这样旧的经验就会成为妨碍。
可以看到AFEC的效果比其它正则化方法在各种超参数下都要好
对于其它的视觉任务,作者也进行了改造。主要是对类进行分割,其中CIFAR-100-SC,CIFAR-100,CIFAR-10/100三个任务中负迁移逐渐减小,正迁移逐渐增加。作者采用了多头的方式进行深度学习。
从促进正迁移减少负迁移的角度来看,AFEC也有很好的效果。