1 前言
在文本分类任务中,根据每个样本对应的标签数量,可分为单标签分类(样本仅有一个对应标签)和多元标签分类(样本对应的标签数量可能一个或多个)。在多元标签分类任务中,根据标签的层级关系:可分为层级性多元标签分类和平行性多元标签分类(一般多元标签分类都默认是平行的)。举几个应用例子,如一部电影可能是“喜剧片”,又是“爱情片”,而这电影的种类标签是平行的,没有层级结构;如一个电视产品,它属于“大家电”,也属于“家用电器”,而“大家电”标签是"家用电器"标签的子类,这产品所属种类标签是有层级结构,所以该类任务称为层级性多元标签分类。
今天分享一篇关于层级性多元标签文本分类的paper, 题目为: HFT-CNN: Learning Hierarchical Category Structure for Multi-label Short Text Categorization。论文是发表在2018年CEMNLP会议上,对应的代码也开源了:https://github.com/ShimShim46/HFT-CNN
2 Introduction
从论文题目理解:作者提出了HFT-CNN模型,该模型主要是解决层级性多元标签的短文本分类任务,其核心是标签的层级性,其次是多元标签和短文本。HFT是Hierarchical Fine-Tuning缩写,其意思就是在学习层级信息的时候,使用fine-tuning这种微调的技术,将上层标签信息微调的方式传到下层标签的学习中。作者提出该方法的原因是:觉得在处理有结构的多元标签分类任务上,现有很多模型都是non-hierarchical flat mode,只是平行化的利用标签的层级关系信息,而作者的模型是hierarchical mode,一个有层级结构的模型。
3 Model
从模型图上看,的确体现了模型的层级结构,这是作者的主要创新点。模型的主要思想是:按照Hierarchical structure(也就是label的层级结构)进行一层层来利用CNN来预测学习;
参考模型中标签的结构,来说下其样本训练学习的思路:
1)输入的是样本一段短文本sentence,将sentence转换成词embedding,文中利用的fastText;
2)接着先训练样本的顶层label(A,B),具体是在embedding层后加一个卷积层(convoluational layer),最大池化层(maxpooling layer),全连接层+dropout,最后加个sigmoid层,用的二元交叉熵(binary cross-entorpy loss)进行A,B标签预测,这一个CNN分类框架;
3)在预测下一层标签时(A1,A2,B1,B2),采用的仍是CNN结构,只是在embedding layer和convoluational layer不重新生成,而是继承上一层学习的结果,然后在这个基础上进行微调学习;
4)按照2,3步骤,遍历整个层级标签;
以上是论文模型的基本思想,我个人的看法是:这个想法是好的,在embedding layer和convoluational layer进行微调,理论上是说的通的,因为子类标签所涵盖的特征信息应该也属于父类标签所涵盖的特征信息。然后,这两类特征信息必须有个差异,如何把这类差异信息有效捕捉出来才是关键,当然这个也不好衡量,也是由于深度学习本质所决定,不能很好解释真正起作用的原因。
再从主观上说,应该决定子类标签的特征信息更细化些,但这类特征对父类的影响不是很大;拿前面说的产品电视的例子,它的父类标签是“家用电器”,子类标签是“大家电”,父类标签的特征信息应该是家电,电器类的特征,子类标签特征应该是加上父类标签特征,还要有体积大,容量大等特征信息,而这些子类差异化的特征信息是对父类标签影响很小的。
然后,我再想:若以父类的特征进行初始化,理论上是保存了父类特征,但那些影响子类标签的差异性特征能学到吗,可能在父类标签学习的过程中就过滤掉或者弱化掉了这些差异性特征。不过这些仅是我的个人思考,读者可以结合自己的理解和实践去判断。
4 Experiment
接着说说论文的实验部分,实验数据集用了两个公开的多标签分类任务的数据集:RCV1 and Amazon670K;
表中显示为两个数据集的数据情况,其中#L代表标签的层级深度,Tr与Te训练和测试数据量,C是标签的总体数量;
在实验对比中,作者主要对比是XML-CNN,这个方法是针对标签数量特别大的多元标签分类任务,它没有考虑标签的层级性,但在这类任务中,它是作者实验前表现最好的模型;在实验评价中,用了F1值,此外使用信息检索领域的P@k和NDCG@k两个评价指标;下图是模型的一些超参数和试验结果,可以看看。
5 结语
因为我一直对多元标签分类任务很感兴趣,这方面也看了不少paper和代码;本篇论文给我的启发就是:标签层级化微调思路是好的,值得可以深入研究。但是也存在一些问题,一个问题就是我刚才说的关于差异性特征抽取,另一个就是,按照作者这种遍历递进思路,本来多元标签数量就特别多,层级也比较高,则模型会变得异常复杂,训练的速度也是很慢。