Life long learning:训练同一个大脑,学不同的任务(对比多任务学习,没有足够的地方存储过去的数据)
三个要点:
机器先学a在学b就会忘记a,但是同时学a和b就能都记得不错,称之为catastrophic forgetting
第一条:解决思路
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