一、PGN 架构

PGN( Pointer-Generator Networks, 指针生成网络),主要解决以上的第三点问题。PGN 可以将原文中的一些重要、低频单词直接 copy 到生成的文本摘要中,极大地避免 OOV 问题。

image-20220916103141323

PGN 网络架构

以上是 PGN 的模型架构图,可以看出在 seq2seq + attention 的基础上,多了一层 pgen的计算。

  • 先根据当前时间步的 decoder input 和 encoder 计算出的 context vector,计算出当前时间步的 pgen ;
  • 然后用 1−pgen 乘以 Attention Distribution,得到原始文本的相关信息;
  • 其次用 pgen 乘以 Vocabulary Distribution,得到生成文本的相关信息;
  • 最后将这两部分信息相加,得到 Final Distribution。

详细来看,结合了PGN 的seq2seq 网络架构的计算流程可以分为以下的步骤。

  1. 计算 Attention Distribution(attention weight)
  2. image-20221011152741329

其中, hi 是由 encoder 计算得到的 encoder hidden state; st 是由 decoder 计算得到的当前时间步的hidden state。

\2. 计算 Context Vector

image-20221011152741329

将 Attention Distribution 应用在 encoder hidden state 上,得到当前时间不的上下文 向量。

\3. 计算 Pvocab

image-20221011152741329

通过一个全连接层 + softmax,计算当前时间步的输出在词表上的生成概率。

\4. 计算 pgen

image-20221011152741329 image-20221011152741329

\5. 计算最终单词的概率分布

image-20221011152741329

可以看出, pgen 类似于门控神经网络中的 gate,用于控制有多少的信息来自于原文,有多少的信息来自于根据神经网络生成的文本。如果一个单词没有在原文中出现过,那么上述公式(6)右侧的值等于0,也就是说这个单词生成的概率完全依赖于 seq2seq 网络;如果一个单词属于OOV,不在词表中,那么上述公式左侧的值等于0,也就是说这个单词生成的概率完全依赖于原文中的概率分布加和,相当于直接从原文中 copy 到生成的摘要文本中。