強化学習の基本と簡単な実装

1.3K Views

April 19, 24

スライド概要

勉強会で使った資料。

profile-image

主に深層学習に興味があります

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2023/3/21 DDoS2023春 強化学習 武蔵野⼤学 DDoS(脱初⼼者データサイエンスオンラインセミナー) 2023春 ⼩宮和真 misya11p 武蔵野⼤学 データサイエンス学部 2年 @ds33miya

2.

2023/3/21 DDoS2023春 参考⽂献 1. O'Reilly Japan - ゼロから作るDeep Learning ❹ https://www.oreilly.co.jp/books/9784873119755/ 1

3.

2023/3/21 DDoS2023春 ⽬次 1. 強化学習とは 2. アルゴリズム 3. 実装 4. 深層強化学習 2

4.

2023/3/21 DDoS2023春 1. 強化学習とは 3

5.

2023/3/21 DDoS2023春 1. 強化学習とは 強化学習 Reinforcement Learning ある環境の下でもらえる報酬が⼤きくなる様な⾏動を学習すること と⾔われてもよく分からないと思うので,噛み砕いて説明していく 4

6.

2023/3/21 1. 強化学習とは DDoS2023春 強化学習とは まずなんらかの環境を思い浮かべる.なんでもいい.みなさんの頭の中に定義 されている環境という概念. よく分からん⼈は「部屋」みたいな空間を思い浮かべよう. 環境 5

7.

2023/3/21 1. 強化学習とは DDoS2023春 強化学習とは その環境に,「何らかの⾏動が可能なもの」を仮定する.これもなんでもいい. よく分からない⼈は「⼈間」みたいな⽣き物を仮定しておこう.そしてそれを エージェントと呼ぶことにする. エージェント ↓ 6

8.

2023/3/21 1. 強化学習とは DDoS2023春 強化学習とは エージェントは状態を持っており,それは⾏動によって変化する.「エージェ ントが取れる⾏動」と「その⾏動をとった結果どの様に状態が変化するか」は 環境によって異なる.環境がそれらを制御しているとみてもいいかも. 状態: x=0 行動: 右へ移動 状態: x=1 7

9.

2023/3/21 1. 強化学習とは DDoS2023春 強化学習とは エージェントの⾏動や状態がある条件を満たすと,報酬や罰が与えられる.こ の報酬と罰をまとめて報酬と呼ぶことにする.罰は負の報酬という感じ. 報酬 +1 状態: x=0 行動: 右へ移動 状態: x=1 8

10.

2023/3/21 DDoS2023春 1. 強化学習とは 強化学習とは この様にある環境と報酬を定義したとき,「その環境下でどの様な⾏動を取れ ば多くの報酬をもらえるか」を学習するのが強化学習 • 環境 • エージェントが取れる⾏動と,それによって状態がどの様に遷移するかを定義したもの • ルールの様なもの • 報酬 • エージェントの⾏動に対する評価 エージェントは「⾏動によって状態を変化させるモノ」という概念的な存在 9

11.

2023/3/21 DDoS2023春 1. 強化学習とは 適⽤例 環境と報酬を定義することで強化学習が適⽤できる.解きたい問題を「環境と 報酬を⽤いた問題」に落とし込むことと,適切な報酬設定が⼤きな鍵. では現実世界の問題を強化学習に落とし込んだ例を⾒てみよう.なお私は強化 学習に詳しくないので適当. 10

12.

2023/3/21 DDoS2023春 1. 強化学習とは 適⽤例 オセロ 盤⾯に対して,どこに⽯を打てば多く報酬をもらえるか(=勝ちに近づくか)を 学習する.プレイヤーをエージェントと⾒ることができる. • 環境 • 盤⾯ • 打った⽯に対してどの⽯がひっくり返るか(=ルール)が記述されている • 報酬(例) • ゲームが終わった時の⾃分の⽯の数 • 勝ったらプラス,負けたらマイナス 11

13.

2023/3/21 DDoS2023春 1. 強化学習とは 適⽤例 ⾞の⾃動運転 適切な運転につながるアクセルワーク,ハンドル操作を学習する.運転⼿もし くは⾞そのものをエージェントと⾒ることができる.センサーなどから取得し た情報を⾞の状態とする . • 環境 • 道路 • 状態の遷移は実際に⾞を動かして求める • 報酬(例) • 物体との距離が近づいたらマイナス • ⾞体の揺れが⼩さかったらプラス 12

14.

