最適化に対するアプローチ
某B社の人たちが書いた「深層強化学習」というタイトルの本を読んだ.
最適化手法には色々あって場合に応じて使い分ける必要があるが,この会社では以下のように評価をしているようだ.
・メタヒューリスティクス:候補となる近似解を多数生成するので,計算量が膨大になります.
・厳密解法:解を段階的に絞り込んでいくので.解を得るまでに時間がかかります.
・強化学習:その点強化学習はメタヒューリスティクスと厳密解法の利点を取り込んだ解法と言えます.(笑)
この会社の会長さんに,社内の人たちに最適化を教えて欲しいと相談を受けたこともあるのだが,こういったレベルの人たちには教えるのは難しいだろう.深層強化学習のサンプルはwebにたくさん転がっているので,それをダウンロードしてきて中身も分からないまま,例題を解いているだけでは現実問題の解決にはほど遠い.
以前から手法先行では本来の問題解決にはならないことを,「我田引水シンドローム」と名付けて警鐘を鳴らしていたのだが,最近のAIブームでその傾向が顕著なようだ.深層強化学習で巡回セールスマン問題が解けるというのも(何らかの答えは出すが効率的に良好な解を算出することができないという意味で)ガセである.
それぞれの手法に得意な問題群があるので,実験的解析によって使い分けの方法を事前に見極めておくことが重要なのだ.したがってプログラムが書けて,実験環境が整備されていて,公平な態度で比較実験ができる会社が生き残ると思うのだが,残念ながらそういった会社は日本には少ないようだ.
メタヒューリスティクスについては,以前「メタヒューリスティクスの数理」,数理最適化ソルバーについては「あたらしい数理最適化」という本に書いたのだが,以下のように評価すべきだ.
・メタヒューリスティクス:データ構造やアルゴリズムに精通した人が,問題の構造を良く分析して,きちんと作り込めないと遅い.また,問題ごとにs設計する必要があるので開発に時間がかかり,設定変更の際に手間がかかる.メタヒューリスティクスベースのソルバーを使うと,多少軽減される.
・数理最適化ソルバー:きちんと定式化できないと遅い.(某B社のコンサルをしたときには,Big Mを多用した酷い定式化をしていた.)問題によっては単にソルバーに投げるのではなく,ソルバーを利用した解法を使う必要がある(列生成法とか).もちろん,問題例によっては計算量が爆発する可能性もある.
さて,本当の強化学習の使い方だが,有限期間でなく不確実性が強い最適化問題に対しては有効だ.数理最適化アプローチだと,有限期間に落として,離散的な期に分割して多期間問題に落とす必要がある(時空間ネットワークを使うと考えても良い).米国で成功している電力の起動停止問題では,このアプローチを採用している(日本ではまだまだだ).
強化学習と最適化をあわせたアプローチもある.PrincetonのAllan Powellが昔幾つかの成功事例をあげて本も出していたが,いまも現場で使っているかどうかは不明だ(昔は起動停止問題も一部はこれで解いていた).そこでは簡単な最適化(輸送問題などLPに落ちるもの)を毎期解いて,期末の状態に対して関数近似を用いるというものだ(現在ではこの部分にニューラルネットを使うのが常套手段だ).最適化にMIPを使い多期間問題をちゃんと解いて,最後の期末の状態に対して深層学習を使うというのが本来の意味でのいいとこ取りであり,これに対しては研究を進める必要があるだろう.誰か興味のある人は一緒に研究して下さい.