深層強化学習 pydata.okinawa meetup #22

32
深層 強化学習 Naoto Yoshida / GROOVE X 2017-Feb-25

Upload: naoto-yoshida

Post on 21-Mar-2017

388 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: 深層強化学習 Pydata.Okinawa Meetup #22

深層強化学習

Naoto Yoshida / GROOVE X2017-Feb-25

Page 2: 深層強化学習 Pydata.Okinawa Meetup #22

自己紹介・会社紹介

Page 3: 深層強化学習 Pydata.Okinawa Meetup #22

自己紹介

名前: 吉田 尚人

Twitter : Ugo-Nama @movingsloth

所属:GROOVE X 株式会社

夢:動物ロボットをつくりあげること

※ 一時期,OISTにいました (^o^)

Page 4: 深層強化学習 Pydata.Okinawa Meetup #22

創業2年目のロボット・スタートアップ@人形町 ロボット作ってます!

企業名

設立年月

GROOVE X株式会社

2015年11月

従業員数24名、うちエンジニア16名

(2017年1月現在)

事業内容 新世代の家庭用ロボット開発事業

会社概要

http://www.groove-x.com/

GROOVE Xについて

→ 今後2年でメンバー数3倍になる予定

Page 5: 深層強化学習 Pydata.Okinawa Meetup #22

STRICTLY CONFIDENTIAL  |

GROOVE Xのロボットとチーム

“かわいさ”に重点をおいたロボットを自社開発中!

    GROOVE Xのロボット GROOVE Xのチーム

会話

完璧なタスク遂行

かわいいは正義まだまだ募集中!!

http://www.groove-x.com/

ソフトウェア・エレキ・メカ・デザイン

Page 6: 深層強化学習 Pydata.Okinawa Meetup #22

本題の前に:強化学習

Page 7: 深層強化学習 Pydata.Okinawa Meetup #22

強化学習とは何か

エージェントが未知の環境において自律的に行動を決定し,

かつ行動決定規則を学習することで将来に渡る累積報酬を最大化

することをめざす技術

@ ICRA2015, Google Deepmind

エージェント

環境

報酬: r

?

Page 8: 深層強化学習 Pydata.Okinawa Meetup #22

お腹をすかせたハト

エージェント:ハト

Page 9: 深層強化学習 Pydata.Okinawa Meetup #22

時刻

?

報酬: r

方策(行動決定規則)のパラメータに依存して,取りうる軌道が異なる

やりたいこと

行動

結果

Page 10: 深層強化学習 Pydata.Okinawa Meetup #22

時刻

最大化方策(行動決定規則)の改善

やりたいこと

報酬: r

?

行動

結果

パラメータ

Page 11: 深層強化学習 Pydata.Okinawa Meetup #22

強化学習の枠組み● 環境とエージェントの相互作用を考える

● エージェントが環境から受け取るもの○ 観測:センサの値・入力

○ 報酬:直近の行動に対する評価

● エージェントが出力するもの○ 行動:モータ出力 etc. (連続値/離散値)

● 目標:累積報酬を最大化行動: a 観測: o

報酬: r

環境

エージェント行動決定規則

状態: s,状態遷移ルール : P(s’|s, a)観測モデル: P(o|s)

0 ≦ γ < 1

方策

Page 12: 深層強化学習 Pydata.Okinawa Meetup #22

強化学習の枠組み

Black Box● 環境とエージェントの相互作用を考える

● エージェントが環境から受け取るもの○ 観測:センサの値・入力

○ 報酬:直近の行動に対する評価

● エージェントが出力するもの○ 行動:モータ出力 etc. (連続値/離散値)

● 目標:累積報酬を最大化

● エージェントは環境に対する事前知識を全く

持たない状態でスタートする エージェント行動決定規則

0 ≦ γ < 1

※報酬の関数は既知とすることもある

方策

行動: a 観測: o報酬: r

Page 13: 深層強化学習 Pydata.Okinawa Meetup #22

強化学習がめざすこと

● できるだけ大きな期待報酬和を取るような行動決定規則を見つけること○ 性能が良い規則を見つける

● できるだけ速く,そのような行動決定規則をみつけること○ 環境を効率よく探索する

○ 現実的な時間で学習

● 安定的に,行動決定規則がみつかること○ 変な行動規則にハマってしまわないようにする

時刻

最大化

方策(行動決定規則)の改善

Page 14: 深層強化学習 Pydata.Okinawa Meetup #22

強化学習の使いドコロ

● 入力と出力があって,その評価方法もわかるが,教師データがない○ だから,人間を超えられる

● エージェントは何度も行動を試すことができる○ ロボットシミュレータ,実ロボット,ゲーム, web広告 など

○ 足りないデータを補充することができる

● ざっくりと最初の行動決定方針は立てられるが,

