作者简介:Neo,二范数智能AI团队成员,武汉大学硕士,研究方向为信息检索、知识图谱、医疗数据挖掘与分析,对机器学习、深度学习在NLP领域的应用有着浓厚兴趣。
1、引言
分类问题是机器学习中的经典问题。我们也在前文【文本分类(二)复杂场景下分类任务应用介绍】介绍了多标签分类任务等复杂场景下的文本分类任务,但在现实世界的许多问题上,标签之间具有层次结构,其中,一个标签可以被特殊化为子类或者被一个父类所包含,层次多标签正如下图所示,Chemistry有着两个子类。这些类标签以层次结构(Hierarchical Structure)的形式存储,这就是层次多标签分类(Hierarchical-Multilabel-Text-Classification,hmtc)问题。
标准多标签和层次多标签的不同
之前的多标签可以称为标准平面多标签任务,层次多标签分类和我们之前标准平面多标签分类对比如下:
-
层次的标签是以预定义的层次结构存储的,这带来了不同层级以及相同层级之间的标签之间的内在关系,而对于平面多分类问题不用考虑这种关联关系。
-
如何学习和利用这些不同层级的关系、并对分类结果从层级关系遵循性的角度进行评价成为了层次多标签分类问题的难点和挑战。
2、层次多标签任务
与多标签分类类似,给定一个文档样本可以有一个或者多个类标签与之对应,不同的是,这些标签是以层次结构存储的,层次结构中低的标签受到层级较高的标签的约束,层次结构在带来类标签之间层次关系的同时,也带来了计算复杂等更具有挑战性的特点。
一般来说,层次多标签任务中涉及到数据集获取、文本预处理、文本表示、特征降维、层次结构标签表示、分类器设计、结果输出等工作,其中文本预处理、文本表示、特征降维、层次结构标签表示、分类器设计比较重要,流程如下图所示。
(1)文本预处理
文本预处理是处理文本分类任务的重要过程,通过文本预处理可以抽取文本中的重要信息,去除不必要的内容。文本预处理的一般步骤是固定的,包括分词(一般英语单词已经分词,而对中文需要进行分词)、词干提取(去除单词的不同词性表示,得到一致的单词表示)、删除停用词等。
(2)文本表示
文本是非结构化数据,而拟合训练的模型输入一般需要的是结构化数据,所以在上面的文本预处理阶段后,一般采用以向量的形式来表示文本,准确的向量文本表示可以在很大程度上提升模型的效果。常用的文本向量化的方法主要有两种:第1种是离散的表示,常见的有独热编码模型等;第2种是分布式的表示,比如有BERT、Word2vec等等。
(3)特征降维
由于向量空间模型来描述的文本向量通常具有较高的维度,这对于后续的分类任务来说,将带来效率低下和精确性下降的危害。在文本分类中,特征降维可以分为基于特征选择和基于特征提取的方法。
(4)层次结构标签表示
由于层次多标签分类问题对应的标签体系是存储在层次结构中的,所以越来越多的混合方法不仅考虑了文本提供的信息,也对层次结构标签进行了相应的表示,未来的方法也将会越来越重视标签的表示来提高模型性能。
(5)分类器设计
由于层次结构标签体系下,标签之间具有结构关系语义,因此,其分类器的设计也与一般的分类器不同,本次分享也将重点对分类器的设计进行讨论。
2.3面临挑战:
(1)合适的文本表示方式
文本一般是非结构化或者半结构化数据,而分类模型的输入一般是结构化的向量或者张量等,所以怎样将文本进行编码表示,以尽可能保留文本中单词和单词、单词和句子以及句子和句子的顺序和语义关系信息是文本分类的第一步,也是很关键的一步。
(2)层次标签结构语义表示
在层次多标签文本分类中,标签之间具有的天然层次依赖关系,例如父—子关系、祖先—后代关系等,这些关系有着不同权重的依赖,它们也叫做标签的层次约束,文本和这些标签具有不同层次不同的关联如何利用它们之间的关系以及标签之间的关系是一个挑战,以树或者DAG(有向无环图)结构进行建模是目前普遍使用的方法。不过,这些方法相对简单,对标签之间以及文本和标签的复杂语义关联刻画并不充分。
(3)缺乏合适的评估指标
在层次多标签分类问题中,很多研究者提出了自己的评估指标,有的仅仅是自己在使用,有的沿用了多标签分类中的评估指标,比如精准率、召回率、F1值等。但是很显然,普通的多标签分类的评价指标不能很好地评价层次多标签分类问题,因为在预测时,如果预测结果是真实标签的兄弟、父亲或者后代节点时,这些错误的严重程度应该是不同的,而上述指标等却不能体现出这些差异,但是从文本分类的角度来看,预测出错的程度又是相同的,所以,对于什么样的评估指标才能正确反映HMTC中的算法模型性能还没有公认的定论。
(4)分类器的设计
分类器不仅要关注于文本的层次关系,而且要关注不同层次不同标签和文本的关系,分类器如何利用文本的层次关系以及文本和标签之间的关系,利用的程度有多深,这些都是需要研究的难点,当然这也取决于具体的任务。
3、层次多标签解决思路
根据是否利用层次类标签信息以及如何利用层次信息,可以将层次多标签分类算法主要分为非层次方法和层次方法,其中非层次方法又可以叫做平面方法;而层次方法主要可以分为3种,分别是局部方法、全局方法以及它们的组合,即混合方法,如下图所示:
3.1非层次方法
(1)平面方法
平面方法忽略层次标签之间的依赖关系,将其转换为平面的多标签分类问题,然后再使用多标签分类的方法进行处理,对于层次标签的内部标签节点,以层次约束为准则,任何被归类为子标签的样本都自动被归类于其所有祖先标签节点。
在平面方法中,最重要的不是分类器设计,而是文本表示,我们在文本分类(一)和文本分类(二)中从技术演化过程详细分析了文本表示方法,但是需要注意的是将层次多标签问题转换为平面多标签任务是最差的方法,因为它忽略了层次分类中各类别之间的依赖关系,这种依赖关系不仅存在于不同层级之间,也存在于同一层级的不同类之间,平面方法没有考虑这些特点,那么我们来看看层次方法是如何解决这些问题的。
3.2层次方法
局部方法是利用分而治之的思想,将整个分类问题转换成多个局部的子问题,通过解决多个子问题,在层次结构上建立多个局部分类器,最后再将这些分类结果组合起来为全局的分类结果。
根据使用局部信息的不同,局部方法可以划分为不同的策略,主要有
-
-
LCPN(LoealCassifierParentNode)
-
这三种策略使用的分类器个数不同,另外使用的局部标签依赖信息也不尽相同。
首先,我们先看下图的LCN方法,它对于每个节点来进行分类。
其次,我们看下图的LCPN方法,它对于父节点的子类来进行分类。
最后,LCL使用了同一层级的关系,实现不同层次类的预测。
在测试阶段却都是以自上而下(Top-Down)的范式进行的从根节点开始,只有被当前的分类器预测为正的样本才会被传递给其子节点的分类器,依此类推,直至到达叶子节点分类器
-
错误传播问题:需要注意的是,随着类层次向叶子方向移动,错误分类也有着向下传播的风险
-
模型计算消耗巨大:因为涉及到的分类器过多,模型的参数量会巨大。
(2)全局方法
全局方法利用整体的信息,在层次结构上只建立一个分类器来同时处理所有的类别。大多数全局方法是基于平面方法修改得来的。近年来,全局方法大部分是以神经网络实现的,当然也有基于传统机器学习方法的,所以本节从这两种大类入手。
1、传统机器学习中,一般采取基于决策树或者基于集成的方法
决策树以树形结构为架构,在面对分类问题时,通过信息增益或者信息增益比等以各个特征对实例样本进行分类的过程,即通过树形结构的模型,在每一层上对特征值进行判断,递归到叶子节点的决策过程。
C4.5算法原本是平面的决策树算法,不能用于层次分类,有文章提出的HMC4.5方法,基于C4.5对计算类熵的方法进行了修改:在C4.5原始的算法中,每次都是选取信息增益比最大的属性作为当前分类的子树根节点,但是HMC4.5使用所有类的熵的和,相当于描述属于一个示例的所有类的信息量之和。该模型将整个层次归纳为一个决策树,归纳过程较为复杂,但是会生成一组简单的规则。
集成学习的思想是将若干个子学习器(分类器&回归器)通过某种策略(Bagging、Boosting)组合之后产生一个新学习器。
AdaBoost的全局方法,针对DAG(有向无环图)结构采用非强制性叶节点预测:先对文本数据进行预处理,然后结合适配的AdaBoost进行数据集上的规则学习,最后对样本进行测试且对预测不一致进行处理:对不一致的节点,考虑其所有祖先类的预测置信度,如果它们的置信度足够高,那么就将其所有祖先类来标记实例,否则去除掉该不一致的类标记。
2、神经网络的方法中,一般采取基于图表示学习、注意力机制等方式进行学习
层次多标签分类存在结构信息,而图这种表达形式能够挖掘结构信息实现层次分类任务,因此图表示学习为层次分类任务提供了良好的解决思路。
图表示模型首先对文本以词共现矩阵将文本转换为图,可以使用对节点的邻居节点进行卷积等操作实现图嵌入,这种思想类似图像或者普通文本一样进行交替卷积、池化操作,最后通过全连接层进行分类预测,并可以为标签之间的层次关系设置损失函数,并和网络模型最后的交叉熵函数共同加权作为损失函数,在全局的层次上考虑层次关系。
注意力机制就是把注意力放在重要的信息上,在文本分类情境下,就是将和层次结构各层最关联的文本内容利用注意力机制,对文本语义表示的不同部分分配不同的权重来突出实现的。
基于注意力的模型同时也可以和上述图表示学习进行结合,将文本和标签使用图表示后,将文本以BERT和双向GRU进行上下文语义信息抽取,并通过多头注意力机制,将标签的图表示作为查询,文档作为键值对,让标签的层次信息融入到文本表示输出中,抽取文本的不同部分和标签层次中各个层次、各个类别之间的关系信息。
(3)混合方法
为了结合局部方法和全局方法的优势,可以在利用层次结构局部信息的同时也利用全局信息,最后对这两部分进行统一处理,这类方法叫做混合方法。
以HMCN混合模型进行分析,它是第一个结合局部和全局信息进行层次分类的基于神经网络的HMTC方法,可以适用在树结构或者DAG(有向无环图)结构。
它有两个类型,分别是前馈版本HMCN-F和递归版本HMCN-R,二者的主要区别在于前者需要训练更多的参数,而后者因为在层级之间共享权重矩阵并且使用类LSTM结构对层次信息进行编码,在关联相邻层次结构的同时也减少了需要训练的参数,并且随着层级越多递归版本的优势越大。
HMCN模型在标签层级结构的每一层都会输出局部预测以及最后的全局预测,而最终的预测是各个局部预测的连接以及全局预测的加权组合而成;此外,各层的输入结合了上层的激活和重用输入特征,从而在原始特征和给定层级之间建立紧密的联系;对于预测不一致的情况,则通过在优化局部和全局损失函数的同时加上惩罚层次违规来保存预测遵循层级制约。以HMCN-F为例,其模型结构如下:
4、层次多标签评估指标
平面方法的评价指标并不能体现层次多标签问题的特点,本节主要展示针对层次分类的评价指标。
平面方法中,总要使用精准率和召回率,这些在之前的分享中已经介绍;而对于预测类别和实际类别处于层次中不同位置予以不同的关注,从而考虑了标签的层次结构的特性。主要可分为:hP、hR和hF
(1)h精准度(hierarchical-precision,hP)
简单来说,就是对部分正确的分类给予信任,对距离更远的预测错误更大的惩罚,对更高层次的预测错误更大的惩罚,hP的值越大,说明模型预测为真的样本更多的为正例。公式如下:
其中,与分别是和和的扩展,表示合并上了它们的祖先节点(不包括所有类级别的公共根节点Root),而表示一个样本的真实类标签,表示的是样本的预测类标签,下同。
(2)h召回率(hierarchical-Recall,hR)
hR的值越大,说明模型将更多为真的样本预测正确,hR见公式。公式如下:
(3)
如上所示,hP和hR分别从真实样本和预测为真的样本出发,考虑不够全面,所以有指出可以将二者结合起来,就变成了,公式如下:
一般,将β取为1,表示将hP和hR赋予同等重要的权重
5、层次多标签未来发展方向
未来的需要继续突破的研究方向主要包括下面几点:
(1)分类器的设计
本文的重点在于关注文本分类器的设计,在此过程中如何利用文本和各层标签的关系、如何利用层次标签的依赖关系是考察分类器优劣的一个重要方面,这也是本文划分层次方法的依据,只有在具体的任务中较为精准地抓住上述的关系,并在标签预测时,将这些关系进行有机的利用是一个难点,也是未来的一个重要研究方向。
(2)寻找更好的文本编码表示
文本分类和其他分类的一个很大区别在于,因为文本一般是非结构化或者半结构数据,如何将其表示并能够较少地损失其原来蕴含的信息,这对后续的文本分类来说很重要,当然,Transformer和BERT是两个目前效果较好的语言模型,也可以寻求其他方法来表示文本,比如文本的图表示等。但是这些表示都是通用的表示方法,而什么样的编码表示更适合于层次多标签文本分类还有待进一步研究。
(3)极端的层次多标签文本分类问题
随着应用的深入,不少应用面临极端的层次多标签文本分类任务。它的特点是层次标签的数目非常多,层次级别也非常深,造成模型规模可能非常庞大,目前的计算能力难以处理。如何高效地处理极端层次多标签文本分类问题将成为未来的一个研究方向。
(4)现实数据集中标签的长尾问题
在现实数据集中,大部分标签的数据是相对较少的,即很少的数据和一些标签关联,甚至没有数据关联,特别在层次结构的底层靠近叶子节点处。长尾问题在极端的层次多标签文本分类问题中尤其严重。这种情况对于模型学习将造成困难,可能导致无法预测的问题。因此,如何处理层次多标签文本分类中的长尾问题,也是未来的一个重要研究方向。
关于二范数智能:二范数AI教育是一家新锐的AI+科创公司,团队主要来自阿里巴巴,成员毕业于华科、武大、东南大学等知名高校。我们在自然语言处理、计算机视觉、推荐系统等领域有深厚的技术积累,同时也具备多年的教育经验。AI培训,我们是最专业的!
原文始发于微信公众号(二范数智能):文本分类(三)层次多标签文本分类介绍