一、迁移学习
在识别猫的场景下,我们已经训练出了不错的模型,如果要把这个模型搬到放射科诊断上,应该怎么做呢?如下的做法利用了预训练模型或者说微调(fine tuning)
要在另一个场景下做图像识别的工作,当然和识别猫不一样咯,这里的做法是把输出层的去掉,并去掉输出层的权值,然后为输出层赋予随机权重,让神经网络在放射诊断的数据上训练。
这种迁移学习有两种做法:
- 数据足够多,把每一层的参数都重新训练
- 数据不够多,重新训练最后一层网络
利用预训练模型(识别猫的神经网络)进行训练更新参数,这个过程称作微调(fine tuning)
为什么这样的迁移是有效果的呢?
因为很多低层次特征(边缘检测等)的学习有助于在放射诊断中做得很好,同时算法学习到了有关图像结构的信息(学到线条、点、曲线等)
什么时候迁移学习是有意义的呢?
迁移来源问题有大量数据,而迁移目标问题没有足够数据。比如图像识别我们的样本有10000个,但是放射诊断的数据只有100个。
如果反过来恐怕就不成立了,试想放射诊断的数据有1000个,图像识别的数据有100个,你想用这100个数据来提高1000个数据搭成模型的性能,行吗?仔细想想,你其实在用1000个猫猫狗狗的数据在做提升对吧,这些样本的价值肯定不及放射诊断的数据。所以这样的方式是不可取的。
总结一下如果从A迁移到B需要哪些条件?
- 任务A和B有相同的输入(同图片 同音频)
- A的数据远远比B多(B的数据价值更高)
- 来自A的低层次特征对学习B更有帮助
二、多任务学习
搭建一个神经网络,同时解决多个问题。如下图中目标检测问题,在同一个神经网络中同时识别多个物体。
神经网络结构图如下
多任务学习和Softmax回归不同!Softmax回归给每一幅图一个标签,而多任务学习中会有多个标签,需要判断哪些物品是出现了的(可以处理带’?'的标签)
多任务学习什么时候有意义?
- 训练的这组任务都有共享的低层次特征
- 每个任务的数据量都是相似的 (其他任务会帮助到一些任务)
- 能训练一个足够大的神经网络完成多任务(研究院Rich Carona发现多任务学习比单独神经网络单独处理任务的效率低的唯一情况就是网络不够大)
三、迁移学习VS多任务学习
- 多任务学习使用频率比迁移学习小得多
- 多任务学习使用较多的一个特例:物体检测
- 多任务学习难以找到足够多相似且数据量对等的任务