2023/3/21 DDoS2023春 2. アルゴリズム 13

15.

2023/3/21 DDoS2023春 2. アルゴリズム 動的計画法 ⼤きな問題を⼩さな部分問題に分割し,その部分問題の最適解を再帰的に求め て最終的な解を得る⼿法(Chat GPTより).これは理解しなくて良い. 強化学習において,状態遷移や報酬関数が定式化されていてそれらが既知の場 合,動的計画法に分類される以下の⼿法が使える. • ⽅策反復法 • 価値反復法 ただこれらの⼿法はここでは説明しない.別に理解しなくてもいいと思うから. 14

16.

2023/3/21 DDoS2023春 2. アルゴリズム モンテカルロ法 乱数によってサンプリングしたデータを使って近似的な解を求める⼿法の総称. 円周率を求める⼿法なんかが有名.強化学習でもこの⼿法を⽤いる. やり⽅は簡単.実際にエージェントを動かしてみて,どういう⾏動をするとど ういう報酬が得られるのかを調査し(= サンプリング),⾼い報酬を得るため の⾏動を学習する.それだけ. (具体的なサンプリング⽅法については後ほど) 15

17.

2023/3/21 2. アルゴリズム DDoS2023春 ⾏動価値 ある状態からのある⾏動に対する評価.具体的に⾔うと,その⾏動によって得 られる報酬(本当は収益)の期待値. 行動: 右へ移動 • +5 • +1 • -3 etc. 16

18.

2023/3/21 2. アルゴリズム DDoS2023春 ⾏動価値 ある状態𝑠である⾏動𝑎をとった時の⾏動価値を返す関数𝑞(𝑠, 𝑎)を⾏動価値関数 またはQ関数と呼ぶ.強化学習の⽬的は適切なQ関数を求めることと⾔える. 𝑠 状態 𝑎 𝑞(𝑠, 𝑎) 行動価値 行動価値関数 行動 17

19.

2023/3/21 2. アルゴリズム DDoS2023春 ⾏動価値 適切なQ関数の求め⽅はとっても簡単.サンプリングによって⾊々な𝑠! , 𝑎! に対 する報酬𝑅! が得られるので,その期待値(平均値)を設定してやればいい. 𝑞 𝑠! , 𝑎! = 𝔼[𝑅! ] なお𝑠と𝑎は離散化されている前提 18

20.

2023/3/21 DDoS2023春 2. アルゴリズム ⾏動価値 ここで次のことを考える. 報酬の期待値を⾏動価値としたが,果たしてそれで良いのだろうか 結論は,良くない.報酬はあくまでも⼀時的なもので,本来考えたいのは⻑期 的な(= 将来的に得られる)報酬.「その時はマイナスだけど将来的に⾒たら プラスだよね」みたいな⾏動をしっかりと評価したいということ. 例) • オセロの序盤で相⼿に⽯を取らせる(序盤に取りすぎると不利になる) • 勉強(つまらないけど将来役に⽴つ) 19

21.

2023/3/21 2. アルゴリズム DDoS2023春 収益 ⻑期的な⽬線での報酬.ある⼀連の過程で得られた報酬の和.ある試⾏によっ て 𝑅", 𝑅#, ⋯ , 𝑅! という報酬が得られると,その収益𝐺は以下となる. 𝐺 = 𝑅" + 𝛾𝑅# + 𝛾 $ 𝑅$ + ⋯ + 𝛾 ! 𝑅! 𝛾は0~1の値で,割引率と呼ぶ.将来的な報酬の価値を下げる役割がある. 以上を踏まえると,⾏動価値として適切なものは収益の期待値となる 𝑞 𝑠! , 𝑎! = 𝔼[𝐺! ] 20

22.

2023/3/21 DDoS2023春 2. アルゴリズム ⽅策 ⾏動価値関数が得られた時の⾏動の選び⽅.⾏動価値を元にどの様な⾏動を決 定すれば良いだろうか. ⼀番分かりやすいのは,⾏動価値が最も⾼くなる⾏動を選ぶというやり⽅.こ の様な,⾏動価値から⼀つの⾏動を定める⽅策を決定的とかgreedyな⽅策と呼 ぶ. また⾏動価値で重み付けした確率分布からサンプリングすることもできる.こ ういう場合は確率的な⽅策とか⾔う. 21

23.

