每个任务的训练分为“阶段”(每个阶段为e个阶段)。在连续阶段之间,选择候选稳定单元,然后进行rewiring
在任务边界上,候选稳定单元被提升为稳定单元,稳定单元之间的连接被冻结,然后我们重新初始化剩余的连接
每个任务的训练分为“阶段”(每个阶段e个阶段),在每个阶段之后,我们选择候选稳定单元,该选择步骤之后是连接rewiring,在几个阶段重复该选择和rewiring循环,直到满足停止标准,当任务结束,我们将候选单元提升为稳定单元,冻结所有稳定单元的传入连接,并重新初始化可塑单元的权重
一共有 T T T 个任务
第 t t t 个任务,有训练集 D t D_t Dt 和验证集 V t V_t Vt
l ∈ { 1 , . . . , L } \quad l\in\{1,...,L\} l∈{1,...,L} 有 N l N_l Nl 个单元, n i l ( i ∈ { 1 , … , N l } ) n_{i}^{l}\left(i\in\{1,\ldots,N_{l}\}\right) nil(i∈{1,…,Nl}) 是该层的第 i i i 个单元, θ i , j l \theta_{i,j}^{l} θi,jl 代表 n j l − 1 n_{j}^{l-1} njl−1 到 n i l n_i^l nil 的第 j j j 个连接
NISPA在整个训练过程中保持一定的连接密度d。密度d被定义为修剪之后和修剪之前的连接数量之间的比率。修剪是在初始化时随机执行的,并基于每个层执行,也就是每一层都具有相同的密度d
在卷积神经网络(CNN)中,一个“单元”被3D卷积核所代替,“连接”被2D卷积核所代替
单元 n i l n_i^l nil 的激活由其父单元的激活和来自这些父单元的传入连接的权重决定。因此,训练期间的任何权重更新都会以两种方式改变单元 n i l n_i^l nil :
在两个任务之间的边界处,它将连接冻结到新的稳定单元中以稳定这些单元,即它不允许相应的权重在该点之后发生变化
在任何给定的时间,层 l l l 的单位 U l U^l Ul 被划分为三个不相交的集合: S c l , S l and P l S_c^l,S^l\text{and}P^l Scl,SlandPl,即候选稳定、稳定和可塑性单元。在学习任务 t t t 时,NISPA周期性地将一些可塑单元从 P l P^l Pl 转换到候选(稳定)单位集合 S c l S_c^l Scl 。在该任务的训练结束时, S c l S_c^l Scl的成员晋升为 S l S^l Sl
假设我们从从上一个任务继承的集合 P l P^l Pl 和 S l S^l Sl 开始(如果没有上一任务,所有单元都是可塑的)
首先,我们计算该任务的所有训练示例中每个层的总激活,如下所示:
A l = ∑ x ∈ D t a l ( x ) = ∑ x ∈ D t ∑ i = 1 N l a n i l ( x ) ( 1 ) A_l=\sum\limits_{x\in D_t}a_l(x)=\sum\limits_{x\in D_t}\sum\limits_{i=1}^{N_l}a_{n_i^l}(x)\quad\quad(1) Al=x∈Dt∑al(x)=x∈Dt∑i=1∑Nlanil(x)(1)
接下来,对于每个层,我们如下选择候选稳定单元 S c l S_c^l Scl:
min S c ′ ⊆ P l ∣ S c l ∣ subject to ∑ x ∈ D t ∑ n l ′ ∈ S c l ∪ S l a n i ′ ( x ) ≥ τ A l ( 2 ) \begin{aligned}\min\limits_{S_c'\subseteq P^l}\left|S_c^l\right|\text{subject to}\sum\limits_{x\in D_t} \sum_{n_l'\in S_c^l\cup S^l}a_{n_i'}(x)\geq\tau A_l(2)\\ \end{aligned} Sc′⊆Plmin Scl subject tox∈Dt∑nl′∈Scl∪Sl∑ani′(x)≥τAl(2)
为了稳定训练,选择合适的温度参数
τ p = 1 2 ( 1 + cos ( p × π k ) ) ( 3 ) \tau_p=\dfrac{1}{2}\left(1+\cos\left(\dfrac{p\times\pi}{k}\right)\right)\quad\quad(3) τp=21(1+cos(kp×π))(3)
其中p是相位数,k(通常为30或40)是决定函数形状的超参数
是否会选择太多的单元作为稳定单元,而没有为后续任务留下足够的可塑单元?
之前的工作观察到,使用ReLU导致每层激活分布在不同的网络架构和数据集之间高度偏斜。这种偏斜的主要原因是ReLU将所有负的预激活映射为零。因此,大多数单元的激活几乎为零,而只有少数单元具有较大的激活值。
图2-A,B显示了MNIST分类任务中这种现象的示例
图2-C显示,即使在第一个时期,激活分布的偏度(每层一个)也很高,并且在整个训练期间保持较高
这是NISPA的一个重点,因为它表明我们可以通过从分布的右尾部仅选择几个单元(即最活跃的单元)来满足τ约束
单元的总激活是否是其对学习任务的贡献的有效指标,观察到移除最活跃的单元比移除相同数量的随机选择单元更会降低性能
MNIST分类任务的类似结果如图2-D所示,突出了单元的激活与其对给定任务的重要性之间的强相关性
NISPA利用连接rewiring有两个原因:减轻遗忘和创造新的正向转移途径
在每个阶段结束时,rewiring遵循候选稳定单元 S c l S_{c}^{l} Scl 的选择,包括
dropping
growing connections,
我们移除了从可塑单元到(可能是候选)稳定单元的连接。因此可塑单元的功能的未来变化不会传播到稳定单元
从层 l l l 中删除一些连接之后,在层 l l l 中增加相同数量的新连接,保持每层的密度,新的连接是随机选择的,只要它们不形成稳定单元的新输入,这保证了连接增长不会破坏稳定单元学习的表示。
新的连接用高斯分布来初始化
NISPA仅在两个可塑单元之间(type1),或从(可能候选)稳定单元到可塑单元(type2)之间建立连接
type1和type2连接用于不同的目的:
阶段数不是固定的
如果新的精度比旧的差,直接回溯,在phase级别而不是epoch级别执行早停
任务的训练以e个phase的最终序列结束。这允许网络从上次rewiring过程造成的任何性能损失中恢复。我们观察到,可塑单元从上一个任务的训练开始就有偏差,这阻碍了学习新任务。因此,在开始新任务的训练之前,我们重新初始化所有未冻结连接的权重
NISPA是一种神经启发的持续学习方法,这是第一种在整个学习轨迹中使用恒定密度稀疏网络的方法。将稀疏性与rewiring相结合
稀疏但是保持参数量的思想不错,但是感觉实战有点难work