一.迁移学习
1.问题
深度学习越来越靠计算与数据驱动,顶会的模型动不动就是几百万标注数据集、异构集群分布式服务框架,像DenseNet、TASKONOMY这种规模真的是可望不可即,没有资源支持就只能在深度学习支路上偏跑。。。但是好在已经训练好的模型的参数,往往经过简单的调整和训练,就可以很好的迁移到其他不同的数据集上,同时也无需大量的算力支撑,便能在短时间内训练得出满意的效果。这便是迁移学习。今年cvpr最佳论文TASKONOMY就是迁移学习。
2.形式
迁移形式主要分为三种:
样本迁移:实际应用中,很难收集到大量的样本数据。而且收集的过程需要消耗大量的人力物力,所以一般情况下来说,往往是完成问题A的训练出的模型有更完善的数据,而问题B的数据量偏小。将任务A中部分适合任务B的数据抽取出来,与其它数据一起针对任务B进行训练。
特征迁移:通过使用之前在大数据集上经过训练的预训练模型,我们可以直接使用相应的结构和权重,将它们应用到我们正在面对的问题上。例如识别小轿车的神经网络中,用于表示车轮车窗的网络参数,可以直接迁移到卡车识别。
模型迁移:在具体操作的时候,将一个预先训练好的神经网络,用新数据集重新训练网络中的一小部分,通常是最后一层或者几层全连接层,卷积层一般不动。从而完成在新数据集上建立的算法任务,即完成了神经网络的迁移学习。我们可以保留训练好的Inception-v3模型中所有的参数,只替换最后一层全连接层。在最后一层全连接层之前的网络称之为瓶颈层(bottleneck)。我们可以理解成将前面固定不动的部分作为一个特征提取器,而后面训练的层作为分类器。类似特征迁移,整个模型的网络结构都被迁移。比如将Inception-V3卷积神经网络模型,迁移到其他图像识别任务。
3.优势
1.更少的标注数据;
2.更短的训练时间;
3.更快的收敛速度;
4.更精准的权重参数。
4.方法
TensorFlow实现Inception V3迁移学习(网上教程很多)