简述迁移学习(Transfer Learning)

  • 时间:
  • 浏览:
  • 来源:互联网

目录

 

定义

变形

例子

总结


定义

迁移学习(Transfer learning) 顾名思义就是把已训练好的模型(预训练模型)参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务都是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习。

又,《深度学习》第526页对于迁移学习的定义:迁移学习和域适应指的是在一种环境中学到的知识被用在另一个领域中来提高它的泛化性能。

变形

其中,实现迁移学习有以下三种手段:

  1. Transfer Learning:冻结预训练模型的全部卷积层,只训练自己定制的全连接层。
  2. Extract Feature Vector:先计算出预训练模型的卷积层对所有训练和测试数据的特征向量,然后抛开预训练模型,只训练自己定制的简配版全连接网络。
  3. Fine-tuning:冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层,因为这些层保留了大量底层信息)甚至不冻结任何网络层,训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。

 

迁移学习与多任务学习以及概念飘移这些问题相关,它不是一个专门的机器学习领域。

然而,迁移学习在某些深度学习问题中是非常受欢迎的,例如在具有大量训练深度模型所需的资源或者具有大量的用来预训练模型的数据集的情况。仅在第一个任务中的深度模型特征是泛化特征的时候,迁移学习才会起作用。

深度学习中的这种迁移被称作归纳迁移。就是通过使用一个适用于不同但是相关的任务的模型,以一种有利的方式缩小可能模型的搜索范围。

 

例子

举个例子,假如你要建立一个猫咪检测器,用来检测自己的宠物猫。如网络上的Tigger,是一个常见的猫的名字,Misty也是比较常见的猫名字。假设你的两只猫叫 Tigger和Misty,或者两者都不是,这是一个三分类问题。忽略两只猫同时出现在一张图片里的情况。如果没有足够的Tigger和Misty的图片(即训练集很小),我们可以从网上下载一些神经网络的开源实现,同时把权重下下来。去掉原有的Softmax层,创建自己Softmax单元用来输出三个类别。

通过使用其他人预训练的权重,即使只有一个小的数据集,很可能得到很好的性能。

总结

理想情况下,在一个成功的迁移学习应用中,将会获得以下益处:

  1. 更高的起点:在微调之前,源模型的初始性能要比不使用迁移学习来的高。
  2. 更高的斜率:在训练的过程中源模型提升的速率要比不使用迁移学习来得快。
  3. 更高的渐进:训练得到的模型的收敛性能要比不使用迁移学习更好。

本文链接http://www.dzjqx.cn/news/show-617210.html