どうチューニングすればよいかわからない○ ロボットの例

Page 15: 深層強化学習 Pydata.Okinawa Meetup #22

パラメータ

行動

観測報酬

(状態,状態遷移ルール)

Black Box

行動

観測報酬

(状態,状態遷移ルール)

Black Box

?

?

シミュレータ:パラメータ

行動決定器(方策)

熟考型

直感型

行動決定器MCTSなど

モデルベース

学習:速不確定度:明示的可視化:◯デバッグ:◯事前知識:◯転移学習:◯※↑ シミュレータに依存

行動決定に時間がかかる

モデルフリー

学習:遅不確定度:非明示的可視化:✕デバッグ:✕事前知識:✕転移学習:△

行動決定は高速

シミュレーション

Page 16: 深層強化学習 Pydata.Okinawa Meetup #22

モデルベース・モデルフリー強化学習の例

モデルベース

● テーブル関数系(MDP)

○ R-max, Dyna● カーネル系(MDP)

○ PILCO(Gaussian Process)

● 深層学習系

○ Embed to Control○ 深層PILCO

● 最適強化学習

○ AIXI (理論的存在, Bayesian RL)

● 特殊な例:○ Alpha Go (モデルが既知)

モデルフリー

● Markov 決定過程(MDP)を仮定

○ Q学習,遅延Q学習,SARSA○ 初期の Actor-Critic

● 深層Q学習:Q学習 + DNN○ DQN, double DQN, etc.

● 方策勾配法(Policy Gradient)○ MDPを超えて強化学習を扱える

● その他

○ TRPO● A3C:Actor-Critic + DNN + α

○ PGを大規模化し,発展させたもの

○ Asynchronous Advantage Actor Critic

モデルベース強化学習は現状,小規模な問題に適用される例が多い

深層学習の登場によって,テレビゲームや自動操縦のような複雑なタスクも適用可能になってきた

Page 17: 深層強化学習 Pydata.Okinawa Meetup #22

使う時に注意すべきパラメータ● 強化学習アルゴリズムにだいたいある重要なパラメータ

○ 減衰率パラメータ: γ■ エージェントの最終的な頭の良さを決める.大きいと学習は遅い

○ 学習率パラメータ: α■ 学習のはやさを決める.十分小さい必要がある

○ 探索パラメータ/方法

■ エージェントがどれだけ積極的に冒険するかを決める

■ アルゴリズムによって性質が大きく異なる

● その他,深層強化学習をする時は深層学習のパラメータ設定が必要○ モデルの大きさ

○ 特徴量抽出

○ 事前処理

○ etc. etc.

Page 18: 深層強化学習 Pydata.Okinawa Meetup #22

アルゴリズムを選ぶ時に注意すること

● そもそも,強化学習で解く必要がある問題か?

● 環境からの入力はどのようなものか?○ 離散値 → テーブル関数,総状態数が大きいようだったら近似アルゴリズム

○ 連続値 → ニューラルネットワーク,カーネル法などの近似アルゴリズムが必要

● 環境のシミュレータは利用できるか?

● 環境はマルコフ決定過程(MDP)と言えそうか?○ 言えなくても性能は向上できる可能性があるが,保証はできない

● 行動はどのように表現するか?○ 行動の”種”のようなものは利用できるか?

■ 教師あり学習で初期化

■ Dynamic Movement Primitives

Page 19: 深層強化学習 Pydata.Okinawa Meetup #22

強化学習エンジニア???● 強化学習エンジニアと言える基準は何かと聞かれて回答が難しかった

● 所謂データサイエンティストが新しいアルゴリズムを書くことは殆ど無い○ scikit-learn, pandas 等のパッケージに放り込む,特徴量を選択する

○ つまり,入力データの作成と結果の評価,アルゴリズムの選択が主にやること

○ (たぶん,このプロセスは自動化できる)

○ そういう意味でいうと, 深層学習はかなり特殊

● ↑の観点からいえば,強化学習”エンジニア”とは○ 1) 強化学習のpackageを知っている

○ 2) 強化学習アルゴリズムに食わせる ”環境(報酬・行動・入力) ”を構築できる

○ 3) 強化学習アルゴリズムの特徴を知っていて,選択できる

■ 連続行動,離散行動,画像入力 ...

Page 20: 深層強化学習 Pydata.Okinawa Meetup #22

最近のトレンド● ソフトウェアフレームワーク が公開されはじめた

(Open-AI Gym etc.): モダンなものは Python のみ

● 共通のインターフェース で多様な問題を扱う

○ インターフェースを合わせることで,新たな問題が扱える https://github.com/wbap/lis

https://universe.openai.com

https://deepmind.com/documents/29/DeepMindLab.pdf https://github.com/erlerobot/gym-gazebo

