一、Pointer Network

1. 如下图所示,给你10个点,然后自动地找出哪些点连接起来可以把其余的点圈在里面。现在用Neural Network硬train一发,输入是10个点的x,y坐标,输出是一个“427653”的序列,正好可以把其余点圈在里面。
在这里插入图片描述
2. 这里考虑是否能用Sequence-to-sequence来解决?如下图所示,现在有4个点,输入是4个点的x,y坐标,输出是点的序列加上END(Token)。Encoder输入的长度不固定不会对它造成影响,但是Decoder却有较大的影响,假设设定的输出是50个点,意味着输出的vector是1到50加上END,但在testing的时候,输入是100个点,就选择不了51到100的点,因此不能用Sequence-to-sequence。
在这里插入图片描述
3. 如下图所示,现在对attention做了改动后可以让Neural Network动态地决定输出有多大。现在要加上一个x0,y0(代表END),先产生一个z0(key),用z0对输入做attention,然后会对每一个输入产生一个attention weight,这些attention weight是输出的distribution,然后根据attention weight去取argmax。
在这里插入图片描述

二、Applications-Summarization

如下图所示,Summarization就是从文章中获取关键词汇形成摘要。在Summarization里面加上Pointer Network的概念后,直接输出distribution,让distribution决定Summarization里面应该产生什么样的词。
在这里插入图片描述

三、More Applications

1. Pointer Network的机制应用在翻译上,让Network可以直接从输入的句子中选择出不可翻译的词汇,添加到译文里面。
在这里插入图片描述
2. Pointer Network的机制应用在聊天上,让Network从用户输入的句子里面copy关键词汇(名字等信息),把它用在回复信息里面。
在这里插入图片描述


更多推荐