持续学习:(Elastic Weight Consolidation, EWC)Overcoming Catastrophic Forgetting in Neural Network

概述

原论文地址: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(AB)=P(B)P(AB)
P ( B ∣ A ) = P ( A ∩ B ) P ( A ) P(B|A) = \frac{P(A \cap B)}{P(A)} P(BA)=P(A)P(AB)

P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A|B)P(B)=P(B|A)P(A) P(AB)P(B)=P(BA)P(A)
所以可以得到
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) P(B|A) = P(A|B)\frac{P( B)}{P(A)} P(BA)=P(AB)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(BA)=P(AB)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(DBDA)P(DA)P(θ,DBDA)P(DA)=P(DBDA)P(θ,DBDA)
又因为
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(θ,DBDA)=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(DBDA)P(θ,DBDA)=

  • 30
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值