強化学習入門

62
強化学習入門 理工学研究科 D2 齋藤 俊太 1353日金曜日

Upload: shunta-saito

Post on 27-May-2015

9.779 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 強化学習入門

強化学習入門理工学研究科 D2 齋藤 俊太

13年5月3日金曜日

Page 2: 強化学習入門

学習?

動物心理学

観察

行動主義学習によって行動が変化→ 行動を見れば学習し  たかどうか分かる

認知主義学習によって内面的な認知が変化→ 行動に出る前に内的表象が変化  している=これも学習

13年5月3日金曜日

Page 3: 強化学習入門

行動主義心理学的な実験

13年5月3日金曜日

Page 4: 強化学習入門

パブロフの犬(古典的条件付け)

犬に餌を与える前に「ベルを鳴らす」

何度か繰り返す

「ベルが鳴る」という刺激に対して唾液を分泌するようになる

「刺激」と「反応」の連合を強める=連合学習

食べる時に「唾液を分泌する」という犬が生まれつき持つ無条件反応が,学習の過程を経て「ベルが鳴る」という刺激に対して反応するように変化したことを意味する

13年5月3日金曜日

Page 5: 強化学習入門

猫の問題箱(試行錯誤学習)

何度か繰り返すと,やがて同じ行動が出現する頻度が高くなる

外に出ようとして猫がいろいろな行動をとる

偶然に外に出られた

また箱にいれる

パブロフの犬の場合と違い刺激は存在しないが,行動後の「満足」または「不快」の度合いに応じて,行動の出現頻度が学習の過程を経て変化する →効果の法則

13年5月3日金曜日

Page 6: 強化学習入門

スキナーの箱(報酬学習)

餌が出る

たまたまラットがレバーを押す

ラットはレバー付近にいることが多くなる

レバーを押す頻度が高くなる

状況と行動の結合を強めるような報酬を「正の強化子」,弱めるような報酬を「負の強化子」という.

満足/不快を「餌」=「報酬」という形で明確に与えた「試行錯誤学習」.報酬に応じて行動の自発頻度が変化していく.このような学習をオペランド条件付け(or 報酬学習)という.

13年5月3日金曜日

Page 7: 強化学習入門

認知心理学的な実験

13年5月3日金曜日

Page 8: 強化学習入門

認知心理学的な実験内的な変化は行動だけからは観察が難しい

脳科学

脳におけるシナプスの可塑性 → シナプス同士は結合を生成/消滅/増強/抑制する

学習の動機付けはドーパミンにより行われる

ドーパミンの分泌量や電気生理学的な脳に対する観察から学習の過程を理解しようとする

13年5月3日金曜日

Page 9: 強化学習入門

で、どうやってコンピュータは学習を行えばいいのか?

13年5月3日金曜日

Page 10: 強化学習入門

教師あり学習

「答え」「問題」

この矢印が欲しい

「問題」と「答え」を事前にたくさん用意しておいて,間をつなぐ「写像」を近似する

できるだけ未知の「問題」に対しても正しい「答え」が予測できるようにしたい

→ どうやって汎化能力を獲得するかが重要

13年5月3日金曜日

Page 11: 強化学習入門

教師なし学習

観察者「問題」

この矢印が欲しいこういう問題だな

観察

・特性を理解する・要約する(次元削減)・グループ化する(クラスタリング)

13年5月3日金曜日

Page 12: 強化学習入門

学習?

動物心理学

観察

行動主義学習によって行動が変化→ 行動を見れば学習し  たかどうか分かる

認知主義学習によって内面的な認知が変化→ 行動に出る前に内的表象が変化  している=これも学習

13年5月3日金曜日

Page 13: 強化学習入門

強化学習問題

「問題」

13年5月3日金曜日

Page 14: 強化学習入門

強化学習問題

「問題」

チャレンジする

行動

13年5月3日金曜日

Page 15: 強化学習入門

強化学習問題

「問題」

チャレンジする

行動

よい行動

よくない行動

「評価」報酬が与えられる(罰則)

13年5月3日金曜日

Page 16: 強化学習入門

強化学習問題

「問題」

チャレンジする

行動どう行動すべきか

よい行動

よくない行動

