这篇文章是Coling2018年的best paper, 因为之前解决multi-label问题都是用分类的方法,本文提供了一种新思路,用生成的方式解决该问题。觉得还是挺新颖的,记录一下。
一:任务介绍
Multi-label classification(MLC) is to assign multiple labels to each instance in the dataset
x
x
x = (
w
1
w{_1}
w1,
w
2
w{_2}
w2, …,
w
m
w{_m}
wm) 为句子长度为m个词的句子序列,
L
\mathcal{L}
L = {
l
1
l_1
l1,
l
2
l_2
l2, … ,
l
L
l_L
lL} 是语料中出现过的所有标签。针对句子
x
x
x有n个标签,n个标签的集合为
y
y
y 且有
y
y
y
⊂
\subset
⊂
L
\mathcal{L}
L。其实就是数据集中的每个实例都可以有多个标签。举个例子就是:一个电影,既可以是悬疑片也可以是犯罪片,标签之间可以共存的,与 single-label classification的区别是,实例只能有一个标签,标签之间是互斥的
二:以往的multi-label的做法
多标签学习算法分为两大类:
1)改造数据适应算法
2)改造算法适应数据

以改造数据为例的三种做法
(1)二分类用L个分类器,分别对应L个标签,进行训练。
多个独立的二分类问题,比如一共有m个labels, 针对每个label 进行0/1判断,如果是0,说明该label是instance的一个标签,否则不是该实例的标签。例子:一部电影的标签集合Y = {悬疑片,喜剧片,犯罪片,科幻片} ,那对针对一部电影的标签其实就是训练4个二值分类器,缺点很明显,无法利用标签之间的关联性
(2)标签排序+二分类利用“成对比较”(pairwise comparison),获得L(L-1)/2个分类器,然后利用投票,得到标签的排序。接着,利用二分类,补充标签排序的投票结果,提高准确性。
(3)随机k标签从L个标签随机取得k个标签,重复n次,获得n个分类器。这个过程有点类似随机森林。然后利用多类分类器(multi-class,与multi-label是有区别的),训练数据,最后通过投票,如果对于某一标签,其实际获得的投票数占到最大可能的投票数一半以上,那么就认为当前实例属于该标签。
三:本文做法:
- 本文考虑的两点:(1) the correlations between labels,例子:一个电影如果是悬疑片,那么是犯罪片的可能性很大,是喜剧片的可能性就会很小。之前的研究工作忽视了这种情况,本文解决此问题的方法是预测当前label时将上一个输出的概率分布作为当前的输入。 (2) different parts of the text can contribute differently to predicting different labels,例子:
w
1
w_1
w1
w
2
w
3
w
4
w_2w_3w_4
w2w3w4w5w6
w
7
w
8
w_7w_8
w7w8w9, 红色字体部分对预测该序列是
l
a
b
e
l
1
label_1
label1的的贡献很大,蓝色字体对预测为
l
a
b
e
l
k
label_k
labelk的贡献很大,针对这个问题,本文用了attention mechanism解决该问题。
本文的框架图如下:


注意到公式 (7) 我觉得是不正确的,应该把
c
t
−
1
c_{t-1}
ct−1改成
c
t
c_t
ct正确的写法如下:

-
本文中涉及到的处理细节:
(1)本文是将多分类任务作为一个序列生成问题,生成的序列既是样本的类别,如果生成的序列长度为3,则该样本的类别个数就是3。
(2)在标签序列的前后端分别添加两个特殊的字符 " bos " 和" eos ", 例如训练集中一个样本的类别标签是 y 1 y 2 y 3 y_1y_2y_3 y1y2y3, 添加前后标签后的序列是bos y 1 y 2 y 3 y_1y_2y_3 y1y2y3eos, 其中 y 1 y 2 y 3 y_1y_2y_3 y1y2y3已经排过序。
(3)training data中label sequence的处理
例子:对一本小说的描述文本,类别是:悬疑,犯罪,科幻,会生成以下几个序列,到底应该选择哪个正确作为gold sequence呢。
bos悬疑喜剧科幻eos
bos喜剧科幻悬疑eos
bos科幻喜剧悬疑eos
bos科幻悬疑喜剧eos
bos悬疑科幻喜剧eos
对样本的类别标签进行排序,按照类别标签在训练集中出现的频率排序,出现次数比较多的标签排在前面 -
然后本文还提到一个概念:exposure bias, 我查了资料后解释如下:
sequence-to-sequence框架的目标序列中,当前时刻t的输入时上一时刻t-1的输出,如果t-1时刻生成的label是错误的,那么后续生成的输出也是错误的,或者是不可信的。由于某一时刻的输出错误导致的偏差,随着序列长度增加,偏差会越来越大。另外本文提到如果exposure bias出现在所有的预测路径中,那么beam search不能根本性的解决exposure bias问题。本文给出了一个解决方案解决此问题:那就是y t − 1 _{t-1} t−1 是(t-1)时刻softmax之后k个label的概率分布, 将此分布经过转换后作为t时刻的一个输入,而不是将(t-1)时刻中概率最大的那个label作为t时刻的输入。 -
global embedding

-
encode and decode


参考文献:
https://baijiahao.baidu.com/s?id=1606110272313522266&wfr=spider&for=pc

被折叠的 条评论
为什么被折叠?



