持续学习 (continual learning/ life-long learning)略讲
一、总结
一句话总结:
可塑性:如何能把之前任务的经验用上,使得更快更好的学习当前任务;
稳定性:学习当前任务时,不会忘记之前已经学会的任务。
用更专业的术语来讲就是可塑性(学习新知识的能力)和稳定性(旧知识的记忆能力)。
1、神经网络遗忘问题?
神经网络不同于人类,由于其自身的设计天然存在灾难性遗忘问题。当学习一个新任务的时候,需要更新网络中的参数,但是上一个任务提取出来的知识也是储存在这些参数上的呀。
于是,神经网络在学习新任务的时候,旧任务的知识就会被覆盖。所以如果你试图教阿法狗去打斗地主,那么当它能与人一战的时候,它就再也不是柯洁的对手了。
2、神经网络 新任务和旧任务 关系?
Input reformatting:任务目标一样,只改变数据输入格式。类比不同语言的学习,意大利语和西班牙语非常接近,有相似的语法结构。最大的不同是输入单词的形式,比如你好,意大利语是buon giorno,西班牙语是Hola。如果神经网络能学会从buon giorno映射到Hola,就能轻松的基于意大利语学习西班牙语
Similar tasks:任务目标不一致,但是相似。这个就非常好理解啦,符合我们对持续学习最自然的认知。用对不同商品评价的情感分类作为新旧两个任务,比如旧任务是对手机评论的情感分类,新任务是对扫地机器人评论的情感分类( •̀ ω •́ )y。
Dissimilar tasks:任务目标不相似。设定旧任务为评论的情感分类,新任务是MNIST数字识别,完全风马牛不相及的两个任务。
二、持续学习 (continual learning/ life-long learning)略讲
博客对应课程的视频位置:
问题定义
我们人类有能够将一个任务的知识用到另一个任务上的能力,学习后一个任务时也不会忘记如何做前一个任务。这种能力叫持续学习 (continual learning/ life-long learning) 。而这个能力归结起来主要有两个问题:
-
如何能把之前任务的经验用上,使得更快更好的学习当前任务;
-
学习当前任务时,不会忘记之前已经学会的任务。
用更专业的术语来讲就是可塑性(学习新知识的能力)和稳定性(旧知识的记忆能力)。
可是,神经网络不同于人类,由于其自身的设计天然存在灾难性遗忘问题。当学习一个新任务的时候,需要更新网络中的参数,但是上一个任务提取出来的知识也是储存在这些参数上的呀。于是,神经网络在学习新任务的时候,旧任务的知识就会被覆盖。所以如果你试图教阿法狗去打斗地主,那么当它能与人一战的时候,它就再也不是柯洁的对手了。
用已有的斧头解决问题
神经网络算法的灾难性遗忘在黑早黑早以前就有研究关注这个问题了,众所周知(最近发现这个词超好用诶)的大佬Goodfellow在2013年的时候针对训练方法(是否使用dropout)和不同的激活函数(logistic sigmoid/ rectified linear/ LWTA/ Maxout)对灾难性遗忘问题的影响做了详尽的实验分析。
那年的实验
让神经网络学习两个任务(新任务和旧任务),两个任务的关系有三种:
-
Input reformatting:任务目标一样,只改变数据输入格式。类比不同语言的学习,意大利语和西班牙语非常接近,有相似的语法结构。最大的不同是输入单词的形式,比如你好,意大利语是buon giorno,西班牙语是Hola。如果神经网络能学会从buon giorno映射到Hola,就能轻松的基于意大利语学习西班牙语啦~~基于这个假设,作者以MNIST数字识别为例,旧任务是原始的数字分类任务,新任务是将32*32像素打乱的数字分类任务。
-
Similar tasks:任务目标不一致,但是相似。这个就非常好理解啦,符合我们对持续学习最自然的认知。用对不同商品评价的情感分类作为新旧两个任务,比如旧任务是对手机评论的情感分类,新任务是对扫地机器人评论的情感分类( •̀ ω •́ )y。
-
Dissimilar tasks:任务目标不相似。设定旧任务为评论的情感分类,新任务是MNIST数字识别,完全风马牛不相及的两个任务。
对每一个task pair,我们有2×4组实验设置(是否加dropout和四种不同的激活函数)。针对每一个设置,跑25组实验(随机初始化超参数),记录新旧两个实验的test error。