【Ranking Sentences for Extractive Summarization with Reinforcement Learning】
Introduction
这篇文章使用强化学习的方法来做摘要的任务,所谓的摘要的任务就是精简一篇大长篇的文档,现在的常用的方法有两种,第一种称为Extractive System就是从文本之中直接抽取句子,常用的手段是将其看成是一个序列标注的任务,判断其是否要加入至摘要之中。第二种叫做 Abstractive Summarizations 就是读懂文章,然后自己写一点相关的东西。文章首先拿起来批判了第一种的Extractive方法的目标函数有问题,这种0,1二分类的问题一般是使用交叉熵函数作为Objective的,这样子训练的话会导致出现一些没有必要的句子和重复的信息。所以作者为了克服这个问题使用了一种叫做ROUGE的评估方法,又是我社会龙哥。通过两种方法的结合,使得整个的框架可以更好的运行。
文章的贡献有三
- 使用强化学习的方法对于句子排序并且抽取摘要
- 证明了Cross-Entropy并不适用这个任务
- 发现了Abstractive 的效果不如Extractive的好
Model
如果将文档$D$看成是一系列句子的序列$(s_{1},s_{2},\cdots,s_{n})$,一个Extractive Summarizer 就是从上面的这么多个句子之中选择出$m$个最好的句子。对于之中的每一个句子,给他们一个Label分别是$y_{i}\in \{0,1\}$,并以$p(y_{i}| s_{i} ,D,\theta)$表示这个程度。然后选择这个Top m 的变量作为摘要。模型由三个主要的组件构成,Sentence Encoder, Document Encoder , Sentence Extractor.
其中的Sentence Encoder是一个CNN网络,作用是将输入的句子进行向量化的表示。得到向量化的表示$(s_{1},s_{2},\cdots ,s_{n})$.
Document Encoder则是由LSTM所构成,直接对于$(s_{1},s_{2},\cdots ,s_{n})$丢进LSTM就是了。
而Sentence Extractor就是打标注的东西。判断是0还是1♂,然后根据判断是1的概率从上向下排序。
接下来就是对于BCE的批判了,作者认为之前的工作都是以最大化$p(y|D,\theta) = \prod_{i=1}^{n} p(y_{i}|s_{i},D,\theta)$为目标,如果以交叉熵作为损失函数的话
$$L(\theta) = -\sum_{i=1}^{n}\log p(y_{i}|s_{i},D,\theta)$$
这样仅仅是为了最大化所有的概率,但是我们的真正的目标是为了正确的对于所有重要的句子进行排序,可能会疑惑这难道不是一样的吗?事实上似乎真的不一样,由于交叉熵函数会倾向于正确标签预测概率的准确性,忽略了其他非正确标签的差异,如果是纯粹分类任务的话自然无伤大雅,但是这里所要做的事情不仅仅是分类为0或者是1,并且我们也同样的关注这样的一个输出值的大小。 并且由于标签也是人工给出的,如果仅仅是以交叉熵作为损失函数的话,很容易就将人的偏见给带进模型之中。
所以作者在这里根据文中的句子的各自的句意与给出的Gold Summary的Correspondence的程度分配Label。并且不是给某个句子确定是0或者是1,而是选择一个句子集合,这个句子集合之中的句子都被认为是Labeled的要丢进Summary之中,相比于单独的句子的标注,这样的方式显然会更有全局的意识。但是这样的方式使得模型在对于句子进行排序的时候不会那么有效,也就是说ROUGE高的句子可能不一定会被放进摘要集之中。所以作者采用了强化学习的方法搞定这样的一个问题。
将上面的深度学习网络看成是强化学习的过程,是一个代理(Agent)通过与环境(Environment)进行交互得到更高的Reward的过程。代理被随机的初始化之后,通过阅读文章对于每一个句子都进行评价得到一个Score,这个评价的Policy就是
$$p(y_{i}|s_{i},D,\theta)$$
当Agent读完文章之后,就会生成一个带有标签$\hat{y}$的摘要。得到了摘要之后,与Gold Summary进行比较,得到一个Reward $r$,$r$是ROUGE-1,ROUGE-2,ROUGE-L的F1的值,其中1和2分别是为了评估信息量,而$L$则是为了评估流畅度。得到了$r$之后就开始强化学习的过程,意图最小化
$$L(\theta) = -E_{\hat{y}\sim p_{\theta}}[r(\hat{y})]$$
但是上述的梯度是不存在的,所以作者使用了一个函数作为替代
$$\Delta L(\theta) = -E_{\hat{y}\sim p_{\theta}}[r(\hat{y}) \Delta \log p(\hat{y}|D,\theta) ]$$
由于抽样可能会出现各种奇奇怪怪的结构,所以在实践之中只是使用其中的某一个样本作为近似,有点SGD的意思
$$\begin{split}\Delta L(\theta) \simeq & -r(\hat{y})\Delta \log p(\hat{y}|D,\theta) \\ \simeq & -r(\hat{y}) \sum_{i=1}^{n} \Delta \log p(\hat{y}_{i}|s_{i},D,\theta )\end{split}$$
这个\hat{y}是怎么获得的呢?通过搜索获得的,其搜索空间限制为一个集合$\hat{Y}$,这个集合怎么获得的呢?其先在文档之中选择$p$个最高的ROUGE分数的句子来组合成为长度为$m$的所有的组合,并与我们的Gold Standard进行对比,得到的结果按照Reward的大小进行排序,取前$k$个,这$k$个的集合就是搜索空间。
文章之中还提到了另外的一种强化学习的方法叫做MIXER(Mixed Incremental Cross-Entropy Reinforce)一开始使用Cross-Entropy的方法训练后面再使用Bengio的Curriculum Learning的方式进行学习。不过自己对于强化学习也不是很熟悉,以后再写关于这块吧。不过文章之中对于这样的方法也只是一笔带过,提了一下效果而已。
Comments
这篇文章也是非常Neat,自己学到了几招和大家列一下,第一招:遇见不可导的玩意怎么办?找一个与原函数相关的函数,然后改造改造让它变成他的导数。第二招:不要过分的关注Label,Label很多时候也是有各种乱七八糟的错误,或者是标注的质量不高,过分的依赖很有可能使得算法出现问题。第三招,强化学习,自己对于强化学习一直都还没有入门,只是知道一鳞半爪的,不过读了这篇Paper之后发现强化学习的应用场景非常的广阔,也可以作为一个重要的组件与现有的模型混合,以后自己再多学一些强化学习的东西和大家分享吧。
Reference
Ranking Sentences for Extractive Summarization with Reinforcement Learning
Comments
Leave a Comment