Abstract
- 通过文本抽取的方式生成摘要已经陷入瓶颈。
- 通过抽象语句的含义来生成摘要是一个很有潜力的方向。
- 本文提出了End to end attention-based model来解决这个问题。
Introduction
- Abstractive Summarization:摘要的本质是文本核心意思的压缩表示。许多成功的摘要系统都是通过文本抽取(text extractive)实现的,本文提出了一种完全数据驱动的生成式摘要抽象方法。
- NNLM and encoder:本文参考了神经机器翻译的思想,将神经语言模型和基于attention机制的上下文encoder结合起来做summarization。同时文章还借鉴了extractive的方法提出了一个基于beam-search的decoder。
- Scale:由于本文的模型是End-to-end训练的,因此非常容易迁移到大数据上进行训练。
Background
- 本文的目标是对输入的句子进行信息压缩,输出句子的摘要信息。
- 输入x是一个长度为M的句子,输出y是一个长度为N的句子,其中N<M,N的长度是固定的。通过one-hot编码将x编码成V*M的矩阵,将y编码成V*N的矩阵,其中V指的是语料库大小。
-
sentence abstractive:表示从所有可能的y中选择最优的一个。
sentence abstractive
-
sentence extractive:表示将x转化成最能表示其含义的subsentence。
sentence extractive
-
sentence compression:表示从x中删除最不重要的word。
sentence compression
- x到y的映射函数s由下式定义。预估输出的第i个词
yi
时,依赖输入x、yi
的前C个词yc
以及隐变量theta
,这里对上下文窗口C做了Markov假设。映射函数s
Model
模型融合了一个神经语言模型和一个encoder,其整体框架如下![](https://img.haomeiwen.com/i6072711/bbd0e505989e1883.png)
a. Neural Language Model
-
神经语言模型是如上图红圈部分,采用了Bengio提出的NNLM语言模型,其定义如下式所示
NNLM模型
对这个模型的解释如下所示
- 通过embedding矩阵E对上下文
yc
进行embedding,生成上下文的压缩表示。由于矩阵E是D*V维的,yc
是V*C维的,所以E·yc
生成的是D*C维的矩阵,再经过Flatten操作变为CD*1维的向量。 -
yc
的embedding表示经过全连接再激活之后生成语义向量h,该向量是当前的上下文yc
的语义压缩,表示yc
的下一个词,操作如图所示语义向量h的生成过程
- 通过一个encoder将输入x和上下文
yc
编码成H维的向量enc(x,yc)
,这个向量实际上就是一个注意力向量。矩阵W和V分别将NNLM和encoder的输出转化为V维向量再进行join,最后经过softmax变为下一个摘要文字的生成概率。第i+1位摘要文字的生成概率
- 通过embedding矩阵E对上下文
b. Encoders
如果没有encoder,这个模型只是一个依赖生成句子上下文的语言模型。通过encoder可以将输入x也编码进生成过程中,这样最终生成的概率同时包含了输入x和上下文yc
的信息。
本文介绍了三种encoder
-
Bag-of-Words Encoder:最简单的encoder是BoW,如下式所示。
BoW encoder
- 首先通过embedding矩阵F将输入x编码成H*M维的矩阵,每个word由原来的V维降为H维(H<V)。
- 构造均匀分布的注意力向量p,相当于在估计下一个生成word时给输入句子x中的每个词相同的权重。
- 将x变化为H维的语义向量,这个过程丢失了原来句子的语序关系,因此效果并不好。
- Convolutional Encoder:一个深层卷积模型,这个模型较BoW的优势在于可以获取相邻单词之间的组合信息,这个encoder同样没有考虑将上下文信息
yc
编码进来。CNN Encoder
这几个公式实在太晦涩,所以我画了一个图来说明文中的卷积块是如何设计的,如图所示Q是一个大小为H*(2Q+1)的卷积核,maxpooling的窗口大小为2*1。由于卷积采用了padded at the boundaries的方式,因此每次卷积完输入size不变,只在maxpooling之后减半,所以文中说M必须大于2的L次幂。一个卷积块的例子
由上图可知CNN网每次可以获取2Q+1个word的临近关系,CNN的模型容量远大于BoW,但是每生成一个摘要词语,输入x中所有单词贡献的权重是一样的。这显然违背我们的直觉,因为摘要中每个词只对应输入文本中的一部分词语,所以这里提出了第三个encoder。 -
Attention-Based Encoder:attention-based encoder的结构图如下所示,是之前模型整体框架中蓝圈部分的展开。
attention-based encoder结构图
attention-based encoder的定义和BoW的很接近,如下式所示。attention-based encoder的定义
这里对式子进行简单推导:
- 对上下文
yc
进行embedding,由于G是D*V维,所以embedding之后再Flatten的yc
为CD*1维。 - 对输入x进行embedding,由于F是H*V维,所以embedding之后的x是H*M维。
- 矩阵P是输入x和上下文
yc
之间的一个软对齐,大小为H*(CD)维,因此p是M*1维的输出向量。这里重要的是对这个向量p的理解:向量p代表在当前上下文yc
的情况下,生成下一个词语y(i+1)
对输入x中各个词语的依赖概率,也就是注意力概率。 - 对embedding矩阵
~x
进行平滑(吐槽简书不支持Latex),具体做法是用一个大小为2Q+1的窗口对相邻词语向量求平均,实际上就是由2Q+1个词向量组成短语向量。 - 最终的输出
enc(x, yc)
代表对输入x和上下文yc
进行结合的语义向量。(上下文yc
按照不同的注意力概率对输入x中的各个短语向量进行加权求和)
-
一个生成摘要的例子,横轴代表生成的摘要句子,纵轴代表输入的原始句子。图中每一列代表生成该词语时,其上下文对输入句子中词语的注意力概率热力图。
上下文对输入句子的软对齐
c. Training
由于缺少生成约束条件,因此训练采用最小化负对数似然的方式来逼近最优解,优化算法采用mini-batch SGD。![](https://img.haomeiwen.com/i6072711/94bb95eadb556571.png)
Generating Summaries
-
前面的介绍都是给定了训练集,如何训练网络寻找生成概率最大的词语。现在回归到初始问题:给定一个输入句子x,如何生成概率最大的摘要句子。
- 由于没有硬对齐的约束,因此可以用Viterbi算法解决,时间复杂度为O(NV^{C}),由于V数值过大,因此求解的性能会受到影响。
-
本文采取的策略是beam search,每轮迭代生成概率最高的K个摘要子串,算法复杂度为O(KNV),算法流程如下:
beam search
- 由于每一轮迭代都会计算给定上下文
yc
下K个最可能的子串,这个计算行为可以通过mini-batch进行,因此K这个参数可以忽略不计,极大的提升性能。
Extension:Extractive Tuning
抽象式模型的一个缺点是对于源句子中的一些没见过的专有名词不能抽取出来。解决这个问题可以将Abstractive模型和Extractive模型的优点结合,即ABS+模型。
ABS+的优化目标是最小化负对数似然函数
![](https://img.haomeiwen.com/i6072711/75cb2d5ff2f20804.png)
其中alpha是需要学习的权重向量,函数f是一个特征生成函数,最小化负对数似然等同于最大化打分函数
![](https://img.haomeiwen.com/i6072711/58a34232b72262c2.png)
其中特征函数f的定义为
![](https://img.haomeiwen.com/i6072711/b9e28959e63d4c24.png)
搞过机器学习项目的同学可能一看就明白了,这个实际上就是拿出ABS网络预测的结果作为一个feature,再结合一些人工拍的规则组合成一个5维的特征向量。打分函数s本质上就是对特征向量f进行线性回归得到的回归分数,如果设置
α = (1, 0, . . . , 0)
,ABS+退化成ABS模型。文中介绍说这些人工拍的规则主要是提取输入x中的unigram、bigram和trigram特征。
Related Work
-
Syntax-Based
Dorr, Zajic, and Schwartz 2003; Cohn and Lapata 2008; Woodsend, Fend, and Lapata 2010 -
Topic-Based
Zajic, Dorr, and Schwartz 2004 -
Machine Translation-based
Banko, Mittal, and Witbrock 2000 -
Semantics-Based
Liu et al 2015
Experimental
主要是一些超参:
- learning rate=0.05
- D=200 上下文embedding之后的长度
- H=400 输入embedding之后的长度
- C=5 上下文窗口大小
- L=3 层深,这个存疑好像没用到
- Q=2 平滑窗口大小
网友评论