迁移学习的延伸思考

迁移学习是将一个已经训练好的多层神经网络的后几层拿掉,替换成另一个任务的输出层。已训练完的神经网络提供前面几层的权重,继承给新神经网络。在喂入新任务的数据后,神经网络只需要重头训练后几层。

把这个情形类比人类的话,相当于会开手动档车的人学习开自动档,不必重头学,方向盘、交规、观察车辆等经验继承自之前的开车经验。

迁移学习示例(图片来源于chenrudan.github.io)  

迁移学习相当于知识继承,那么我由此想到,这和真正的人类学习还差了什么?

选择!

人类遇到新任务时知道应该采用哪方面的知识,不必完全重头学起。看到新数学题知道应该回想自己以前的数学知识,开朋友的车知道应该回忆开自己车的经验。那么,如果给迁移学习在合适的地方增加一个分类器,会怎样呢?

加入了分类器层

这样,任何训练好的神经网络都可以接入这个分类器,分类器层的权重要做的事情是区分出任务应该交给哪个子神经层,就像softmax要做的事情一样。

其实,分类层不只需要加在入口处,在任何两个神经层间都有可能需要分类层。

在学车子神经层上增加了分类器

事实上,每个分类层也将是一个多层神经网络。

这样一整个大的神经网络就有点类似于人类了——知道很多知识,也知道什么时候用哪块知识。

我们可以把很多训练好的神经层组入这个大网络。

那么其实现在还有一个问题需要考虑,神经网络应该要学会自主的优化神经层,在新知识入网时,能够在适当的位置加入分类层。

期待我的继续学习。

你可能感兴趣的:(迁移学习的延伸思考)