迁移学习(Transfer learning)
来自吴恩达深度学习系列视频第三课:结构化机器学习。
吴恩达在讲授迁移学习时用了引入的方法来介绍,和你直接去查迁移学习的概念可能有些不一样。这只是角度不同,它们描述的都是同一个概念。
迁移学习
如图上半部分所示,它原本是一个训练图像识别的网络,该网络经过大量的数据的训练已经得到了一组参数。
现在我们去掉其最后一层(仅有一个神经元,可能使用的是logistic regression),添加一个新的神经元。然后用radiology diagnosis的数据(x,y)(x表示图像,y表示诊断)喂给它,希望它能快速成为一个解决radiology diagnosis问题的深度网络。这就是迁移学习的一个简单示例,对之前网络所做的工作称为预训练(pre-training),迁移之后所做的工作称为微调fine-tuning(博主个人觉得这个应该叫做后微调,与预训练相对)。
如图上半部分,是另外一个领域的例子,这个例子说明,你可以对网络的后半部分结构做更大的改动,比如删掉最后一层后增加三层,更改倒数第二层、第三层等等。
为什么可以进行迁移学习
原字幕:
And the reason this can be helpful is that a lot of low level features such as detecting edges, detecting curves, detecting positive objects. Learning from that, from a very large image recognition data set, might help your learning algorithm do better in radiology diagnosis. It’s just learned a lot about the structure and the nature of how images look like and some of that knowledge will be useful. So having learned to recognize images, it might have learned enough about just parts of different images look like, that knowledge about lines, dots,curves, and so on, maybe small parts of objects that knowledge could help your radiology diagnosis network learn a bit faster or learn with less data.
迁移学习在图像识别部分应用的比较多,因为检测图像的底层特征比如边缘检测、曲线检测、阳性检测等等其实是一样的过程。预训练的网络已经在很大的数据集里针对这些底层特征做好了训练,所以它能够对迁移后的学习提供帮助。预训练的网络学习了大量关于图像结构和本质特性等有用的知识。它已经学习了足够多的如何识别图像的知识,包括图像的不同部分看起来是怎样的,其中关于点、线、曲线的知识以及物体的某些小部分,这些都可以帮助radiology diagnosis网络以更小的数据获得更快的学习速度。
什么时候使用迁移学习
- 任务A和B拥有相同的输入(如例子 都是图像)
- 你有关于任务A的大量的数据,但针对任务B只有一点点数据
- 从任务A里面习得的底层特征对任务B的学习是用帮助的