视频链接:李宏毅机器学习(2016)_演讲•公开课_科技_bilibili_哔哩哔哩
课程资源:Hung-yi Lee
课程相关PPT已经打包命名好了:链接:https://pan.baidu.com/s/1c3Jyh6S 密码:77u5
我的第十六讲笔记:李宏毅机器学习2016 第十六讲 生成对抗网络 GAN
Transfer Learning
本章主要讲述了迁移学习的原理,以及各种可能出现的情况及对应的方法。
1.迁移学习
在现实生活中,我们要获取带标签的与任务直接相关的数据可能是比较难的,其数据量会比较少,不充足;但是那些与任务无直接相关的数据却是能够比较容易获取的,数据量比较大;
迁移学习指的是把已经学好的模型参数迁移到新的模型来帮助新模型进行训练。
将与任务直接相关的数据称为Target Data,将与任务不是直接相关的数据称为Source Data
根据Target Data和Source Data是否带标签可将迁移学习分为不同种类。
2.模型微调(Model Fine-tuning)
Fine-tuning适用于Target Data和Source Data都带标签的情况。但是Target Data的数据量是非常少的。该方法的思想是使用Source Data训练模型,然后用Target Data对模型进行微调(Fine-tuning),因为Target Data非常有限,因此需要注意避免出现过拟合。
方法①Conservative Learning
利用Source data训练出的模型,初始化将用Target data训练的模型,并使得两个模型的参数尽可能相近。新旧模型差别不要太大,需要加限制。
方法②Layer Transfer
这是一种非常常见的方法,将训练好的模型的某些层迁移到将用Target Data训练的模型。
为了避免过拟合可以只训练不是直接迁移来的网络层,如果说有足够的数据的话,可以直接对网络进行微调。
常见问题哪些层应该被迁移呢?
对于不同的任务,应该分别处理。对于语音问题,通常迁移后面几层;对于图像问题,通常迁移前面几层。
3.多任务学习(Multitask Learning)
Fine-tuning方法只在乎在target data数据上表现得好不好,Multitask Learning(多任务学习)则需在Source Data和Target Data表现得都好。
多任务学习适用于那些任务相像相似的情况。此方法将任务分开来训练,共享某些层,在最后的层一定是分开来训练的。
在不同语音识别上的应用。即使直觉上中文和别的语言可能有很大的不同,但是其实这样的做法效果时非常好的。
4.领域对抗训练(Domain-adversarial training)
Domain-adversarial training适用于Source Data带标签,而Target Data是不带标签的情况。其主要思想如图所示。主要组成是特征抽取器(feature extractor)、类预测器(Label predictor)和领域分类器(Domain Classifier)。
对于特征抽取器来说,要最大化标签分类的准确度和最小化领域分类的准确度,类预测器则要最大化标签分类准确度,而领域分类器要最大化领域分类的准确度。这其中就存在领域对抗。
实现方法如下图。
在领域分类器前加一个梯度反转层(gradient reversal layer)。
5.Zero-shot learning
Zero-shot learning适用于Source Data带标签,而Target Data是不带标签的情况。
其主要思想是通过其属性来表达每一个类。
训练时尽可能找到充足的属性能够一一对应,上图属性例如是否带毛,有没有四条腿等等。
测试时就可以找到拥有最多相似属性的类。
实现方法可以将数据和属性都映射到一个相同的向量空间中,映射函数f和g都可以通过神经网络进行训练,需要保证的是一张图经过f映射结果和其属性经过g映射的结果在向量空间的结果要尽可能相近。当出现新的测试数据就可以直接将其用f和g进行映射,找到最相似的。
6.Self-taught Learning
Self-taught Learning适用于Target Data带标签而Source Data不带标签的情况。
7.总结
本章主要讲解了模型微调(Model Fine-tuning)、多任务学习(Multitask Learning)、领域对抗训练(Domain-adversarial training)、Zero-shot learning、Self-taught Learning等多种迁移学习的方法及其具体的适用情况。