1 介绍
年份:2018
会议:2018 24th International Conference on Pattern Recognition (ICPR)
Liu X, Masana M, Herranz L, et al. Rotate your networks: Better weight consolidation and less catastrophic forgetting[C]//2018 24th International Conference on Pattern Recognition (ICPR). IEEE, 2018: 2262-2268.
本文提出的算法原理是通过网络参数空间的重参数化,近似对角化Fisher信息矩阵(FIM),以减少在顺序任务学习场景中灾难性遗忘的问题。关键步骤的技术原理包括:使用因子分解旋转参数空间,使得前向传播输出不变,但反向传播过程中计算的FIM近似对角化,从而提高Elastic Weight Consolidation(EWC)算法在防止灾难性遗忘方面的有效性。本文算法属于基于正则化的算法,因为它通过在EWC算法中引入正则化项来强制网络参数保持接近于之前任务训练得到的参数,从而减少对先前学习任务的遗忘。
2 创新点
- 参数空间旋转:提出了一种新的网络参数空间重参数化方法,通过对参数空间进行旋转,使得Fisher信息矩阵(FIM)近似对角化,从而更好地满足Elastic Weight Consolidation(EWC)算法的对角FIM假设。
- 间接旋转方法:由于直接在参数空间进行旋转会改变网络的前向传播行为,文章提出了一种间接旋转方法,通过在全连接层和卷积层中分别添加额外的固定线性层和1x1卷积层来实现参数的旋转,而不改变网络的前向传播。
- 实验验证:在多个数据集(包括MNIST、CIFAR-100、CUB-200和Stanford-40)上进行了广泛的实验验证,证明了该方法在顺序任务学习中相比于标准EWC算法能够显著提高性能,并且在与最新技术的比较中也显示出竞争力。
- 对角FIM的改进:通过旋转参数空间,使得FIM更加紧凑和对角化,从而减少了在EWC实践中由于对角近似而丢失的重要信息,提高了防止遗忘的效果。
- 无需存储训练数据:与需要存储之前任务训练数据的方法不同,本文提出的方法不需要存储任何之前任务的训练数据,这在实际应用中可以节省大量的存储空间和计算资源。
- 适用于不同层的旋转:文章不仅提出了全连接层的旋转方法,还将这种方法扩展到了卷积层,通过在每一层应用相应的旋转,进一步提高了算法的适用性和有效性。
3 算法
3.1 算法原理
本文提出的算法原理是基于避免在顺序任务学习场景中发生灾难性遗忘的问题。算法的核心是通过网络参数空间的重参数化,使得Fisher信息矩阵(Fisher Information Matrix, FIM)近似对角化,以提高Elastic Weight Consolidation(EWC)算法的性能。
算法的关键步骤包括:
- 参数空间的旋转:文章提出对神经网络的参数空间进行旋转,使得旋转后的FIM近似对角化。这种旋转是通过在参数空间中引入一个因子分解的旋转来实现的,具体来说,就是通过找到一个合适的旋转矩阵 R R R,使得旋转后的参数 θ ′ = R θ \theta' = R\theta θ′=Rθ,其中 θ \theta θ是原始参数, θ ′ \theta' θ′是旋转后的参数。
- 保持前向传播不变:在旋转参数空间的同时,需要保证网络的前向传播输出不变。这通过在网络中引入两个额外的固定层(对于全连接层是线性层,对于卷积层是1x1卷积层)来实现,使得旋转后的参数 θ ′ \theta' θ′在前向传播中的效果等同于原始参数 θ \theta θ。
- FIM的近似对角化:在旋转后的参数空间中,FIM可以近似为对角矩阵,这使得EWC算法中的正则化项更加有效,因为EWC算法假设FIM是对角的,这样可以减少计算复杂度并提高性能。
- EWC算法的应用:在旋转后的参数空间中应用EWC算法,由于FIM的近似对角化,EWC算法可以更有效地防止在新任务学习过程中对旧任务知识的遗忘。
- 实验验证:通过在多个数据集上的实验验证,文章证明了旋转后的EWC(称为R-EWC)算法在顺序任务学习中相比于标准EWC算法能够显著提高性能,并且与最新技术的比较中也显示出竞争力。
3.2 算法步骤
本文提出的算法步骤如下:
- 初始化网络参数:首先,初始化神经网络的参数 Θ 0 \Theta_0 Θ0。
- 任务学习:对于每个任务
k
k
k,执行以下步骤:
- 如果 k = 1 k=1 k=1,则使用初始参数 Θ 0 \Theta_0 Θ0直接训练网络。
- 如果 k > 1 k>1 k>1,则计算上一个任务的Fisher信息矩阵 F Θ F_{\Theta} FΘ,并使用它来更新当前任务的参数。
- 参数更新:对于每个任务
k
k
k,使用EWC算法更新参数:
- 使用任务 k k k的数据集 D k D_k Dk和上一个任务的Fisher信息矩阵 F Θ F_{\Theta} FΘ来更新参数 Θ \Theta Θ。
- 参数更新公式为:
Θ new = arg min Θ ( − log p ( Y k ∣ X k ; Θ ) + λ ∑ i F Θ 1 : K − 1 , i i ( Θ i − Θ 1 : K − 1 , i ) 2 ) \Theta_{\text{new}} = \arg\min_{\Theta} \left( -\log p(Y_k|X_k; \Theta) + \lambda \sum_{i} F_{\Theta_{1:K-1},ii} (\Theta_i - \Theta_{1:K-1,i})^2 \right) Θnew=argΘmin(−logp(Yk∣Xk;Θ)+λi∑FΘ1:K−1,ii(Θi−Θ1:K−1,i)2)
其中, λ \lambda λ是权衡新任务损失和FIM正则化项的超参数。
- 参数旋转:为了满足EWC算法对角FIM的假设,对参数进行旋转:
- 对于全连接层,通过奇异值分解(SVD)计算输入和输出的自相关矩阵,并构造旋转矩阵 U 1 U_1 U1和 U 2 U_2 U2。
- 对于卷积层,通过SVD计算输入和输出梯度的自相关矩阵,并构造旋转矩阵。
- 计算旋转后的参数 Θ ′ = U 2 ⊤ Θ U 1 ⊤ \Theta' = U_2^{\top} \Theta U_1^{\top} Θ′=U2⊤ΘU1⊤。
- 合并参数:在计算新任务的旋转参数后,合并当前参数,以便在接下来的任务中使用。
- 重复步骤:对于每个新任务,重复步骤2-5,直到所有任务学习完成。
- 评估:在每个任务学习完成后,评估网络在所有先前任务上的性能,以测试是否发生了灾难性遗忘。
4 实验结果
(1)
图1展示了在参数空间中顺序学习任务A和任务B时的最优模型参数,以及低遗忘区域。图中红线表示从任务A的已学习解到任务B的学习路径。实验结论是:通过适当的参数空间重参数化(即旋转),可以显著改善Fisher信息矩阵的对角近似,从而使Elastic Weight Consolidation(EWC)更有效地避免在顺序任务学习中忘记先前任务A的知识。
(2)
展示了全连接层权重矩阵W的重参数化过程,通过引入两个额外的固定线性层 U 1 U_1 U1和 U 2 U_2 U2来实现W的旋转,从而得到新的旋转后的权重矩阵W。实验结论是:这种重参数化方法能够在不改变网络前向传播响应的前提下,通过旋转参数空间来近似对角化Fisher信息矩阵,进而在EWC框架下更有效地防止灾难性遗忘,提高顺序任务学习的性能。
(3)
图4展示了如何通过添加两个额外的1x1卷积层作为旋转层来对卷积层的参数进行重参数化,以实现参数空间的旋转。实验结论是:类似于全连接层的处理方法,这种旋转方法可以扩展到卷积层,通过旋转卷积层参数空间来近似对角化Fisher信息矩阵,从而在执行顺序任务学习时减少灾难性遗忘,提高了模型在新任务学习时对旧任务知识的保留能力。
5 思考
(1)参数旋转的算法步骤
- 计算自相关矩阵:
- 对于全连接层,计算输入 x x x的自相关矩阵 X X X和输出梯度 ∂ L ∂ y \frac{\partial L}{\partial y} ∂y∂L的自相关矩阵 Z Z Z:
X = E x ∼ π [ x x ⊤ ] X = \mathbb{E}_{x \sim \pi}[x x^{\top}] X=Ex∼π[xx⊤]
Z = E y ∼ p [ ∂ L ∂ y ( ∂ L ∂ y ) ⊤ ] Z = \mathbb{E}_{y \sim p} \left[ \frac{\partial L}{\partial y} \left( \frac{\partial L}{\partial y} \right)^{\top} \right] Z=Ey∼p[∂y∂L(∂y∂L)⊤]
- 对于卷积层,计算输入 x x x的自相关矩阵和输出梯度 ∂ L ∂ y \frac{\partial L}{\partial y} ∂y∂L的自相关矩阵,并在空间坐标上进行平均。
- 奇异值分解(SVD):
- 对自相关矩阵 X X X和 Z Z Z进行SVD分解,得到旋转矩阵 U 1 U_1 U1、 S 1 S_1 S1、 V 1 ⊤ V_1^{\top} V1⊤和 U 2 U_2 U2、 S 2 S_2 S2、 V 2 ⊤ V_2^{\top} V2⊤:
X = U 1 S 1 V 1 ⊤ X = U_1 S_1 V_1^{\top} X=U1S1V1⊤
Z = U 2 S 2 V 2 ⊤ Z = U_2 S_2 V_2^{\top} Z=U2S2V2⊤
- 构造旋转矩阵:
- 对于全连接层,使用SVD的结果构造旋转矩阵 U 1 U_1 U1和 U 2 U_2 U2。
- 对于卷积层,构造旋转矩阵,每个卷积核的切片 K l , m K_{l,m} Kl,m都应用相同的旋转。
- 参数旋转:
- 对于全连接层,计算旋转后的权重矩阵 W ′ W' W′:
W ′ = U 2 ⊤ W U 1 ⊤ W' = U_2^{\top} W U_1^{\top} W′=U2⊤WU1⊤
- 对于卷积层,计算旋转后的卷积核切片 K l , m ′ K'_{l,m} Kl,m′:
K l , m ′ = U 2 ⊤ K l , m U 1 ⊤ K'_{l,m} = U_2^{\top} K_{l,m} U_1^{\top} Kl,m′=U2⊤Kl,mU1⊤
- 将所有旋转后的切片 K l , m ′ K'_{l,m} Kl,m′重新组合成旋转后的卷积核 K ′ K' K′。
- 集成到网络架构:
- 将旋转矩阵 U 1 U_1 U1和 U 2 U_2 U2集成到网络架构中,作为额外的固定层(对于全连接层是线性层,对于卷积层是1x1卷积层)。
- 确保这些额外层的权重在训练过程中保持固定,不进行更新。
- 前向传播等价性:
- 验证旋转前后的网络在前向传播时保持等价性,即 U 2 W ′ U 1 = W U_2 W' U_1 = W U2W′U1=W。
(2)如何对卷积层的参数进行重参数化?
- 定义卷积层参数:
设输入张量为 x ∈ R w 1 × h 1 × d 1 x \in \mathbb{R}^{w_1 \times h_1 \times d_1} x∈Rw1×h1×d1,卷积核张量为 K ∈ R w k × h k × d 1 × d 2 K \in \mathbb{R}^{w_k \times h_k \times d_1 \times d_2} K∈Rwk×hk×d1×d2,输出张量为 y ∈ R w 2 × h 2 × d 2 y \in \mathbb{R}^{w_2 \times h_2 \times d_2} y∈Rw2×h2×d2。 - 计算自相关矩阵:
- 对输入张量 x x x的每个模式3纤维 x l , m x_{l,m} xl,m计算自相关矩阵 X X X:
X = 1 w 1 h 1 ∑ l = 1 w 1 ∑ m = 1 h 1 x l , m x l , m ⊤ X = \frac{1}{w_1 h_1} \sum_{l=1}^{w_1} \sum_{m=1}^{h_1} x_{l,m} x_{l,m}^{\top} X=w1h11l=1∑w1m=1∑h1xl,mxl,m⊤
- 对输出梯度张量 ∂ L ∂ y \frac{\partial L}{\partial y} ∂y∂L的每个模式3纤维 z l , m z_{l,m} zl,m计算自相关矩阵 Z Z Z:
Z = 1 w 2 h 2 ∑ l = 1 w 2 ∑ m = 1 h 2 z l , m z l , m ⊤ Z = \frac{1}{w_2 h_2} \sum_{l=1}^{w_2} \sum_{m=1}^{h_2} z_{l,m} z_{l,m}^{\top} Z=w2h21l=1∑w2m=1∑h2zl,mzl,m⊤
- 奇异值分解(SVD):
- 对自相关矩阵 X X X和 Z Z Z进行SVD分解,得到旋转矩阵 U 1 U_1 U1、 S 1 S_1 S1、 V 1 ⊤ V_1^{\top} V1⊤和 U 2 U_2 U2、 S 2 S_2 S2、 V 2 ⊤ V_2^{\top} V2⊤:
X = U 1 S 1 V 1 ⊤ X = U_1 S_1 V_1^{\top} X=U1S1V1⊤
Z = U 2 S 2 V 2 ⊤ Z = U_2 S_2 V_2^{\top} Z=U2S2V2⊤
- 构造旋转矩阵:
- 使用SVD的结果构造旋转矩阵 U 1 U_1 U1和 U 2 U_2 U2。
- 旋转卷积核切片:
- 对于卷积核张量 K K K的每个切片 K l , m K_{l,m} Kl,m,应用旋转矩阵 U 1 U_1 U1和 U 2 U_2 U2进行旋转:
K l , m ′ = U 2 ⊤ K l , m U 1 ⊤ K'_{l,m} = U_2^{\top} K_{l,m} U_1^{\top} Kl,m′=U2⊤Kl,mU1⊤
- 重组卷积核张量:
- 将所有旋转后的切片 K l , m ′ K'_{l,m} Kl,m′重新组合成旋转后的卷积核张量 K ′ ∈ R w k × h k × d 1 × d 2 K' \in \mathbb{R}^{w_k \times h_k \times d_1 \times d_2} K′∈Rwk×hk×d1×d2。
- 集成到网络架构:
- 将旋转矩阵 U 1 U_1 U1和 U 2 U_2 U2以1x1卷积层的形式集成到网络架构中,作为额外的固定层。
- 前向传播等价性:
- 确保旋转前后的网络在前向传播时保持等价性,即 U 2 W ′ U 1 = W U_2 W' U_1 = W U2W′U1=W。