DQN(Deep Q-Network)とは 深層強化学習



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク

公開日:2020/4/11         

前提知識
 ・pythonとは
 ・強化学習とは
 ・ニューラルネットワーク
 ・chainer
 ・Experience Replay
 ・ε-greedy法


■DQN(Deep Q-Network)とは
DQN(Deep Q-Network)とは、強化学習においてニューラルネットワークを用いてQ値を学習する手法で、環境の状態量を入力し、各アクションに対するQ値を出力するようにします。 Q-ラーニングに対するメリットは以下のとおり。

 ・ 役に立たない可能性のある追加データを保存する事が無く、シンプルに設計できる
 ・ アクションが連続した問題に適している
 ・ ニューラルネットワーク自体の構造が複雑な問題を解くのに適しており、推定精度が良い
   - 勾配法を用いる。Q値を確率としてとらえる事ができるなど

構造は以下となります。例えば状態1の時の最適な行動が2ならば、行動2のノードのQ値が最も大きくなります。



■pythonによる実装例
こちらで説明したスキナーの箱のテストをDQNで実現します。ここでは深層強化学習に特化したライブラリであるchainer , chainerrlを使用します。



今回のDQNの構造は以下。



<シミュレーション>
 ・pythonバージョン:Ver3.8で確認
 ・必要ライブラリ:numpy , chainer , chainerrl (インストール方法はこちら)
 ・プログラムファイルskinnerbox_dqn.zip

以下の様な結果が出力されたと思います。1と0の数字は左から、状態、行動、報酬となり、状態が1(電源ON)、行動が1(操作ボタンON)の時に報酬を得る事ができます。 Q値が正しく更新され、Q値に従いきちんと報酬を得ていることが解ります (ε-greedy法によりQ値に従わない場合もある)。 またまれに、ニューラルネットワークの重みの初期値によってQ値が正しく更新されず、状態1の時に電源ボタンを押すQ値が高くなる場合がありますが、 エピソード数を多くすればいずれは解消します。ここでは再度実行させる事をお勧めします。

<実行結果>










サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク