Conditional Channel Gated Networks for Task-Aware Continual Learning 笔记

Abstract

卷积神经网络在对一些列学习问题进行优化时,会经历灾难性遗忘问题。CCGN为每个卷积层配备了特定于任务得门控模块,选择要应用与给定输入得滤波器。首先,门得执行模式允许识别和保护重要得滤波器,以确保对以前学习得任务的模型的性能没有损失。其次,通过使用稀疏性目标,促进对有限的内核集的选择,允许保留足够的模型能力来消化新任务。现在的解决方案要求在测试时意识到每个实例所属的任务。然而,这些知识在许多实际情况中无法获得。所以引入一个任务分类器来预测每个实例的任务标签,以处理任务不可用的设置。

Introduction

然而在现实世界中训练任务时,模型可能遇到任务流,但不知道他们的关系或持续时间,所以会出现灾难性遗忘问题。在学习新任务时,模型会覆盖之前的任务的关键参数。连续学习(也被称为增量学习或终身学习)解决了以上问题。典型的设置是分类任务互不相交,根据实际应用可知,应当分析当前输入的任务可能知道也可能不知道。大多数方法都假设任务的标签是在推理过程中得到的,称为任务增量。如分类和异常检测系统,一个模型可以在训练流中出现新的类时,无缝地实例化一个新任务。任务标签仅在训练期间可用,称为类增量。现有的不同策略有记忆缓冲区、知识蒸馏、突触巩固和参数掩蔽。
本文介绍了一种基于条件计算的解决方案来解决任务增量学习、类增量学习问题。框架依赖于单独的与任务特定的分类头(多头架构),它在共享特征提取器的每一层都使用了通道门控。同时引入任务专用的门控模块,该模块根据输入特性动态选择要应用哪些过滤器。
除了鼓励使用更少单元的稀疏性目标外,该策略支持每个岩本的模型选择,并可以很容易的查询哪些权重对当前任务至关重要。这些权重在学习新任务时会被冻结,但门控模块可以动态地下面则使用或丢弃他们。相反,以前任务从未使用过的单元被重新初始化并可用于获取新概念。这个过程防止了对过去任务的遗忘,并允许在前向传播中节省相当大的计算量。引入任务分类器来选择类预测的类头,避免了推理过程中对任务标签的需要,且在相同的增量学习约束下训练任务分类器和分类头。为了减轻任务分类方面的遗忘,通过重放情景或生成记忆的实例。

Related work

Continual learning:灾难性遗忘问题早期的解决办法是正交表示和重放之前的样本。

Progressive Neural Networks(渐进式神经网络)
在这里插入图片描述
每当多学习一个任务时,则多增加一个数列,直接fix之前网络的参数,不会出现遗忘问题。为了使用之前的经验,将当前网络层的输入和之前任务相同网络层的输出一起输入给新任务的下一层。非当前任务的该层输出需要经过a处理,a处理的作用是为了将降维和与输入维度的统一,用简单的MLP表示。
新任务的low level与前几个任务相似的时候,前几层可能完全没有作用,只需要前几个任务的输入就够了。但是很明显的是这个网络不能学习到自己的low level,若当前任务的low level与之前任务不一样,之前网络的输入就不重要了。更重要的是,当前网络的输入列不能输入之前的网络列,不能实现真正的高层网络复用。

另一种流行的解决方案是在学习新任务的时候,通过使用模型过去的参数化作为参考来作为参考来应用知识蒸馏。

最近出现的新的方法,重点是识别对之前的任务至关重要的权重,防止学习新任务的时候对其进行重大更新。每个参数的相关性/重要性估计可以通过Fisher信息矩阵、损失梯度、梯度路径积和贝叶斯神经网络的后验不确定性估计来进行。
也有对二进制掩模的估计,直接讲每个任务映射到与之对应的参数,这样的掩膜也可以通过随机分配、修剪或梯度下降来估计。但现有的掩码方法只能在提供任务标签的oracle存在的情况下进行操作。
CCGN的工作在于:
1)二进制掩膜(门限)是动态生成的,并且依赖于网络输入;
2)通过以来与基于任务分类器的新体系结构,推广基于掩膜的类增量学习设置方法。

一些模型允许访问一个包含了之前任务例子的有限容量的容量缓存。一种流行的方法是 iCaRL,它计算类原型作为存储记忆的平均特征表示,并以最近邻方式对测试示例进行分类。或者,其他方法会干预训练算法,建议将在当前批次上计算的梯度朝着更新方向调整,以保证对存储的示例的非破坏性影响。这样的目标以为这约束优化问题或者元学习算法。不同的是生成记忆不依赖于任何真实例子的回放,而是支持生成模型。这些模型可以有效的对过去的任务的假例子进行采样。同时依赖于情景记忆或生成性记忆来处理类增量设置。重放只是为了防止忘记任务预测器,从而避免更新与任务的分类器。
Conditional computation:条件计算的重点是深度神经网络,以适应给定的输入。最先的任务已经应用于计算机视觉,之前的工作使用二进制门来决定是否必须执行或跳过计算块。这样的门可以丢弃整个残差块或层内特定单元。CCGN学学习一组特定与任务的门控模块,选择对给定输入应用的内核。是首次在continual learning中应用以来数据的通道门控。

