最近项目中要用到copy机制,尝试了《文本生成系列(一)seq2seq中的copy机制》中的方法,发现处理OOV字符这一块处理起来不是很方便(可以实现),相对来说,Pointer Generator Network更简洁一些。
Pointer Generator Network的动机有两个:1. 处理OOV问题;2. 解决生成模型重复生成的问题。
1. Sequence-to-sequence attentional model
正常的soft attention
对应着公式看更香:
2. Pointer-generator network
主要区别在于多了一个生成模型的生成概率计算(sigmoid):
3. Coverage mechanism
c
t
c^t
ct is the sum of attention distributions over all previous decoder timesteps:
4. 细节-OOV处理
5. pointer network & transformer
该方案我自己在类似于transformer的框架下试了下,效果还不错,在base很高的情况下还能有接近0.5个点的提升,是一个不错的改进策略。
参考:
pointer_summarizer
transformer-pointer-generator
Byte Cup 2018国际机器学习竞赛夺冠记