1、迁移学习
\qquad
迁移学习是将某个任务学习到的知识(神经网络的参数信息)迁移到另外一个相似的任务中使用,从而重复利用相似任务学习共同之处,节省模型训练的时间,提高模型的训练效率和训练精度。如下图的神经网络,将之前训练好的神经网络的最后一层或者几层的参数重新随机初始化之后,应用到其他相似任务中,从而将当前训练好的知识进行前移使用。
\qquad
如在图像识别中,当前手头的任务是需要训练一个关于医学影像识别的分类器,但是没有过多的训练数据,则可以使用其他训练好的分类器,如猫/狗/车分类器,其中的部分学习到的知识(部分神经网络参数)应用到医学影像识别分类器中。或者在语音识别中,当前训练好了普通语音识别的分析器,但需要快速构建一个命令识别分类器,没有很多的命令训练数据,则可以将普通语音识别分类器部分神经网络的参数迁移到命令识别分类器中。
\qquad
这样做的一个原因是因为,相似的任务中,神经网络学习到的知识具有相似性,从而在一定程度上可以进行迁移使用。但同时需要满足一个大的前提,即现有分类器的的训练数据量一定要超过目标分类器的训练数据量,否则,肯定是直接使用目标训练数据直接训练效果要更好。
\qquad
总结来说,迁移学习(从任务A迁移到任务B)在满足下述条件时,才会有意义:
- 任务A和任务B的输入相似
- 任务A的数据量远超于任务B的数据量
- 任务A和任务B有相似的底层特征,如都是图像,或者都是声音
2、多任务学习
\qquad
之前所说的学习方式均使用一个神经网络结构来解决一个问题,如果使用单一的神经网络通过训练之后可以解决多个问题,则称为多任务学习。如给定在自动驾驶图像识别训练过程中,通常需要识别一幅图片之中是否包含多种物体,如是否包含车辆,行人,红绿灯,标志牌等等。这样,就需要使用单一的神经网络来是被不同的物体是否存在于同一张图片之中,称之为多任务学习。如下图所示:
\qquad
多任务学习在满足以下条件时,会有意义:
- 不同任务之间有相似的底层特征
- 不同任务之间的训练数据量相似,对于某一项任务,其余任务总的数据量要要超这项任务
- 需要使用足够大的神经网络进行训练和学习
3、端到端学习
\qquad
端到端学习是相对于流水线学习而言的一种学习方式,如语音识别中,在端到端学习出现之前,会有一个复杂的流水线流程来实现一段语音的识别,流水线中包含很多繁琐的细节,每个细节中又包含许多繁杂的手工设计。而端到端学习省略了流水线中繁杂的细节设计,直接使用一个神经网络来替代流水线流程,通过给予大量的数据训练,在样本量足够的的情况下,可以超过流水线学习方法的性能。当前门禁系统使用流水线更加高效,因为没有足够多的样本来进行端到端的学习。
\qquad
所以使用端到端学习的大前提是由足够的数据量来训练模型。