2023/3/21 2. アルゴリズム DDoS2023春 ε-greedy法 ⾏動の選び⽅の⼀つ.サンプリング時に使⽤されることが多い. ある確率εでランダムな⾏動を取り,それ以外は⽅策(⾏動価値)に従った⾏動 をとる⼿法. サンプリング時の⾏動選択に⽅策を使ってしまうとサンプルが偏ってしまうた め,サンプリング時はこの⼿法を使って⾊々なサンプルを得るようにする. 確率 ε 確率 1 - ε ランダムな行動 方策に従った 行動 22

24.

2023/3/21 DDoS2023春 2. アルゴリズム モンテカルロ法まとめ 以上を踏まえ,モンテカルロ法での学習の⼿順をまとめる 1. Q関数の初期化 2. サンプリング 3. Q関数の更新 4. 2, 3の繰り返し 23

25.

2023/3/21 2. アルゴリズム DDoS2023春 モンテカルロ法まとめ 以上を踏まえ,モンテカルロ法での学習の⼿順をまとめる 1. Q関数の初期化 Q関数(⾏動価値関数)𝑞(𝑠, 𝑎)を乱数などで初 2. サンプリング 期化 3. Q関数の更新 4. 2, 3の繰り返し 24

26.

2023/3/21 2. アルゴリズム DDoS2023春 モンテカルロ法まとめ 以上を踏まえ,モンテカルロ法での学習の⼿順をまとめる 1. Q関数の初期化 この時点でのQ関数を使ってサンプリングをす 2. サンプリング る.⾊々な状態𝑠! と⾏動𝑎! での収益𝐺! を取得す 3. Q関数の更新 る.どれくらいサンプリングするかは任意. 4. 2, 3の繰り返し 25

27.

2023/3/21 2. アルゴリズム DDoS2023春 モンテカルロ法まとめ 以上を踏まえ,モンテカルロ法での学習の⼿順をまとめる 1. Q関数の初期化 サンプリングによって得たデータから期待値を 2. サンプリング 計算し,Q関数を更新 3. Q関数の更新 4. 2, 3の繰り返し 𝑞 𝑠! , 𝑎! = 𝔼[𝐺! ] 26

28.

2023/3/21 2. アルゴリズム DDoS2023春 モンテカルロ法まとめ 以上を踏まえ,モンテカルロ法での学習の⼿順をまとめる 1. Q関数の初期化 サンプリングと更新を好きなだけ繰り返す 2. サンプリング 3. Q関数の更新 4. 2, 3の繰り返し 27

29.

2023/3/21 DDoS2023春 2. アルゴリズム TD法 動的計画法とモンテカルロ法の折衷案 さっきのモンテカルロ法は連続タスク(終わりのないタスク)では適⽤できな いという⽋点がある(終わりがないと収益を確定できない). そこで,価値関数の更新に必要な収益を価値関数⾃⾝を使って近似する.こう いう再帰的な仕組みはブートストラップというらしい. (ここの「価値関数」は⾏動価値関数ではなく状態価値関数というもの.この 資料では触れていない.) 28

30.

2023/3/21 2. アルゴリズム DDoS2023春 SARSA TD法をQ関数(⾏動価値関数)に適⽤した⼿法 次の状態𝑠!$#と次の⾏動𝑎!$#の⾏動価値𝑞(𝑠!$#, 𝑎!$#)を使って,Q関数の更新に 使う収益を近似する 𝑞 𝑠! , 𝑎! = 𝔼[𝐺! ] ↓ 𝑞 𝑠! , 𝑎! = 𝔼[𝑅! + 𝛾𝑞(𝑠!$#, 𝑎!$#)] 収益𝐺! を,その時の報酬𝑅! と次の⾏動の⾏動価値𝑞(𝑠!$#, 𝑎!$#)の和で表している. この期待値の中⾝はTDターゲットと呼ぶ. 29

31.

