本节内容综述我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
- 本节课
杨舒涵
讲解。 - 第一部分通过生物现象 `赫布理论 ,引出机器学习相关技术。
- 接下来,是几个文章的报告,首先是知识蒸馏。
- 接着是 Memory Aware Synapses: Learning what (not) to forget (MAS) ,第一个无监督的 LLL 方法。
- 接下来 Learning without Forgetting (LwF) ,第一个把知识蒸馏用在 LLL 的文章。
- Large Scale Incremental Learning (BiC),在类别很多时,如何平衡新老任务。
- Few-Shot Class-Incremental Learning (FSCIL) ,也是为了解决 new/old class imbalance ,其作用在小样本上。以 Neural gas (NG) 取代了知识蒸馏;应用了拓扑学和生理神经相关的 Hebbian learning 作为出发点,提出 TOpology-Preserving knowledge InCrementer (TOPIC) 架构。
- 最后探讨结论 LLL Nowadays & Future(?) 。目前还是主要用在学术界。
文章目录
- 本节内容综述
- 小细节
Outline
- Hebbian Theory
-
- Long-term Potentiation (LTP)
-
- Hebbian Theory
-
- Competitive Hebbian Learning
- Knowledge Distillation
- Memory Aware Synapses: Learning what (not) to forget (MAS)
- Learning without Forgetting (LwF)
- Large Scale Incremental Learning (BiC)
- Few-Shot Class-Incremental Learning (FSCIL)
- LLL Nowadays & Future(?)
Hebbian Theory
Long-term Potentiation (LTP)
如上,Long-term Potentiation 是一种神经反应可塑的现象,是生物学概念。
Hebbian Theory
因此,由赫布理论,得到神经网络权重上的启发。
Competitive Hebbian Learning
由此,引出 Competitive Hebbian Learning 。
Knowledge Distillation
https://arxiv.org/pdf/1503.02531.pdf
Problem Statement
为什么提出“知识蒸馏”?
- 训练 model 和使用 model 的需求不同、
- model compression
What is “knowledge”?
这里理解为,学习把 input vector
映射到 output vector
。
一般用
T
T
T 蒸馏温度来处理分布:
q
i
=
e
z
i
/
T
∑
j
e
z
j
/
T
q_i = \frac{e^{z_i/T}}{\sum_j e^{z_j /T}}
qi=∑jezj/Tezi/T
用大 model 的 soft targets 当初训练小 model 的 ground truth 。
最后评判时,需要把小 model 在 soft targets 上训练后的交叉熵,与 hard targets 训练后的交叉熵的 1 / T 2 1 / T^2 1/T2 倍,得到 overall loss 。这么做,是因为 soft targets 生成过程中蒸馏法求导函数会产生 1 / T 2 1/T^2 1/T2 ;而为了保持两个 loss 的影响接近,要如此处理。
Why knowledge distillation works?
可以想象成 T T T 越大, class probabilities 就越接近,使训练上更加严格,而切换回一般的 softmax 就回归简单模式,效果更佳。
Memory Aware Synapses: Learning what (not) to forget (MAS)
如上,在目标中增加一项,防止参数变动过大。
其达成的目标如上。
Concepts
如上,我们希望模型自己学会
各个参数是否敏感。
最终,其
Ω
\Omega
Ω公式推导如上。
Learned function v.s. Loss
如上,在“重要性”与损失值相关时,我们可以通过真是标签来查看差别。
但是这样的话,就没法新增无标签数据来训练。
如果我们自己学 learn function (与loss的改变有关),则可以新增无标签数据参与训练。可以观察两次跑出的 learn function 的值的差异。
Connection to Hebbian Learning
接下来介绍,这个方法与 Hebbian Learning 的关系。
在如上的一个 ReLU 神经元中的运算。
继续进行推导,发现其结果就是赫布学习的公式。
Contribution
贡献有二:
- 达到了使用无标签数据的目标;
- 展示了与赫布学习的关系。
在当时,效果超过 state-of-art 。
Learning without Forgetting (LwF)
Original Model
如上是一个 AlexNet,如果新增分类任务,则参数会增加。此时可以选择全部重新训练的方法。
此外,还可以使用如下的微调方法。
Fine-tuning
如上,对全连接层的参数进行微调,实验称为 Finetune-FC 。
但是,会在就认为变现较差。
Feature Extraction
如上,只训练新增内容。但是因为之前的结构不变,导致不能提取新增任务独有的特征。其在新任务上表现不好。
Joint Training
对所有参数、所有新旧任务进行学习。但是这样成本高、参数量大。
Learning without Forgetting
如上,先固定原有参数,然后使用新任务的数据训练新增层;之后再联合训练所有参数。好处是只需要新任务的数据集。
Loss Function
如上,考虑两个 loss 值:
- 基本的新任务的分类交叉熵值;
- 引入知识蒸馏思想的损失值。
LwF Algorithm
如上,我们并没有老任务的数据集,但是会通过网络先得出一些数据对。
Large Scale Incremental Learning (BiC)
如上,新旧任务样本数严重失衡。而训练效果往往和样本数量有关,某一类数据多,则在其上的正确率较大。而类别数目多,也会导致效果下降。
Hypothesis
其做了一个假设,即最后一层全连接层会偏袒 new classes 。
BiC(Bias correction) Method
如上,其在得到 logits 前,做了一个 bias 纠正,希望其 new classes 与 old classes 变得平衡。
Stage 1
如上,可以理解为想办法压缩之前的网络的结果。
Stage 2
如上,来最佳化 bias parameters 。
Results
如上,BiC 在增加类别后,效果没有明显变差。
如上,对于 baseline-1 -2 其会很偏重于新的 classes (在其上效果很好)。而 BiC 避免了这个问题。
Few-Shot Class-Incremental Learning (FSCIL)
大致概念如上,在 (a)-(b) 中,我们希望原有的结构不改变(因为结构与记忆相关);在 (d)-(f) 中,我们希望新 node 会自动调整,让模型接近 ground truth 。
LLL Nowadays & Future(?)
目前,大公司为了好的效果,一般不用 LLL ,但学术界有所研究。
还是有研究的必要的。