Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS DeepRacerで最適な行動・報酬関数を得る為の試行錯誤

AWS DeepRacerで最適な行動・報酬関数を得る為の試行錯誤

2019/05/16 DeepRacer同好会 第二回オフライン勉強会@大阪 のセッションスライドです。

貞松政史

May 16, 2019
Tweet

More Decks by 貞松政史

Other Decks in Technology

Transcript

  1. AWS DeepRacerで 最適な⾏動・報酬関数を得る為の試⾏錯誤 クラスメソッド株式会社 データインテグレーション部 2019.5.16 DeepRacer同好会 第⼆回オフライン勉強会@⼤阪 貞松 政史

    1
  2. 2 本⽇のハッシュタグ #AWSDeepRacerJP

  3. 3 ⾃⼰紹介 貞松 政史 (サダマツ マサシ) @sady_nitro データインテグレーション部 (DI部) 開発チーム

    岡⼭オフィス勤務 データ分析基盤開発 某コーヒー関連 SageMaker Lambda ⽒名 所属 近況 好きなAWS サービス
  4. 4 本セッションから得てほしいこと DeepRacer 楽しい︕

  5. 5 本セッションから得てほしいこと DeepRacerのAction設定どうしたら良い︖ DeepRacerの報酬関数設計どうしたら良い︖ この⼿の悩みを解決する⼿がかりに

  6. 6 本セッションで話さないこと 強化学習の⼿法(アルゴリズム)についての詳細 DeepRacerの実機を⽤いた開発

  7. 7 お品書き DeepRacerコンソールを⽤いた開発 DeepRacerのAction設定 DeepRacerの報酬関数設計 1 2 3

  8. 8 DeepRacerコンソールを⽤いた開発

  9. 9 DeepRacerコンソール

  10. 10 DeepRacerに対する強化学習の環境 State (状態) DeepRacerのカメラ画像 Action (⾏動) 状態に対するエージェント (DeepRacer)の動作 Reward

    (報酬) 報酬関数で設定した動作の 結果に対する報酬値
  11. 11 DeepRacerコンソールを⽤いた開発の流れ 必要なAWSリソースを作成 学習モデルを作成・学習実⾏ 学習済みモデルの評価・デプロイ

  12. 12 必要なリソースを作成 ※ S3やVPCの課⾦も発⽣しているので注意︕

  13. 13 モデルを学習 モデル名・概要⼊⼒ 学習対象のコース選択 ⾏動パターンの設定 報酬関数の実装 ハイパーパラメータの設定 学習時間の設定

  14. 14 トレーニングの実⾏ 時間毎の累積報酬 DeepRacerのカメラ画像 (シミュレーター)

  15. 15 学習済みモデルを評価 学習済みモデルで3〜5回トライアルを⾏う ⁻ Time : 1回のトライアルでかかった時間 ⁻ Trial result

    : 100%ならコース1周完⾛
  16. 16 DeepRacer League Virtual Circuitに参加 学習済みのモデルを Submitしてレース に参加

  17. 17 参考ブログエントリー その1 https://dev.classmethod.jp/cloud/aws/aws-deepracer-virtual-circuit-join/

  18. 18 DeepRacerのAction設定

  19. 19 DeepRacerのAction設定⽅法 l ハンドルの操作⾓ l スピード(m/s) →最⼤値と⾏動数(刻み幅) で設定

  20. 20 設定されたAction ハンドルの操作⾓とスピー ドの掛け合わせで⾏動パ ターンが設定される

  21. 21 Actionを設定する上での注意点 ⾏動パターンを増やし過ぎると学習に時間が掛かる 学習ジョブのClone時は元のActionを変更できない コースの特性に合わせて設定が必要 報酬関数の設計とトータルで考える必要がある

  22. 22 DeepRacerの報酬関数設定

  23. 23 報酬関数を作成する エージェント(DeepRacer) から得られる情報を元に ⾏動に対する報酬を設定する https://docs.aws.amazon.com/ja_jp/ deepracer/latest/developerguide/de epracer-reward-function-input.html

  24. 24 報酬関数の例 パターン1 センターラインに沿って⾛⾏させる

  25. 25 報酬関数の例 パターン2 早いスピードで⾛⾏させる ※Action設定でスピードのパターンが1種類のみの場合は無意味

  26. 26 報酬関数の例 パターン3 急ハンドルやジグザグ⾛⾏を抑制する

  27. 27 参考ブログエントリー その2 https://dev.classmethod.jp/machine-learning/aws-deepracer-pattern-of- reward-function/

  28. 28 報酬関数を実装する際のポイント コースの特徴を捉える 適切なActionの設定を⾒極める まずは1周完⾛できるモデルになるように 報酬関数を設計する

  29. 29 コースの特徴を捉える センターラインに沿うと上⼿く いきそう キツめのカーブがいくつかある (スピードの調整が必要︖) re:Invent 2018

  30. 30 コースの特徴を捉える London Loop センターラインにびったり沿う と無駄が多そう 緩いカーブの連続で構成されて いる(速いスピードを維持する のが良さそう︖)

  31. 31 適切なAction設定を⾒極める コースの特徴や実際の動作・ログを⾒て Actionを設定する 例) スピードはトップスピード(5m/s)のみでOK ハンドル操作は-30°〜30°まで取らないと曲がりきれない etc…

  32. 32 まずは1周完⾛ 完⾛できなければ記録なしになる タイムを縮める以前の問題 all_wheels_on_track(コースアウト判定)や distance_from_center(中央線からの距離)など

  33. 33 さらなる⼯夫 取得したパラメータにする判定を厳しくする (もしくは緩くする) 条件を組み合わせる ハイパーパラメータを調整する(最後の⼿段) https://github.com/Unity-Technologies/ml- agents/blob/master/docs/best-practices-ppo.md

  34. 34 実際にモデルの学習を繰り返してわかったこと London loopをひたすら回した結果 • センターラインにびったり張り付いても速くない • 意外とフルスロットルでいける • 報酬関数は複雑なほど良いわけでは無い

    • 最終的にカリッカリにタイム短縮を狙うならstepsや progressの考慮が必要…︖ • さらにカリッカリにチューニングする場合はハイパーパ ラメータの調整も⼊ってくる…︖
  35. 35 デモ的なもの

  36. 36 ⽣まれたてのDeepRacer

  37. 37 デフォルト設定で学習

  38. 38 デフォルト設定 vs ⾏動・報酬関数を調整

  39. 39 まとめ

  40. 40 まとめ DeepRacerコンソールを⽤いた開発 ⾏動パターンの設定⽅法と注意点 報酬関数の設計 実装パターンの例 実装する際のポイント 実践してわかったこと

  41. 41 DeepRacer 楽しい︕

  42. None