seq2seq结构的问题以及PGN网络模型

问题1:

从模型的路径上看,encoder到实际输出有一定距离,从此限制了反向传播。

如果encoder decoder的seq2seq链很长,这个模型计算的attention值传到最后会越来越少,导致编码解码效果很差。(encoder信息消失的比较严重)

问题2:

摘要总结的结果有可能因为OOV的问题导致不准去。

(OOV:词表未登录词, 一般我们生成的未登录词会使用UNK表示)

问题3:

摘要结果会出现repeat重复的信息,比如重复出现德国队击败阿根廷队。

PGN指针生成网络

针对OOV问题解决办法就是用PGN指针生成网络。

seq2seq结构的问题以及PGN网络模型_第1张图片

PGN会生成一个pgen系数,用pgen乘encoder生成的部分和attention的概率分布,再用1-pgen乘encoder生成的部分,最后再加和。

在计算attention destribution时,发现某一个词的attention概率最高,它就会找到这个概率最高的词对应的一开始输入的tokenId,如果这个词在我们词典里,他肯定会有一个自己的ID号,那如果不在的话,他会时UNK对应的ID号。

PGN在每一步计算的时候会加一个OOV字典,如果这个概率最大的词不在我们字典里,我们可以加到OOV字典里编号30001(假设我们字典长度是30000),这样的话这个陌生词就有了TokenID,也就能通过tokenID从OOV字典里查出对应的陌生词。

(每次输入都会遍历这次输入的所有词,如果不在词典中就加入OOV)

这样拿到attention destribution的概率分布后,乘(1-pgen)与decoder输出预测的概率分布乘(pgen)相加就是我们最重要的概率分布结果。

PGN网络会将attention拉长到30001维,也会将decoder输出拉长到30001维后再相加。

以便最后相加

seq2seq结构的问题以及PGN网络模型_第2张图片

Pgen = sigmoid(W_{h}^{T}h_{t}^{*} + W_{s}^{T}S_{t} + W_{x}^{T}X_{t}+b)

 h_{t}^{*}=context_vector

S_{t}=decoder hidden

X_{t}=dec_inp

通过PGN我们可以减少词表量,不用担心OOV的问题,我们都可以学到OOV的词是什么

指针生成网络可以从输入的文中复制OOV词汇,这样我们就可以采用更小的字典进行训练。

因为我们原来之所以设置的词典比较大是因为不想让OOV词汇出现。

PGN网络比较适合摘要的任务。

Coverage机制

coverage机制可以很好的解决在词汇生成过程中一些重复的词的问题。

C^{t}=\sum_{t0}^{t-1}a前面的attention weight的和

将c加到attention计算score里面进行学习

seq2seq结构的问题以及PGN网络模型_第3张图片

coverageLoss的计算
小于等于1

 seq2seq结构的问题以及PGN网络模型_第4张图片

 seq2seq结构的问题以及PGN网络模型_第5张图片

你可能感兴趣的:(深度学习,人工智能)