RNNで巡回問題を解く論文を読む
ランニング30分 英語できず
(1) RNNで巡回問題を解く論文を読む
「Pointer Network」https://arxiv.org/abs/1506.03134
この論文は深層学習による自然言語処理でよく参照されるが、グラフィカルモデルの最適解も行えるので興味を持ち読んでみました。
まず有名なseq2seq https://arxiv.org/abs/1409.3215は下図の様な翻訳モデルです。
<A B C> → <W X Y Z>
RNNで学習するにはencoder-decoderでRNNの重みを学習します。
入力文字をEncodeしてその結果と出力文字で学習します。
同様にしてseq2seqを使うと下図の様なグラフィカルな凸被覆問題に適用することができます。
但し
モデルとしては下図の様になります。
この論文のPointer Networkではseq2seqが入力項目数(頂点数)に依存するので下図の構造で解いています。
上図の場合seq2seqは入力項目数と同じencodeの結果を初期値にして解いています。そのため入力の項目数(頂点)が増減すれば異なるモデルが必要となります。
そこで入力の項目数に依存したを全て使わない様にPointer というAttentionを計算して、次に取出す確率を求めています。
ここで
は学習パラメータ
は番目のencode
は番目のdecode
は次に取出す座標
下図では最初の座標が見つかり、この結果をEncoder側に入れています。
(1.2) 結果
Pointer-NetworkではRNNの順序学習機能を使って以下の3つの問題を解いています。
頂点数が50以下であれば殆ど解けています。
・凸被覆問題(a) (d)
・ドロネー図問題(b) (e)
・セールスマン巡回問題 (c) (f)
※セールスマン巡回問題はNP困難で近似解しか存在しない