【李宏毅机器学习笔记】5、Logistic Regression
【李宏毅机器学习笔记】6、简短介绍Deep Learning
【李宏毅机器学习笔记】7、反向传播(Backpropagation)
【李宏毅机器学习笔记】8、Tips for Training DNN
【李宏毅机器学习笔记】9、Convolutional Neural Network(CNN)
【李宏毅机器学习笔记】10、Why deep?
【李宏毅机器学习笔记】11、 Semi-supervised
【李宏毅机器学习笔记】 12、Unsupervised Learning - Linear Methods
【李宏毅机器学习笔记】 18、迁移学习(Transfer Learning)
------------------------------------------------------------------------------------------------------
【李宏毅深度强化学习】视频地址:https://www.bilibili.com/video/av10590361?p=30
课件地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html
-------------------------------------------------------------------------------------------------------
Transfer Learning
在训练中,训练数据不一定要和任务的种类是相同的。如上图,虽然是训练猫狗的分类器,但是也可以使用大象老虎的照片或者是卡通的猫和狗作为一部分训练数据。
之所以需要迁移学习是因为,在现实中,符合要求的图片相对较少。如上图,如果要分析一张医学方面的图片,但是相关的数据很少,这时可以给训练数据加进去一些猫狗等其它的图片。
Overview
source data指和任务比较不相关的data,而target data就是和任务相关的data。
拥有的数据种类不同,要使用不同的方法。
Model Fine-tuning
如果我们的target data 和source data都是有label的,那这时可以使用Model Fine-tuning。
做法是:
- 用source data作为训练数据,去训练模型。
- 将第一步训练而出的模型的参数作为此时的初始值,改成用target data去训练模型。
专业词汇:One-shot learning,指这种只有很少的target data的训练。
这个方法很简单,但是要注意,如果target data的数据非常少,需要加一些技巧(Conservative Training、Layer Transfer)来防止模型发生过拟合。
Conservative Training
如果target data很少,为了防止使用target data训练时发生过拟合,可以在训练时加一些限制(比如加一些像L1、L2之类的正则项),让两边产生的模型不要相差太远。
Layer Transfer
另一个防止使用target data训练时发生过拟合的方法,是 Layer Transfer 。
- 用source data训练出一个neural network后,把其中的一些layer的参数(黄色的箭头)复制到右边去训练。
- 用target data来调剩下的layer(橙色的箭头)
这样使用target data的训练过程就只调了部分的参数,减少了发生过拟合的风险。
当然,如果target data足够多的话,还是可以在用source data训练出模型后,用target data去微调整个模型的参数。
现在有一个问题,我们要决定那些layer应该是copy的呢?
- 语音辨识:通常保留后几层layer,因为靠近input的layer,会受不同人的声音信号所影响。而越到后面,和人的发音方法越不相关,所以可以保留。
- 图像辨识:通常保留前几层layer,因为靠近input的layer,只是识别一些简单的特征(直线、斜线等),所以不同的任务在前几层做的事情都差不多。
Layer Transfer 在 Image上的效果
X轴代表复制多少layer,Y轴代表准确度。下面数字代表上图不同的线
- 没做Layer Transfer
- (和Layer Transfer无关的实验)使用target data先训练,然后固定住前几层(多少层对应X轴)的参数。然后继续用target data去调整后面剩下的layer。可以看到固定越多层,效果越差。因为不同的layer是有互相协调的。
- (和Layer Transfer无关的实验)使用target data先训练,然后固定住前几层(多少层对应X轴)的参数。然后继续用target data去fine-tune整个模型。
- 做了Layer Transfer的结果。复制越多层,效果慢慢变差。
未完待续。。