一
多标签问题的简单解决思路
上述是一种简单的从多分类问题拓展到多标签问题的解决思路,这样的思路中,我们可以用输出结果[0.1, 0.9, 0.8, 0.2, 0.85]表示该输入属于标签2、3和5(假设阈值为0.5,标签从1开始计数)。
二
存在的问题
三
解决思路
来源链接:https://arxiv.org/abs/1806.04822
这篇论文是COLING2018 Best papers(Best error analysis & Best evaluation),其误差分析和评估方面做的比较好,论文主要的贡献是:
1. 把多标签分类问题当做序列生成问题,进而考虑标签间相关性
2. 在序列生成模型的decode部分进行了改造,不但考虑了标签间相关性,还自动获取了输入文本的关键信息(Attention机制)
3. 本论文提出的方法效果极好,指标比baseline提升很多。在关系表示上也具有非常好的效果。
模型如下图所示:
我试着将自己代入作者,梳理了作者的思考思路:
Seq2Seq模型的输入和输出均为序列,且能够学习到输入和输出序列的相关性。对于文本的多标签分类问题,这似乎是个很合适的选择。
然而,直接套用会存在一些能够想到的问题,因此作者一步步来解决这些问题:
1、多标签分类的输出显然是不能重复的,于是作者在最终输出的时候引入了 将已输出的标签剔除。
2、Seq2Seq中某时刻的输出对时刻输出影响很大,也就是说时刻出错会对时刻之后的所有输出造成严重影响。在多标签分类问题中,我们显然不想让标签间拥有如此强的关联性,于是作者提出Global Embedding:
其中表示时刻输出对应的Embedding,在不存在Global Embedding时, 。此处我们引入Global Embedding,让其等于某时刻的概率向量和各个标签Embedding的乘积,降低对值的影响。
3、考虑到出现此处更多的标签在标签相关性训练中具有更强的作用,在训练时把标签按照其出现次数进行从高到低排序作为输出序列。出现次数更多的标签可以出现LSTM的前面,进而更好地指导整个标签的输出。
4、 此外,作者在使用Seq2Seq时,在Encode部分加入双向LSTM,在Decode部分加入了目前很常用的Attention机制。这些已经是大家耳熟能详的组件了,目前在Seq2Seq模型中也很常用。
来源链接:https://arxiv.org/abs/1802.01697
有了上篇文章的铺垫,这篇文章思路显得容易理解很多。之前我们提到,直接将RNN用于标签的序列生成存在上述提到的一些问题。作者这里使用了名为rethinking的decode组件:
这里主要分为两层:RNN + Dense。
在RNN层中,使用一种名为SRN的简化版RNN:
该层主要学习了标签间的相关性,表示标签和之间的相关性:
经过了Dense层,的结果实际上已经能够预测出多标签,但是并没有学习到标签间的关系。随着的增大,阶段已经能够学习到标签间的关系,这样的机制就叫做rethinking。
总的来说,这篇论文主要提出了上述名为rethinking的组件,让RNN应用在了多标签分类问题上。
-----END-----
@Octocat
版权声明
本文版权归《Octocat》,转载请自行联系。
点击文末阅读原文 或 扫描上方二维码报名
历史文章推荐
你正在看吗?👇