強化学習入門

20,613 views
22,253 views

Published on

Published in: Technology
0 Comments
72 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
20,613
On SlideShare
0
From Embeds
0
Number of Embeds
3,647
Actions
Shares
0
Downloads
203
Comments
0
Likes
72
Embeds 0
No embeds

No notes for slide

強化学習入門

  1. 1. 強化学習入門理工学研究科 D2 齋藤 俊太13年5月3日金曜日
  2. 2. 学習?動物心理学観察行動主義学習によって行動が変化→ 行動を見れば学習し  たかどうか分かる認知主義学習によって内面的な認知が変化→ 行動に出る前に内的表象が変化  している=これも学習13年5月3日金曜日
  3. 3. 行動主義心理学的な実験13年5月3日金曜日
  4. 4. パブロフの犬(古典的条件付け)犬に を与える前に「ベルを鳴らす」何度か繰り返す「ベルが鳴る」という刺激に対して唾液を分泌するようになる「刺激」と「反応」の連合を強める=連合学習食べる時に「唾液を分泌する」という犬が生まれつき持つ無条件反応が,学習の過程を経て「ベルが鳴る」という刺激に対して反応するように変化したことを意味する13年5月3日金曜日
  5. 5. 猫の問題箱(試行錯誤学習)何度か繰り返すと,やがて同じ行動が出現する頻度が高くなる外に出ようとして猫がいろいろな行動をとる偶然に外に出られたまた箱にいれるパブロフの犬の場合と違い刺激は存在しないが,行動後の「満足」または「不快」の度合いに応じて,行動の出現頻度が学習の過程を経て変化する →効果の法則13年5月3日金曜日
  6. 6. スキナーの箱(報酬学習)が出るたまたまラットがレバーを押すラットはレバー付近にいることが多くなるレバーを押す頻度が高くなる状況と行動の結合を強めるような報酬を「正の強化子」,弱めるような報酬を「負の強化子」という.満足/不快を「 」=「報酬」という形で明確に与えた「試行錯誤学習」.報酬に応じて行動の自発頻度が変化していく.このような学習をオペランド条件付け(or 報酬学習)という.13年5月3日金曜日
  7. 7. 認知心理学的な実験13年5月3日金曜日
  8. 8. 認知心理学的な実験内的な変化は行動だけからは観察が難しい脳科学脳におけるシナプスの可塑性 → シナプス同士は結合を生成/消滅/増強/抑制する学習の動機付けはドーパミンにより行われるドーパミンの分泌量や電気生理学的な脳に対する観察から学習の過程を理解しようとする13年5月3日金曜日
  9. 9. で、どうやってコンピュータは学習を行えばいいのか?13年5月3日金曜日
  10. 10. 教師あり学習「答え」「問題」この矢印が欲しい「問題」と「答え」を事前にたくさん用意しておいて,間をつなぐ「写像」を近似するできるだけ未知の「問題」に対しても正しい「答え」が予測できるようにしたい→ どうやって汎化能力を獲得するかが重要13年5月3日金曜日
  11. 11. 教師なし学習観察者「問題」この矢印が欲しいこういう問題だな観察・特性を理解する・要約する(次元削減)・グループ化する(クラスタリング)13年5月3日金曜日
  12. 12. 学習?動物心理学観察行動主義学習によって行動が変化→ 行動を見れば学習し  たかどうか分かる認知主義学習によって内面的な認知が変化→ 行動に出る前に内的表象が変化  している=これも学習13年5月3日金曜日
  13. 13. 強化学習問題「問題」13年5月3日金曜日
  14. 14. 強化学習問題「問題」チャレンジする行動13年5月3日金曜日
  15. 15. 強化学習問題「問題」チャレンジする行動よい行動よくない行動「評価」報酬が与えられる(罰則)13年5月3日金曜日
  16. 16. 強化学習問題「問題」チャレンジする行動どう行動すべきかよい行動よくない行動「評価」報酬が与えられる(罰則)13年5月3日金曜日
  17. 17. 強化学習問題「問題」チャレンジする行動どう行動すべきかこの矢印が欲しいよい行動よくない行動「評価」報酬が与えられる(罰則)13年5月3日金曜日
  18. 18. 強化学習問題「問題」チャレンジする行動どう行動すべきかこの矢印が欲しいよい行動よくない行動「評価」報酬が与えられる(罰則)答えではなく評価13年5月3日金曜日
  19. 19. 手法の選び方例:アンケートの回答を分析する「年齢」と「収入」の関係を知りたい年齢を入力,収入を出力とする教師あり学習「年齢と収入」から似ている回答者をグループ化したい年齢,収入を入力とする教師なし学習「年齢と収入」に基づき回答者に広告を送りたい年齢,収入を入力とし,売上を報酬とした強化学習13年5月3日金曜日
  20. 20. 強化学習の背景心理学「試行錯誤学習」「報酬学習」最適制御理論制御対象の挙動の良し悪しを表す目的関数を最大化または最小化するように制御則を求める設計手法→ e.g. 電気代を抑えて目的を達成するには…13年5月3日金曜日
  21. 21. 強化学習の構成<人の場合>13年5月3日金曜日
  22. 22. 強化学習の構成<コンピュータの場合>即時報酬を最大にする行動ではなく,報酬の積み重ねとして将来にわたって得られる合計報酬=収益を最大にするように行動を最適化していく13年5月3日金曜日
  23. 23. 問題設定エージェント状態→ MDP13年5月3日金曜日
  24. 24. 問題設定エージェント状態行動右に行く左に行く→ MDP13年5月3日金曜日
  25. 25. 問題設定エージェント状態行動右に行く左に行く政策状態 で行動 をとる確率→ MDP13年5月3日金曜日
  26. 26. 問題設定エージェント状態行動右に行く左に行く 環境政策状態 で行動 をとる確率→ MDP13年5月3日金曜日
  27. 27. 問題設定エージェント状態行動右に行く左に行く 環境遷移確率状態 で行動 をとったとき状態が  になる確率政策状態 で行動 をとる確率→ MDP13年5月3日金曜日
  28. 28. 問題設定エージェント状態行動右に行く左に行く 環境 次の状態遷移確率状態 で行動 をとったとき状態が  になる確率政策状態 で行動 をとる確率→ MDP13年5月3日金曜日
  29. 29. 問題設定エージェント状態行動右に行く左に行く 環境 次の状態遷移確率状態 で行動 をとったとき状態が  になる確率報酬政策状態 で行動 をとる確率→ MDP13年5月3日金曜日
  30. 30. 強化学習の目的将来得られる報酬の総和が最大になるように政策を学習する(発散しないように)割引率 を定義し,これを乗じた報酬を将来に渡り加えた総和を収益とし,この期待値を最大化する!E" 1Xt=0tR(st, at, st+1)#, 8s0 2 S, 8a0 2 A目的関数下記の目的関数を最大にする政策関数 を求める⇡at ⇠ ⇡(at|st)st+1 ⇠ PT (st+1|st, at)st 2 S, at 2 A2 (0, 1]制約条件A : ありうるすべての行動集合S : ありうるすべての状態集合13年5月3日金曜日
  31. 31. 強化学習の目的E" 1Xt=0tR(st, at, st+1)#, 8s0 2 S, 8a0 2 A目的関数⇡⇤(a|s) ⌘ arg max⇡E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#を最大にする政策関数が最適政策関数つまり…どうやって求めるか?13年5月3日金曜日
  32. 32. 強化学習の目的E" 1Xt=0tR(st, at, st+1)#, 8s0 2 S, 8a0 2 A目的関数⇡⇤(a|s) ⌘ arg max⇡E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#を最大にする政策関数が最適政策関数つまり…どうやって求めるか?Q(s, a) とおく13年5月3日金曜日
  33. 33. 強化学習の目的E" 1Xt=0tR(st, at, st+1)#, 8s0 2 S, 8a0 2 A目的関数⇡⇤(a|s) ⌘ arg max⇡E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#を最大にする政策関数が最適政策関数つまり…どうやって求めるか?Q(s, a) とおくQ(s, a) = E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#行動価値関数13年5月3日金曜日
  34. 34. 行動価値関数⇡(a0|s0)PT (s0, a0, s1)s0 s1状態 で行動 をとる確率s0 a0状態 で行動 をとったとき状態 に遷移する確率s0 a0s1R(s0, a0, s1)報酬発生この連鎖で得られる報酬の合計値=収益収益の期待値が行動価値13年5月3日金曜日
  35. 35. 行動価値関数Q(s, a) = E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#行動価値関数⇡(a0|s0)PT (s0, a0, s1)s0 s1状態 で行動 をとる確率s0 a0状態 で行動 をとったとき状態 に遷移する確率s0 a0s1R(s0, a0, s1)報酬発生この連鎖で得られる報酬の合計値=収益収益の期待値が行動価値13年5月3日金曜日
  36. 36. 行動価値関数と政策関数⇡⇤(a|s) ⌘ arg max⇡Q⇤(s, a)行動価値関数を最大にするような政策を知りたい強化学習の目的1. 政策関数を適当に初期化(一様分布など)2. 現在の政策に従って行動を起こし,報酬を観察3. 現れた状態行動対   の価値を推定4. 推定した   を使って政策を改善5. 1.に戻る(s, a)Q(s, a)これを繰り返すことにより最適政策を近似する13年5月3日金曜日
  37. 37. 行動価値関数と政策関数⇡⇤(a|s) ⌘ arg max⇡Q⇤(s, a)行動価値関数を最大にするような政策を知りたい強化学習の目的1. 政策関数を適当に初期化(一様分布など)2. 現在の政策に従って行動を起こし,報酬を観察3. 現れた状態行動対   の価値を推定4. 推定した   を使って政策を改善5. 1.に戻る(s, a)Q(s, a)これを繰り返すことにより最適政策を近似する疑問 3.の「状態行動対   の価値を推定」ってどうやる?(s, a)4.の「推定した   を使って政策を改善」ってどうやる?Q(s, a)13年5月3日金曜日
  38. 38. 状態行動対の価値Q(s, a) = E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#例えば,状態 (s0, a0)の価値が知りたい13年5月3日金曜日
  39. 39. 状態行動対の価値Q(s, a) = E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#例えば,状態 (s0, a0)の価値が知りたい13年5月3日金曜日
  40. 40. 状態行動対の価値Q(s, a) = E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#例えば,状態 (s0, a0)の価値が知りたい13年5月3日金曜日
  41. 41. 状態行動対の価値Q(s, a) = E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#例えば,状態 (s0, a0)の価値が知りたい色々なパスがあるが,それらを全て考慮して得られる報酬の期待値を計算する必要がある13年5月3日金曜日
  42. 42. 状態行動対の価値a1s3a4s5報酬の期待値(収益)は左のようなパスを通った場合,⇡(a0|s0)P(s0, a0, s1)R(s0, a0, s1)+ ⇡(a1|s1)P(s1, a1, s3)R(s1, a1, s3)+ 2⇡(a4|s3)P(s3, a4, s5)R(s3, a4, s5)Q⇡(s, a) = E" 1Xt=0tR(st, at, st+1)|s0 = s, a0 = a#これを    以降の全ての場合における状態→行動選択確率(政策)と状態行動対→次状態への遷移確率についての期待値を計算すると    がわかるs0 ! a0Q⇡(s0, a0)さらにそれを全ての   について計算する必要がある(s, a)13年5月3日金曜日
  43. 43. 大変すぎる13年5月3日金曜日
  44. 44. 大変すぎる動的計画法などで実際に計算することも可能だが,状態数が増えたりするとほぼ計算不可能になる13年5月3日金曜日
  45. 45. 行動価値関数の近似計算モンテカルロ法有限な時間ステップTで終了する状態行動対の遷移データ(エピソードデータ)を使って,行動価値関数を近似する他にも,TD法(Temporal Difference Method),SARSA法,TD(λ)法,Q学習など様々な方法が存在する→ 今回は実装が容易そうなモンテカルロ法について説明します13年5月3日金曜日
  46. 46. モンテカルロ法こういうパスを ることも こういうパスを ることもいろいろな場合がある13年5月3日金曜日
  47. 47. モンテカルロ法では,とある状態行動対   の真価はどうやって知るか?Q⇡(s2, a2)例えば,    が知りたいまず,最大ステップ数Tを決める(s2, a2)   が現れた時点から,Tまでに観測された報酬から収益を計算する色々なパスについてこれをやる観測された収益の平均値を   の価値とする(s2, a2)1.2.3.4.13年5月3日金曜日
  48. 48. モンテカルロ法では,とある状態行動対   の真価はどうやって知るか?Q⇡(s2, a2)例えば,    が知りたいまず,最大ステップ数Tを決める(s2, a2)   が現れた時点から,Tまでに観測された報酬から収益を計算する色々なパスについてこれをやる観測された収益の平均値を   の価値とする(s2, a2)1.2.3.4.あらかじめ決めた数のパスを生成しておき,上記の手順を踏めば,それらのパス中に現れた状態行動対については,行動価値が推定できる13年5月3日金曜日
  49. 49. 政策改善行動価値関数が推定できたら,それをもとに政策(どういった状態のときにどの行動を選ぶ確率が高いか,という値)を改善するε-greedy法a⇤= arg maxaQ⇡(s, a)⇡0(a|s) =(1 ✏ + ✏|A| ifa = a⇤✏|A| otherwise行動価値が最も高い行動を選ぶ確率を1-εにしたあと,全ての選択肢にεを行動数で割った値を割り振る13年5月3日金曜日
  50. 50. 学習の流れ⇡⇤(a|s) ⌘ arg max⇡Q⇤(s, a)行動価値関数を最大にするような政策を知りたい強化学習の目的1. 政策関数を適当に初期化(一様分布など)2. 現在の政策に従って行動を起こし,報酬を観察3. 現れた状態行動対   の価値を推定4. 推定した   を使って政策を改善5. 1.に戻る(s, a)Q(s, a)これを繰り返すことにより最適政策を近似する疑問 3.の「状態行動対   の価値を推定」ってどうやる?(s, a)4.の「推定した   を使って政策を改善」ってどうやる?Q(s, a)13年5月3日金曜日
  51. 51. 三目並べのコンピュータプレーヤを作ってみた13年5月3日金曜日
  52. 52. 準備0 1 23 4 56 7 8• 9マスある• それぞれに ○ , , 空 の3状態• 盤面ごとに状態番号をふると,3^9状態13年5月3日金曜日
  53. 53. 準備0 1 23 4 56 7 8• 9マスある• それぞれに ○ , , 空 の3状態• 盤面ごとに状態番号をふると,3^9状態_人人人人_> 多い < ̄Y^Y^Y ̄13年5月3日金曜日
  54. 54. 準備0 1 23 4 56 7 8• 9マスある• それぞれに ○ , , 空 の3状態• 盤面ごとに状態番号をふると,3^9状態_人人人人_> 多い < ̄Y^Y^Y ̄0 1 23 4 56 7 8左のように,45度回転の組み合わせで同じ状態に持っていけるものはひとつの状態として扱う13年5月3日金曜日
  55. 55. 状態の圧縮o xx oo一つの状態を9ケタの3進数で表現する0 ... 空1 ... o2 ... x左の盤面は 120021100ある状態が入力されてきたら,回転変換を施したものも含めた8状態の3進数表現を計算する8種類の3進数を10進数に変換する8種類の10進数の値のうち一番小さいものを状態番号とする1.2.3.13年5月3日金曜日
  56. 56. 状態の圧縮13年5月3日金曜日
  57. 57. 事前に仮想試合をして行動価値を学習する仮想プレイヤー・基本的にランダムに手を打つ・ただし,自分がリーチのときは勝つ手を選ぶ• 仮想プレイヤーとたくさん戦って価値関数を事前に計算する• 最大5手で終わる(最大ステップ数T=5の)ゲームを1000回x30セットやる• 勝ったら報酬+10,負けたら報酬-10,引き分けなら報酬0学習13年5月3日金曜日
  58. 58. 勝率の変化勝率セット13年5月3日金曜日
  59. 59. 実装で使ったもの• Ruby 1.9.3-p392• Ruby/SDL(可視化)• NArray(行列の扱い)*Githubにソースコードをアップ しましたhttps://github.com/mitmul/TicTacToe13年5月3日金曜日
  60. 60. 勝負を挑む13年5月3日金曜日
  61. 61. 強くなりすぎた13年5月3日金曜日
  62. 62. おしまい13年5月3日金曜日

×