Celikyilmaz A, Bosselut A, He X, et al. Deep communicating agents for abstractive summarization[J]. arXiv preprint arXiv:1803.10357, 2018.

NAACL18, Microsoft, Allen Institute, JD AI

该论文在 CNN / Daily Mail Non-anonymized version 取得 SOTA, 之后多篇论文均与该论文成果进行比较,值得一读。

# 论文创新点

现有的模型在长文本上的 Decode 能力不足,一些表现很好的短文本 encoder 面对长文本时编码能力大幅下降,即使是 LSTM 在编码长文本时也存在一定局限性,先输入的部分无法考虑后文,使得编码结果不尽人意。

为解决长文本编码问题,论文借鉴其他领域的 deep communicating agents (DCA) 机制,将一个长文本 (Document) 的多个段落 (paragraphs) 分配给多个 agents 编码,这些 agents 相互之间会分享编码结果,根据其他段落的编码来优化自身编码,之后对编码结果进行整合 (attention 或其他方法),形成 Document vector.

上图是两个简单的 agent 示意图, 分别是两个不同的 paragraphs, 首先经过 layer-1 进行自编码,之后相互交换编码信息,加入对方编码结果后再次编码,再次进行通信 (Communicate),如此循环,这便是 Deep Communicating agents 的由来。

# 模型分析

DCA Model 初看之下比较复杂,不过一层一层拆开来看可以很方便的理解:

整个模型由三部分组成: Context Encoder, Attention Layer(Attention 确切说应该算入 Decoder 层,其计算受 Decoder time 影响), Decoder. 其中:

  • Encoder 由多个 agents 构成,每个 agent 最终生成基于词序列的context vectors;

  • Attention Layer 共分两层:word attention 和 agent attention. Word attention 是针对一个 agent 的输出(m个词产生的context vectors) 计算出 attention weight 得到加权后的 paragraph vector; agent attention 针对所有 paragraph vector 计算权重,得到 document vector.

  • Decoder 层结合 document vector 对输出词进行预测,加入 pointer, RL 等方法提高模型处理能力。

# Encoder Layers

记一个文本 Document 由一系列 paragraphs , 构成,每个 paragraph 个词的集合 ω , 每个词 ω 经 embedding 后得到 n-dimensional vector

模型为每个段落分配一个 agent 进行编码, 对应 agent-1 …… 对应 agent-M.

Encoder Layer 共分2个部分:

Local Encoder:采用 1-layer BiLSTM 对 进行编码, 过一个映射得到

Contextual Encoder:Contextual Encoder 有 K 层,每层由 BiLSTM 构成,接受上一层的 和 来自其他 agents 的 作为输入:

其中 是来自其他 agents 第 k 层的 last-output 的平均值

为什么取平均

论文中提到,此处取平均也可以是 attention, forward 等其他方法,论文并未对不同方法所得结果进行比对,这里猜测为了缩短训练时间吧(多加的参数反向传播回去更复杂了)。

得到 后结合上层输出进行变换:

, , 都是训练参数,且在所有 agent 间共享

# Decoder Layers

在经过 Encoder Layer 后, 每个 agent 会产生 序列,其中第一个 agent 的 last-output 用于初始化 Decoder state.

Decoder 由 1-layer LSTM 组成,在每一时刻 t, decoder 产生新的 state (hidden state) 并最终预测新词 ω.

# word attention

在 Decoder 做决策时,首先对每个 agent 产生的 序列中的每一个 token 做 word attention, 生成 paragraph vector :

v2, W5, W6, b1 均为训练参数。

# agent attention

在得到 后再对所有 agents 做 attention,得到 global context vector :

# prediction

得到 context vector 后和当前状态 拼接在一起,通过一个多层感知机进行对下一词进行预测:

为了避免不同时刻 t 导致 attention 权重变化太快(在不同 agent 间频繁切换),论文引入 contextual agent attention (caa) , 使用前一时刻的 context vector 辅助进行预测:

# OOV (Pointer Network)

生成式 Summary 总会遇到 OOV (out-of-vocabulary) 问题,通常使用 pointer network ,使用一个门机制将源文本的词加入到预测分布中,当 Decoder 预测到词库外的词时,会从源文本中选取一个词语进行替代。

在本文中,由于有多个 agents 同时参与决策,因此 pointer 也有多个,结合 agent attention 权重进行加权求和:

记 每个 agent 在 t 时刻的生成概率(generation probability) 为 , decoder input 为 :

意义在于其决定了在 t 时刻输入 后,生成的 word 是从 vocabulary 中选择 还是从源文本中复制一个词语来。由于每个词存在 word attention 权重,因此对于每个 agent 中词的概率分布为:

其中 即为 t 时刻下, 对于词 w 的所有 word attention 之和。

得到了每个 agent 的概率分布,在对所有 agent 加权求和:

这样即得到了最终的词概率分布,且分布中考虑了不同 agent 对于概率的影响。

# Mixed Objective Learning

# MLE

MLE 即 maximum likelihood Estimate,极大似然估计,使词预测概率最大:

# Semantic Cohesion

生成文本可能会出现词语不断重复和语句重复的问题,论文在学习中加入了 语义损失 来减少重复问题的出现。

在 Decoder 预测单词序列 的过程中,模型会记下所有预测的.位置,即将预测的词序列按照句号分为若干句话 q = 1,2,3 ... Q。取每句话的最后一个 hidden state ( , 即以句号作为输入产生的 hidden state) 作为代表, 比较相邻两句话之间的 cos 相似度 :

当两句话关系越远时,其向量相互垂直,此时cos为0,此为优化目标。

MLE 与 SEM 通过 λ 超参数相加:

# RL loss

在学习目标中引入强化学习方法是一个很常见的操作,可以有效提高学习的效率和成果,本文引用强化学习中的 Policy gradient 方法对预测词进行奖励:

为产生的分布, 为真实的词分布,r(·) 为奖励:

RL 与 MLE-SEM 通过 γ 超参数加权: