ノート

いろいろ勉強したことをまとめていきます

MENU

【深層強化学習】【TensorFlow】Deep-Q-Networkを実装してみた

Deep Q Network

概要

Deep Q Network(DQN)を、今さらながら実装してみました。cartpole問題で実験しました。

DQNについて

Deep Q Network(DQN)はQテーブルをニューラルネットワーク関数近似したQ学習です。もしかしたら、Deep Reinforcement Learningと呼んだほうが良いかもしれません。厳密には以下の三つの工夫を加えたものをDQNと呼ぶようです。

1. Experience Reply

エージェントの経験を蓄えておき、 定期的にバッチ学習を行う。

2. Fixed Target Q-Network

TD誤差を計算するためのQ-Network(Target Q-Network)と、その他(学習、行動選択)で用いるQ-Networkの二つのNetworkを用いる

www.tcom242242.net

3. Reward Clipping

外れ値等に過剰に反応しすぎないために、 報酬値を-1〜1の範囲にクリップすること。 最近は報酬値をクリップというよりhuber lossを用いることが主流になっているように思います。。 ちょっと調査不足です

プログラム

keras-rlを参考にして、tensorflowを使って実装してみました。けっこうkeras-rlのコードを真似しています。cartpole問題を用いて、実験してみました。

keras-rlとcartpoleについては以下参照

www.tcom242242.net

ソースコード

github.com

git clone して、以下のコマンドで実行できます。

python dqn_cartpole.py

実験結果

良い時と悪い時は激しいです。 以下は良い時の実験結果 f:id:ttt242242:20180410183758p:plain