本论文使用一个GCN-RNN的encoder-decoder模型,通过新闻自动生成新闻评论。
itag的一个问题在于,它只利用到了文档本身的信息,而没有利用到文档之间的关系信息。这段工作的重点是使用GCN改良itag,因为GCN能利用文档间的信息。所以阅读了这篇论文
(这篇论文在2020年2月左右阅读)
论文背景
在传统的基于RNN的encoder-decoder文本生成模型中,对于新闻这种文本内容较长的数据,生成评论的效果较差,基于RNN模型读取到文本后部的时候对于文本前部分的数据实际上已经丢失的差不多了。
(所以才有transformer这种基于注意力的东西冒出来)
论文简介
本论文基于Graph-to-Sequence模型构建了一个新闻评论生成模型,计算步骤如下:
将新闻的标题和新闻内容的各个句子构建成图
将每个节点进行编码
进行图卷积运算
将获得的各个节点的编码序列通过注意力机制转合并成一个序列
基于这个序列,使用RNN生成评论
即,将编码-解码器模型的编码器替换成了一个基于图的编码器,解码器部分依然是RNN。
(本论文的GCN编码器并不是那种捕捉文本间关系的GCN,这个GCN的节点是一篇新闻的标题和它的各个句子,即实质上还是只利用到了文本本身的信息。)
要实现以上的计算步骤,需要解决的问题有:
怎样将一篇文档构建成图
怎样构建节点
怎样构建边
怎样将构成图的文档进行编码
对图进行何种计算
如何将全图的节点合并成一个序列送入解码器中计算
模型实现
编码器(图)构建法:
节点构建法
本篇论文的模型的节点由一篇新闻中的各个句子生成。
首先对每个句子进行预处理:使用分词工具挑选出每个句子中的命名实体(原数据集为中文),但是仅使用命名实体不足以提取出句子的重点,另外还需要使用textRank这类关键字提取算法提取句子的关键字。
提取出关键字后,基于关键字将每个句子分配到其对应的关键字下,由于一个句子可能含有多个关键字,故这个步骤允许将一个句子多次分配到不同的关键字下。
对于标题,因为标题含有的信息密度远大于新闻本身的独立句子,故独立将标题组织成一个标题节点。
另外有一些不含有任何关键字的句子,将其全部放入到一个特殊的“空”节点下。
关键词是节点的第一个,然后依次排列每个句子、
边的构建法:
将句子分配完成后,根据每个关键词节点间共享句子的数量生成边,两个关键词节点间有共享的句子则添加一条边,边的权重由共享句子的数量决定。这种边生成的方法度量了两个关键词节点间的相似程度。另外作者也提到可以使用tf-idf来度量节点间的相似性并生成权重。

节点的编码:
NLP任务中,是需要将文本内容进行一定形式的编码的,本文在此处没有使用先将文本编码再构建图的方法,而是在构建完图后再进行文本的编码,即构建图时使用的是原文本。

为了对节点进行编码,作者使用了一个基于多头自注意力的顶点编码器,顶点编码器由两个部分组成,一个是嵌入模块,另一个是自注意力模块。
对于单词wi,首先在嵌入表中查找wi的嵌入ei,每个节点的关键词k和句子单词w使用同一个嵌入表。然后为了表征单词的位置,将wi的位置嵌入pi也导入到的嵌入向量中。单词的最终嵌入向量为原始单词嵌入ei和位置嵌入pi的和:

单词嵌入和位置嵌入都是可学习向量。
然后将ϵ送入自注意力模块中,自注意力模块将对单词间的互动进行建模,使得每个隐藏矢量都能够包含顶点的上下文信息。

对于第一层,Q、K、V都是ϵ,对于之后的层,Q、K、V是上一层的输出,Wo,WQi,WKi,WV i都是可学习的矩阵
图卷积运算
编码完成后,在图上执行图卷积操作,输出n个隐藏状态(n=1+1+关键词总数)

对图执行两次图卷积操作(论文中未提及卷积次数,但源代码中只叠加了两个GCN层)

其中A是每个节点的邻接矩阵(NxN)、IN是单位矩阵(即增加一个自连接)

H是每个节点的编码(NxKl),W是待学习权重(KxKl+1)
与原版GCN不同之处在于,本论文在输出时使用了类似于图片卷积操作的残差结构,即将每层的激活状态和前一层的激活状态相加后再进行最终输出。作者称这种操作有助于改善模型性能。

执行最终输出时需要进行非线性变化,Wo为待训练权重矩阵,gout为最终输出
至此该模型的编码器部分结束,解码器部分是一个使用了注意力机制的RNN



ti是RNN的输入,t0是START标记,gi是GCN输出的隐藏状态,aj是每个隐藏状态的注意力权重,δ是注意力机制的运算函数,v、w1、w2为待训练参数。
另外,由于主题词k是文章的重要信息,并且有可能出现在评论里,故本文还使用了一个关键词机制,利用解码隐藏状态ti和上下文向量ci动态计算从主题词复制的概率pcopy,
解码器的每轮输出最终是从RNN的输出中和每个主题词中挑选。

其中Wo,W,Wcopy,b都是待训练参数。
总结
(照例没有试验结果分析,反正结果不好他们也不会发,何况这是篇ACL)
虽然这篇文章的模型实质上并没有利用GCN提取文档间的互动关系,但其提出了一个有效的利用GCN为文档生成编码的方法法:使用命名实体构建文档图。并且这个方法可以借鉴用于构成文档间互动图。
另外,本文的文本节点中含有有效的信息,而非使用随机初始化的空节点(GCN原版为随机初始化),这一点也有一定的意义(下篇介绍的Text-GCN就是使用随机初始化来构成初始文本节点)。