Model

模型的基本结构如下

encoder

论文对文章用段落进行划分

image.png
然后每一个段落用一个Agent进行提取,一个Agent是多行的LSTM模组

  1. 底层的LSTM编码单词
  2. 在底层的LSTM上堆叠几层的LSTM用于提取上下文信息,堆叠的上下文LSTM比较有讲究
    1. 接受底层传上来的
    2. 接受相邻BiLSTM的信息、
    3. 接受相邻的Agent信息(相邻段落)(对于多个Agent的最后一个token的 average pooling)

image.png
最后经过多层之后,每一个Agent,也就是每一个段落会对每一个tokens输出一个表示
截至这里encoder的工作就完成了

decoder

用decoder-state去每一个Agent内部对每一个token的表示做一个Attention,不是点积而是用线性函数
加权之后每一个Agent都会得到一个word context vector

随后和token级别Attention思路类似的Attention作用在Agent的Word Context Vector
最后汇合得到一个表示,以及decoder-state,联合计算Softmax
这里就可以对应的得到原始的Vocabulary的概率分布
这里有一个Trick,因为上述的过程可以看作是在选择decoder用哪个agent的信息,那么为了以防小的噪音导致decoder频繁的切换使用不同agent的信息,导致信息混乱,这里计算Vocabulary分布的时候加入了上一个状态的decoder-state,这样会计算权重更加稳定

最后又用了一个Multi-Agent Pointer Network,本质是Copy,让网络决定要不要复制个词到摘要里
这个我没太看懂,有点懵

Train Target

论文使用了多个训练目标进行组合使用

MLE

最基本的最大似然损失

Semantic Cohesion

生成过程中,一旦生成到句号代表一句话生成的结束,用这个状态作为句子的结尾
然后相邻生成的句子之间计算相似度,希望句子之间的重复度不要太高

Reinforcement Learning Loss

强化学习方法把摘要和标注之间的ROUGE作为奖赏,然后在生成结果和贪心结果做对比作为损失,使得模型学习生成更好的摘要(比贪心策略更好的摘要)

Intermediate Rewards

每两步生成句子,之间都做一次ROUGE差值作为reward

Result

实验在CNN/DM上的结果经过了裁剪,不能直接比较
image.png

Analysis

Multi-Agent
agent的数量太多也不好,太少也不好,论文觉得3个最好

Independent vs. Communicating Agents
如果agent是独立的,多agent和单agent效果差不多,有了交互之后效果拔群

Contextual Agent Attention
这个模块有利于提取信息,同时保证decoder选择agent信息的稳定性

Repetition Penalty
强化学习方法,强化学习方法的确各方面提升ROUGE

结果

  1. 多个Agent的结果更好,生成的冗余少,主干全
  2. 多Agent分布全,对应的Attention分布均匀,用到了多处的数据,对应更高的ROUGE-L