強化学習を調べ始めた動機
 Google の Alpha Go ってどういうプログラムなんだろう?
 https://deepmind.com/alpha-go
 「教師あり学習」と「強化学習」のハイブリッドで強化された
ニューラルネットワーク/人工知能
強化学習 Reinforcement Learning
 「エージェント」が、現在の状態を観測し、取るべき行動を決定する問題
 強化学習の例
 将棋・囲碁など対戦ゲーム
 自動運転 https://youtu.be/a3AWpeOjkzw
 ネズミの迷路
 「教師あり学習」と何が違うか
 「目標」が与えられるだけで、知識(「正解」のテストデータ)が与えられない
 対戦ゲームで言えば「勝て」という目標が与えられるだけで、
「こういう局面ではこうすればよい」というアドバイスが一切ない感じ
 スポーツで言えば、コーチにレッスンを受けるのが教師アリ学習で、
我流で頑張るのが強化学習
 「教師あり学習」を選択できるなら「教師あり学習」を選択すべき
選択できない場合に、「強化学習」を選択
強化学習のアルゴリズム
1. エージェントは、環境から受け取った状態 s を元に、行動の選択肢 A の中から、
戦略 π に基づいて、行動 a を行う
2. 環境はエージェントから行動 a を受け取り、状態を s から s’ に変化させる
その上で、報酬 (または見込みの報酬)r をエージェントに返す
3. 1 と 2 を終了するまで繰り返しながら、また全体を何度も繰り返しながら、
戦略πを改良していく
スト2で言えば...
 自分/敵の位置/HP が状態 s
 行動の選択肢 A が、右に移動/左に移動/ジャンプ/パンチ/キック...
その中から、戦略に基づいて、1つの行動 a を選択
 報酬は敵にダメージを与えたら+の報酬
自分がダメージを受けたら-の報酬
 タイムアップ or どちらかが倒れるまで繰り返す
 そして何度も対戦しながら、戦略を賢くしていく
強化学習で、最適な戦略とは...
最適な戦略とは
 ある状態 s において、その後(の未来)に得られる報酬を最大化する戦略
 スト2で言えば...
自分のダメージを少なくして、敵により多くのダメージを与えるのが良い戦略
数式で書くと、以下の値を最大化する戦略が最適な戦略
Rs =
t=0
∞
γk
rs+t = rs + γrs+1 + γ2
rs+2. . .
γ:割引率
割引率が入っているのは、
今日の1000円の方が明日の1000円より価値があるように、
つまり「同じ報酬を得られるなら、早い方をより良く」するため
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 において得られる可能性のある報酬の最大値
 α は学習率
 とりあえず試して、ちょっとずつ賢くしていくアルゴリズム
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 を選択する
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 を集め、その集合を使ってニューラルネットワークを最適化
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) の更新部分を、「教師あり学習」に変える
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 にコピー
参考文献
 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)

強化学習とは (MIJS 分科会資料 2016/10/11)

  • 1.
    強化学習を調べ始めた動機  Google のAlpha Go ってどういうプログラムなんだろう?  https://deepmind.com/alpha-go  「教師あり学習」と「強化学習」のハイブリッドで強化された ニューラルネットワーク/人工知能
  • 2.
    強化学習 Reinforcement Learning 「エージェント」が、現在の状態を観測し、取るべき行動を決定する問題  強化学習の例  将棋・囲碁など対戦ゲーム  自動運転 https://youtu.be/a3AWpeOjkzw  ネズミの迷路  「教師あり学習」と何が違うか  「目標」が与えられるだけで、知識(「正解」のテストデータ)が与えられない  対戦ゲームで言えば「勝て」という目標が与えられるだけで、 「こういう局面ではこうすればよい」というアドバイスが一切ない感じ  スポーツで言えば、コーチにレッスンを受けるのが教師アリ学習で、 我流で頑張るのが強化学習  「教師あり学習」を選択できるなら「教師あり学習」を選択すべき 選択できない場合に、「強化学習」を選択
  • 3.
    強化学習のアルゴリズム 1. エージェントは、環境から受け取った状態 sを元に、行動の選択肢 A の中から、 戦略 π に基づいて、行動 a を行う 2. 環境はエージェントから行動 a を受け取り、状態を s から s’ に変化させる その上で、報酬 (または見込みの報酬)r をエージェントに返す 3. 1 と 2 を終了するまで繰り返しながら、また全体を何度も繰り返しながら、 戦略πを改良していく スト2で言えば...  自分/敵の位置/HP が状態 s  行動の選択肢 A が、右に移動/左に移動/ジャンプ/パンチ/キック... その中から、戦略に基づいて、1つの行動 a を選択  報酬は敵にダメージを与えたら+の報酬 自分がダメージを受けたら-の報酬  タイムアップ or どちらかが倒れるまで繰り返す  そして何度も対戦しながら、戦略を賢くしていく
  • 4.
    強化学習で、最適な戦略とは... 最適な戦略とは  ある状態 sにおいて、その後(の未来)に得られる報酬を最大化する戦略  スト2で言えば... 自分のダメージを少なくして、敵により多くのダメージを与えるのが良い戦略 数式で書くと、以下の値を最大化する戦略が最適な戦略 Rs = t=0 ∞ γk rs+t = rs + γrs+1 + γ2 rs+2. . . γ:割引率 割引率が入っているのは、 今日の1000円の方が明日の1000円より価値があるように、 つまり「同じ報酬を得られるなら、早い方をより良く」するため
  • 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 Atariwith 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)