Successfully reported this slideshow.
Your SlideShare is downloading. ×

Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 84 Ad

Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン

Download to read offline

Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン 講義資料
ハンズオン編はこちら
https://github.com/icoxfog417/techcircle_openai_handson

Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン 講義資料
ハンズオン編はこちら
https://github.com/icoxfog417/techcircle_openai_handson

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン (20)

Advertisement

More from Takahiro Kubo (20)

Recently uploaded (20)

Advertisement

Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン

  1. 1. by icoxfog417 @ Tech-Circle #18 Pythonではじめる強化学習 OpenAI Gym 体験ハンズオン
  2. 2. Agenda ● OpenAI Gymを体験しよう ○ OpenAIとOpenAI Gym ○ OpenAI Gymを動かしてみる ○ ルールで「AI」を作ってみる ● 「AI」を成長させよう ○ 強化学習というアイデアのモデル化 [MDP] ○ 行動評価の方法 [Bellman Equation] ○ 最適化の方法 [Value Iteration] ○ 探索による最適化 [Q-learning] ○ 探索と活用のジレンマ [ε-greedy法] ● Deep Learningとの融合 ○ Deep Q-Networkの登場 ○ Deep Q-Networkにおける3つのトリック ○ Deep Q-Networkの実装 ● おわりに 2 Twitterで質問を受け付けます #techcircleja
  3. 3. About Me
  4. 4. Takahiro Kubo (icoxfog417) TIS株式会社 戦略技術センター所属 ● 化学系メーカーの業務コンサルタント出身(得意技は石油化学製品の価格改定) ● 既存の技術ではシステムによる業務改善に限界があるとの実感から、異動 ● 現在は機械学習や自然言語処理の研究・それらを用いたサービスのプロトタイピング を担う ● kintoneエヴァンジェリスト @対話システムシンポジウム @PyConJP 2016 @Cybozu Days 2016
  5. 5. about team “chakki”(1/2) 所属するチームのミッション すべての人が、ティータイムに帰れるようにする すべての人が、ティータイム(15:00)に帰れる(茶帰) 社会を実現します。 この実現には、既存の仕事を効率化するのでなく、 根本的に「仕事の仕方」を変える必要 があります。しかし、慣れた仕事の仕方というのは簡単には変わりません。 そのため、実際に「体験」をし、効果を「実感」してもらうことが重要になります。 私たちは、 先進的技術を用い、仕事の仕方が変わる体験を提供していきます。
  6. 6. about team “chakki”(2/2) 自動応答と遠隔操作による、接客業務の効率化 会議診断システムさゆり 「ロボットとの分業による接客 の効率化」をコンセプトにして 開発しているmaico 「会議に突っ込みを入れるロ ボット」をコンセプトにした会 議診断士さゆり
  7. 7. OpenAI Gymを体験しよう
  8. 8. OpenAIとOpenAI Gym(1/3) OpenAIは、AIの研究を行う非営利の団体です。上記の目標のとおり、AIの研究成果を自己 (特定企業の)利益のためではなく、人類全体のために活用することを目的としています。そ のためコードも含めた研究成果は広く公開されており、今回紹介するOpenAI Gymもそのうち の一つになります。 9 目標はデジタルインテリジェンスの高度化をできるかぎり人 類全体の利益に資する形で推進すること。それが、経済的 (financial)な利益目的に制約されないことだ。 出資者の一人であるTesraのElon Musk氏
  9. 9. OpenAIとOpenAI Gym(2/3) 10 Ilya Sutskever氏 Trevor Blackwell氏 Andrej Karpathy氏 所属する研究員の方たちは、Seq2Seqを提案したIlya Sutskever、Segwayを発明したTrevor Blackwell、画像の 説明文生成を行ったAndrej Karpathなど、泣く子も黙る 世界的に優秀な研究員・エンジニア達が所属。 日本人はまだいないようなので、ぜひ日本人初の OpenAI研究員を目指そう!
  10. 10. OpenAIとOpenAI Gym(3/3) 12 OpenAI Gymは「AI」を開発・評価するためのツール、またプラットフォームです。 ・・・ 様々な学習環境が用意さ れており、そこで「AI」のア ルゴリズムの開発・評価 ができる。 Try! 実験結果をアップロードして共有 できる。他の人の実行結果・実 装を見たりすることも出来る
  11. 11. 「AI」の開発って・・・? Binary Koala
  12. 12. Let’s Try! ファミリーボクシング(1987) やればわかる!
  13. 13. OpenAI Gymを動かしてみる(1/3) 環境構築の方法はこちらを参照。 Mac/Linux(Ubuntu)が公式だが、Windowsでもbash on Windowsを利用することで動作させる ことが可能。 利用する「ジム(=学習環境)」によって、必要となるライブラリも異なってくる。これらは、選択 的にインストールすることが可能。 ※pip install gymで入るのは必要最低限のもので、Atariのゲーム環境を使う場合はpip install ‘gym[atari]’といったように指定する 15
  14. 14. OpenAI Gymを動かしてみる(2/3) Gymの基本的な使い方は以下の通り。 16 import gym env = gym.make("CartPole-v0") for i_episode in range(20): observation = env.reset() done = False while not done: env.render() action = env.action_space.sample() next_observation, reward, done, info = env.step(action) Environment (CartPole-v0) Agent action observation, reward done (episode end) gym ①Environmentからはobservationが得られる ②Agentは、observationを基にactionを行う(ここではランダムに選択) ③actionにより、Environmentから次のobservationと、行動に対する報酬が与えられる ⇒この報酬を最大化したい ① ② ③ テストに出る ① ② ③
  15. 15. OpenAI Gymを動かしてみる(3/3) つまり(狭義の)「AI」の開発とは、環境が与えられたときにその環境に対し・・・ 1. 得られる報酬を最大化する 2. しかもすばやく最大化する 3. ひいては、異なる環境でも1, 2ができる(汎用的である) アルゴリズムを開発すること。 これまでは人によって学習・評価に使う環境に差異があることもあったが、Open AI Gymとい う統一の環境ができたことで、お互いのアルゴリズムを公平に評価できるようになった。 17
  16. 16. どんなアルゴリズムがいいのか? Windell Oskay
  17. 17. Let’s start from simple one 19 まずは、シンプルなルールで挑戦してみる Teach!
  18. 18. ルールで「AI」を作ってみる(1/4) 20 Agent Environment action (フン=左 & フン=右) observation, reward
  19. 19. ルールで「AI」を作ってみる(2/4) 21 Agent Environment action (フン=上 & フン=下) observation, reward def act(self, observation): if len(self._plan) == 0: self._plan += [self.action_up] * self._interval # up self._plan += [self.action_down] * (self._interval * 2) # back to center & down self._plan += [self.action_up] * self._interval # back to center return self._plan.pop(0) Fun(上) (戻る)+Fun(下) (戻る) ※後のハンズオンでやります
  20. 20. ルールで「AI」を作ってみる(3/4) 22 試合開始(Demo) code here
  21. 21. ルールで「AI」を作ってみる(4/4) 23
  22. 22. ルールで作る「AI」の限界 人が定義するルール、また人が「正解」を与える教師あり学習の 場合、「人間の限界」がそのままAIの限界になる。 ● AIを作る人間がその道のエキスパートとは限らない ● エキスパートであっても、自分の感覚(行動評価)を正しく設定 するのはとても手間で、困難(途中で→) この上限を突破するには、「人が教える」という手法から、「AI自ら 学習する」という手法へ切り替える必要がある。 そのための手法の一つが、強化学習になる。 24
  23. 23. 「AI」を成長させよう
  24. 24. 機械学習 教師あり学習 強化学習というアイデア 人がAIに教えるのでなく、AIが自分自身で学習するようにする。 26 学習行動評価 ルールベース 学習ルール 強化学習 どんな行動が「報酬」につながる のか、自身の経験から評価する 行動評価 報酬 ※教師なし学習は行動選択には用いられないので、図からは割愛しています。教師がいないから教師なし学習=強化学習ではないのでご注意を  教師なし学習はデータの特徴抽出などに用いられます(どういう特徴か事前にわからない⇒指示を与えず分類を行う=教師なし、など)。
  25. 25. アイデアのモデル化(1/2) 27 Agentが置かれている状態 を、stateとする state Agentは、stateで可能な行動 =actionをとる。 actionは、戦略=policyに従い 決定される。 I like right! actionの結果、新しい状態 state’へ遷移する。また報酬 (reward)が発生した場合、そ れを受け取る。 state’ reward action
  26. 26. アイデアのモデル化(2/2) 28 Agentが置かれている状態 を、stateとする state Agentは、stateで可能な行 動=actionをとる。 actionは、戦略=policyに従 い決定される。 I like right! actionの結果、新しい状態 state’へ遷移すると共に、設 定された報酬=rewardを受け 取る。 state’ reward action Markov Decision Process (MDP)
  27. 27. アイデアのモデル化: 行動評価の方法(1/12) 29 state +1 -1 迷路で、以下の位置(state)にいるAgentについて考える
  28. 28. アイデアのモデル化: 行動評価の方法(2/12) 30 +1 -1 選択可能なactionは以下の通り
  29. 29. アイデアのモデル化: 行動評価の方法(3/12) 31 actionの結果得られるrewardは以下の通りであり、それを基に行動が評価できる。 action reward 行動評価
  30. 30. アイデアのモデル化: 行動評価の方法(4/12) 32 +1 -1 行動評価を反映
  31. 31. アイデアのモデル化: 行動評価の方法(5/12) 33 +1 -1 そこから、一歩手前の状態について考えてみる。 state
  32. 32. アイデアのモデル化: 行動評価の方法(6/12) 34 actionの結果、得られるrewardは以下の通りになる。 action reward action単体から 得られる報酬 はない
  33. 33. アイデアのモデル化: 行動評価の方法(7/12) 35 ただ、右へ移動した場合は先ほどの行動評価の結果が使える。 action reward (future)reward
  34. 34. アイデアのモデル化: 行動評価の方法(8/12) 36 action reward (future)reward actionにより得られるreward 遷移先で見込める最大の報酬 行動選択の上では最大の報酬だけ に興味があるので、報酬が最大にな るものだけピックアップ
  35. 35. アイデアのモデル化: 行動評価の方法(9/12) 37 action reward (future)reward 行動評価を決定
  36. 36. アイデアのモデル化: 行動評価の方法(10/12) 38 行動評価 = actionによるreward + 遷移先で見込める最大の報酬 行動評価 = actionによるreward + 割引率 x 遷移先で見込める最大の報酬 将来の報酬になるので、 一定率で割り引く
  37. 37. アイデアのモデル化: 行動評価の方法(11/12) 39 行動評価 = actionによるreward + 遷移先で見込める最大の報酬 行動評価 = actionによるreward + 割引率 x 遷移先で見込める最大の報酬 将来の報酬になるので、 一定率で割り引く
  38. 38. アイデアのモデル化: 行動評価の方法(12/12) 40 行動評価 = actionによるreward + 遷移先で見込める最大の報酬 行動評価 = actionによるreward + 割引率 x 遷移先で見込める最大の報酬 将来の報酬になるので、 一定率で割り引くBellman Equation テストに出る
  39. 39. アイデアのモデル化: 最適化の方法(1/4) 41 +1 -1 そのほかについても計算を行う state
  40. 40. アイデアのモデル化: 最適化の方法(2/4) 42 s_00 s_10 s_20 s_01 s_21 s_02 s_22 s_03 s_23 s_12 s_13 +1 -1 これをn歩前まで・・・と繰り返していくと、行動評価の地図を作ることができる
  41. 41. アイデアのモデル化: 最適化の方法(3/4) 43 まとめ 各状態における、行動評価の値 を0などで初期化する。 各状態で、行動評価の値を計算 する(Bellman Equation)。 計算した行動評価の値を使い、前 回状態の評価を行う。 step=1 step=2 ... step=n 前々回・・・と繰り返していくと、行動評価の値がstep前後で変わらなく なってくる(=収束する)。これで計算終了。 Agentは、行動評価が最大の方向に行くようにすればOK!
  42. 42. アイデアのモデル化: 最適化の方法(4/4) 44 まとめ 各状態における、行動評価の値 を0などで初期化する。 各状態で、行動評価の値を計算 する(Bellman Equation)。 計算した行動評価の値を使い、前 回状態の評価を行う。 step=1 step=2 ... step=n 前々回・・・と繰り返していくと、行動評価の値がstep前後で変わらなく なってくる(=収束する)。これで計算終了。 Agentは、行動評価が最大の方向に行くようにすればOK! Value Iteration
  43. 43. We have done it …? 45 これで問題は解決?
  44. 44. Think about Rockman10 46
  45. 45. Question 47 問:今、状態(state)の数はどれだけあったでしょう?
  46. 46. Problem 48 死亡 クリア 状態数多すぎ問題 Start
  47. 47. 状態定義の限界 複雑なタスクでは、状態数が多くその全てを列挙することは難しくなってくる。また、当然各状 態の組み合わせの数(状態遷移の数)も爆発的に増える。 ⇒Value Iterationで計算しようとすると、永遠に終わらないくらい時間がかかる。 49 今まで:状態の数と、そのつながりが明 らかで、計算可能な程度の量 今:状態の数と遷移数がわけわからんくらい多く て、計算しきるのはとても無理!
  48. 48. We need new idea 50 どうするか?
  49. 49. 未知なる台地なら探索から puhoto by Moyan Brenn
  50. 50. 探索による最適化(1/9) 52 よくわからないので、 とりあえず行動してみ る
  51. 51. 探索による最適化(2/9) 53 よくわからないので、 とりあえず行動してみ る
  52. 52. 探索による最適化(3/9) 54 よくわからないので (以下略)
  53. 53. 探索による最適化(4/9) 55 -1 ぐはぁぁぁぁ!! (ゲーム終了)
  54. 54. 探索による最適化(5/9) 56 -1 行動結果から、行動評価を 計算していく (=Value Iteration同様)
  55. 55. 探索による最適化(6/9) 57 -1 +1 ただし、一回の試行で行えるactionのパターンは限られているため、 一回の試行の結果をどれぐらい信用するか については調整する必要がある。 ⇒下図のように、二回目の試行で実は悪いと思っていたところが良いという風にもなりうる(逆も然り)。  これまでと、今回行った試行を、うまくミックスさせる必要がある。
  56. 56. 探索による最適化(7/9) 58 行動評価 = actionによるreward + 割引率 x 遷移先で見込める最大の報酬 行動評価 = (1 - 学習率) x 既存の行動評価の値 x 学習率(実際の行動評価) Bellman Equation これまでの行動評価を信じる分 今回の行動評価を信じる分 学習率で、これまでと今回の 評価の配分を行う
  57. 57. 探索による最適化(8/9) 59 行動評価 = actionによるreward + 割引率 x 遷移先で見込める最大の報酬 行動評価 = (1 - 学習率) x 既存の行動評価の値 x 学習率(実際の行動評価) Bellman Equation これまでの行動評価を信じる分 今回の行動評価を信じる分 行動評価 = 既存の行動評価の値 + 学習率(実際の行動評価 - 既存の行動評価の値) 式変形 TD誤差
  58. 58. 探索による最適化(9/9) 60 行動評価 = actionによるreward + 割引率 x 遷移先で見込める最大の報酬 行動評価 = (1 - 学習率) x これまでの行動評価 x 学習率(実際の行動評価) Bellman Equation これまでの行動評価を信じる分 今回の行動評価を信じる分 行動評価 = これまでの行動評価 + 学習率(実際の行動評価 - これまでの行動評価) 式変形 テストに出る TD誤差 Q-learning
  59. 59. 探索と活用のジレンマ(1/4) 61 なるべく正確な行動評価を得たい なるべく多くのactionを試す なるべく早く報酬を取りたい 報酬が判明しているactionを取る もっと大きい宝箱 があるかも? わかっている宝箱 で十分かも?
  60. 60. 探索と活用のジレンマ(2/4) 62 なるべく正確な行動評価を得たい なるべく多くのactionを試す なるべく早く報酬を取りたい 報酬が判明しているactionを取る もっと大きい宝箱 があるかも? わかっている宝箱 で十分かも? 探索 (exploration) 活用 (exploitation)
  61. 61. 探索と活用のジレンマ(3/4) 63 なるべく正確な行動評価を得たい なるべく多くのactionを試す なるべく早く報酬を取りたい 報酬が判明しているactionを取る もっと大きい宝箱 があるかも? わかっている宝箱 で十分かも? ε-greedy法 (random by ε)
  62. 62. 探索と活用のジレンマ(4/4) 64 フィードバック量 探索(ε) 1.0 基本的に、学習を進めるにつれ、探索の 率を下げていく (学習率も同様に下げていく=これまでの 評価を信じる率を高くする) テストに出る
  63. 63. We finally made it? 65 これでいけそう?
  64. 64. back to 状態定義の限界 ゲームを含む時系列のタスクでは、そもそも「状態」の境界線があいまい(↓は、果たして「4 つの状態」といえるか?)。 そのため、状態を連続的な値で表現したい。具体的には、以下の場合状態である「画像」を 連続値(ベクトル)で表現したい。 66
  65. 65. back to 状態定義の限界 画像からの特徴抽出といえば・・・ 67 Clarifai
  66. 66. Deep Learningとの融合
  67. 67. Deep Q-Networkの登場(1/2) 69 Deep Learning界において、「香川といえばうどん」と同じくらい「画像といえば CNN(Convolutional Neural Network)」は当然のこととして扱われている。 Clarifai CNNは、画像から特徴を抽出して判断するのに優れた手法。 これを応用して、以下のような仕組みを構築する。
  68. 68. Deep Q-Networkの登場(2/2) 画像であるstateを、画像処理に優れたConvolutional Neural Networkに流し込む。そこから 「どのactionがいい(=行動評価が高い)か」を出力させる。 ⇒状態を入力とし、行動評価を出力する計算プロセス(Q関数)を、Deep Learningに置き換え ている。 70 state 行動評価 action A B ・ ・ Convolutional Neural Network
  69. 69. Deep Q-learning ※価値関数(Q関数)自体をニューラルネットで近似するアイデアは以前からあったものであ り、よって学習を成功させる手法まで含めてDQNとよぶ。 DQN (Deep Q-Network) puhoto by Chloe Muro
  70. 70. Deep Q-Networkにおける3つのトリック(1/3) 72 ・ ・ ・ episode (1ゲーム終了ま での期間) experience ・ ・ ・ replay 報酬 遷移先の報酬 行動評価 誤差 ⇒DQN更新 DQN 定期的にコピー 行動とその結果 (state/action/遷移先 state/reward)を記憶 報酬のclipping 報酬は-1,0,1に統一する (どんなゲームにも対応できるようにする)
  71. 71. Deep Q-Networkにおける3つのトリック(2/3) 73 ・ ・ ・ episode (1ゲーム終了ま での期間) experience ・ ・ ・ 行動とその結果 (state/action/遷移先 state/reward)を記憶 replay 報酬 遷移先の報酬 行動評価 誤差 ⇒DQN更新 DQN 定期的にコピー Fixed Target Q-Network 遷移先報酬を計算する際の重みはし ばらく固定し、定期的に更新する Experience Replay experienceに蓄積したものを、シャッフルして学習デー タにする。 ⇒学習データ間の相関を除去する(普通にやると時系 列に並んでいるため、強い相関がある)。
  72. 72. Deep Q-Networkにおける3つのトリック(3/3) 74 ・ ・ ・ episode (1ゲーム終了ま での期間) experience ・ ・ ・ replay 報酬 遷移先の報酬 行動評価 誤差 ⇒DQN更新 DQN 定期的にコピー Fixed Target Q-Network 遷移先の報酬を計算するネットワークはし ばらく重みを固定し、定期的に更新する(報 酬計算の安定性を高めるため)
  73. 73. Deep Q-Networkの実装(1/5) 実行結果(Open AI Gymへアップロード済み) 75
  74. 74. Deep Q-Networkの実装(2/5) 76 100~250
  75. 75. Deep Q-Networkの実装(3/5) 77 DQNの実装に必要なコードの 行数
  76. 76. Deep Q-Networkの実装(4/5) アルゴリズムの実装自体にかかるコードはかなり少なくてすむ(OpenAIのメンバである Andrej Karpathyさんのブログでは、実装にかかっているのはわずか130行(しかもコメント込 み))。加えて、昨今の機械学習系フレームワークの恩恵も受けられる(こちらは、Chainerで 実装したDQN)。 Webアプリケーションを作ったりするより、ぜんぜん少ない行数で実装が可能。 78
  77. 77. Deep Q-Networkの実装(5/5) DQNは、結果が出るまでかなり時間がかかる。そのため、実際計算しないとわからないこと 以外は可能な限り事前にテストしておくことが重要。 ● テストしておかないと、処理のミスかパラメーターのチューニングの問題かわからなくな る。 ○ 責務分担・処理の独立化を行い、手元のテストでつぶせるバグはすべてつぶして おくこと。 ○ これを怠ると、GPUの場合お財布、CPUの場合時間に致命的なダメージを負うこ とになる ● GPUはほぼ必須(CPUの場合、いい感じかどうかわかるのに1~2日はかかる) ○ GPUインスタンスを使おう ○ OpenAI Gymを検証しているといえばAmazonから$250分もらえるらしい 79
  78. 78. おわりに
  79. 79. おわりに OpenAI Gymは自体は、難しい知識がなくても動かして、試すことができます。数式などを理 解するところからよりも、まず環境に触れてその「面白さ」を体感してもらえればと思います。 その入り口の先にある強化学習は、人による教育の限界を超えるためのアプローチ方法で あり、最も研究が盛んな領域の一つです(だからこそ投資が行われているとも言えます)。本 日紹介した手法も、将来、また現時点ですでに時代遅れになっているかもしれません。 ただ、ベースとなる本質的な理論(Q-learningなど)は変わっていません。その意味では、本 日セッションに参加いただいた方は、すでにAI研究の一線の入り口に立っています。 81
  80. 80. Welcome to AI World! puhoto by Rog01
  81. 81. Thank you for listening!
  82. 82. Any Questions?

×