Upgrade to Pro — share decks privately, control downloads, hide ads and more …

論文読み会 ICLR2019 | Attention, Learn to Solve Rout...

論文読み会 ICLR2019 | Attention, Learn to Solve Routing Problems!

cocomoff

May 21, 2020
Tweet

More Decks by cocomoff

Other Decks in Research

Transcript

  1. 概要 これまで専⽤アルゴリズムで解いていた最適化問題 (TSP/VRP/OP/PCTSP) をPointer-Network を拡張したNN で解く PyTorch 版 https://github.com/wouterkool/attention-learn-to-route モデルの基本的なアイデア

    ⼊⼒はTSP の地点座標 ( 地点数 のtorch.tensor) Encoder-decoder 型のモデルで次に訪問すべき地点を決定 BN とmulti-head attention を使って隠れ層に埋め込む コンテキスト ( 今何地点訪れたかを考慮して を拡張) を計算 適当に出⼒をclip してsoftmax に⼊れて地点を決定する 学習の基本的なアイデア 強化学習界隈で基本的な⼿法であるベースラインつきREINFORCE ベースラインとしてgreedy な経路を使う 1/12 n × 2 h
  2. 実験 | 環境設定 地点数 について各問題を解いた 学習時にたくさんインスタンスをつくる (100,000 とか?) Every epoch

    we process 2500 batches of 512 instances e.g., で5:30/epoch, で16:20/epoch の訓練時間 100 epochs 学習してから10000 個のテストインスタンスで評価 学習率は定数 ( ) だけど,適当にdecay した⽅が安定した Encoder は3 層 Decoder greedy 毎回最良の⾏動を洗濯して解をつくる sampling 1280 解をサンプルして,最良を選ぶ 既存⼿法は3 パターン ( 専⽤exact/heuristics ,既存のNN ⼿法) できるだけ環境を揃えて実⾏して⽐較した ( とのこと) 2/12 n = 20, 50, 100 n = 20 n = 50 η = 10−4
  3. 実験 | OP/PCTSP OP はmin. cost ではなくmax. profit 型の問題 PCTSP/SPCTSP

    は訪問しなくてもいいタイプのTSP ( ペナルティ付き) 4/12
  4. 背景 ( 既存の研究アプローチ) (1/3) NN で最適化するアプローチはHopfield&Tank (1985) ぐらいからある Pointer Network

    (Vinyals et al. NIPS2015) 左: seq2seq で直接頂点番号を出⼒するアプローチ 右: PN .Decoder 側にも⼊⼒データの特徴 ( 座標) を⼊れ,凸包の頂 点を指し⽰すようなAttention を作る 5/12
  5. 背景 ( 既存の研究アプローチ) (2/3) Bello et al. 2016 (ICLR2017 WS)

    PN + Actor-Critic Actor-Critic: ⾏動する側(Actor) と⾏動を評価する側(Critic) を同時学 習するタイプの⼿法.実際にはREINFORCE( 評価は状態⾏動価値を 学習ではなく,報酬の平均で⾏う) Nazari et al. NeurIPS2018 VRP を解くようにPN (LSTM を変更) 6/12
  6. 背景 ( 既存の研究アプローチ) (3/3) Daiet al. NIPS2017, Nowak et al.

    2017, Kaempfer et al. 2018 Decoder-Encoder 型ではなく,1 つのモデル (GNN とか) で解く 他にもTransformer-inspired なモデルとかもある Deudon et al. CPAIOR2018 2OPT local search という探索⼿法をアテンションで学習して再現 これはBello et al. の追試っぽい感じ ( 報酬が2OPT-based) これぐらいのが解ける 7/12
  7. Attention (Dot-product attention (?)) Multi-head attention (MHA) 別のパラメータを作って 本アテンションを作り,線形結合 FF

    (Feed-forward sublayer) 線形変換してReLU (1 層⽬以外) BN (Batch Normalization) 例のあれ M
  8. 提案⼿法 (2/4) | Decoder 埋め込んだ を使い,順列の⽣成を⾏う ⼤まかな構造は普通のDecoder と同じ Decoder への⼊⼒として,埋め込んだ

    だけじゃなく,「最初の地点」と 「1 つ前の地点」を使う ( これをcontext embedding と呼ぶ.図の◦3 つ) 事前に訪問した地点は訪問しないので,mask で-∞ にする 3124 を⽣成する図 9/12 h h
  9. 提案⼿法 (3/4) | 学習 作ったNN はインスタンス から を⽣成するモデル 期待コスト =

    loss をgrad. descent する REINFORCE . はNN でモデル化.ベースライン は このサンプル評価値からのgrad. descent を安定させる. いろいろな⼿法で を⼊れてもよいが,「インスタンスにアルゴリズ ムを適⽤してみたら,難しさは評価できるだろう」という期待 ある地点のパラメータ を固定して,greedy rollout を作成 greedy rollout より良い順回路が⾒つかれば,報酬が伝わって もしパラメータに優位な差ができたら,更新する 10/12 s π p (π ∣ θ s) L(θ ∣ s) = E [L(π)] p (π∣s) θ ∇ log p (π ∣ θ s) b(s) b(s) θ
  10. 提案⼿法 (4/4) | 学習 5 ⾏⽬でランダムインスタンスを作成 6 ⾏⽬〜7 ⾏⽬で現在と今設定されているベースラインをやってみる 8

    ⾏⽬〜9 ⾏⽬で誤差を評価し,学習を⾏う 11 ⾏⽬〜13 ⾏⽬で適当にパラメータを更新する 11/12
  11. ベースラインの⽐較 提案⼿法(AM) とPointer Network(PN) の⽐較 ロス計算に⽤いているベースライン を3 つ変えた場合の挙動 Rollout と書いてあるやつが実験で使っているGreedy

    Rollout Critic は をNN で推定して使う (NN 中⾝はEncoder と似ている) Exponential は計算したロスをexp でdecay させるbaseline 12/12 b(s) V (s)