アルゴリズム忘備録

競技プログラミングとかデータ分析とか

Kerasによる深層強化学習(DQN)

最近はDeep Learningのモデルを書くときは大体Kerasを使っています。理由は

  1. Outputの次元を定義するだけで書ける
  2. Layer型のDNNライブラリでめんどくさそうなRNNやLSTMなどは標準で入ってる
  3. 学習が簡単(ミニバッチの生成などを余り考えなくてもかける)
  4. BackendがTensorflow

などです。Kerasを知らない人はこちら。

Keras Documentation

 

Tensorflow自体はDNNのライブラリというよりも行列演算と誤差のバックプロパゲーションのライブラリというのが正しいので、実際に使うと若干冗長になってしまいます。ただ逆に言えば、論文にしかないような最新のモデルなんかを書く時でも対応できる柔軟性があるとも言います。しかし私が書くのはそういう最新のモデルというよりは古典的なCNNとかAuto EncoderがメインですのでこういうKerasは大変助かるわけです。

 

さて、タイトルに有るDQNについて、Keras自体はサポートしてないもののKeras対応のDQNライブラリで使いやすい物がありましたのでご紹介します。

 

github.com

 

使い方は簡単で、Kerasインストール後、「pip install keras-rl」とやるだけ。

さらに「pip install h5py」でHDF5形式のファイルのアクセスライブラリを入れてから以下のスクリプトを実行すると、Open AI Gymの一つでDQNによる学習ができるようなデモが実行できます。

 

keras-rl/dqn_cartpole.py at master · matthiasplappert/keras-rl · GitHub

 

DQN自体は本来は24時間ぐらい学習させないとあまり進化しないので微妙なところですが、可視化の画面もついてるので結構わかりやすいかと。

 

そもそもDQNとはなんぞやという人は、まず強化学習の一つであるQ学習について一通り見たあとにDeepMindで配っている論文を見るとよいです。要はQ学習のQ関数としてDeep Learningを使用したものになります。