2023/3/21 2. アルゴリズム DDoS2023春 SARSA 期待値の部分をちゃんと式にするとこう 𝑞′ 𝑠! , 𝑎! = 𝑞 𝑠! , 𝑎! + 𝛼(𝑅! + 𝑞 𝑠!$#, 𝑎!$# − 𝑞 𝑠! , 𝑎! ) 𝛼は学習率みたいなやつ.𝑞 𝑠! , 𝑎! をTDターゲット(𝑅! + 𝑞 𝑠!$#, 𝑎!$# )に向 かって𝛼だけ更新する様なイメージ.厳密な期待値にはならないが,それはわざ とで,最新のデータの重みが⼤きくなるように少しいじられている. 更新式に𝑠! , 𝑎! , 𝑅! , 𝑠!$#, 𝑎!$#が並ぶことからSARSAと呼ばれている 30

32.

2023/3/21 2. アルゴリズム DDoS2023春 Q学習 SARSAのTDターゲットを以下の様に変更した⼿法 𝑞 𝑠! , 𝑎! = 𝔼[𝑅! + 𝛾𝑞(𝑠!$#, 𝑎!$#)] ↓ 𝑞 𝑠! , 𝑎! = 𝔼[𝑅! + 𝛾 max 𝑞(𝑠!$#, 𝑎)] % 実運⽤時は𝑞(𝑠, 𝑎)を最⼤にする𝑎が選ばれるけど,サンプリング時はそうとは限 らない場合がある(ε-greedy法とか) 更新時の⽅策を実運⽤時のものに合わせる感じ 31

33.

2023/3/21 DDoS2023春 3. 実装 32

34.

2023/3/21 DDoS2023春 3. 実装 実装 Q学習をPythonで実装してみる 33

35.

2023/3/21 DDoS2023春 3. 実装 Gym OpenAIが開発しているライブラリ.⾊々な環境が⽤意されており,強化学習ア ルゴリズムを簡単に試すことができる. https://www.gymlibrary.dev/ 34

36.

2023/3/21 3. 実装 DDoS2023春 Gym Gymの環境に⾏動を⼊⼒すると,次の状態が返ってくる 2. 状態遷移 1. 行動 gym.Env エージェント 3. 状態 報酬はこちらで設定する.Gym側で設定された報酬を使うこともできる. 35

37.

2023/3/21 DDoS2023春 3. 実装 Cart Pole 倒⽴振⼦.Gymで使える環境の⼀つ. Cart Pole - Gymnasium Documentation カートの上にある不安定なポールを⽴たせるタスク.⼿のひらにほうきを⽴た せるやつみたいな. 36

38.

2023/3/21 DDoS2023春 3. 実装 Cart Pole • 状態 • • • • カートの位置(-4.8 ~ 4.8) カートの速度(-∞ ~ ∞) ポールの⾓度(-24° ~ 24° ) ポールの⾓速度(-∞ ~ ∞) • ⾏動 • 右に動く • 左に動く 37

39.

2023/3/21 DDoS2023春 3. 実装 Cart Pole GymのCart PoleをQ学習で解いてみよう. 以後ノートブック参照 https://github.com/misya11p/reinforcement-learning/blob/main/q-learning.ipynb 38

40.

2023/3/21 DDoS2023春 4. 深層強化学習 39

41.

2023/3/21 DDoS2023春 4. 深層強化学習 深層強化学習 深層学習を強化学習に取り⼊れる 深層学習は強いのでいろんな問題を解決できる.⼀番⼤きいのは,多くの状態 を扱えるようになること. 例えばオセロの盤⾯のパターンの数は約10&"(1那由他)と⾔われている.Q関 数を考える場合はさらに⾏動の数がかけられるので,もっといっぱい.これら ⼀つ⼀つに⾏動価値を定めるのはキツイ. 40

42.

2023/3/21 4. 深層強化学習 DDoS2023春 DQN Deep Q Network ドキュンじゃないよ DNN(Deep Neural Network)を⽤いたQ学習.Q関数にNNを設定する. Q関数は状態𝑠と⾏動𝑎を⼊れると⾏動価値が返ってくる関数だった.これをその ままNNで再現する,訳ではなく,⼊出⼒を少し変える.⼊⼒は状態のみで,出 ⼒は⾏動全ての⾏動価値とする. 行動価値1 状態 NN 行動価値2 : 行動価値n 41

43.

2023/3/21 4. 深層強化学習 DDoS2023春 DQN Q学習の⽬的は⾏動価値関数が適切な出⼒を⾏えるようにすること.適切な出⼒ はサンプリングによって得られた収益(TDターゲット)の期待値だった. DQNでは,TDターゲットを正解値としてNNの学習を⾏う.ある状態𝑠をNNに ⼊れた時に出てきた対応する𝑎の出⼒がTDターゲットに近づくようにする. 行動価値1 状態 NN 行動価値2 損失関数 TDターゲット : 行動価値n 損失 42

44.

2023/3/21 DDoS2023春 4. DQN 実装 DQNを実装する ノートブック参照 https://github.com/misya11p/reinforcement-learning/blob/main/DQN.ipynb 43

45.

DDoS2023春 オワリ おつ