什么是/为什么要迁移学习?
迁移学习(Transfer learning) 顾名思义就是就是把已学训练好的模型参数迁移到新的模型来帮助新模型训练。考虑到大部分数据或任务是存在相关性的,所以通过迁移学习我们可以将已经学到的模型参数(也可理解为模型学到的知识)通过某种方式来分享给新模型从而加快并优化模型的学习效率不用像大多数网络那样从零学习(starting from scratch,tabula rasa)。
1.训练集很小的情况下
在进行tigga和misty以及neither的三分类问题时(自己拥有的数据集数量比较少的情况)。可以从网络上down一套代码以及将其训练好的模型参数保存下来(例如对Imagenet数据集的分类网络:拥有1000的分类任务)。此时将前面的层都冻结。这个时候只需要训练最后的softmax层就行。此时你很有可能获得一个非常好的训练结果,即使你只有很小的数据集的情况下。
2.有个更大的标定数据集
这种情况下应该冻结更少的层,比如只冻结前一部分(原文是说只把这些层冻结),然后训练后面的层。在这种情况下需要构建自己的输出单元。在这里你可以原网络的参数作为初始参数训练后面层,也可以直接去掉这几层,换成自己构建的隐藏单元。
在此处存在一个规律:如果你有越多的数据,你需要冻结的层数越少。
3.有大量的标定数据集
用开源的网络和他的权重把整个的当作初始化,然后训练整个网络,需要将softmax进行更改。
实际使用
未完待续