多输入多输出多模态多任务多loss多分类多标签分类

  • 2021 年 6 月 8 日
  • AI

这里理清一下这几个概念,有时候想着想着就绕进去了,因为很多时候某个网络结构可能是多种情况。

首先是最大的层面,多输入对应单输入,多输出对应单输出。

这是范围最广的说法,先说下多输入,比如我们在对表格数据建模的时候,如果存在类别特征则往往要构建一个多输入模型,因为在nn中经常要用embedding层来先对类别特征进行embedding然后和连续特征concat在一起之后继续构建后续的网络结构。

多输出,即网络的输出是有多个的,典型的例如序列标注问题,需要标注每一个词的词性。这里需要区分向量输出和多输出,如果我们只要标注一个词的词性,则为向量输出,向量输出本质上属于单输出,就好像向量输入(例如nn处理的输入特征都是连续特征,则每一个样本的连续特征是一个向量输入)本质上也是单输入一样,以词性标注为例,假设词性的数量是n,则如果仅仅对单个词进行标注,则为向量输出(单输出),输出一个维度为n的向量。如果是对句子中的m个单词进行标注,则为多输出,有m个n维的向量,多输出的输出数量为m,其中每个输出都是一个n维的向量。

多模态是多输入的一种复杂情况,简单的多输入例如类别和连续特征,不能算是多模态,他们都属于tabular类型的特征,复杂的多输入,例如输入里有tabular特征,也有文本有图像,为了更清晰的理清多模态和多目标(也叫多任务),这里就不讨论复杂的多模态+多目标的网络结构了,比如输入是多模态,输出又有多个任务的情况,这种就当作多模态和多任务的复合问题。

多模态研究的主要问题比如多个模态之间的对齐,多模态的特征如何表征,多模态的特征融合产生有效的交互等等。这里我就把多模态看作是多输入对应单输出的问题;

多任务是多输出的一种复杂的情况,前面说的词性标注的问题,虽然是多输出,输出m个词的n个向量,但是对应的都是标注任务,即多个一样的任务,所以还是一个单任务的问题,不过bert-based 类的研究问题就很多多任务的身影了,mlm+nsp,mtdnn这类的,多个输出,每个输出对应的任务不同,所以每个输出对应的标签也不一样,从输出对应的标签的类型来看会比较好区分多任务问题。

多loss常常会和多任务一起出现,尤其是自己去写多任务模型的时候。。。比如不同任务之间的loss的量纲不同,导致了模型的学习出现了“偏爱”的情况,这个时候可能需要用到多目标优化(多loss)的方法来缓解。

多标签分类则是一个多输出的形式,比如微信的大数据比赛的多标签分类问题,每个标签对应一个二分类的输出结构。

多分类是一个单输出的任务形式,最终的输出是一个向量,向量的维度是类别的数量,如果多分类问题对应着不同模态的输入,比如又有图像又有音频,则成为一个多模态多分类的问题。

这些概念都不是互斥的,而是可以互相叠加组合成新的更加复杂的任务,更加棘手,更加难以解决,还没什么工具。。曰。。