指针网络-Pointer Networks

今天分享一个简单而又有趣的seq2seq模型-Pointer Networks。程序员看到Pointer可能会想到c/c++中的指针,不过这里的Pointer和c/++中的指针可能更像是雷锋和雷锋塔的关系。

任务类型

在某些任务中,输入严格依赖于输入,或者说输出只能从输入中选择。例如输入一段话,提取这句话中最关键的几个词语。又或是输入一串数字,输出对这些数字的排序。这时如果使用传统seq2seq模型,则忽略了输入只能从输出中选择这个先验信息,Pointer Networks正是为了解决这个问题而提出的。

基本模型

Pointer Networks模型非常简洁,结构是基本的seq2seq + attention。对于传统的attention模型,在计算权重之后会对encoder的state进行加权,求得一个向量c。而Pointer Networks则在计算权重之后,选择概率最大的encoder state最为输出。示意图如下:

Pointer Networks

论文中使用了寻找闭包这个任务作为例子。简单的说,寻找闭包是从输入的点中找到一些点能把所有的点围起来。例如左上角图的闭包是(P_1, P_2, P_4, P_1)。左下角则是使用传统的seq2seq模型来解决这个任务,右边则是使用Pointer Networks。其中箭头指向的则是对应时间步的输出。采用这种方式就能解决输出只能从输入中选择的问题,可谓是大道至简。

参考:

[1] Pointer Networks

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容