どうも、オリィ研究所(http://orylab.com/) の ryo_grid こと神林です。
今回は深層強化学習 (DQN) を試してみたので、それについて書いてみます。
#概要
以下を大いに参考(大半のコードを流用させてもらって)にして、(深層)強化学習でオセロもどきのAIを作ってみました。エージェントには駒を多く取ったら勝ちといった知識も与えずに、対戦した勝敗結果(ここの判定だけは学習の時に行う)から打ち方を学ばせます。
コードは間違っているとこがあるかもしれないので、指摘してもらえると幸い。
なお、エージェント自体の学習ロジックは下記の参考コードからほとんどいじっていません(うまく分離されていて素晴らしい!)
ChainerでDQN。強化学習を三目並べでいろいろ試してみた。(Deep Q Network、Q-Learning、モンテカルロ)
http://qiita.com/narisan25/items/e64a5741864d5a3b0db0
作成したコードはこちら。
もどきといっているのは以下のため。
- 最初に4コマ置くのを端折っている
- はさめるところにしか置けないという制約がない。というか空いているところはどこにでも置ける。
- 盤面を4x4と小さくしている
#学習結果
ランダム君との対戦成績で強さをはかる。
##Q-Learning君
- ランダム君相手に10万回対戦して学習 → εを0にして対戦すると多少勝ち越せるようにはなった。
- 20万回。大して変わらず。 → QL1:4454,Random:4302,DRAW:1244
- うーん
##DQN君
- 2万回学習 → DQN:481,Random:396,DRAW:123 とQ-Learning君よりは強い?
- 10万回学習 → DQN:5423,Random:3373,DRAW:1204 いくらか強くなったかな
#学習結果 (8x8の正規のサイズでやってみる)
ランダム君との対戦成績で強さをはかる。
##DQN君
10万回。NNの素子数もいくらか増やした。 → QL1:2391,Random:1629,DRAW:180 頑張ってるけど、期待したほど強くはないかなあ。。。
#他に参考にした記事
倒立振子で学ぶ DQN (Deep Q Network)
http://qiita.com/ashitani/items/bb393e24c20e83e54577