迁移学习

来源:互联网 发布:帝国cms仿bt天堂源码 编辑:程序博客网 时间:2024/06/05 07:19

 

Introduction

 

实际应用过程中很少有人从随机初始化权重开始训练网络,一是训练起来费时间,二是很少有人能够获得足够大是数据集,比如ImageNet(1.2million images with 100 categories) 这样数量级的数据库。因此实际应用过程中经常首先用ImageNet数据集上训练好的weights直接迁移到我们的任务中,这些权重或者作为我们继续优化的初始权重,或者不再继续优化直接作为特征提取部分将提取的特征应用于分类任务。Transfer Learning一般有下面几种方式:

ConvNetas fixed feature extractor. 首先选择一个在ImageNet上训练好的ConvNet, 然后去掉全连接层(比如在ImageNet上的分类结果有1000个class scores),然后把剩下的部分作为一个featureextractor应用在新的数据集上。比如在AlexNet上,对于每一张照片,我们最终就可以得到一个4096维的向量,这种特征通常叫做CNNcodes。如果这些codes在ConvNet上经过了ReLU处理,那在我们得到这些codes之后也需要这样处理(很有必要)。然后就可以使用我们得到的特征向量训练个线性分类器处理新的数据(比如Linear or Softmax classifier)。

Fine-tuningthe ConvNet. 第二种策略不仅要去除并且重新训练分类器,而且要微调(fine-tune)之前训练的网络参数。可以是fine-tune所有层的权重,也可以是微调深层的权重,而不动最开始几层的权重,这些取决于新数据库和训练数据库之间的关系。一般来说,底层的卷积得到的更多是纹理和颜色块信息,而深层的卷积更多的反应不同数据库中的类别细节。

 

When and how to fine-tune

 

       一般来说,决定我们使用什么Transfer Learning策略主要取决于两个主要特征,一个是新数据库的规模的大小,另一个是新数据库和original dataset的相似程度。下面说一下主要的四种common rules of thumb (经验性的策略):

 

New dataset is small andsimilar to the original dataset. 由于数据集过小,因此不适合使用fine-tune权重,以避免overfitting。同时由于两个数据集比较像,因此可以直接使用它的CNN codes。因此最好的策略就是使用CNN codes训练一个线性分类器进行分类。

New dataset is large andsimilar to the original dataset. 因为数据量够大,因此直接在整个网络上进行fine-tune是比较好的办法。

New dataset is small butvery different from the original dataset. 小数据集最好使用线性分类器。又因为两个数据集差别很大,而深层卷积得到的特征更利于特定数据集的分类,因此最好使用线性分类器,同时卷积的不要过深,应该在适当的位置停下来。

New dataset is large and very different from the original dataset. 数据集够大还是fine-tune整个网络比较好。

0 0
原创粉丝点击