Model

Problem setting and objective

提出一个参数模型,称为backbone或learner network。对于任务 T = T 1 , . . . , T N T = {T_1, . . . ,T_N} T=T1,...TN,每个任务 T i T_i Ti都采用了一个分类问题的形式, T i = { x j , y j } j = 1 n i T_i=\{x_j,y_j\}_{j=1}^{n_i} Ti={xj,yj}j=1ni,其中 x j ∈ R m x_j∈\mathbb{R}^m xjRm并且 y j ∈ { 1 , . . . , C i } y_j∈\{1,...,C_i\} yj{1,...,Ci}。任务增量设置需要进行优化:在这里插入图片描述
其中 θ \theta θ用于识别学习的网络的参数,x、y和t分别是观察、标签和任务相关的随机变量。这种最大化问题受到连续学习的约束:当模型按顺序观察任务时,方程中的外部期望在计算或近似都很麻烦。这个设置的要求是每个实例在训练和测试接单的任务集都是已知的。这些信息可以在实践中用来隔离分类器的相关输出单元,防止通过softmax(多头)属于不同任务的竞争。
类增量模型可解决了一下问题:在这里插入图片描述
任务条件的缺失阻止了任何形式的任务感知推理,这个设置需要将输出单元合并为一个单头的分类器,在其中来自不同任务的类相互竞争,经常导致更严重的遗忘。模型可以根据任务信息进行学习,但是在推断过程中无法获得这些信息。
为了保留多头设置的优势,CCGN讲联合优化类的任务预测如下:
在这里插入图片描述
l o g p ( y ∣ x , t ) log p(y|x,t) logp(yx,t)负责给定任务的类分类,类似于方程(1)的多头目标。这个预测依赖于一个任务分类器,它以单头的方式增量训练。这个预测依赖于一个任务分类器,它以单头的方式增量训练。在方程(3)中,将单头复杂性从类预测转移到了任务预测级别。有以下好处:
1)给定任务,类预测精度没有改变;
2)无论是在训练期间还是测试期间,来自不同任务的类不会相互竞争;
3)具有挑战性的单头预测步骤从类转移到任务级别;由于任务和类形成了一个两级层次结构,任务的预测因为在语义水平上起作用预测更容易。
在这里插入图片描述
CCGN提出了一个卷积层的门限方案,根据输入特征映射,门控模块 G t l G_t^l Gtl决定应该使用哪些内核。

Multi-head learning of class labels

接下来的讨论限制在卷积层的情况下,因为也同样适用于其他参数化的映射,如完全连接的层或残余块。考虑到 h l ∈ R c i n l , h , w 和 h l + 1 ∈ R c o u t l , h ′ , w ′ h^l ∈ \mathbb{R}^{c^l_{in},h,w} 和h^{l+1} ∈ \mathbb{R}^{c^l_{out},h′,w′} hlRcinl,h,whl+1Rcoutl,h,w分别为第l层卷积层的输入和输出特征图。通过简直无信息通道获得稀疏矩阵 h ^ l + 1 \hat{h}^{l+1} h^l+1代替 h l + 1 h^{l+1} hl+1转发给下一层,在训练任务t的过程中,以输入特征图 h l h^l hl为条件,门控模块 G t l G_t^l Gtl决定激活哪些通道。
在这里插入图片描述
其中G( h ^ h + 1 = [ g 1 l , . . . , g c o u t l l ] ( h l ) ⊙ h l + 1 \hat{h}^{h+1}=[g^l_1,...,g^l_{c^l_{out}}](h_l) ⊙h^{l+1} h^h+1=[g1l,...,gcoutll](hl)hl+1), ⊙是指通道级的乘法,为了符合增量设置,每次模型观察新任务的示例时,都会实例化一个新的门模块,具体来说,包括一个多层感知机(MLP)和一个具有16个单元的单一隐藏层,然后是批归一化层(BN)层,和一个ReLu激活,最后的线性映射为卷积的每个输出通道提供了对数概率。每个模块都被设计为一个轻量级的网络,计算成本和参数可以忽略不计。
门的反向传播因为不可微分阈值用于二进制开启/关决策。于是依赖于Gumbel-Softmax sampling,并且利用直通估计器获得梯度的有偏估计。
Figure 2
首先块a,表示第 l l l层的卷积层,其中包括了多个门控特征图,每个特征图都与特定的任务相关,然后和将每个特征映射于相应的门控模块 G x l G_x^l Gxl选择的内核进行卷积,并且转发到下一个模块。载人五的最后,任务分类器块b,作为输入的候选特征映射,并决定要解决哪个任务。
在前向传播中并且采用了硬阈值(零中心),反向传播采用用sigmoid函数,并且temperature τ \tau τ=2/3。使用稀疏性目标来惩罚主动卷积核的数量。
在这里插入图片描述
其中L为门控层的总数, λ s λ_s λs是控制系数性水平的系数。稀疏性目标指示每个门控模块去选择最小的内核集,允许为优化未来的任务保存过滤器。此外它是我们能够根据任务的难度和结果调整所分配的网络的能力。这种数据驱动的模块于其他使用固定比例的模型的增长或权重剪枝的持续学习形成对比。
在优化t的任务结束时,通过估计在验证集 T t v a l T_t^{val} Ttval上他们的门的发射率来估计在第 l l l层中每个单元的相关性分数 r k l r_k^l rkl
在这里插入图片描述
其中Ⅱ[·]是一个指示器函数,p(·)表示一个概率分布,通过阈值,得到两个组核。一方面,冻结了任务t相关的内核,在之后的任务中可用,但不可更改。重新初始化非相关的内核并使它们可以通过内核的任务继续学习,使用一个等于0的内核,防止任何遗忘,以减少模型内容为代价。这样每层中可学习单元的数量很简单,如果主干模型趋于饱和,可以快速增长网络来消化新任务。