「評価」報酬が与えられる(罰則)

13年5月3日金曜日

Page 17: 強化学習入門

強化学習問題

「問題」

チャレンジする

行動どう行動すべきか

この矢印が欲しいよい行動

よくない行動

「評価」報酬が与えられる(罰則)

13年5月3日金曜日

Page 18: 強化学習入門

強化学習問題

「問題」

チャレンジする

行動どう行動すべきか

この矢印が欲しいよい行動

よくない行動

「評価」報酬が与えられる(罰則)

答えではなく評価

13年5月3日金曜日

Page 19: 強化学習入門

手法の選び方例:アンケートの回答を分析する

「年齢」と「収入」の関係を知りたい年齢を入力,収入を出力とする教師あり学習

「年齢と収入」から似ている回答者をグループ化したい年齢,収入を入力とする教師なし学習

「年齢と収入」に基づき回答者に広告を送りたい

年齢,収入を入力とし,売上を報酬とした強化学習

13年5月3日金曜日

Page 20: 強化学習入門

強化学習の背景

心理学「試行錯誤学習」「報酬学習」

最適制御理論

制御対象の挙動の良し悪しを表す目的関数を最大化または最小化するように制御則を求める設計手法

→ e.g. 電気代を抑えて目的を達成するには…

13年5月3日金曜日

Page 21: 強化学習入門

強化学習の構成<人の場合>

13年5月3日金曜日

Page 22: 強化学習入門

強化学習の構成<コンピュータの場合>

即時報酬を最大にする行動ではなく,報酬の積み重ねとして将来にわたって得られる合計報酬=収益を最大にするように行動を最適化していく

13年5月3日金曜日

Page 23: 強化学習入門

問題設定

エージェント

状態

→ MDP

13年5月3日金曜日

Page 24: 強化学習入門

問題設定

エージェント

状態

行動右に行く左に行く

→ MDP

13年5月3日金曜日

Page 25: 強化学習入門

問題設定

エージェント

状態

行動右に行く左に行く

政策

状態 で行動 をとる確率

→ MDP

13年5月3日金曜日

Page 26: 強化学習入門

問題設定

エージェント

状態

行動右に行く左に行く 環境

政策

状態 で行動 をとる確率

→ MDP

13年5月3日金曜日

Page 27: 強化学習入門

問題設定

エージェント

状態

行動右に行く左に行く 環境

遷移確率状態 で行動 をとったとき状態が  になる確率

政策

状態 で行動 をとる確率

→ MDP

13年5月3日金曜日

Page 28: 強化学習入門

問題設定

エージェント

状態

行動右に行く左に行く 環境 次の状態

遷移確率状態 で行動 をとったとき状態が  になる確率

政策

状態 で行動 をとる確率

→ MDP

13年5月3日金曜日

Page 29: 強化学習入門

問題設定

エージェント

状態

行動右に行く左に行く 環境 次の状態

遷移確率状態 で行動 をとったとき状態が  になる確率

報酬

政策

状態 で行動 をとる確率

→ MDP

13年5月3日金曜日

Page 30: 強化学習入門

強化学習の目的将来得られる報酬の総和が最大になるように政策を学習する

(発散しないように)割引率 を定義し,これを乗じた報酬を将来に渡り加えた総和を収益とし,この期待値を最大化する!

E" 1X

t=0

