Open AI GymのFrozenLakeを深層強化学習(DeepQ-Network)で解いてみた

Open AI GymのFrozenLakeを強化学習(Q学習)で解いてみた
Google子会社DeepMind社により開発された、人工知能を搭載したコンピューター囲碁プログラム「AlphaGo(アルファ碁)」の活躍により、深層学習や強化学習の注目度がさらに上がった気がします。このDeepMind社が考案した深層強化学習(Deep Q-Network)を実装してみよ...

前回、強化学習で解いた問題を、今回は深層強化学習(Deep Q-Network、以降DQN)で解いてみます。

DQNを使うほどの問題ではないのですが、実装の勉強のため、簡単な問題で解いてみました。

Deep Q-Network

前回も少し触れましたが、DQNは、Q学習の行動価値関数 Q(s, a) の近似関数を深層学習で求める手法です。

状態 s_t から行動 a_t を選択して、報酬 r_t を受け取って状態 s_{t+1} に遷移したとします。

この時にニューラルネットワーク Q に状態 s_t を入力した時に出力される行動ベクトル aa_t に当たる確率を下記で更新します。

(DeepMind社の論文を読んでいて、ここが一番理解に苦労しました…)

    \[{\displaystyle}y_t = Q(s_t)\]

    \[{\displaystyle}y_t[a_t] \leftarrow r_t+{\max}Q(s_t)\]

また、学習に使う「状態・行動・報酬」のセットは、互いに相関のないものを使った方が収束が早くなるそうです。

Q学習では、行動をさせるたびに「状態・行動・報酬」を使ってQ関数を更新していましたが、DQNでは「状態・行動・報酬」を一旦保存しておいて、そこからランダムにミニバッチ分取り出し、確率勾配降下法でニューラルネットワークの重みを更新していくようです。

FrozenLakeをDeep Q-Networkで解いてみる

Open AI GymやFrozen Lakeの環境の説明については、前回記事と同様なので省略します。

ニューラルネットワークの実装には、下記らの記事と同様、フレームワークのChainerを使いました。

Chainerでニューラルネットワーク、RNN、CNNを実装してみた
RNNの実装の勉強もしました。今回は整理と備忘録も込めて、Chainerでニューラルネットワーク、リカレントニューラルネットワーク、畳み込みニューラルネットワークの実装について記します。ニューラルネットワーク(Neural network; NN)順伝播型のニューラルネット...
Chainerでニューラルネットワーク及び畳み込みニューラルネットワークを実装してみた
追記(2017-06-20)再帰的ニューラルネットワークも実装してみて、再度まとめました。明けました。本年もどうぞ、よろしくお願いいたします。機械学習系のライブラリは去年から何かしら使ってみたいなーと思っていました。今回、Chainerを触ってみまして、MNISTの画...

実装が下記になります。

GitHub: https://github.com/Gin04gh/open_ai_gym/blob/master/DQN_NN_FrozenLake.ipynb

無事、学習しているようです。

問題が離散だからまだ処理が出来ましたが、これが例えばDeepMind社のようにAtariのゲームとなって、状態をゲーム画面(画像)として入力する(畳み込みニューラルネットワーク)となると、いよいよマシンスペックの問題になってきます。

さて、どうしたものか…。

追記(2017-09-07)

上記はニューラルネットワークでしたが、Atariの論文ではCNNでしたので、同じ問題ですが、無理やりCNNにしてみて実装してみました。

下記がコードになります。

GitHub: https://github.com/Gin04gh/open_ai_gym/blob/master/DQN_CNN_FrozenLake.ipynb

問題なく学習していそうです。

追記(2017-10-15)

PyTorchによる実装になりますが、連続値のゲームに対してもDQNを実装してみました。

PyTorchで深層強化学習(DQN、DoubleDQN)を実装してみた
以前に勉強したDeep Q-Network(DQN)を、やっぱり離散的な状態を返す簡単なゲームでなく、連続的な状態のゲームにも適用してみたいと思い、久しぶりにまた勉強しました。最近の深層強化学習の研究を見てみたところ、DQNからさらに進化していて、A3Cなるものまで登場...

DQNからさらに改善された研究についても少し勉強してみました。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です