迁移学习是将一个已经训练好的多层神经网络的后几层拿掉,替换成另一个任务的输出层。已训练完的神经网络提供前面几层的权重,继承给新神经网络。在喂入新任务的数据后,神经网络只需要重头训练后几层。
把这个情形类比人类的话,相当于会开手动档车的人学习开自动档,不必重头学,方向盘、交规、观察车辆等经验继承自之前的开车经验。
迁移学习相当于知识继承,那么我由此想到,这和真正的人类学习还差了什么?
选择!
人类遇到新任务时知道应该采用哪方面的知识,不必完全重头学起。看到新数学题知道应该回想自己以前的数学知识,开朋友的车知道应该回忆开自己车的经验。那么,如果给迁移学习在合适的地方增加一个分类器,会怎样呢?
这样,任何训练好的神经网络都可以接入这个分类器,分类器层的权重要做的事情是区分出任务应该交给哪个子神经层,就像softmax要做的事情一样。
其实,分类层不只需要加在入口处,在任何两个神经层间都有可能需要分类层。
事实上,每个分类层也将是一个多层神经网络。
这样一整个大的神经网络就有点类似于人类了——知道很多知识,也知道什么时候用哪块知识。
我们可以把很多训练好的神经层组入这个大网络。
那么其实现在还有一个问题需要考虑,神经网络应该要学会自主的优化神经层,在新知识入网时,能够在适当的位置加入分类层。
期待我的继续学习。