目录
一、迁移学习的基本思路、原理和示例
1、基本思路
2、简单原理
3、皮肤癌示例
二、迁移学习的具体实施
2.1 迁移学习的应用条件
2.2 迁移学习应用的4种场景
1、小数据集,相似数据
2、小数据集,不同的数据
3、大型数据集,相似数据
4、大型数据集,不同的数据
一、迁移学习的基本思路、原理和示例
1、基本思路
可以使用在ImageNet中实验过的CNN运用到实际应用中。
2、简单原理
最后的层会比较具体化,有小鸟,就会有检测小鸟的过滤器;有轮子,就会有检测轮子的过滤器。
那么,我们保留前面的层,仅添加新的层并训练即可。当然,你的训练集较小,并且与ImageNet越相似,则效果越好。
3、迁移学习示例:诊断皮肤癌
斯坦福大学团队,利用迁移学习方法,开发了诊断皮肤癌的CNN。
利用在ImageNet上训练好的Inception。
(1)
(2)
(3)
训练时,除了最后添加的层,其他层的参数都采用已经训练好的参数做为初始值,并在训练中不断优化参数。
这种“具有不同的最后分类层级,并且细调网络参数的方法”对于数据集很大,且与ImageNet相差很大,效果很好。
二、迁移学习的具体实施
2.1、迁移学习的应用条件
迁移学习取决于以下两个条件:
- 新数据集的大小
- 新数据集与原始数据集的相似程度
使用迁移学习的方法将各不相同。有以下四大主要情形:
- 新数据集很小,新数据与原始数据相似
- 新数据集很小,新数据不同于原始训练数据
- 新数据集很大,新数据与原始训练数据相似
- 新数据集很大,新数据不同于原始训练数据
演示网络包含:3个卷积层和3个完全连接层。
第一层检测边缘;第二层检测形状;第三层检测更高级的特征。
2.2 迁移学习应用的4种场景
1、小数据集,相似数据
- 删除神经网络的最后层级
- 添加一个新的完全连接层,与新数据集中的类别数量相匹配
- 随机化设置新的完全连接层的权重;冻结预先训练过的网络中的所有权重
- 训练该网络以更新新连接层的权重
为了防止过拟合,保留原来网络层的权重不变。由于数据集相似,因此,更高级别的特征也相似,则包含高级别特征检测的层也保留。
2、小数据集,不同的数据
- 将靠近网络开头的大部分预先训练过的层级删掉
- 向剩下的预先训练过的层级添加新的完全连接层,并与新数据集的类别数量相匹配
- 随机化设置新的完全连接层的权重;冻结预先训练过的网络中的所有权重
- 训练该网络以更新新连接层的权重
由于数据集比较小,保留原来层的参数,用来防止过拟合。另外,数据集不同,因此更高级的特征不同,则不用保留更高级的层。
3、大型数据库,相似数据
- 删掉最后的完全连接层,并替换成与新数据集中的类别数量相匹配的层级
- 随机地初始化新的完全连接层的权重
- 使用预先训练过的权重初始化剩下的权重
- 重新训练整个神经网络
大数据集时,过拟合问题不严重,因此可以重新训练权重。因为数据集类似,则更高级特征也类似,因此整个网络都可以用。
4、大型数据库,不同的数据
- 删掉最后的完全连接层,并替换成与新数据集中的类别数量相匹配的层级
- 使用随机初始化的权重重新训练网络
- 或者,你可以采用和“大型相似数据”情形的同一策略
可以随机初始化权重训练,也可以把之前的权重做为初值进行训练,加快训练速度。
参考:
1、论文How transferable are features in deep neuralnetworks?:系统地分析了预先训练过的 CNN 中的特征的可迁移性
2、论文Dermatologist-level classification of skin cancer with deep neural networks:Sebastian Thrun 的癌症检测 CNN