株式会社 RIDGE-I リッジアイ

Blogスタッフブログ

強化学習を三目並べで色々試してみました。(ChainerでのDeep Q Network、Q-Learning、モンテカルロ)

2016年9月29日 Chainer

強化学習をわかりやすく教える教材のために、三目並べを題材にモンテカルロ、Q-Learning、Deep Q Network (DQN)をPythonで作りました。

DQNはChainerで実装しています。

細かい内容は、Qiitaに投稿しました。

http://qiita.com/narisan25/items/e64a5741864d5a3b0db0

結論は以下になります。

  • モンテカルロ
    実装は簡単。各手を100回試行位でほぼ負けなしに。(50回くらいだと乱数の偏りで時々負ける)
  • Q-Learning
    更新式の設計に気を遣う。3目並べ程度なら10万対戦で最強
  • Deep Q Network
    色々な落とし穴が多数。最適なトポロジーがわからない。Leaky Reluにするまで最弱。教える順序次第で何も学習しない。などなど

いずれにしても Deep Q Networkが断然ハイパーパラメーター(設計者が決めるもの)が多く、このような単純なタスクでも苦労しました。

実装にかかった時間は大体こんな感じです。

  • 三目並べ盤面、進行役  15分
  • 人間とランダム 15分
  • 改良ランダム 5分
  • モンテカルロ     20分
  • Q-Learning     1時間
  • Deep Q Learning   6時間 (学習時間も長い)

圧倒的にDQNの実装が手ごわかったのがわかります。

やはり課題に応じて目的と予算、精度などが違うわけですので、最適な手法はそれぞれ違うこと。とくにQ-Learningで済むならそれでよいケースがあることがわかるよい事例になりました。

レクチャーでは、強化学習の理論から含めて、ソースレビューを行う予定です。

今後、モンテカルロをモンテカルロ木探索(MCTS)への改良や、DQNへのCNN組み込み、そしてValue Networkへの展開などをテストして、Alpha Goの流れを実際に体験するコースを計画しています。