在迁移学习transfer learning中,你的步骤是串行的sequential process

在多任务学习multi-task learning中,你试图让单个神经网络同时做几件事情,然后这里的每个任务都希望能够帮助到其他的任务。

这是一个汽车自动驾驶的问题,在这张图像中我们需要同时检测四个目标:行人、车辆、停车标志、交通灯

所以可以认为这是一个多任务学习问题,请看下图:

对于这个神经网络的输出层而言,很像softmax多分类输出。

但是对于softmax而言,是得到一个概率分布,最终对多分类的结果确定一个最有可能的结果,所以可以认为输出依然是单个的。

对于多任务学习来说,我们得到的不是一个概率分布,而是一个对于每个子任务的确定性分类,比如上述任务中有四个检测目标,所以我们的输出也是对张图片输出四个二分类标签比如[0,1,1,0]

其损失函数如上图loss,和一般损失函数的区别就是每次对四个分类标签进行累加。

特别注意:对于上图红色标记的Y矩阵来说,其中有些标签可能是没有标记的 比如有些图片只标记了行人和车辆,但是没有标记信号灯和停止标志,但是多任务学习依然可以处理这种数据。只需要在累加的时候只计算标记0/1的数据即可。

when multi-task learning makes sense?

1.训练的子目标可以共用低层次特征

比如自动驾驶中检测的几类目标都是通过图像检测的,他们可以共用如光线、边缘等等的低层次特征。

2.其他子目标的样本数量之和必须比单个子目标的样本数量大得多

3.可以训练一个足够大的网络针对所有子任务。理论来说可以对单个子任务训练对应的网络,但是只要你的网络足够大,使用1个网络对所有任务进行处理绝对是可行的。

多任务学习的模式并没有迁移学习应用的广泛,实际上只有类似交通检测等少数领域才是用到了多任务学习,但是随着算力的提升,更大的网络将使得多任务学习具备良好的前景。

 

posted on 2019-07-19 15:40  NWNU-LHY  阅读(168)  评论(0编辑  收藏  举报