Slide 1

Slide 1 text

60分で学ぶ「強化学習理論入門」 中井悦司 / Etsuji Nakai 2020/09/05 ver1.1

Slide 2

Slide 2 text

Etsuji Nakai Solutions Architect, Google Cloud $ who am i

Slide 3

Slide 3 text

はじめに ● この資料は、書籍「ITエンジニアのための強化学習理論入門」の内容を60分の セミナー用に「超絶圧縮」したものです。 ● 動的計画法による厳密計算の方法をわりと丁寧にまとめて、サンプリングデー タを用いた近似手法は考え方のみを記載しています。 ● 資料内に出てくるサンプルコードは、書籍に付属のもので、下記で公開されて います。 ○ https://github.com/enakai00/colab_rlbook

Slide 4

Slide 4 text

Contents ● 強化学習の考え方 ● マルコフ決定過程による環境のモデル化 ● 状態価値関数による行動ポリシーの優劣比較 ● 動的計画法による厳密解の計算 ● 行動ポリシーの改善方法 ● 厳密計算ができない場合の近似手法

Slide 5

Slide 5 text

強化学習の考え方

Slide 6

Slide 6 text

教師あり/教師なし学習との違い ● 教師あり学習(例:分類アルゴリズム) ○ 「入力データと正解ラベル」の組を教師データとして学習 ○ 予測時に100%の正解率を達成することはできない 6

Slide 7

Slide 7 text

教師あり/教師なし学習との違い ● 教師なし学習(例:クラスタリング) ○ 類似性が高いデータのグループを発 見する ○ データに対する知見を得ることが主 な目的で、「正解」の定義はない 7

Slide 8

Slide 8 text

強化学習の考え方 ● 「環境」内を行動するエージェントが、最善の「行動ポリシー」を発見することが目的 ○ 行動ポリシー ⇨ 場面ごとにエージェントの行動を選択するルール ● 数学的には、「マルコフ決定過程」として環境と報酬を定義する ○ 行動によって得られる「総報酬」を最大化することがゴール(確率的な要素を含む環境 においては、「総報酬の期待値」が最大になる行動ポリシーを発見することを目指す) ○ 理論上は「ベルマン方程式に基づく動的計画法」で厳密解を求めることが可能 8

Slide 9

Slide 9 text

強化学習の課題 ● 現実の問題では、次のような理由で厳密解を得ることは困難になる ○ 環境のすべての情報が事前に分かっていない場合は、エージェントが収集した部分的な データによる学習が必要 ⇨ モンテカルロ法、TD法(Q-Learning、SARSA) ○ 環境が複雑な場合は、必要となるメモリー容量や計算時間の観点で厳密解を求めるのは 困難 ⇨ ニューラルネットワークによる関数近似(DQN : Deep Q Network) ● 厳密解を求める理論(ベルマン方程式に基づく動的計画法)が上記の近似手法を理解する基 礎となる 9 厳密解を求める理論を理解した上で、それを近似的に再現する手法を学ぶ

Slide 10

Slide 10 text

マルコフ決定過程による環境のモデル化

Slide 11

Slide 11 text

マルコフ決定過程とは? ● マルコフ決定過程 ⇨ 有限個の「状態」と「アクション」を組み合わせた状態遷移図で表さ れるプロセス 11 行動ポリシー ○ 状態遷移には「報酬」が付随 ○ アクションの結果は、今の状態 のみに依存して決まる ● 状態ごとに選択するアクションを決 定する「行動ポリシー」の中で、総 報酬を最大化するものを発見するこ とがゴール この例では無限の報酬が得られる (最大値が定義できない)ので、 問題設定の修正が必要 環境 エージェント

Slide 12

Slide 12 text

エピソード的タスクに問題設定を修正 ● 「商品を出来るだけ早く1つ購入する」ことを目的にして、図のような状態遷移を定義す ると、前ページの行動ポリシーが明らかに最善のポリシーとなる ○ エージェントが終了状態に到達するタスクを「エピソード的タスク」と言う 12

Slide 13

