Pointer Network

Pointer Network是seq2seq模型的一種變型。seq2seq模型是一種編碼-解碼框架的端到端生成模型,已經在機器翻譯、對話生成語法改錯等領域有了成功的進展。本文不再贅述。此處主要介紹Pointer Network的基本原理和作用。

Pointer Network的主要作用

Pointer Network主要用於解決組合優化問題,傳統的優化問題尋優一般使用啓發式的搜索算法,基於Pointer Network主要是對源數據進行組合,達到目標函數最優。常見的應用包括凸包問題、旅行商問題等。

Pointer Network的模型框架

對於凸包問題,可以簡述爲:可定圖中若干點,選取其中幾個連接成凸多邊形使得該多邊形能包含圖中所有的點。

(1)如果該問題使用普通的seq2seq建模,即encoder輸入序列爲P1,..,P4點的座標,decoder輸出爲點的label(即1-4),此時decoder的輸出範圍與encoder的輸入不相同,只需要輸出encoder序列的位置。目標函數如下所示:

(2)若使用seq2seq+ Attention模型,即解碼過程需要對encoder端進行Attention計算,具體計算如下:

(3)區別於seq2seq +Attention模型,Pointer Network直接使用Attention的權重信息作爲位置重要性的概率分佈輸出

簡化了seq2seq+Attention的計算,無需將encoder端的編碼求和後輸入到LSTM cell再求輸出並取softmax得到概率分佈,簡化了計算。

Pointer Network的成功應用

(1)組合優化問題: TSP問題等;

(2)閱讀理解問題: 將原文進行編碼,從原文中找到問題答案的起始位置和結束位置;

(3)摘要生成問題:從長文本中找到摘要句子的起始結束位置。

參考文獻

Vinyals O, Fortunato M, Jaitly N. Pointer networks[C]// International Conference on Neural Information Processing Systems. MIT Press, 2015.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章