teemaxの日記

理工チックなあれこれ

Deep Q Network「DQN」やってみた

DQN?

キャッチーな名前ですが"ドキュン"ではありません(笑)。 "Deep Q Network"の略です。
深層学習 (Deep Learning) と 強化学習の一種である Q Learning を組み合わせたもので、 Google に買収された DeepMind の研究者らによって発案されました。

強化学習というと何らかのゲームに使うことが多い訳ですが、DQNの場合はAtari2600というゲーム機用のアーケードゲームでその性能を試しています。
そして数多くのゲームで人間よりも高いスコアをたたき出しています。

実際にDQNがゲームをプレイしている動画がこちらです。( muupanさんという方の動画 )


Deep Q-Network Plays Atari 2600 Pong - YouTube

つい最近も Google が人工知能「DQN」を開発した、として話題になりましたね。

Deep Learning は画像認識や音声認識など様々な領域で高い性能をマークしていましたが、強化学習という枠組みにおいてもその性能を遺憾なく発揮してくれています。

DQNやってみた

DQN自体が発表されたのは2013年のことなのですが、日本人のmuupanさんという方がこのDQNをすでに再現してくださっていました。


CaffeでDeep Q-Networkを実装して深層強化学習してみた - 学生時代に頑張ったことが何もない

詳細は上記ブログに記載されているので書きませんが、
「Caffe」という Deep Learning 用のフレームワークを使ってDQNが学習・ゲームプレイするところまで再現してくれております。
そしてなんとそのソースコードも公開していただいております!

さらに Github にて mhauskn さんという、 muupan さんのソースコードを改良している方もいらっしゃいました。
今回はせっかくなのでその先人の知恵 ( 改良版ソースコード ) をお借りしてDQNをやってみたいと思います。

お二人に感謝の正拳突き!!
f:id:teemax:20150228202921j:plain

なので"DQNやってみた"というよりは
"DQNやってみた、をやってみた"
といったほうが正確かもしれないです。

DQNやってみた、をやってみた

DQNを再現するのに必要なのは主に以下の3つです。

  1. Caffe」: Deep Learning Framework

    • 今回はアルゴリズムの事情でmuupanさんによる「Caffe改良版」を使います。
  2. Academic Learning Environment」: ゲームエミュレータ

  3. dqnソースコード」: muupanさん、mhausknさん作

しかしこの「Caffe」のインストールが少々つらめになっています (主に Mac 汗)。
よくわからないエラーがでてインストールが止まったり、HomebrewのFomulaもあれこれいじらなければいけなかったり...
Frameworkの使いやすさと引き換えにインストール暴君な「Caffe」さまです。
Caffeインストール関係の注意点は別の記事にまとめようかなと思います。

上の3つがPCに入ったらあとはmhausnさんのdqnソースコードをコンパイル・実行するだけです。
長くなるのでdqn実行までのインストール等の注意点も別の記事にしたいと思います。

ということでがんばって3つ全部いれたら見事にコードも動いてくれました。
muupanさんと同じく2,000,000回学習させた結果がこちらです。

DQN pong - YouTube

いまいち盛り上がりに欠ける (笑) んですがよく見ると、"ボールを壁に反射させる"といった"勝ちパターン"を学習していることがわかります。今後学習回数を増やせばさらに強くなると思われます。

まとめ

すでにDQNを実装してくださっていた方々によって非常に効率良くDQNの再現ができました。コードをすでに公開してくださっていたお二方には本当に感謝せねばなりません。
しかし既存コードに甘んじるだけでは申し訳ないので今後はネットワーク構造を変えてみたりいろいろいじくれたらいいなと思っております。
もっと違うゲームにも適用してみたいですね。

 

ディープラーニング、ビッグデータ、機械学習  あるいはその心理学

ディープラーニング、ビッグデータ、機械学習  あるいはその心理学

子供の名前が危ない (ベスト新書)

子供の名前が危ない (ベスト新書)

スポンサーリンク