本文共 3485 字,大约阅读时间需要 11 分钟。
作者:景
单位:燕山大学论文题目:Leveraging Graph to Improve Abstractive Multi-Document Summarization
单文档摘要,字面意思就是对单个文档做摘要生成,这里的单个文档,其实质指的是文本篇幅在一定范围内(一般定义为512字长),而不是数字意义上的一个文档。
多文档摘要是联合多个篇幅文档内容进行来生成摘要,与单文档摘要的区别就在于多文档摘要的篇幅过长,而单文档摘要内容相对较短。只简单将各文档的内容进行拼接来生成摘要内容是不可取的,一是因为主流的预训练模型能接受的文本长度在512字,二是如果直接对超长文本进行训练会大大增加训练成本,因此需要通过一些额外的技术来设计多文档摘要模型。同样的,针对文本篇幅超长的单文档摘要,也可以通过段落划分的手段进行多文档摘要来生成摘要内容。
本次讲述的论文提出了一种利用图注意力机制来进行多文档摘要生成的算法,该算法基于传统的Transformer模型,结合了ACL2019年的层次化的 Hierarchical Transformer模型,刷新了多文档摘要的SOTA。
论文提出的算法框架如下图所示,总体可分为编码器和解码器两部分。
首先,我们要面对的是一篇超长的文档,将文档按照段落进行划分,可以得到一个段落集合 P = { p 1 , p 2 , p 3 , . . . , p n } P=\lbrace p_1,p_2,p_3,...,p_n\rbrace P={ p1,p2,p3,...,pn}。
得到段落内容之后,紧接着需要对它进行编码。文中采用的编码方式为Transformer Encoder来对每个段落的文本进行字符级别的编码,具体编码过程这里不再赘述。作者依据编码的输出结果作为每一个段落的段向量。 到这一步,前置工作才算是完工。作者保持每个段落的相对顺序不变,将段向量结合位置编码后输入了作者自己定义的编码器。这个编码器又是如何设计的呢? 我们在前置步骤里得到了 n n n个段落向量,用 G = G [ i ] [ j ] G=G[i][j] G=G[i][j]来表示第 i i i个段落和第 j j j个段落的关系权重。作者在文中提到了三种权值矩阵,如下所示。 得到段落之间的关系矩阵后,我们根据 G [ i ] [ j ] G[i][j] G[i][j]来计算一个偏置的值 R i j R_{ij} Rij, R i j = − ( 1 − G [ i ] [ j ] ) 2 2 σ 2 (1) R_{ij}=-\frac{(1-G[i][j])^2}{2σ^2}\tag{1} Rij=−2σ2(1−G[i][j])2(1) σ为超参数。我们假设段落i和段落j的关系很密切,则 G [ i ] [ j ] G[i][j] G[i][j]的值接近于1, R i j R_{ij} Rij的值接近于0;反之 R i j R_{ij} Rij的值就会接近 − ∞ -∞ −∞. e i j = ( x i l − 1 W Q ) ( x j l − 1 W K ) T d h e a d α i j = s o f t m a x ( e i j + R i j ) u i = ∑ j = 0 L α i j ( x j l − 1 W V ) (2) e_{ij}=\frac{(x_i^{l-1}W_Q)(x_j^{l-1}W_K)^T}{\sqrt{d_{head}}}\\ α_{ij}=softmax(e_{ij}+R_{ij})\\ u_i=\sum_{j=0}^Lα_{ij}(x_j^{l-1}W_V)\tag{2} eij=dhead(xil−1WQ)(xjl−1WK)Tαij=softmax(eij+Rij)ui=j=0∑Lαij(xjl−1WV)(2) 作者自定义的编码器的设计方式类似于原Transformer的编码器,区别在于将偏置项 R i j R_{ij} Rij融入了注意力机制的计算当中,如式2所示,得到的 u i u_i ui即为第 i i i个段落与其他所有段落注意力之和。后续过程与原transformer类似,过前馈神经网络与层规范化函数,公式如下: p i l = W o 2 R e L U ( W o 1 ( u i + x i l − 1 ) ) x i l = L a y e r N o r m ( p i l + x i l − 1 ) (3) p_i^l=W_{o2}ReLU(W_{o1}(u_i+x_i^{l-1}))\\ x_i^l=LayerNorm(p_i^l+x_i^{l-1})\tag{3} pil=Wo2ReLU(Wo1(ui+xil−1))xil=LayerNorm(pil+xil−1)(3) 至此,一层编码器的设计结束,我们完成了由输入 x i l − 1 x_i^{l-1} xil−1到输出 x i l x_i^{l} xil的变化, x i 0 x_i^0 xi0为第 i i i个段落的段向量, x i l − 1 x_i^{l-1} xil−1为第 l − 1 l-1 l−1个编码层的输出信息。依照上述完成了编码器的设计,我们得到了段落级的注意力信息。那么该如何用段落级别的注意力信息来指导字符级(Token)的摘要生成呢?
用 y t l − 1 y_t^{l-1} ytl−1来表示第 l − 1 l-1 l−1层第 t t t个字符对应的解码层的输出信息,想用段落级注意力指导字符的解码,需要先建立起段落和生成的字符之间的关系。
s t = L ∗ s i g m o i d ( U p T t a n h ( W p y t l − 1 ) ) (4) s_t=L*sigmoid(U_p^Ttanh(W_py_t^{l-1}))\tag{4} st=L∗sigmoid(UpTtanh(Wpytl−1))(4) 式4中 s t s_t st代表 y t l − 1 y_t^{l-1} ytl−1所对应的段落的中心位置。这就完成了从摘要字符到上文中某一段落的一个映射,而我们已经在编码器当中构建了段落之间的关系,进而我们可以得到 y t l − 1 y_t^{l-1} ytl−1与全部上文的关系,如下式所示。 β t j = s o f t m a x ( e t j − 1 − G [ s t ] [ j ] 2 2 σ 2 ) (5) β_{tj}=softmax(e_{tj}-\frac{1-G[s_t][j]^2}{2σ^2})\tag{5} βtj=softmax(etj−2σ21−G[st][j]2)(5) β t j β_{tj} βtj即为第 t t t个解码出来的字符与第 j j j个上文段落之间的关系权值。 用 γ t , j i γt,ji γt,ji表示第 t t t个摘要token对应上文第 j j j个段落中第 i i i个字符的注意力分布,则规范化后的注意力为: γ t ^ , j i = γ t , j i ∗ β t j (6) \hat{γt},ji=γt,ji*β_{tj}\tag{6} γt^,ji=γt,ji∗βtj(6) 最后,分层图注意力模块的输出信息 d t d_t dt为: g t = ∑ j = 1 L β t j x j , l t = ∑ j = 1 L ∑ k = 1 n γ t ^ , j i x j i d t = U d T [ g t , l t ] g_t=\sum_{j=1}^Lβ_{tj}x_j,\\ l_t=\sum_{j=1}^L\sum_{k=1}^n\hat{γt},jix_{ji}\\ d_t=U_d^T[g_t,l_t] gt=j=1∑Lβtjxj,lt=j=1∑Lk=1∑nγt^,jixjidt=UdT[gt,lt]作者设计的模型的实验效果取得了SOTA
在本文中,作者利用图改进了摘要算法的性能,作者提出的模型能够将显式的图形表示形式合并到文档编码过程中,以捕获较长输入中的更丰富的关系,并利用显式的图形结构来指导摘要解码过程,以生成更丰富,更流畅和简洁的摘要。
转载地址:http://fhmgi.baihongyu.com/