Efficient Strategies for Hierarchical Text Classification:External Knowledge and Auxiliary Tasks

原文链接:https://aclanthology.org/2020.acl-main.205.pdf

概述

        在层次文本分类( Hierarchical Text Classification HTC)中,大多数研究都关注于提出新颖的模型结构,但我们偏向于找到一种高效的方法去增强baseline。首先将层次文本分类任务视为seq2seq问题,然后对它进行一个辅助性地自顶向下的分类任务,即从外部字典中找到所有层次类别中的文本定义,并将其映射到词向量空间作。将类别定义的embedding作为额外输入来对下一层进行预测,并使用一个修改后的束搜索。我们提出的这个方法,比以前那些方法表现更好,同时参数量更少。

介绍

        比起普通的文本分类,层次文本分类由于要考虑不同层之间的节点关系,所以会更难一些。但无论是普通的文本分类还是层次文本分类,解决它们的大多数模型都有大量的参数并且需要额外的训练时间。在普通文本分类中,有一些研究不再对模型结构进行修改,而是使用一些额外的方法来提升模型效果。但层次文本分类中,还没有这方向的研究,最近提出的模型计算量依旧很大。作者就提出思考:怎样在低成本的计算代价下来进行改进?

本文的主要贡献:

1)提出了一个对于HTC的稳健模型,参数少并且训练时间短,遵守seq2seq的学习范式。

2)辅助任务的应用增强了模型在自下而上的预测任务中能力。

3)探讨了利用关于外部信息来对类的进行文本定义。

方法

seq2seq方法

        层次文本分类与多标签分类比较类似,只是低层的标签由更高层的决定。不同于之前的工作,我们将HTC任务作为一个seq2seq来解决,编码器接收文本描述,解码器产生在每一步生成一个分类类别。

Embadding layer

        使用Common Crawl预训练好的word embedding,在训练时不对参数进行微调,将输入的单词转换为向量。
Encoder

        是一个双向GRU,将每个词向量序列作为输入,并在每个时间步计算隐藏向量hi

注意力层

        采用Bahdanau等人的注意力变体,为每个编码器的输出hi生成一个文本向量ai

Decoder

        同encoder类似,使用一个双向GRU,使用文本向量ai和隐藏向量hi来进行预测C_{l_{jk}}^{l_{j}},其中l_{j }表示第j层,l_{jk}表示第j层中第k个类别。

辅助任务

        对于一个输入的单词序列,该模型预测了一系列的类别。鉴于递归神经网络,会存储一个序列的迭代历史信息。因此,对于最后的输出是会考虑之前的输入,之前的工作通常是每次先预测一个最可能的父类,再在相应的子类中进行预测。但这种方法,当错误传播时,对预测大体的类别的影响更大,即预测到越下层越困难。

        由可以对输入序列进行翻转得到启发,作者提出了一个辅助任务,改变输出序列中类别层次的顺序,即从子节点向上走到父节点。这样一来,父节点和子节点对错误传播都有一样的影响,并且模型能够学到更稳健的表征。

使用外部知识整合class-definition embedding

        对于每个类别,我们都在牛津字典中找到该字的定义,然后将其转为Common Crawl词向量,并相加求平均,最后将得到的向量(称为类别定义向量CDV)作为外部信息。

父节点调节(Parent node conditioning PNC)

        先对最高等级的类别C_{l_{1k}}^{l_{1}}进行预测(即第底层的所有类别概率,文中层数是由下到上的),并将它的CVD类别定义向量cv_{l_{1k}}^{l_{1}}作为额外的输入和编码器的输出一起进入到注意力层,用于下一层类别预测。

修改的束搜索

        束搜索(Beam search)是一种常用于机器翻译上的算法,我们考虑将其与计算出的CVD进行结合。

        在时间步i,束搜索基于上一时间步的输出,选出k(beam size)个可能的候选类别,并按其对数概率进行排序。计算候选类别的CDV和z(所有分类的CDV的平均向量)之间的余弦距离(公式中的CD)。我们将这一项加入到每个候选类别的对数概率中,重新进行排序并保留前k个候选分类。类似于机器翻译解码器中的浅层融合,因此类定义表征可能会在解码中引入偏移,有助于在分类模型中识别具有相近分数的类。

实验

        本文实验中,作者提出三个策略:

  • 相同学习率下的每两个epoch,交叉计算预测任务和辅助任务的损失函数,两个任务在训练网络中有相同的相关性。
  • 为了计算类定义向量,我们使用牛津字典的API1提取文本定义。我们使用预先训练好的Crawlembedding对描述的每个token进行向量化,并对其进行平均。
  • 束搜索的实验,使用k=5的大小,并分别使用原始算法和改变后的算法,seq2seq的基线模型中使用的束搜索大小为1。

         在WOS和DBpedia两个数据集上进行实验,结果如下:

         可以发现 父节点调节和辅助任务在seq2seq的基线上得到了提升。修改后的束搜索在WOS上的提升是最小的,但在DBpedia上得到了最好的成绩。作者认为一个可能的原因是在束搜索中加入的那一项跟句子表征的质量是强相关的。WOS中的科学领域中的类别比起DBpedia中的更难定义。

        在WOS上的提升比DBpedia大,一个比较明显的原因可能是DBpedia中的数据更多,作者认为该架构在大量的训练样本下能够只用原始训练数据来学习区分不同类别。所有我们提出使用外部知识的方法在数据较少的情况下表现效果的提升更大。

        将我们提出的策略进行结合,在WOS中,最好的结果是结合辅助任务和父节点调节的情况下得到的,但束搜索是用的原始公式。对于DBpedia,大多数结果都是差不多的。然后将使用PNC和原始或修改后的束搜索相结合以提高性能的相关性。

        最后将我们策略和目前最好的HTC模型进行对比,我们的模型在精度和参数的数量上都是更好的,而且提出的辅助任务并没有增加比较大的延迟。

结论 

        本文提出了通过增加反向层次预测任务的辅助任务和整合外部信息的方法,有效地提高了层次文本分类的效率。并在WOS和DBpedia这两个数据集上取得了最好的成绩。最后,作者还开辟了一条将知识整合到解码阶段的道路,这对其他任务是有好处的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值