スタディ 01 · 強化学習・グラフニューラルネットワーク
強化学習を用いてTSPの経路を生成するグラフモデル
2018.09–2021.06・学部研究生都市をグラフで表現し、経路へ追加する都市を強化学習で選ぶ探索プログラムを実装しました。
- 1グラフによる表現
都市、距離、訪問状況
- 2Structure2Vec + Q-learning
各都市に対するQ値の算出
- 3都市の選択と経路への挿入
モデルが選択した都市をヒューリスティックに基づいて挿入
強化学習の設計
- 状態
- 都市のつながり(隣接行列)と距離、すでに経路に入った都市
- 行動
- 次に経路へ加える都市を選ぶ
- 報酬
- 都市を加えて伸びた経路長をそのまま減点
NeurIPS 2017グラフ組み合わせ最適化研究を参考にした実装
担当した役割と成果
- 研究目標
- 都市が増えるほど組み合わせの数が急激に増えるTSPで、既存のアルゴリズムより速く短い経路を見つけることが目標でした。指導教員とともに強化学習で取り組みました。
- 担当する役割
- 参考文献のグラフ表現とQ学習(Q-learning)のアイデアに基づき、TSP環境、モデル、学習ループ、挿入ルールを統合する実験用コードを実装しました。
- 成果
- 都市の位置、距離、訪問状況をグラフとして入力し、モデルが選んだ都市を挿入ヒューリスティックで経路に追加する探索プログラムを作成しました。公開コードでベースラインと比較する実験を行い、学習がうまく機能しなかった原因も突き止めました。
自ら実装・分析したもの
- ノード、エッジ、訪問状態を含むグラフ環境と、経路コストの記録
- Structure2Vec埋め込みとQ値評価
- 複数ステップの報酬累積と経験サンプリングをつなぐ探索ループ
- 都市はモデルが選択し、挿入場所は挿入ヒューリスティックが決定する構造
ベースとなった研究・公開モデル
- NeurIPS 2017グラフ組み合わせ最適化研究のStructure2Vec・強化学習アプローチ
実験結果と試行錯誤
短縮学習では、ランダム挿入と比較して改善は見られませんでした。
元の設定で学習させたところ、ポリシーがすべての都市に対して同じQ値を出力し、都市が番号順に選択される結果となりました。
- TensorFlow 2.15
- 3シード
- エピソード数:10,000 → 100

- +12%上記「50都市」の例:OR-Toolsによる、より長い経路の計算結果
- 改善状況未確認ランダム順序の挿入と比較した短縮学習
- 2つコード内で特定された原因
- 期待
学習されたQ値に基づき、経路が短くなるような都市を選択する
- 当時の判断
学習が進むほど経路コストは下がったが最適解には届かず、都市が多く十分に探索できなかったと考えた
- 実際
すべての都市のQ値が同じになったため、番号順に選択しました。
- 原因
正規化を行わずに近傍の和をとったことで値が急増し、TDターゲットが開始都市のみを参照するようになっていた
問題と解決策
問題都市数ごとに行列のサイズが異なるため、入力サイズが固定されたニューラルネットワークにそのまま入れられませんでした。
解決Structure2Vecで都市ごとに埋め込みを作り、評価ネットワークが未訪問の都市ごとにQ値を付けるようにしました。
問題次の都市を選択するだけでは、経路上のどの位置に配置するかは決まりません。
解決都市の選択は学習モデルが行い、挿入位置は経路長が最も増加しにくい場所を探すヒューリスティックが決定するという組み合わせを採用しました。
問題短い経路が出現しても、それが学習効果によるものなのか、挿入ルールの効果によるものなのかを判別するのは困難です。
分析・検証都市の順序をランダムにした場合でも、同様の挿入ルールを適用して比較を行い、Q値およびTDターゲットの算出過程を追跡しました。ショートカット学習(short-cut learning)においては、学習ポリシーの改善は確認されませんでした。
実験の比較と詳細な結果



| 都市数(課題数) | 学習済みポリシー | ランダム順序 + 挿入 | 円の挿入 | 最近傍点 | 学習済みポリシー vs ランダム(ウィルコクソン検定のp値) |
|---|---|---|---|---|---|
| 20(100)・学習範囲外 | 1.11 | 1.11 | 1.03 | 1.18 | 0.96 |
| 50 (50) | 1.13 | 1.14 | 1.05 | 1.21 | 0.24 |
| 100 (30) | 1.12 | 1.13 | 1.06 | 1.22 | 0.38 |
観察された原因と残された課題
- Q値爆症
正規化なしで完全グラフ全体を加算したため、Q値が数百万単位まで増大し、更新時の損失が10¹⁵のオーダーにまで跳ね上がりました。
- TD目標値エラー
目標値が「残りの都市」ではなく、常に「開始都市」のQ値に基づいて計算されており、nステップ後の状態も1つずれていました。
- エピソードを100回分に短縮
大きなグラフは1エピソードあたり約45秒かかるため、10,000回繰り返すとシード(seed)あたり5日以上かかります。回数のみを減らし、その他の設定はそのままにしました。
結果の読み方
- 原論文の完全な再現ではない(ターゲットネットワークなし、nステップ方式が異なる)
- 設定されたエピソードの1%のみを学習
- 最後まで学習させた場合の性能は不明
- 小さな問題で、まず正解と照らし合わせてみる
- 近傍合計の正規化と目標値修正
- ランダム順序の基準線を最初から配置する
初めてニューラルネットワークを自分でコードとして実装した研究でした。グラフの要素や関係性を学習入力として表現した経験が、家具のパネルや面を認識する現在の研究につながっています。
家具パネルを認識し、サイズ変更を算出するAI