1 前言
今天分享一篇做层级性多元标签文本分类任务的paper,题目为:<Hierarchical Multi-label Text Classification: An Attention-based Recurrent Network Approach>,论文是发表在2019年CIKM上,下载地址为:https://base.ustc.edu.cn/pdf/Wei-Huang-CIKM2019.pdf,论文也公开了源码:https://github.com/RandolphVI/Hierarchical-Multi-Label-Text-Classification。从题目也能看出,论文的核心是作者提出Attention-based Recurrent Network方法来解决多标签分类任务中层级性问题。
参考上图,论文将HMTC任务定义为:
定义1:Hierarchical Structure .
,其中为categories label集合,H为label的层级数量,为第i层label的集合。
定义2:HMTC Problem
给定文档集合,及相关的层级标签结构,HMTC问题可以转成学习一个分类模型进行标签预测,即为:
其中 为要学习的参数, 为第个文本,有个序列词组成;对应,为第层标签集合。
其实,文中解决HTMC任务场景是有一定限制的:对应输入的文本x来说,它在H层标签体系中,每层都是有标签的,而且每层标签的数量是1个或多个。
2 模型
上图为论文的整体模型架构图,分为三层:(1)Documentation Representing Layer (DRL)——进行文本和层级标签的表征学习;(2)Hierarchical Attention-based Recurrent Layer (HARL)——使用注意力机制,让学习的文本向量和标签向量进行循环学习,交互;(3)Hybrid Predicting Layer (HPL)——混合方式进行标签预测。下面重点介绍这三部分内容。
2.1 Documentation Representing Layer
在文本表征上,先使用worde2vec获取词向量,然后使用Bi-LSTM网络进行表征学习,学习得到序列向量
在后续操作上,作者使用了基于词的平均池化操作(word-wise average pooling operation),将变成
在层级标签表征上,是使用lookup方式生成初始化矩阵标
最后,将表征学习到的和进行拼接,进入下一个layer进行学习。
2.2 Hierarchical Attention-based Recurrent Layer
这一层是论文核心的体现,其主要思想就是:将第一个layer学习的向量接入一个rnn网络,该网络的内部是HAM结构,而HAM在文中称为Hierarchical Attention-based Memory,意思就是基于attention的层级记忆单元。另外,这个循环网络的节点数应该就是标签的层级数,如数据集的标签有5个层级,那么这一层的rnn节点就为5,可以理解为一层接着一层进行递进式学习,像标签的层级结构一样。
上图为HAM示意图,有点类似LSTM结构,其有三部分组成: Text-Category Attention (TCA),Class Prediction Module (CPM),Class Dependency Module(CDM),其计算公式为:
其中 分别代表h-level层的文本与标签交互信息,与h-level层文本与标签交互的attention权重。
分别代表h-level层标签预测的概率,与h-leve层模型整体表征的信息。
为h层学习到的信息,作为记忆信息,进行传递学习用。
Text-Category Attention
上图为Text-Category Attention计算图,其主要目标是让输入的文本与各层级的标签进行交互学习,使用的方法类似注意力机制,计算公式对应如下:
看着上图觉得挺复杂的,其实计算起来很简单,是利用上一层的信息进行更新,可以理解接受上一层与label相关用的信息;是计算输入的文本与第h层标签的attention,后者为权重值;为计算带标签的文本信息,并平均方式得到最终的文本表征信息。
Class Prediction Module
该模块目的为:将原始文本语义表示与引入前一层信息的关联文本类别表征相结合,生成整体的表征并预测每一层的类别,下为更新公式:
Class Dependency Module
该模块目的为:通过保留各层级的层次信息,对不同层次之间的依赖关系进行交互传递学习,其主要意思想学习到文本中每个序列的词对各级label的关联程度,并将信息进行循环学习。
2.3 Hybrid Predicting Layer
利用第二层的信息进行混合预测,为何是混合预测?原因为:在作者看来,前面学习的每层预测只是局部的预测,需要将每次的信息融合起来进行一个全局的预测:
接着将局部预测值和全局预测值加权作为最终预测的值:
此处阈值取0.5,认为局部与全局同样重要。
2.4 Loss Function
在预测的时候使用了局部预测和全局预测,作者就对应做了两个loss function,第一个是每个层级的label预测的损失,第二个是全局label预测的损失,最后二者加起来并加一个L2正则作为最终的loss。
3 Experiment
论文使用了两个数据集进行了实验,对比的方法是设置了不同的变体进行对比,并未跟先前类似的paper试验进行比较,各个变体的详情可以阅读论文。
上面两种表图都是体现文中提出的HARNN模型得到最佳结果,表现论文提出方法的有效性,具体试验结果建议有兴趣读者去githup看看源码。
4 简单总结
(1) 在做层级性多元标签文本分类时,文中提出的基于层级数量进行循环学习的方式是值得借鉴的,因为层级性label在父类与子类上是有共性和差异性。
(2) 文中提出的局部预测和全局预测融合的思路也是挺好的,吻合提出的框架结构特性。
(3) 在HAM结构上,有一定的参考意义,但个人觉得有点过于复杂,可以类似GRU结构,设计一个更为简单的处理流程。
(4) 如果处理有些样本并不是每个层级都有对应的label的数据场景时,该模型框架可能需要重新的调整。
更多文章可关注笔者公众号:自然语言处理算法与实践