论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 摘要
  • 一、介绍
  • 二、问题定义
  • 三、Hierarchy-Aware Global Model
    • 3.1 先验层级信息
    • 3.2 Hierarchy-Aware Structure Encoder
      • 3.2.1 Bi-TreeLSTM
    • 3.2.2 Hierarchy-GCN
    • 3.3 混合信息聚合
      • 3.3.1 Hierarchy-Aware Multi-Label Attention
      • 3.3.2 Hierarchical text feature propagation
  • 四、实验结果与代码复现


摘要

层次性文本分类(Hierarchical Text Classification)是==具有分类层次==的多标签文本分类中一项重要而又具有挑战性的子任务。现有方法难以从全局角度中建模分层标签结构。此外,它们不能充分利用文本特征空间和标签空间之间的相互作用。在本文中,我们将层次结构公式化为有向图,并引入==层次感知结构编码器==来建模标签依赖关系。基于层次编码器,我们提出了一种新的端到端层次感知全局模型,该模型有两个变体。一种多标签注意变体(HiAGM-LA)通过分层编码器学习层次感知标签嵌入,并对标签文本特征进行归纳融合。提出了一种文本特征传播模型(HiAGM-TP),作为将文本特征直接馈入层次编码器的演绎变体。与之前的作品相比,hiamm-LA和hiamm-TP在三个基准数据集上实现了显著且一致的改进。

一、介绍

分类层次通常建模为树或有向无环图,如图所示。

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第1张图片
该图中,输入为’David Beckham’s new book will be published.’ 这个简短的样本标记有新闻、体育、足球、特写和书籍这些分类标签。请注意,HTC可能是单路径或多路径问题。

现有的HTC有两种方法,一种是local approach,一种是global approach。

第一种方法,倾向于构建多种分类模型,然后采用自顶向下的遍历方式。之前的局部方式提出通过向父节点学习来克服子节点上的数据不平衡(?)。全局方法将HTC问题视为平面MLC问题,并对所有类使用一个单独的分类器。

在本文中,我们将层次结构化为有向图,并利用标签依赖的先验概率来聚集节点信息。提出了一种层次感知的全局模型,利用标签结构特征来增强文本信息。它包括用于提取文本信息的传统文本编码器用于建模分层标签关系的分层感知结构编码器。分层感知结构编码器可以是树形结构模型,也可以是集成了分层先验知识的分层GCN模型。此外,这两个结构编码器是双向计算的,允许它们以自上而下和自下而上的方式捕获标签相关信息。因此,HiAGM比以前的自上而下模型更健壮,并且能够减轻由暴露偏差和不平衡数据引起的问题。

为了聚合文本特征和标签结构特征,我们提出了两种HiAGM变体,多标签注意力模型HiAGM-LA和文本特征传播模型HiAGM-TP。

本文主要贡献:

  1. 对标签依赖关系进行了建模。
  2. 提出了一种新的global model,有两种变体。
  3. 在不同数据集实现了一定的改进提升。
  4. 提供了代码。

二、问题定义

分类层次主要包括树状结构和有向无环图结构,有向无环图结构可以被简化为树状结构。

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第2张图片
图2:分类层级的例子,数字表示的是训练语料库得到的标签依赖先验概率

如图2所示,我们将有向图G作为分类层次。

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第3张图片
把HTC定义为H = (X,L),这里X = (x1,x2,…,xN)是输入的文本集合,L = (l1,l2,…,lN)是样本对应的标签集合。

以wos为例,它是简单的二层结构:论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第4张图片

三、Hierarchy-Aware Global Model

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第5张图片

3.1 先验层级信息

分类层次描述了层级的关系,主要瓶颈就是如何充分利用这种结构。HiGAM把这种关系用概率来表示。

假设在父节点Vi与子节点Vj之间有一个层级路径eij,边缘特征f(ei,j)通过P(Uj | Ui) 和 P(Ui | Uj)表示:

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第6张图片
Uk是vk的存在并且P(Uj | Ui)是Vi出现的Vj的条件概率。Nk是Uk在训练集中出现的数量。

3.2 Hierarchy-Aware Structure Encoder

Tree-LSTM和图卷积神经网络(GCN)被广泛用作在自然语言处理中聚集节点信息的结构编码器。如模型结构图所示,HiGAM 模型细粒度层级信息是基于hierarchy-aware structure encoder的。
论文中提出了两种编码的方式,一种为Bidirectional Tree-LSTM,一种为Hierarchy-GCN。

3.2.1 Bi-TreeLSTM

