YouTube视频 什么时候需要用到transfer learning? 当我们在训练CNN时,已经找了很多数据集,也进行了数据增强等操作,但是得到的数据量还是太少,不足以满足我们训练网络的要求,这个时候,我们就可以进行transfer learning。 怎么进行transfer learning 需要借用别人已经训练好的模型,利用他们网络中的参数,在此基础上修改我们自己的网络。 4种不同的情况 1、若我们自己得到的数据量很少(small dataset),且能够找到和我们的训练任务差不多的别人的模型。此时,我们需要将我们的模型保持和别人训练好的模型大部分一致,只改变最后一个线性分类层; 2、若数据量很少,且无法找到匹配的任务,只能在数据增强上想更好的办法; 3、若数据量很大,又有训练好的匹配的模型:只要微调别人模型中的一部分层; 4、若数据量很大,但是没有别人训练好的模型:可以做两种尝试:第一,直接自己初始化参数开始训练;第二,用别人的模型进行微调,两者对比,挑选更适合的。
tip:如果不用transfer learning,我们自己训练网络的时候的学习率可能是0.01;但一旦借助了别人的模型进行transfer learning,这时候的学习率要小一些,可能变成0.001或更小。(因为既然是微调,就不能大幅度地改变原始模型的权重。) 去哪找别人训练好的模型呢? 在caffe深度学习框架下的model zoo中,可以找到别人训练好的模型,且一般都是受到认可的。 总结: transfer learning最有价值的工作就是能够使得网络收敛更快,原来可能需要一天的时间,现在只需要几个小时。