Single-head learning of task labels

在3.2中的门控方案允许立即识别过去的每个任务的重要内核,但是不能应用于与任务无关的设置,它需要知道哪个门控模块 G x l G_x^l Gxl必须用于第 l l l x ∈ 1 , . . . , t x∈{1,...,t} x1,...,t代表未知任务.CCGN的解决办法是使用所有的门控制模块 [ G 1 l , … … , G t l ] [G^l_1,……,G^l_t] [G1lGtl],并传播所有的门控层输出 [ h ^ 1 l + 1 , . . . , h ^ t l + 1 ] [\hat{h}^{l+1}_1, . . . ,\hat{h}^{l+1}_t ] [h^1l+1,...,h^tl+1]向前传播。接下来 l + 1 l+1 l+1层接受来自第 l l l层的门控输出列表,应用其门控输出模块 [ G 1 l + 1 , … … , G t l + 1 ] [G^{l+1}_1,……,G^{l+1}_t] [G1l+1Gtl+1]并生成输出列表 [ h ^ 1 l + 2 , . . . , h ^ t l + 2 ] [\hat{h}^{l+2}_1, . . . ,\hat{h}^{l+2}_t ] [h^1l+2,...,h^tl+2]。这种机制在网络内部生成计算流,共享相同的层,但为每个层选择不同的单元集来激活。并行流的数量会随着任务数量的增加而增加,但是实际过程中发现计算上比主干网络更方便,因为每个流中选择有限数量的卷积滤波器的识别模块。
在最后一层 L L L卷积层之后,得到一个t个候选特征图的列表 [ h ^ 1 L + 1 , . . . , h ^ t L + 1 ] [\hat{h}^{L+1}_1, . . . ,\hat{h}^{L+1}_t ] [h^1L+1,...,h^tL+1]
在这里插入图片描述
其中 µ µ µ表示空间维度上的全局平均池化算符,L描述了沿着特征轴的连接。任务分类器的架构是基于一个浅层MLP和一个具有64个ReLu单元,然后是一个softmax预测任务标签。使用交叉熵目标来训练任务分类器。优化与任务t上的类标签学习共同进行。因此,网络不仅可以学习特征来区分任务t内部的类,还可以更容易的区分任务t中的输入数据和所有之前的任务。
单头任务容易出现灾难性遗忘问题,最近的论文表示,基于重放的策略是单头设置中最有效的连续学习策略。CCGN通过排练的方式来改善问题。
事件记忆:使用先前任务中的一部分示例来排练任务分类器。在过去的任务 t t t训练过程中,缓冲区C包含过去任务 1 , . . . . , t − 1 1,....,t-1 1,....,t1的m个随机例子(C是表示固定容量)。对来自缓冲区和当前批的示例进行重新采样,以便排练批中任务标签的分布均匀。在任务t结束时。对缓冲区中的数据进行向下采样,以便每个任务都包含 m = C / t m=C/t m=C/t个示例。最后从任务t中中随机选择m个示例进行存储。
生成记忆:采用生成模型从之前的任务中采样假数据。使用带梯度惩罚的Wasserstein GANs,为了克服抽样过程中的遗忘,使用多个生成器,每个生成器建模特定任务的例子。
在这两种情况下,回放只适用于排练任务分类器,不适用于训练分类头。完整目标包括在类层面的交叉熵 p θ ( y ∣ x , t ) p_{θ}(y|x,t) pθ(yx,t),在任务水平上的交叉熵 p θ ( y ∣ x ) p_{θ}(y|x) pθ(yx)和稀疏项 L s p a r s e L_{sparse} Lsparse

总结

1、在任务层面上进行重放例子
2、在相同增量学习约束条件下,与分类头一起训练任务分类器
3、在有任务标签的情况下可以有效的防止遗忘问题,没有任务标签的情况下,表现优于其他竞争方法
4、根据网络的输入动态的生成二进制掩码门

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值