Tノート

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

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

ソースコード

python dqn_cartpole.py

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

github.com

実験結果

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

Target Network

DQNは、Q-Network,Target-Networkの二つのネットワークを用いる。 この二つのネットワークを用いることで、Q学習の課題の1つである、状態の過大評価を緩和する。

DQNでは、Q値を更新する際に遷移先 $s'$ の状態の最大価値 $maxQ(s')$ を用いる。 そのため、ある状態を過剰に評価してしまった場合に、その状態の評価だけでなく、 他の状態の評価にも大きく影響を与え、学習が不安定になってしまう。 (行動価値は伝搬してくため)

そこで、 通常の Q-Network $Q(s,a;\theta)$ 値のパラメータを更新する際には、もうひとつのモデル Target Network $Q(s,a;\theta^{-})$ を用いる。二つのモデルの構造は同一であり、パラメータ $\theta$, $\theta^{-}$ が異なる。

具体的には以下の式で求めたTD誤差を使ってQ-Networkを更新する。 $$ \begin{eqnarray} TD-Error = r + \gamma \max Q(s';\theta^{-}) - Q(s,a;\theta) \end{eqnarray} $$

ここでは、 $s$ を遷移前の状態、 $s'$ を遷移後の状態としている。

Target Networkのパラメータ $\theta^{-}$ は一定時間学習行動を行った後に、Q-Networkのパラメータ $\theta$ をコピーする。つまり、一定時間学習行動している間はTarget Networkのパラメータ $\theta^{-}$ は変化させない

自律分散型システム

自律分散システムとは

システム全体を中央の制御部で制御するのではなく、 システムの各要素が各々自律的に制御を行うことで、 システム全体の制御を行うシステムのことを言います。 人間社会も複数の人間が各々自律的に行動を行うことで、「社会」という巨大なシステムを成り立たせているので、 自律分散型システムと言えます。

各要素を学習、制御を行うアルゴリズム

各要素の学習、制御を行うアルゴリズムとして、 強化学習が注目されています。 自律分散型システムに強化学習を適用したシステムは マルチエージェント強化学習と呼ばれています。

参考文献

https://kotobank.jp/word/%E8%87%AA%E5%BE%8B%E5%88%86%E6%95%A3%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0-184633

Stochastic Games

Stochastic Games

マルチエージェント強化学習を分析する際に有用な Stochastic Games(SG)について簡単にご紹介します。 ちなみにSGs は別名 Markov Gamesらしいです。

SGは次のタプルで表現されます。

$SG = <m,S,A,T,R>$

各要素については以下のようになります。

  • $ m $ はエージェント数

  • $S$ は有限の状態の集合

  • $A_i$ はエージェント $i$ が実行可能な行動の集合。 $ A = A_1 \times ... \times A_m $ はjoint action の集合。joint action は全エージェントの行動の組み合わせ

  • $T$ : 状態遷移関数 $S × A × S \mapsto$ $[0; 1]$ 。状態 $s$ で全エージェントの行動(joint action) $A$ をとった時に $s_{t+1}$ に遷移する確率

$$ \begin{eqnarray} T(s, a, s^{'}) = P(s_{t+1} = s^{'} |a_t = a, s_t = s) \end{eqnarray} $$

  • $R_i$ : $S × A \mapsto R$ エージェント $i$ の報酬関数。この報酬も現在の状態 $s$ と joint action $A$によって決定

SGでは、すべてのエージェントが完全な状態 $s$ を観測できます。部分的にしか観測できない場合は別のフレームワークを用いる必要があります。(例えば Dec-POMDP等)。

参考文献

http://www.cs.cmu.edu/~mmv/papers/00TR-mike.pdf

Reward Shaping

一言で言うと

強化学習の通常の報酬値に、追加の値を加えることで、学習速度を向上させることを目指すフレームワーク。 最もシンプルなReard Shapingは、以下のように、通常の報酬値$r$に追加の報酬$F$を加えるような形

$$ r_{rs} = r + F $$

代表的なReward Shaping

Potential-based Reward Shaping

Potential-based Reward Shaping(PBRS)は$F$を以下のように与えたReward Shapingである。 $$ F(s,s') = \gamma \phi(s') - \phi(s) $$ $\phi$はPotential関数と言い、Potential関数には、環境の特有の値を用いることが望ましい。 PBRSの論文*1では $$ \phi(s)=V^{\ast}(s) $$ と設定することを推奨している。$V^\ast$は最適状態価値関数を表している。 PBRSはMDPsの問題であれば、通常の報酬値を用いた時の最適方策に含まれる方策に収束することが証明されている。 証明に関しては参考文献*1を参照。

参考文献

Policy invariance under reward transformations: Theory and application to reward shaping

マルチエージェント強化学習

マルチエージェント強化学習とは(一言で言うと)

複数の強化学習エージェントが同時に学習行動を行う 自律分散型の学習アルゴリズム

マルチエージェント強化学習の応用分野

マルチエージェント強化学習のタスクの種類

マルチエージェント強化学習のアルゴリズム

マルチエージェント強化学習の分析用フレームワーク

www.tcom242242.net

参考文献