EWC目录
概述
原论文地址:https://arxiv.org/pdf/1612.00796.pdf
本博客参考了以下博客的理解
地址:https://blog.csdn.net/dhaiuda/article/details/103967676/
本博客仅是个人对此论文的理解,若有理解不当的地方欢迎大家指正。
本篇论文讲述了一种通过给权重添加正则,从而控制权重优化方向,从而达到持续学习效果的方法。其方法简单来讲分为以下三个步骤,其思想如图所示:
- 选择出对于旧任务(old task)比较重要的权重
- 对权重的重要程度进行排序
- 在优化的时候,越重要的权重改变越小,保证其在小范围内改变,不会对旧任务产生较大的影响
在图中,灰色区域时旧任务的低误差区域,白色为新任务的低误差区域。如果用旧任务的权重初始化网络,用新任务的数据进行训练的话,优化的方向如蓝色箭头所示,离开了灰色区域,代表着其网络失去了在旧任务上的性能。通过控制优化方向,使得其能够处于两个区域的交集部分,便代表其在旧任务与新任务上都有良好的性能。
具体方法为:将模型的后验概率拟合为一个高斯分布,其中均值为旧任务的权重,方差为 Fisher 信息矩阵(Fisher Information Matrix)的对角元素的倒数。方差就代表了每个权重的重要程度。
1. 基础知识
1.1 基本概念
- 灾难性遗忘(Catastrophic Forgetting):在网络顺序训练多个任务的时候,对于先前任务的重要权重无法保留。灾难性遗忘是网络结构的必然特征
- 持续学习:在顺序学习任务的时候,不忘记之前训练过的任务。根据任务A训练网络之后,再根据任务B训练同一个网络,此时对任务A进行测试,还可以维持其性能。
1.2 贝叶斯法则
P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A|B) = \frac{P(A \cap B)}{P(B)} P(A∣B)=P(B)P(A∩B)
P ( B ∣ A ) = P ( A ∩ B ) P ( A ) P(B|A) = \frac{P(A \cap B)}{P(A)} P(B∣A)=P(A)P(A∩B)
即
P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A|B)P(B)=P(B|A)P(A) P(A∣B)P(B)=P(B∣A)P(A)
所以可以得到
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) P(B|A) = P(A|B)\frac{P( B)}{P(A)} P(B∣A)=P(A∣B)P(A)P(B)
2. Elastic Weight Consolidation
2.1 参数定义
- θ \theta θ:网络的参数
- θ A ∗ \theta^*_A θA∗:对于任务A,网络训练得到的最优参数
- D D D:全体数据集
- D A D_A DA:任务 A 的数据集
- D B D_B DB:任务 B 的数据集
- F F F:Fisher 信息矩阵
- H H H:Hessian 矩阵
2.2 EWC 方法推导
对于网络来讲,给定数据集,目的是寻找一个最优的参数,即
P ( θ ∣ D ) P(\theta|D) P(θ∣D)
根据贝叶斯准则
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) P(B|A) = P(A|B)\frac{P( B)}{P(A)} P(B∣A)=P(A∣B)P(A)P(B)
可以得到最大后验概率:
P ( θ ∣ D ) = P ( D ∣ θ ) P ( θ ) P ( D ) P(\theta|D) = P(D|\theta)\frac{P( \theta)}{P(D)} P(θ∣D)=P(D∣θ)P(D)P(θ)
于是可以得到
log P ( θ ∣ D ) = log ( P ( D ∣ θ ) P ( θ ) P ( D ) ) = log P ( D ∣ θ ) + log P ( θ ) − log P ( D ) \log P(\theta|D) = \log (P(D|\theta)\frac{P( \theta)}{P(D)})=\log P(D|\theta) + \log P( \theta) - \log P(D) logP(θ∣D)=log(P(D∣θ)P(D)P(θ))=logP(D∣θ)+logP(θ)−logP(D)
也就是论文中的公式(1)
如果这是两个任务的顺序学习,旧任务为任务 A,新任务为任务 B,那么可以数据集 D D D 可以划分为 D A D_A DA 和 D B D_B DB,则
P ( θ ∣ D A , D B ) = P ( θ , D A , D B ) P ( D A , D B ) = P ( θ , D B ∣ D A ) P ( D A ) P ( D B ∣ D A ) P ( D A ) = P ( θ , D B ∣ D A ) P ( D B ∣ D A ) P(\theta|D_A,D_B)=\frac{P(\theta,D_A,D_B)}{P(D_A,D_B)}=\frac{P(\theta,D_B|D_A)P(D_A)}{P(D_B|D_A)P(D_A)}=\frac{P(\theta,D_B|D_A)}{P(D_B|D_A)} P(θ∣DA,DB)=P(DA,DB)P(θ,DA,DB)=P(DB∣DA)P(DA)P(θ,DB∣DA)P(DA)=P(DB∣DA)P(θ,DB∣DA)
又因为
P ( θ , D B ∣ D A ) = P ( θ , D A , D B ) P ( D A ) = P ( θ , D A , D B ) P ( θ , D A ) ⋅ P ( θ , D A ) P ( D A ) = P ( D B ∣ θ , D A ) P ( θ ∣ D A ) P(\theta,D_B|D_A)=\frac{P(\theta,D_A,D_B)}{P(D_A)}=\frac{P(\theta,D_A,D_B)}{P(\theta,D_A)} \cdot \frac{P(\theta,D_A)}{P(D_A)}=P(D_B|\theta,D_A)P(\theta|D_A) P(θ,DB∣DA)=P(DA)P(θ,DA,DB)=P(θ,DA)P(θ,DA,DB)⋅P(DA)P(θ,DA)=P(DB∣θ,DA)P(θ∣DA)
所以,可以得到
P ( θ ∣ D A , D B ) = P ( θ , D B ∣ D A ) P ( D B ∣ D A ) = P ( D B ∣ θ , D A ) P ( θ ∣ D A ) P ( D B ∣ D A ) P(\theta|D_A,D_B)=\frac{P(\theta,D_B|D_A)}{P(D_B|D_A)}=\frac{P(D_B|\theta,D_A)P(\theta|D_A)}{P(D_B|D_A)} P(θ∣DA,DB)=P(DB∣DA)P(θ,DB∣DA)=