该方式是利用Tree-LSTM来编码。

关于Tree-LSTM的解读参考:Tree-LSTM结构

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第7张图片
论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第8张图片

3.2.2 Hierarchy-GCN

Hierarchy-GCN在自顶向下、自底向上和自循环边内 聚集数据流。在层次图中,每个有向边代表一个成对的标签相关特征。因此,这些数据流应该通过边向线性 变换进行节点变换。然而,边缘方向的变换将导致过度参数化的边缘方向的权重矩阵。我们的Hierarchy-GCN用一个加权邻接矩阵简化了这个变换。这个加权的相邻矩阵表示分层的先验概率。

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第9张图片
式中ak,j对应的节点先验信息,节点d(j,k)为节点j到节点k的路径。如果是父节点到子节点,ak,j = Nk/Nj;如果是子节点到父节点或者自己到自己,ak,j = 1。

3.3 混合信息聚合

以前的全局模型根据原始文本信息对标签进行分类,并通过预定义的层次路径来改进解码器。相比之下,我们构建了一个新颖的端到端层次感知全局模型,用于文本特征和标签相关性的相互作用。
给出一个文档 x = (w1,w2,…,w3), 首先将嵌入序列送入bi-GRU网络中获取文本特征。然后,多种CNN被用来产生n-gram特征。n-gram特征的连接由top-k 最大池层过滤以提取关键信息。最后我们可以得到一个文本表示S = (s1,…,sn)。

3.3.1 Hierarchy-Aware Multi-Label Attention

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第10张图片
aki表示第k个标签第i个文本特征向量的信息量。该方法就是把输入的文本向量S与得到的特征向量体系h进行交互计算,得到的V就是最后预测的结果。

3.3.2 Hierarchical text feature propagation

节点输入V通过文本特征的线性变化形成,M是可训练的权重矩阵。

在这里插入图片描述

四、实验结果与代码复现

调试合集
论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第11张图片

源码地址:Gituhub传送门

GitHub的Read me:
论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第12张图片
论文在三个数据集上进行了测试,分别为rcv1-v2; NYT;以及WOS。

问题开始出现:
1.下载源码后发现rcv1-v2的相关参数信息已经给好,但是跑通后只有30%的准确率。
求助老师学长后,发现这是样例数据,要下载处理全部数据。
2.下载数据
github中所给的数据页面,签署协议的页面失效。
之后搜索到 https://trec.nist.gov/data/reuters/reuters.html 该页面,可以下载协议。发送到邮箱得到许可,但是因为搜到的比较晚,还没有得到许可。
3.转战WOS数据集
WOS:数据链接

首先,处理数据,以及计算label的概率。

之后设置config的参数,进行测试。

【但因设备问题,只能挂云服务器使用cuda进行处理】
在租借的服务器上运行GCN单个epoch大概要跑一分钟,TreeLSTM单个需要540s左右,没办法做到完全复现论文很大epcoh的结果,但就目前GCN运行约40epoch,TreeLSTM运行13epoch的结果来看,效果还是很好的。

这是GCN-TP模型上micro的准确率在84.5%,论文中是85.82%。
论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第13张图片
gcn-la micro

论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第14张图片

tree-tp micro
论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第15张图片

需要修改的地方:
1.下载embedding文件 glove.6B.300d.txt
2.不同的数据集要进行不同的数据预处理
3.不同的数据集在prior probability要更改关系
4.不同类型可以更改 -LA,-TP(在config里)
论文阅读 Hierarchy-Aware Global Model for Hierarchical Text Classification_第16张图片

注意的点:
准确率,精确率,召回率,以及关于Micro,Macro部分的区别。

目前遇到的问题:
1.matpool上磁盘空间不够引起的
OSError: [Errno 122] Disk quota exceeded
升级网盘容量就好了。
2.NYT数据,rcv1数据的获取
3.挂载云服务器的使用
4.遇到了cuda的一个错误:
runtime error: transform : Reduce failed to synchronize: device-side assert triggered at XXX
一跑epoch就会出错,在网上搜索后看到这篇文章
首先,尝试了在cpu跑,跑完第一个epoch并没有出错。
然后尝试了CUDA_LAUNCH_BLOCKING=1 python script.py
错误信息并没有详细很多,能看出来是loss回传出了问题。
检查label和embedding层没有发现问题。
还有可能是BCELoss输入张量应为0-1,发现警告:torch.nn.fucntional.sigmoid is deprecated, use torch.sigmoid,可能和这个有关系。修改之后可以正常训练。

你可能感兴趣的:(深度学习,深度学习)