�tR(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 A� 2 (0, 1]

制約条件 A : ありうるすべての行動集合S : ありうるすべての状態集合

13年5月3日金曜日

Page 31: 強化学習入門

強化学習の目的

E" 1X

t=0

�tR(st, at, st+1)

#, 8s0 2 S, 8a0 2 A目的関数

⇡⇤(a|s) ⌘ arg max

⇡E" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

を最大にする政策関数が最適政策関数つまり…

どうやって求めるか?

13年5月3日金曜日

Page 32: 強化学習入門

強化学習の目的

E" 1X

t=0

�tR(st, at, st+1)

#, 8s0 2 S, 8a0 2 A目的関数

⇡⇤(a|s) ⌘ arg max

⇡E" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

を最大にする政策関数が最適政策関数つまり…

どうやって求めるか?Q(s, a) とおく

13年5月3日金曜日

Page 33: 強化学習入門

強化学習の目的

E" 1X

t=0

�tR(st, at, st+1)

#, 8s0 2 S, 8a0 2 A目的関数

⇡⇤(a|s) ⌘ arg max

⇡E" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

を最大にする政策関数が最適政策関数つまり…

どうやって求めるか?Q(s, a) とおく

Q(s, a) = E" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

行動価値関数

13年5月3日金曜日

Page 34: 強化学習入門

行動価値関数

⇡(a0|s0)PT (s0, a0, s1)s0 s1

状態 で行動 をとる確率s0 a0

状態 で行動 をとったとき状態 に遷移する確率

s0 a0

s1

R(s0, a0, s1)

報酬発生

この連鎖で得られる報酬の合計値=収益収益の期待値が行動価値

13年5月3日金曜日

Page 35: 強化学習入門

行動価値関数

Q(s, a) = E" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

行動価値関数

⇡(a0|s0)PT (s0, a0, s1)s0 s1

状態 で行動 をとる確率s0 a0

状態 で行動 をとったとき状態 に遷移する確率

s0 a0

s1

R(s0, a0, s1)

報酬発生

この連鎖で得られる報酬の合計値=収益収益の期待値が行動価値

13年5月3日金曜日

Page 36: 強化学習入門

行動価値関数と政策関数

⇡⇤(a|s) ⌘ arg max

⇡Q⇤

(s, a)

行動価値関数を最大にするような政策を知りたい強化学習の目的

1. 政策関数を適当に初期化(一様分布など)2. 現在の政策に従って行動を起こし,報酬を観察3. 現れた状態行動対   の価値を推定4. 推定した   を使って政策を改善5. 1.に戻る

(s, a)

Q(s, a)

これを繰り返すことにより最適政策を近似する

13年5月3日金曜日

Page 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日金曜日

Page 38: 強化学習入門

状態行動対の価値Q(s, a) = E

" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

例えば,状態 (s0, a0)

の価値が知りたい

13年5月3日金曜日

Page 39: 強化学習入門

状態行動対の価値Q(s, a) = E

" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

例えば,状態 (s0, a0)

の価値が知りたい

13年5月3日金曜日

Page 40: 強化学習入門

状態行動対の価値Q(s, a) = E

" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

例えば,状態 (s0, a0)

の価値が知りたい

13年5月3日金曜日

Page 41: 強化学習入門

状態行動対の価値Q(s, a) = E

" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

例えば,状態 (s0, a0)

の価値が知りたい 色々なパスがあるが,それらを全て考慮して得られる報酬の期待値を計算する必要がある

13年5月3日金曜日

Page 42: 強化学習入門

状態行動対の価値

a1

s3

a4

s5

報酬の期待値(収益)は左のようなパスを通った場合,

⇡(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" 1X

t=0

�tR(st, at, st+1)|s0 = s, a0 = a

#

これを    以降の全ての場合における状態→行動選択確率(政策)と状態行動対→次状態への遷移確率についての期待値を計算すると    がわかる

s0 ! a0

Q⇡(s0, a0)

さらにそれを全ての   について計算する必要がある

(s, a)

13年5月3日金曜日

Page 43: 強化学習入門

大変すぎる

13年5月3日金曜日

Page 44: 強化学習入門

大変すぎる動的計画法などで実際に計算することも可能だが,状態数が増えたりするとほぼ計算不可能になる

13年5月3日金曜日

Page 45: 強化学習入門

行動価値関数の近似計算

モンテカルロ法有限な時間ステップTで終了する状態行動対の遷移データ(エピソードデータ)を使って,行動価値関数を近似する

他にも,TD法(Temporal Difference Method),SARSA法,TD(λ)法,Q学習など様々な方法が存在する

→ 今回は実装が容易そうなモンテカルロ法について説明します

13年5月3日金曜日

Page 46: 強化学習入門

モンテカルロ法

こういうパスを辿ることも こういうパスを辿ることも

いろいろな場合がある

13年5月3日金曜日

Page 47: 強化学習入門

モンテカルロ法では,とある状態行動対   の真価はどうやって知るか?

Q⇡(s2, a2)例えば,    が知りたい

まず,最大ステップ数Tを決める

(s2, a2)   が現れた時点から,Tまでに観測された報酬から収益を計算する

色々なパスについてこれをやる

観測された収益の平均値を   の価値とする

(s2, a2)

1.

2.

3.

4.

13年5月3日金曜日

Page 48: 強化学習入門

モンテカルロ法では,とある状態行動対   の真価はどうやって知るか?

Q⇡(s2, a2)例えば,    が知りたい

まず,最大ステップ数Tを決める

(s2, a2)   が現れた時点から,Tまでに観測された報酬から収益を計算する

色々なパスについてこれをやる

観測された収益の平均値を   の価値とする

(s2, a2)

1.

2.

3.

4.

あらかじめ決めた数のパスを生成しておき,上記の手順を踏めば,それらのパス中に現れた状態行動対については,行動価値が推定できる

13年5月3日金曜日

Page 49: 強化学習入門

政策改善行動価値関数が推定できたら,それをもとに政策(どういった状態のときにどの行動を選ぶ確率が高いか,という値)を改善する

ε-greedy法

a⇤ = arg max

aQ⇡

(s, a)

⇡0(a|s) =

(1� ✏+ ✏

|A| ifa = a⇤

✏|A| otherwise

行動価値が最も高い行動を選ぶ確率を1-εにしたあと,全ての選択肢にεを行動数で割った値を割り振る

13年5月3日金曜日

Page 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日金曜日

Page 51: 強化学習入門

三目並べのコンピュータプレーヤを作ってみた

13年5月3日金曜日

Page 52: 強化学習入門

準備

0 1 2

3 4 5

6 7 8

• 9マスある• それぞれに”○”,”×”,”空”の3状態• 盤面ごとに状態番号をふると,3^9状態

13年5月3日金曜日

Page 53: 強化学習入門

準備

0 1 2

3 4 5

6 7 8

• 9マスある• それぞれに”○”,”×”,”空”の3状態• 盤面ごとに状態番号をふると,3^9状態

_人人人人_> 多い <‾Y^Y^Y‾

13年5月3日金曜日

Page 54: 強化学習入門

準備

0 1 2

3 4 5

6 7 8

• 9マスある• それぞれに”○”,”×”,”空”の3状態• 盤面ごとに状態番号をふると,3^9状態

_人人人人_> 多い <‾Y^Y^Y‾

0 1 2

3 4 5

6 7 8

左のように,45度回転の組み合わせで同じ状態に持っていけるものはひとつの状態として扱う

13年5月3日金曜日

Page 55: 強化学習入門

状態の圧縮

o x

x o

o

一つの状態を9ケタの3進数で表現する

0 ... 空1 ... o2 ... x

左の盤面は 120021100

ある状態が入力されてきたら,回転変換を施したものも含めた8状態の3進数表現を計算する

8種類の3進数を10進数に変換する

8種類の10進数の値のうち一番小さいものを状態番号とする

1.

2.

3.

13年5月3日金曜日

Page 56: 強化学習入門

状態の圧縮

13年5月3日金曜日

Page 57: 強化学習入門

事前に仮想試合をして行動価値を学習する

仮想プレイヤー

・基本的にランダムに手を打つ・ただし,自分がリーチのときは勝つ手を選ぶ

• 仮想プレイヤーとたくさん戦って価値関数を事前に計算する• 最大5手で終わる(最大ステップ数T=5の)ゲームを1000回x30セットやる• 勝ったら報酬+10,負けたら報酬-10,引き分けなら報酬0

学習

13年5月3日金曜日

Page 58: 強化学習入門

勝率の変化勝率

セット

13年5月3日金曜日

Page 59: 強化学習入門

実装で使ったもの

• Ruby 1.9.3-p392• Ruby/SDL(可視化)• NArray(行列の扱い)

*Githubにソースコードをアップ しましたhttps://github.com/mitmul/TicTacToe

13年5月3日金曜日

Page 60: 強化学習入門

勝負を挑む

13年5月3日金曜日

Page 61: 強化学習入門

強くなりすぎた

13年5月3日金曜日

Page 62: 強化学習入門

おしまい

13年5月3日金曜日