二、Transformer
基于Transformer的模型可以在不考虑顺序信息的情况下将计算并行化,适用于大规模的数据集,使其在NLP任务中很受欢迎。Transformer由17年一篇著名论文“Attention is All Your Need”提出的。在这篇论文中,作者提出了一种全新的注意力机制— self-Attention,做到了仅仅利用Attention代替了传统的RNN,实现了快速并行计算,挖掘了DNN的特性。
Transformer主要分为两个部分:编码组件+解码组件,与传统的RNN编码、解码的结构很像。Transformer的编码组件由多个encoder(编码器)堆叠而成。每个encoder又有两个子层,分别是 FFN(前馈神经网络) + self-Attention(自注意力层)。FFN就是MLP(多层感知器架构)。而self-Attention层的输入是一个单词经过词嵌入处理的句子,也就是一个词向量列表,输出是结合了句子本身上下文注意力之后的融合向量。此外,为了能够从不同角度捕捉不同的关联程度,Transformer利用了一种"多头"的self-Attention机制。即一个self-Attention层拥有多组WQ 、WK 、WV ,每组分别用于不同的特征提取,把所有“头”通过一个高维矩阵W0 。Transformer的架构如下图:
图6 Transformer架构图
我们在之前介绍过,BERT系列模型其实也是Transformer模型,但归类为预训练的方法进行了介绍。本章节则聚焦于专门的Transformer系列模型。
2.1 X-Transformer
X-Transformer的工作发表在KDD 2020中,主要针对的是极端多标签(Extreme Multi-label XML)文本分类问题,即给定输入文本,从大型标签集中返回最相关的标签。因此,X-Transformer也是聚焦于稀疏的巨大标签空间问题(XML-CNN、AttentionXML等),只不过方法是deep transformer结构。X-Transformer的架构如下图:
图7 X-Transformer框架。首先,语义标签索引减少了庞大的输出空间。然后在XMC子问题上对Transformer进行微调,该子问题将实例映射到标签集群。最后,在集群和转化器的输出上有条件地训练线性排名器,以便在预测的集群中对标签进行重新排名
1)语义标签索引(Semantic Label Indexing,SLI)。利用层次聚类将XMC问题转化为更小的K个输出空间的子问题。给定一个训练集D,XML的目的是学习一个评分函数f,将输入(或实例)x_i和 一个标签l映射到一个分数f(x_i, l) ∈R。优化函数f,以满足当y_il=1时得分高(即,标签l与实例x_i有关),而当y_il=0时,得分较低:
其中,ϕ(x)代表一个编码,W 是分类器的瓶颈层。ϕ(x)的编码采用两种方式:一是,通过标签文本嵌入标签,利用XLNET的对每一个token进行词嵌入(token_dim=1 × 1024 )后求和然后平均池化得到标签的向量表示;二是,通过正面实例的嵌入进行标签嵌入。
2)作为神经匹配器的deep Transformer。经过SLI,原来难以解决的XML问题演变成了一个可行的XML子问题,其输出空间大小为K,是一个非常小的数。应用deep Transformer将每个文本实例映射到指定的相关集群。构建分类器:
训练时的Loss为squared hinge loss:
3)排序。用一个线性排序器对所属簇类标签进行排序。引入两个tricks:一是,Teacher Forcing Negatives (TFN)。为了在反向更新权重时提升运算效率并节省运算空间,在back propagation时一般都要进行负采样。本文在负采样抽样时只包含了与groudtruth l 标签属于同一簇的实例。二是,Matcher-aware Negatives (MAN)。为了解决exposure bias的问题,选择使用了MAM方法。该方法借鉴了Scheduled Sampling的思路,将groudtruth与上一个隐状态预测的label所在的簇相互融合。
当前 SOTA!平台收录 X-Transformer 共 1 个模型实现资源。
模型 | SOTA!平台模型详情页 |
X-Transformer | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/fa67640c-fedb-400e-a6fb-e83b4eedbb65 |
2.2 Light-XMLLight-XML是AAAI2021中最新的关于Transformer的模型,也是针对于XML问题提出的。在我们前面的介绍中,AttentionXML和X-Transformer存在两个共同的问题:一是,模型既大又多。对于一个数据集,AttentionXML需要训练四个模型。X-Transformer也需要分阶段训练两个模型。二是,负采样策略都关注于一些困难样本,或者说与正样本相似的样本,此种采样方法较难使得模型收敛。LightXML的思路是:结合Transformer和Generative Cooperative Networks将分阶段模型变成End-to-End模型,同时使用动态负采样策略让模型更容易收敛,从而获得更好的效果。
图8 Light-XML架构图
1)标签聚类。聚类方法与AttentionXML相同。由于两层的标签树以及足够处理XML问题,因此只设置了两层的标签树。2)文本表征。与X-Transformer相同,采用了三种预训练Transformer模型,BERT、XLNet、RoBERTa。区别在于Light-XML对于小型的XML数据集采用了512的输入长度,以及concatenate最后五层的[CLS]表示,作为模型输出。3)标签回溯。生成器:经过一个sigmoid激活的全连接网络(原文中称为Generator),生成K个标签簇的分数。选择其中top-b个标签簇的所有标签作为候选标签。在训练阶段会为候选标签加入所有positive的标签。使用交叉熵作为Generator的损失。动态负标签采样(Dynamically NLS):X-Transformer/AttentionXML是在第一阶段模型训练完成后,将其结果作为负采样的依据。而动态负采样方法对于同一个训练样本,其负标签在每一个epoch下重新采样,从而能够保证负样本由易到难,同时防止过拟合。4)排序。标签嵌入:通过随机初始化的标签嵌入矩阵获取候选标签的嵌入;Hidden Bottleneck Layer:参考上文我们介绍的XML-CNN的设置,在分类层和表示层之间加入一个低维的全连接层,起到降低参数量和增强非线性的作用。Discriminator:压缩原始文档表示,与标签嵌入相乘后得到最终所有候选标签的分数。最终使用交叉熵损失。
当前 SOTA!平台收录 Light-XML 共 1 个模型实现资源。
模型 | SOTA!平台模型详情页 |
Light-XML | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/7f477837-72fe-435d-b8e4-13d5308c7bfa |
三、GNN
随着图神经网络(GNN)的关注度越来越高,基于GNN的模型通过对句子的句法结构进行编码,在语义角色标签任务、关系分类任务和机器翻译任务中获得了出色的表现。它将文本分类变成了一个图节点分类任务。我们展示了一个用于文本分类的GCN模型,有四个输入文本,如下图所示。首先,将四个输入文本𝑇=[𝑇1,𝑇2,𝑇3,𝑇4]和文本中的词𝑋=[𝑥1, 𝑥2, 𝑥3, 𝑥4, 𝑥5, 𝑥6]定义为节点,构造成图结构。图形节点由黑色粗边连接,这表示文档-词边和词-词边。每个词-词边缘的权重通常意味着它们在语料库中的共同出现频率。然后,单词和文本通过隐藏层表示。最后,所有输入文本的标签可以通过图来预测。
图9 基于GNN的模型。初始图的不同取决于图的设计方式。给出一个例子,在文档与文档、文档与句子、词与词之间建立边
3.1 TextGCNTextGCN的文章发表在AAAI 2019中。TextGCN从整个语料库中构建了一个大图,其中包含了作为节点的词和文件,使用图卷积网络(Graph Convolutional Network,GCN)对该图进行建模,这是一个简单而有效的图形神经网络,可以捕捉到高阶邻域信息。两个词节点之间的边缘是由词的共现信息建立的,而一个词节点和文档节点之间的边缘是用词频和词的文档频率建立的。然后,将文本分类问题转化为节点分类问题。该方法可以在标注文档比例较小的情况下实现强大的分类性能,并学习到可解释的词和文档节点嵌入。
图10 文本GCN的示意图。样本取自Ohsumed语料库。以 "O "开头的节点是文档节点,其他节点是词节点。黑色粗边是文档-词的边,灰色细边是词-词的边。R(x)表示x的表示(嵌入)。不同的颜色表示不同的文档类别。CVD:心血管疾病,Neo: 肿瘤,Resp: 呼吸道疾病,Immun: 免疫学疾病
具体到TextGCN,其图卷积结构如下:
1)节点特征向量。把特征矩阵X = I设置为一个单位矩阵,每个单词或文档都表示为one-hot向量,作为Text GCN的输入。
2)边权重。TextGCN根据单词在文档中的出现率(文档-单词边)和单词在整个语料库中的共现率(单词-单词边)来建立节点之间的边。一个文档节点和一个单词节点之间的边的权重是该单词在文档中的术语频率-逆文档频率(term frequency-inverse document frequency,TF-IDF),其中术语频率是该单词在文档中出现的次数,逆文档频率是包含该单词的文档数量的对数比例的反分数。具体来说,对语料库中的所有文档使用固定大小的滑动窗口来收集共现统计信息,采用点对点的相互信息(point-wise mutual information,PMI)来计算两个词语节点之间的权重。形式上,节点i和节点j之间的边的权重被定义为:
在建立文本图后,将图送入一个简单的两层GCN,第二层节点(词/文档)嵌入的大小与标签集相同,并送入一个softmax分类器,最后再经过交叉熵做分类。两层的GCN可以允许最多两步远的节点之间的信息传递。因此,尽管图中没有直接的文档-文档边,但两层GCN允许文档对之间的信息交互。
当前 SOTA!平台收录 TextGCN 共 1 个模型实现资源。
模型 | SOTA!平台模型详情页 |
TextGCN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/64a6edf7-3e03-455c-bb54-26ab72607c0e |
3.2 TensorGCNTensorGCN相关论文发表在AAAI 2020中。TensorGCN构造一个文本图张量(多个图)来描述语义、句法和上下文信息。然后,对文本图张量进行了两种传播学习。第一种是图内传播,用于在单个图中聚合来自邻近节点的信息。第二种是图间传播,用于协调图之间的异构信息。TensorGCN提供了一种有效的方法来协调和集成来自不同类型图的异构信息,提升了文本分类的效果。TensorGCN的架构如下图所示:
图11 应用于文本分类的TensorGCN架构
与TextGCN不同,TensorGCN应用的是张量图,张量中每个图的结点都是相同的,而结点之间的边以及权重不同。张量图表示为:G =(G1;G2; ···;Gr),其中Gi = (Vi;Ei;Ai),Vi表示第i个图张量的结点集合,对于从同一段文本派生出来的图张量,Vi=Vj,Ai≠Aj。邻接矩阵也被定义成张量的形式:A = (A1;A2; ··· ;Ar) ,其维度为r×n×n。
我们需要在节点之间建立两种边:词-文本边和词-字边。词-文本边是根据文档中出现的词建立的,边的权重用TF-IDF方法计算。根据三种不同的语言属性建立词-字边:语义信息、句法依赖和局部顺序语境。基于这些不同种类的词-字边,构建了一系列的文本图来描述文本文件。
1)Semantic-based graph。(1)对指定任务的训练数据进行LSTM训练。(2)使用LSTM获取语料库中每个文本/句子中的所有单词的语义特征/嵌入。(3)根据语料库上的词的语义嵌入计算word-word的边权重。对于每个句子/文本,从训练后的LSTM输出中获得单词的语义特征/嵌入,并计算单词之间的余弦相似度。当相似度超过阈值,就认为两个单词之间具有语义关系。然后根据单词之间语义关系出现的频率计算结点之间的边权值。
2)Syntactic-based graph。使用Stanford CoreNLP解析器来提取单词之间的依赖关系。虽然提取的依赖项是定向的,但为了简单起见,将其视为无定向关系。与Semantic-based graph中使用的策略类似,计算了在整个语料库中每对具有句法依赖的单词的次数,并计算了每对单词的边权重(基于语法的图中的节点),如图12所示。
图12 利用LSTM编码的语义信息建立单词之间的关系。以一份文本为例,基于语义的图是通过收集所有文本语料库中的所有语义关系词对来构建的
3)Sequential-based graph。序列语境描述了局部共现(词与词之间)的语言属性,已被广泛用于文本表示学习。在这项研究中,利用滑动窗口策略和PMI来描述序列语境信息。
对于graph tensor,所有的图共享相同的节点集,唯一的区别是边。为了将上述三种不同的图聚合在一起,通过池化操作进行权值选取。不过,由于不同权重代表的含义不同,所以不能直接进行简单的池化。引入注意力机制,将分别乘上不同注意力的权值加在一起,代替池化操作:其中,W是需要学习的注意力矩阵,与邻接矩阵A的size相同。TensorGCN的图内传播和图间传播学习过程如图13:图13 以具有三个单词节点和三个文档节点的文本图张量为例,展示TensorGCN学习过程中的一个层。(a)图内传播从输入图张量学习;(b)图间传播学习,使用图内传播的输出作为其输入。这里仅以一个虚拟图为例,说明如何通过图间传播学习来协调异质信息。在实践中,所有的虚拟图都必须进行图间传播学习
图内传播就是在三种不同的图的内部分别进行GCN的卷积操作:图间传播学习在不同的graph之间交换信息(图13 b),为此定义了一系列特殊的图,称为virtual graph,通过连接张量中所有图的节点来实现,每一个结点都产生一个r*r大小的虚图,最终得到了图间邻接矩阵的tensor。每个虚结点之间都有边,并且权重设置为1。虚拟图上的图间信息传播学习定义如下:在TensorGCN的最后一层,在完成图间传播之后,对图执行一个平均池,以获得用于分类的文档节点的最终表示。
当前 SOTA!平台收录 TensorGCN 共 1 个模型实现资源。
模型 | SOTA!平台模型详情页 |
TensorGCN |
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/models/models/2702592d-f69f-41a6-9c29-924999576bd3 |
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。