越来越懒,看的文献越来越多,做的总结越来越少,大概要写十几篇总结,寒假不知道写得完不…
主要工作
我将看过的增量学习论文建了一个github库,方便各位阅读地址
该文章由deepmind在2016年出品,其将抵抗灾难性遗忘的工作分为三步
1、选择对于旧任务而言,较为重要的权重
2、在第一步的基础上,对权重的重要性做一个排序
3、在学习新任务时,尽量使步骤二的权重不发生太大改变,即在损失函数中添加了一个正则项,重要性大的神经元权重变化大,则释加的惩罚也大
上述算法简称为EWC(elastic weight consolidation)
本文数学公式较多
motivation
在任务A上训练完毕后,得到模型,接着在任务B上训练,此时权重会发生很大改变,导致模型在任务A上的准确率下降,这便是灾难性遗忘(其实灾难性遗忘感觉像是从迁移学习中衍生出来的一个领域)
大脑的某些突触对于习得的知识巩固尤为重要,大脑会降低此类突触的可塑性,从而记忆过去习得的知识,以此为出发点,作者尝试在人工神经网络中识别对旧任务而言较为重要的神经元,并降低其权重在之后的任务训练中的改变程度
值得注意的是,识别出较为重要的神经元后,需要更进一步的给出各个神经元对于旧任务而言的重要性排序

如上图,首先假设task A与task B存在一个公共解,这个解应该是存在的(我们将task A与task B合在一起训练,得到的解便是公共解),如果我们不加限制,就和蓝箭头一样,新训练的模型在task A上的准确率不足,如果我们对每个权重施加L2惩罚,会出现绿箭头的情况,因为所有权重都不能发生太大改变,模型无法充分学习task B,EWC的目标即为红箭头,此类做法和knowledge distillation的本质基本一致,只是做法不同
method
给定数据集 D D D,我们的目标是找出一个最有可能出现的解 θ \theta θ,即目标为
l o g P ( θ ∣ D ) (1.0) log\ P(\theta|D)\tag{1.0} log P(θ∣D)(1.0)
此类目标和我们常用的极大似然估计不一致,其实这么理解也是可行的,对1.0进行变化,则有
l o g P ( θ ∣ D ) = l o g P ( θ D ) P ( D ) = l o g P ( D ∣ θ ) P ( θ ) P ( D ) = l o g P ( D ∣ θ ) + l o g P ( θ ) − l o g P ( D ) (1.1) \begin{aligned} log\ P(\theta|D)&=log \frac{P(\theta D)}{P(D)}\\ &=log \frac{P(D|\theta)P(\theta)}{P(D)}\\ &=log\ P(D|\theta)+log\ P(\theta)-log\ P(D) \tag{1.1} \end{aligned} log P(θ∣D)=logP(D)P(θD)=logP(D)P(D∣θ)P(θ)=log P(D∣θ)+log P(θ)−log P(D)(1.1)
假设 D D D由task A与task B的数据集 D A 、 D B D_A、D_B DA、DB组成,则有
l o g P ( θ ∣ D ) = l o g P ( θ ∣ D A D B ) = l o g P ( θ D A D B ) P ( D A D B ) = l o g P ( θ D B ∣ D A ) P ( D A ) P ( D B ∣ D A ) P ( D A ) = l o g P ( θ D B ∣ D A ) P ( D B ∣ D A ) = l o g P ( D B ∣ θ D A ) P ( θ ∣ D A ) P ( D B ∣ D A ) = l o g P ( D B ∣ θ ) + log P ( θ ∣ D A ) − l o g P ( D B ) (1.2) \begin{aligned} log\ P(\theta|D)=&log\ P(\theta|D_AD_B)\\ =&log\ \frac{P(\theta D_A D_B)}{P(D_AD_B)}\\ =&log\ \frac{P(\theta D_B|D_A)P(D_A)}{P(D_B|D_A)P(D_A)}\\ =&log\ \frac{P(\theta D_B|D_A)}{P(D_B|D_A)}\\ =&log\ \frac{P(D_B|\theta D_A)P(\theta|D_A)}{P(D_B|D_A)}\\ =&log\ P(D_B|\theta)+\log P(\theta|D_A)-log P(D_B) \end{aligned}\tag {1.2} log P(θ∣D)======log P(θ∣DADB)log P(DADB)P(θDADB)log P(DB∣DA)P(DA)P(θDB∣DA)P(DA)log P(DB∣DA)P(θDB∣DA)log P(DB∣DA)P(DB∣θDA)P(θ∣DA)log P(DB∣θ)+logP(θ∣DA)−logP(DB)(1.2)
由于 D A D_A DA与 D B D_B DB相互独立,则有
P ( D B ∣ θ D A ) = P ( D B ∣ θ ) P ( D B ∣ D A ) = P ( D B ) \begin{aligned} P(D_B|\theta D_A)&=P(D_B|\theta)\\ P(D_B|D_A)&=P(D_B) \end{aligned} P(DB∣θDA)P(DB∣DA)=P(DB∣θ)=P(DB)
我也不知道论文给出式1.1的意图,式1.2是全文的核心
l o g P ( D B ∣ θ ) log\ P(D_B|\theta) log P(DB∣θ)

本文深入解析EWC(弹性权重巩固)算法,一种防止神经网络在连续学习任务中出现灾难性遗忘的方法。通过数学公式和原理阐述,介绍了如何识别并保护重要神经元权重,确保模型在学习新任务时不遗忘旧知识。

8016

被折叠的 条评论
为什么被折叠?



