5. Q-Learning
Q-Learning は強化学習のアルゴリズム
Q 関数 (Qテーブル) を求めるのが最終目的
Q(s, a) : 状態 s で行動 a を取ったときに得られる R の期待値
1. 任意の値で Q(s, a) を初期化
2. エージェントは、環境から受け取った状態 s を元に、
行動の選択肢 A の中から、戦略に基づいて、行動 a を行う
3. 環境はエージェントから行動 a を受け取り、状態を s から s’ に変化させる
その上で、報酬 (または見込みの報酬)r をエージェントに返す
4. このとき、Q(s, a) を次の式で更新する。
行動 a で終了していない場合
Q s, a ← 1 − α Q s, a + α r + γ max
a
Q s, a
= Q(s, a) + α(r + γ max
a
Q s, a − Q(s, a))
行動 a で終了した場合
Q(s, a) ← Q(s, a) + α(r − Q(s, a))
max
a
Q s, a は、次の状態 s において得られる可能性のある報酬の最大値
α は学習率
とりあえず試して、ちょっとずつ賢くしていくアルゴリズム
6. Q-Learning
Q s, a ← 1 − α Q s, a + α r + γ max
a
Q s, a
= Q s, a + α r + γ max
a
Q s, a − Q s, a
Q(s, a) は R の期待値
Rs =
t=0
∞
γk
rs+t = rs + γrs+1 + γ2
rs+2. . .
本来、Q(s, a) は、r + γmaxQ s, a に等しいはずだが、等しくないので、
その誤差を学習率 α で Q(s, a) に反映している
Q(s, a) は最終的には収束すると証明されている
学習中に取る戦略で有名なものは ε-greedy 法
確率 ε でランダムに行動し、それ以外では Q 値が最大となる行動 a を選択
学習後は、Q 値が最大となる行動 a を選択する
7. DQN Deep Q-Learning
DQN は Deep Learning + Q-Learning + Neural Network の造語
Q関数 (Q-テーブル) Q(s, a) をニューラルネットワーク化
Q(s, a) のニューラルネットワークを最適化するため、何を誤差関数にするか
誤差関数には 実際の値ー予測値 2
がよく使われるので、
Q-Learning で活用した関数の2乗を誤差関数にする
r + γ max
a
Q s, a − Q s, a
2
ニューラルネットワークの最適化のためには、以下の組のデータが必要
s: 状態
a: 行動
r: 行動の結果の報酬
s: 行動の結果の次の状態
基本アルゴリズムは Q-Learning と同じ
とりあえず試して s, a, r, s を集め、その集合を使ってニューラルネットワークを最適化
8. Experience Replay と Fixed Target Q-Network
DQN では、性能向上や計算の高速化のため、いろいろな工夫がなされている
Experience Replay
s, a, r, s を集めてニューラルネットワークを最適化するが、
s, a, r, s は時系列で並んでいるので、そのまま使うには依存関係が強すぎる
s, a, r, s の集合の中からサンプリングし、さらに順番をランダムに
入れ替えた上で、最適化に使用する
Fixed Target Q-Network
誤差関数のうち、 r + γ max
a
Q s, a の部分は「あるべき値」ではあるが、
Q(s, a) に依存してしまっている
Q(s, a) の更新によって、max
a
Q s, a も変化すると、話がややこしい
更新前の Q(s, a) を教師モデルとし、固定化してしまう
Q(s, a) の更新部分を、「教師あり学習」に変える
9. DQN アルゴリズム
1. 任意の値で Q s, a を初期化
2. Q s, a を Q∗
s, a にコピー(Q∗
s, a が教師モデル)
3. For (N=0; ; N++)
1. エージェントは、環境から受け取った状態 s を元に、行動 a を行う
確率 ε でランダムに行動 a
それ以外は、Q∗
s, a が最大になる行動 a
2. 環境はエージェントから行動 a を受け取り、状態を s から s’ に変化させる
その上で、報酬 (または見込みの報酬)r をエージェントに返す
3. メモリ M に、 s, a, r, s を記憶
4. 時々...
1. メモリ M から s, a, r, s の組をサンプリングし、順番をランダムに入れ替え (ミニバッチの作成)
2. 誤差(以下の式)を計算し、勾配法で誤差極小化。 Q s, a を更新
行動 a で終了していない場合、 r + γ max
a
Q∗
s, a − Q s, a
2
行動 a で終了した場合 r − Q s, a
2
5. さらに時々... Q s, a を Q∗
s, a にコピー
10. 参考文献
Playing Atari with Deep Reinforcement Learning
https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf
DQNの生い立ち + Deep Q-NetworkをChainerで書いた
http://qiita.com/Ugo-Nama/items/08c6a5f6a571335972d5
ゼロからDeepまで学ぶ強化学習
http://qiita.com/icoxfog417/items/242439ecd1a477ece312
分散深層強化学習でロボット制御
https://research.preferred.jp/2015/06/distributed-deep-reinforcement-
learning/
ディープラーニングを用いたコンピュータ囲碁 ~ Alpha Go の技術と展望 ~
情報処理, vol.57, No.4
深層学習の参考文献(強化学習ではない)
初めてのディープラーニング--オープンソース"Caffe"による演習付き
データサイエンティスト養成読本 機械学習入門編 (Software Design plus)