Multi-Task Learning & Multiclass classification

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Bazingaea/article/details/84977490

最开始接触的机器学习问题就是 “ Is this a cat or not ” ,这是极具有代表性的一个二分类问题(Binary or binomial classification),二分类体现在数据的标签上就是0/1,一张图片作为输入X,对于监督学习而言,他的标签Y就是一个数字0/1,后面讲到的例子若不特殊说明都是监督学习。

多分类问题(Multiclass classification)就是不仅仅只有一个类别,比如识别手写数字的例子,这里的标签Y就是一个ONE-HOT形式的向量,长度为10,每个位置分别对应(0-9),只有一个位置上的值为1,其他都是0,并且这张图片代表的数字就是为1位置对应的数字(0-9中的一个)。

再举一个例子,自动驾驶系统中需要使用对象检测,假如现在只需要检测以下四种类别(行人,汽车,障碍物,停车标识),可以认为这个例子中其实有四项二分类任务,有没有行人?有没有汽车?有没有障碍物?有没有停车标识?
如果要实现这项检测,可以训练四个模型来分别识别这些东西,可能四个模型听起来还可以接受,但是真正自动驾驶要检测的对象是很多的,对每个对象构建一个检测模型是不可取的,这时候就用到多任务学习(Multi-Task Learning ),他可以使用一个模型去学习四件事情。构建每张图片对应的标签为一个四维列向量,每个位置对应一种类别,1表示有0表示没有。

这里的标签和上面识别手写数字的标签都是n维列向量,区别在于 后者是one-hot,前者不是。我的理解是,这里就是区别多分类问题和多任务问题的关键点!多任务是可以割裂开来的,而多分类问题不行。其实如果理解到位,多分类和多任务压根不是一回事,多分类是分类问题的一种形式,多任务是一种机器学习的手段和方法。

再看一个例子,翻译工具,假设现在要训练一个模型,可以实现将英语翻译为意大利语和西班牙语,可以发现这里对应的其实是两个数据集,(英语-意大利语),(英语-西班牙语)。并且模型的输入的一样的,输出是法语。那同样的大可以训练两个翻译模型分别翻译两种语言,但是面对世界上那么多种语言,设计很多种模型效率实在低。注意这个例子和上面提到的对象检测例子又有区别,因为对象检测只有一个输出,而这个例子有对应两种输出。

可以理解为是多任务学习在应用到具体的事例中的不同变种,我看到一门tensorfow教程中一位老师将这两种方式分别称为联合训练和交替训练,搜索这两种训练模式很多博客上用的图片也和这位老师的图片一致,但我在谷歌搜索的时候并没有明确文献解释这两种模式,姑且就这样理解吧,以后发现有问题在改正。

强烈欢迎指正!

猜你喜欢

转载自blog.csdn.net/Bazingaea/article/details/84977490