一.为什么要用迁移学习
1.站在巨人的肩膀上:在已经上线的基础模型的效果可以接受的情况下(表明模型有效,可以分辨数据集基础特征),没有必要重复造轮子,每次都在新数据集上从零开始训练。
2.训练成本低:后期的训练成本非常低,用CPU都完全无压力;或使用GPU,可在保证效果的同时提升速度。
3.适用于在业务中不断收集数据后的训练:对于数据集涨幅不会特别大(异常bug图),且都为同类型图片特征相似。
二.几种方式
1.Transfer Learning:冻结预训练模型的全部卷积层,只训练自己定制的全连接层。
2.Extract Feature Vector:先计算出预训练模型的卷积层对所有训练和测试数据的特征向量,然后抛开预训练模型,只训练自己定制的简配版全连接网络。
3.Fine-tune:冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层),训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。
- 注:Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用之前得到的“知识”,这可以有很多方法和手段,eg:SVM,贝叶斯,CNN等。而fine-tune只是其中的一种手段,更常用于形容迁移学习的后期微调中。
三.三种方式的对比
1.第一种和第二种训练得到的模型本质上并没有什么区别,但是第二种的重训练特征学习要远远优于第一种。(舍弃第一种)