life long learning概述 学习笔记

Life long learning:训练同一个大脑,学不同的任务(对比多任务学习,没有足够的地方存储过去的数据)

 

三个要点:

  1. knowledge retention记住学习的知识,not intransigence不能固执不改变。

机器先学a在学b就会忘记a,但是同时学a和b就能都记得不错,称之为catastrophic forgetting

  1. knowledge transfer
  2. model expansion,but parameter efficiency

 

 

第一条:解决思路

elastic weight consolidation(EWC):保留过去任务中重要的参数不变

使用保卫参数记录每个参数的重要程度,并且把保卫参数和参数变化量的乘积加进loss函数

求loss对参数的二阶导数来计算保卫参数

经典变式:synaptic intelligence;memory aware synapses(不需要数据标签)

 

Generating data:训练一个 generator,能生成过去的任务数据,使life long learning升级为multi task learning问题

Arxiv 1705.08690;1711.10563

 

Adding new classes:不同任务需要的网络结构不同,有时需要增加分类数

Learning without forgetting 1606.09282

Incremental classifier and representation learning 1611.07725

 

第二条:life long learning比迁移学习要求更高,不仅在目标域表现要好,在源域表现也要好

评价指标:Rij是学完第i个任务后在第j个任务上的表现,可列出表格

Accuracy是学完task k后机器在学过的所有任务上表现的平均数

Backward transfer学完task k后机器在每一个学过的task上的表现减去刚学那个任务时的表现,求平均,表示这个机器记住了多少过去的知识。(有的算法确实能做到这个指标是正的)

Forward transfer学到task k-1后在task k上的表现,减去啥都没学时在task k 上的表现,对所有k求平均,表示别的task对未学到的task有多少启发。

 

 

Gradient episodic memory方法

每个task都存下一小笔资料,梯度下降时,计算参数在各个任务上的gradient,调整本任务的梯度下降方向,使其与在原来任务上的梯度內积为正。

 

 

第三条:模型自动扩张,有效的容纳更多知识

Progressive neural networks 1606.04671

每个task都训练一个model,固定下来,当前task的内容输入每一个曾经的model,在当前训练的model每一层都引入过去所有model对应层的输出。(实际操作存疑,大量数据警告)

Expert gate 1611.06194

训练一个detector,识别新任务和哪个最像,把对应旧任务的model当成新任务初始化

Net2net 1511.05641

在新task上training loss居高不下时,引入新neuro,参数上相当于把原来的neuro平均拆分,然后加一个小小的noise使其有差异。

 

 

 

 

 

 

Future:

Curriculum learning:调整task 学习顺序

2018cvpr taskonomy

你可能感兴趣的:(神经网络,深度学习)