Multi-label Learning
一般的 single-label learning,一个输入对应一系列标签中的一个标签;而 multi-label learning,一个输入则可以对应多个标签。比如下图就是一个 multi-label 的例子。

Convert to binary classification
可以将多标签问题转化为一系列二分类问题,即考虑每个标签是否为真。
Label independent
在每个标签都相互独立的情况下

有
p(y∣x)=c=1∏Cp(yc∣x)
Label dependent
但如果标签之间存在依存关系,使得标签之间能够构建出有向无环图:

有
p(y∣x)=c=1∏Cp(yc∣x,y1,…,yc−1)
或者可以写成
p(y∣x)=c=1∏Cp(yc∣x,pa(yc))
其中 pa(yc) 为 yc 标签的父节点的集合。
具体每一个标签训练过程参照如下:

Convert to multi-class classification
假如共有 C 个标签,那么标签的组合共有 2C 种可能性,将每一种可能作为一个新的标签,那么就重新变成 single-label 问题。
p(y∣x)⇓p(y^∣x)y=[y1,y2,…,yC]∈{0,1}Cy^∈{0,1,…,2C−1}
但是考虑到 2C 可能过大,因此这种方法不好用。
那么可以考虑对所有标签进行分组,分组之间可以有重合。假设一组中有 L 个标签,那么这一组可以使用上面提到的方式变成 single-label 的问题,同时新的 single-label 问题的标签数为 2L。只要控制 L,那么就能控制问题的规模。
总体流程为:
- 将原标签分成 K 个 group,每个 group 中有 L 个标签。

- 然后对每组训练分类器,进行分类
p(y^1∣x)p(y^2∣x)⋯p(y^K∣x)y^i∈{0,1,…,2L−1}
- 最后聚合(ensemble voting)每组的答案,得到
p(y1∣x)p(y2∣x)⋯p(yC∣x)
Example
下面是一个分组与预测的例子:

Multi-label evaluation
single-label 的分类问题的评测较为简单,正确和错误一目了然;但是在 multi-label 中,可能存在有些预测正确,有些不正确的情况。一次 multi-label 中有多种评测方法。
假如实际标签与预测结果如下
Ground-truth label vector: y=[1,0,0,0]
Predicted label vector: y~=[1,0,0,1]
Loss 计算:
- 0/1 loss: δ(y=y~)=1,即必须所有都正确
- Hamming loss: C1∑c=1Cδ(yc=y~c)=41,即考虑预测对了几个标签
Evaluation 方法:

- precision: 预测为真的结果有多少个是对的 ∣y~∣∣y∩y~∣=0.66
- recall(召回率): 原本为真的结果有多少被预测出来了 ∣y∣∣y∩y~∣=0.5
- F1: 综合考虑上两者 ∣y∣+∣y~∣2∣y∩y~∣=0.57,相当于 F1=precision1+recall12
- Jaccard distance: 交并集 ∣y∪y~∣∣y∩y~∣=0.4
Multi-task Learning
multi-task 和 single-task 的对比:

以人脸识别任务为例:

比如给一张人脸,需要同时做识别性别、识别年龄以及分辨姿势三个 task。
- multi-task learning 将一些相关的任务综合考虑,是为了提升模型的泛化能力
- multi-task 的几个 task 通常共享一些表征或者知识
- 我们需要去建模这些任务的相关性。比如考虑任务之间的相关度,或者使用同一个 backbone。
multi-task learning 的训练过程为:

Traditional Methods
传统方法通常聚焦于二分类任务。比如前面人脸识别的多任务问题,可以化简成一系列二分类问题:

此时在原有方法上做一定改进即可

- single-task learning: wminwTX−y2
- multi-task learning: wtmint=1∑TwtTX−yt2
Regularization
在上面的基础上,可以对各个 task 之间的关系进行约束
- coherence regularizer。此时相当于认为各个任务都较为相近
wtmint=1∑T∥wtTX−yt∥2+t=1∑T∥wt−T1i=1∑Twi∥2
- low-rank regularizer。∥⋅∥∗ 称为 nuclear norm,是对矩阵秩的估计。将矩阵 W 变得低秩,直观上来说各个 task 可以分成若干组相似的。
wtmint=1∑T∥wtTX−yt∥2+∥W∥∗
- consider task similarity。式中 sij 是由先验知识得到的任务 i,j 之间的相似度,如果相似度大,那么 sij 较大。
wtmint=1∑T∥wtTX−yt∥2+i=j∑sij∥wi−wj∥2
Deep learning Methods
shared feature space (hard sharing)
即前面若干层完全相同。

shared feature space (soft sharing)
通过损失限制前面几层的参数更加相似。同时可以通过控制 L 的系数,来控制两个 task 前面几层的相似度。

还有一种 Cross-stitch 方法。这种方法考虑的是实现上下两路信息的交互,也就是让两个 task 的层做线性组合。系数 α 可学习。

conditional variable
每个 task 对应一个变量,记为 zA 和 zB,称为 task embedding,该变量可以被指定,也可以设置成可学习的。task embedding 可以结合到模型的某些层中。
- injection
- position,即考虑结合到哪些层中
- method,即结合的方式
- cross-attention, dynamic-kernel, modulation, concatenation
one encoder and multiple decoders