https://github.com/ugo-nama-kun/gym_torcs

Page 21: 深層強化学習 Pydata.Okinawa Meetup #22

深層強化学習入門

Page 22: 深層強化学習 Pydata.Okinawa Meetup #22

ちょっと悩ましい・・・という前置き

● 他の深層学習とくらべて,まだ実験段階な要素が多い○ 報酬の設定

○ スタンダードな解決方法 ?

● 最近は挑戦的なタスク設定ができて派手だが,

どれくらい攻められるかは未知数○ ハトはすごい

● ロボットの強化学習は,かなり状況が揃ってないと高度なことは難しい○ シミュレータ,大量生産 or あまりパッとしないタスク

Page 23: 深層強化学習 Pydata.Okinawa Meetup #22

深層強化学習

= 深層学習 + 強化学習 + α● 深層学習(学習の方法)

○ Adam, RMSProp, 畳み込みニューラルネットワーク , RNN, Boltzmann machine など

● 強化学習(学習の枠組み)○ Q学習,方策勾配法, Actor-Critic など

● α(深層学習を使って強化学習をするための諸々のテクニック)

○ Async method, Experience replay など

Page 24: 深層強化学習 Pydata.Okinawa Meetup #22

深層強化学習の適用例

Mirowski, Piotr, et al. "Learning to navigate in complex environments." arXiv preprint arXiv:1611.03673 (2016).

画像入力でマリオ操作

https://www.youtube.com/watch?v=L4KBBAwF_bE

https://www.youtube.com/watch?v=JL8F82qUG-Q

Page 25: 深層強化学習 Pydata.Okinawa Meetup #22

深層強化学習では2つのネットワークを並列に更新していく

● 方策を表現するネットワーク

○ Policy Network

● 方策の性能を評価するネットワーク

○ Value Network

● 性能を評価して,その評価を元に方策の

改善を高速化

○ Value Network の更新速度

<< 方策の更新速度

○ A3C の更新など

● Q学習は非常に特殊な例

○ Policy Network と Value Networkが同一

○ 詳しくは:■ http://qiita.com/Ugo-Nama/items/08c6a5f6a571335972d5

One-Hot[1, 0]

連続値ベクトル[-0.23, 0.88]

Page 26: 深層強化学習 Pydata.Okinawa Meetup #22

● 最も大きな違い:行動が連続ベクトル or 離散

○ 使えるアルゴリズムが変わってくる

■ Q学習は離散行動

○ 深層学習では,離散出力のほうが

学習しやすい傾向

(モデルフリー)深層強化学習の種類直感型

パラメータ

One-Hot[1, 0]

連続値ベクトル[-0.23, 0.88]

Page 27: 深層強化学習 Pydata.Okinawa Meetup #22

“Vanilla” Policy Gradient

期待値の形に直す

軌道の確率を展開

微分すると,方策に関する項だけ残る

学習は遅い.これに色々理論的な工夫をして高速化

Page 28: 深層強化学習 Pydata.Okinawa Meetup #22

深層強化学習 package

https://github.com/osh/kerlym

https://github.com/matthiasplappert/keras-rl

最近は色々と出てきた- Keras:

- 連続行動: rllab- 離散行動: keras-rl, kerlym

- Chainer: ChainerRL- いろいろ

- scikit-learnほどドキュメント化はされていない- ハンズオンで実感しよう!

https://github.com/openai/rllab

Page 29: 深層強化学習 Pydata.Okinawa Meetup #22

文献情報

● Reinforcement Learning State-of-the-Art○ Wiering, Marco, van Otterlo, Martijn (Eds.), 2012

● Sutton & Barto 本 2.0○ 近日発売予定?

○ https://webdocs.cs.ualberta.ca/~sutton/book/bookdraft2016sep.pdf

● これからの強化学習○ 牧野 貴樹, 澁谷 長史, 白川 真一 (著, 編集), 2016

● 強くなるロボティック・ゲームプレイヤーの作り方○ 八谷 大岳, 杉山 将 (著), 2008 ← 再版された!

Page 30: 深層強化学習 Pydata.Okinawa Meetup #22

Take Home Message● 強化学習の使いドコロ

○ 教師データがない場合にも使える

○ シミュレータのある無しが重要

● 深層強化学習はおもしろい○ その分色々と闇技術

● 近年のモデルベース強化学習をより詳しく知りたい方は○ 「Model-based 強化学習とその周辺」

■ https://drive.google.com/drive/folders/0BzMTR9k7rE1_d2p0TG15Q0tvZzQ

Page 31: 深層強化学習 Pydata.Okinawa Meetup #22
Page 32: 深層強化学習 Pydata.Okinawa Meetup #22

ワークショップ資料は↓

https://github.com/ugo-nama-kun/pydata_okinawa2017