Slide 13 text

非エピソード的タスクに報酬の割引率を導入 ● 前々ページのように終了状態がないタスクを「非エピソード的タスク」と言う ● このような場合は、「報酬の割引率 γ」を導入すると行動ポリシーを適切に比較することが できる ○ 具体的には、次のような状態遷移(S:状態、A:アクション、R:報酬)に対して、 次式で総報酬を定義する(γ は 0.9 程度の 1 より小さい値) 13

Slide 14

Slide 14 text

非エピソード的タスクに報酬の割引率を導入 ● 報酬の割引率 γ を導入した場合、行 動ポリシー A の総報酬は次になる ● 行動ポリシー B のように余計な行動 が加わると総報酬は小さくなる 行動ポリシー A 行動ポリシー B 14

Slide 15

Slide 15 text

確率的な状態変化 15 ● マルコフ決定過程では、確率的な状態変 化も許される ○ 状態 s でアクション a を選択した時 に報酬 r を得て次の状態が s' になる 条件付き確率を      と表す ● 右図の例を条件付き確率で表すと次になる このような1次元、もしくは、2次元のマスを 移動する題材を「グリッドワールド」と呼ぶ

Slide 16

Slide 16 text

バックアップ図 16 ● マルコフ決定過程の状態変化のプロセスは、右図の ような「バックアップ図」でもれなく表現できる ○ 点線矢印部分は、同じツリーが再帰的に現れる ● バックアップ図の中で、「総報酬が最大になるパス を実現する行動ポリシー(最善の行動ポリシー)」 を発見したい ○ (計算量を気にしなければ)「動的計画法」に 基づくアルゴリズムで計算可能

Slide 17

Slide 17 text

状態価値関数による 行動ポリシーの優劣比較

Slide 18

Slide 18 text

状態価値関数の定義 18 ● 状態価値関数   は、行動ポリシー π に従って、 状態 s から行動を続けた際の総報酬の期待値を表す (終了状態に対する値は必ず 0 と定義する) ● 「常に右に進む」行動ポリシーを  とすると、次の 値が得られる ○ 図に示すように、終了状態から逆にたどること で順に値が決定していく R (+5) S M G 1 1 R

Slide 19

Slide 19 text

状態価値関数(直接計算の例) 19 ● 「常に左に進む」行動ポリシー  に対するバック アップ図は、右図になる ● 期待値計算の問題として愚直に解くと、   は次 のように計算できる 1回目でゴールに到達 2回目でゴールに到達 3回目でゴールに到達

Slide 20

Slide 20 text

状態価値関数の再帰的関係 20 ● バックアップ図の再帰構造を考えると、   に対 して次が成り立つことがわかる ○      より、先ほどと同じ結果が得られる ● この結果から、    は次のように決まる

Slide 21

Slide 21 text

● (状態、および、アクションの数が有限個のマルコ フ決定過程では)他のすべての行動ポリシーよりも 優れた「最善の行動ポリシー  」が必ず存在する ○ これを発見することを強化学習のゴールとする      行動ポリシーの優劣比較 21 ● 「すべての状態 s について        」となる時、行動ポリシー  は、行動ポリシー   よりも優れていると定義する ○ 状態 s によって大小関係が変わり、優劣が定まらない場合もある この例における最善の行動ポリシーは どのようになるでしょうか?

Slide 22

Slide 22 text

動的計画法による厳密解の計算

Slide 23

Slide 23 text

確率を含む行動ポリシー 23 ● 行動ポリシー π は、確率的にアクショ ンを選択するものでも構わない ○ この場合、状態 s でアクション a を選択する条件付き確率を    と表す ○ 確率を伴わない行動ポリシー π の 場合は、状態 s で(確率 1 で)選 択するアクションを   で表す C R B その他の確率は すべて 0

Slide 24

Slide 24 text

状態価値関数に対するベルマン方程式 24 ● 状態 s で特定のアクション a を選択した場合、確率       で報酬 r が得られて、状 態 s' に移行する。s' 以降に得られる総報酬の期待値は   なので、s から見た総報酬の期 待値は(割引率 γ を考慮して)次になる ● 最初のアクション a も確率    で選 択されるので、あらゆるアクションの可 能性を考慮した期待値は次になる 状態価値関数に対するベルマン方程式

Slide 25

Slide 25 text

動的計画法による状態価値関数の計算 25 ● バックアップ図において終了状態から逆向きに ベルマン方程式を適用すると、状態価値関数の 値が順番に決まっていくと想像される ● 実際には、順番を気にせずに「すべての状態 s について、ベルマン方程式の右辺で   を更 新する」という処理を無限に繰り返すと、正し い状態価値関数の値が得られる 状態価値関数に対する ベルマン方程式と 本質的に同じもの ○ この手続きを「(ベルマン方程式に基づく)動的計画法」と呼ぶ 実装時は、「すべてのアクション a につ いてのループ」と「起こり得るすべての 結果 (r, s') についてのループ」が必要

Slide 26

Slide 26 text

コードによる確認 26 ● ノートブック「Chapter02/  01_Policy_Evaluation_1.ipynb」を参照 ● 次の環境で動的計画法を適用 ○ 右端(s = 7)に到達すると +1 の報酬 ○ 常に右に移動する行動ポリシー ○ 状態価値関数の初期値は 0 ○ s = 0, 1, 2, …, 6 の順にベルマン方程式 を適用 1回目の Iteration 2回目の Iteration

Slide 27

Slide 27 text

コードによる確認 27 ● ノートブック「Chapter02/  02_Policy_Evaluation_2.ipynb」を参照 ● 次の環境で動的計画法を適用 ○ 右下が終了状態 ○ 移動ごとに -1 の報酬 ○ 「落とし穴」に落ちると左上に戻る ○ 確率 1/2 で右、もしくは、下に移動す る行動ポリシー 実装上は、すべての状態 s をベル マン方程式で更新した際に、変化 の最大値が 0.01 未満になった所 で処理を打ち切る

Slide 28

Slide 28 text

行動ポリシーの改善方法

Slide 29

Slide 29 text

行動-状態価値関数の定義 29 ● 行動-状態価値関数    は、現在の状態 s におい て、「アクション a を選択して、その後は行動ポリ シー π に従って行動を続けた場合」に得られる総報 酬の期待値を表す ○ 右のバックアップ図より、次で計算される

Slide 30

Slide 30 text

「一手先読み」による行動ポリシーの改善 ● 行動ポリシー π が与えられた時、次の方法で新しい行動ポリシー π' を定義する。 ○ 状態 s でアクション a を選択する際に、取り得るすべての a について    を計算 して、これが最大になるものを選択する ⇨ 次の一手について、あらゆる手を比較して一番よいものを選ぼうという発想。ただし、すべての手を 正確に比較するには、一手先を見るだけではだめで、さらに先の手を読んで、ツリー状に展開されるあ らゆる手筋を比較する必要がある。そこまでするのは大変なので、二手目以降については既存の行動ポ リシー π に従うものと仮定して、次の一手の良さを測ろうという作戦 ○ この π' は、必ず、π よりも優れた行動ポリシーになることが数学的に証明可能 30 「    に基づく Greedy ポリシー」と呼ぶ

Slide 31

Slide 31 text

ポリシー反復法 ● 次の手続きを繰り返す事で、最善の行動ポリシー  に到達する 1. 適当な行動ポリシー π を用意する 2. 動的計画法で状態価値関数   を求める 3. 行動-状態価値関数に変換する: 4.     に基づく Greedy ポリシー π' を構成する 5. π' を π として 2. に戻る 31

Slide 32

Slide 32 text

コードによる確認 32 ● ノートブック「Chapter03/01_Policy_Iteration_1.ipynb」を参照 初期ポリシー π:確率 1/2 で右か左に移動 アップデート後の行動ポリシー π' :確率 1 で左に移動 ○ この例では、1回のアップデートで 最善の行動ポリシー  に到達

Slide 33

Slide 33 text

コードによる確認 33 ● ノートブック「Chapter03/02_Policy_Iteration_2.ipynb」を参照 ○ このコードでは、行動ポリシーが変化しなくなるまでアップデートを実行

Slide 34

Slide 34 text

価値反復法 ● 動的計画法で状態価値関数を計算するコードを実装する際は、値の変化が小さくなった所 で処理を打ち切った ● ポリシー反復法では、行動ポリシーを更新するごとに(以前の計算結果を捨てて)状態価 値関数を再計算するので、早めに処理を打ち切って先に進んだ方が効率的かもしれない ● 打ち切るタイミングを極限まで早めて、状態価値関数の更新と行動ポリシーのアップデー トを並列に実行するのが「価値反復法」のアルゴリズム 34

Slide 35

Slide 35 text

ポリシー反復法と価値反復法の比較 35

Slide 36

Slide 36 text

厳密計算ができない場合の近似手法

Slide 37

Slide 37 text

状態遷移確率が未知の場合 37 ● ベルマン方程式に基づく動的計画法は、状態遷移確率       が事前に分かっている という前提 ● たとえば、ビデオゲームをプレイするエージェントを学習する場 合、ビデオゲームのコードを見なければ、状態遷移確率を知るこ とはできない ⇨ 厳密に計算するのではなく、実際にプレイしたデータから  推定する手法が必要:TD 法(Q-Learning、SARSA)

Slide 38

Slide 38 text

状態数が膨大になる場合 38 ● これまでのコードでは、Python のディクショナリーで状態価値関数を定義した ○ 状態 s ごとに、対応する値   を個別に記憶する方式 ○ 状態数が爆発的に増えるとメモリー不足で対応不可(たとえば、囲碁の盤面はおよそ 10172 通りあると言われる) class Gridworld: def __init__(self, size=8, goals=[7], penalty=0): … self.value = {} for s in self.states: self.value[s] = 0 状態価値関数を ディクショナリーで実装

Slide 39

Slide 39 text

状態数が膨大になる場合 39 ● 図の状態価値関数では、終了状態(s = 7)を除いて直線的に変化しているので、一次関数        で表現できる ○ 学習データを用いて w と b をチューニングすれば同じ結果が得られるはず class StateValue: def __init__(self, w, b): self.w = w self.b = b def get_value(self, s): w = self.w b = self.b return w*s+b 0 報酬:+1 1 2 3 4 5 6 7 終了状態 移動ごとに -1 の報酬 常に右に移動する行動ポリシー に対する状態価値関数 状態価値関数を 一次関数で実装

Slide 40

Slide 40 text

状態数が膨大になる場合 40 ● 一般には、一次関数で表現できるとは限らな いが、多数のパラメーターを持つニューラル ネットワークを用いれば、複雑な状態価値関 数も高い精度で近似できると期待される 活性化関数 ReLU

Slide 41

Slide 41 text

コードによる確認 41 ● ノートブック「Chapter05/  02_Neural_Network_Policy_Estimation_2.ipynb」を参照 ○ 「16ノード+8ノード」の隠れ層を持つ多層ニューラル ネットワークで右上のグリッドワールドを学習 Iteration 50: [ -15.0 -15.7 -16.7 -16.9 -4.2 ] [ -12.0 -12.9 -14.4 -16.0 -3.6 ] [ -9.6 -10.1 -11.9 -14.6 -2.9 ] [ -7.5 -8.0 -9.0 -11.6 -2.2 ] [ -6.2 -5.2 -4.2 -3.1 -2.5 -1.5 ] [ -5.2 -4.2 -3.2 -2.2 -1.3 0.0 ] def build_model(self): state = layers.Input(shape=(2,)) hidden1 = layers.Dense(16, activation='relu')(state) hidden2 = layers.Dense(8, activation='relu')(hidden1) value = layers.Dense(1)(hidden2) model = models.Model(inputs=[state], outputs=[value]) model.compile(loss='mse') return model ニューラルネットワークの定義

Slide 42

Slide 42 text

(参考)ニューラルネットワークの特徴 42 ● ニューラルネットワークは、入力値の領域を一定 の区画に分けて、区画ごとの特性を表現するのに 適している ● したがって、状態数が増加しても区画ごとの特性 が変わらなければ、同じサイズのニューラルネッ トワークで適切な近似が可能 ○ 右図は前ページと同じサイズのニューラル ネットワークでより大きなグリッドワールド を学習した結果

Slide 43

Slide 43 text

DQN (Deep Q Network) 43 ● 「TD 法(Q-Leanring)」と「Deep Neural Network による行動-状態価値関数の近似」 を組み合わせた手法が DQN (Deep Q Network) https://www.youtube.com/watch?v=cjpEIotvwFY

Slide 44

Slide 44 text

「あるけあるけゲーム」 44 ● ニューラルネットワークで行動-状態価値関数    を近似して、Q-Learning を適用す ることを考える ● 次のようなゲームの自動プレイエージェントを学習する ○ 14 × 14 の画面上に壁(#)と障害物(X)を配置 ○ プレイヤー(*)は上下左右に移動 ○ 移動した場所には新たな障害物(+)が配置される ○ 障害物に当たらずに長く移動を続けることを目指す

Slide 45

Slide 45 text

状態の定義 45 ● 障害物の配置が固定的であれば、プレイヤーの 座標 (x, y) を状態 s とすればよい ● 今の場合、障害物の配置が動的に変化するの で、障害物を含めた「画面全体」を状態 s とみ なす必要がある ○ 右図のように2レイヤーからなる数値デー タに変換して、ニューラルネットワークに 入力する

Slide 46

Slide 46 text

ニューラルネットワークの構造 46 ● 行動-状態価値関数    を表現するために、アクション a と結合して入力する One-hot 表現

Slide 47

Slide 47 text

コードによる確認 47 ● ノートブック「Chapter05/03_Walk_Game_Training.ipynb」を参照 ○ 平均して20ステップ程度進めるエージェントが学習される def build_model(self): cnn_input = layers.Input(shape=(14, 14, 2)) cnn = layers.Conv2D(8, (5, 5), padding='same', use_bias=True, activation='relu')(cnn_input) cnn_flatten = layers.Flatten()(cnn) action_input = layers.Input(shape=(4,)) combined = layers.concatenate([cnn_flatten, action_input]) hidden1 = layers.Dense(2048, activation='relu')(combined) hidden2 = layers.Dense(1024, activation='relu')(hidden1) q_value = layers.Dense(1)(hidden2) model = models.Model(inputs=[cnn_input, action_input], outputs=q_value) model.compile(loss='mse') return model ############## # # # x # #x x # # x x x# # *++ x# # +++# # ++ +++# # ++x + # # +++++++ # # # # x # # x # ############## Length: 21 ニューラルネットワークの定義

Slide 48

Slide 48 text

モンテカルロ・ツリーサーチによる実行時の先読み 48 ● 実行時に(学習済みのモデルを用いて)複数のパスを選択した上で、ゲーム終了まで再シ ミュレーションすることで、精度を向上するテクニック

Slide 49

Slide 49 text

コードによる確認 49 ############## #x x x # # +++x x # # x + ++ # # +++++ + # # +++++++++ # # ++ x+ + # # +++++ ++++ # # + ++ + + # # + +++++ + # # ++++ ++# # x x*# # # ############## Length: 53 ● ノートブック「Chapter05/04_Walk_Game_with_Search.ipynb」を参照 ○ 実行時に「1手だけ先を読む」処理を追加 ○ 現在の状態 s からすべてのアクション a に対して、報酬 r と次の状 態 s' をシミュレーションで取得して、        が最大に なるアクションを選択 ○ これは、行動-状態価値関数に対するベルマン方程式を用いた更新 を1回だけ追加で行っていると考えられる 通常の Greedy ポリシーではこれが 最大になるアクションを選択 ここでは、これが最大になる アクションを選択

Slide 50

Slide 50 text

Thank You.