20190615 DeepRacer同好会オフライン勉強会第三回@岡山
Deep Racer League Virtual CircuitVol.1 - London Loop Highlightクラスメソッド株式会社 データインテグレーション部2019.6.15 DeepRacer同好会 第三回オフライン勉強会@岡⼭貞松 政史1
View Slide
2本⽇のハッシュタグ#AWSDeepRacerJP
3⾃⼰紹介貞松 政史 (サダマツ マサシ) @sady_nitroデータインテグレーション部 (DI部) 開発チーム岡⼭オフィス勤務データ分析基盤開発某コーヒー関連SageMakerLambda⽒名所属近況好きなAWSサービス
4本セッションから得てほしいことDeepRacer 楽しい︕
5本セッションから得てほしいことl Deep Racer Virtual Circuitの概要l Virtual Circuitの実際の⼤会の流れl Virtual Circuitに対するアプローチ今後の⼤会に取り組む為の⼿がかり
6本セッションで話さないこと強化学習の⼿法(アルゴリズム)についての詳細DeepRacerの実機に関する内容
7お品書きDeepRacer League Virtual Circuitの概要DeepRacerコンソールの操作フローLondon Loop ⼤会のハイライトLondon Loopに対するアプローチ今後の⼤会に向けて12345
8DeepRacer LeagueVirtual Circuit の概要
9DeepRacer League Virtual Circuit
10DeepRacer League Virtual Circuitの概要• re:Invent 2019開催⽉まで、毎⽉開催• DeepRacerコンソール上で学習したモデルをそのままデプロイしてレースに参加• 上位10名にはDeepRacerの実機を進呈• 優勝者はre:Invent 2019に招待(イベント参加費、交通・宿泊費をAWSが負担)
11DeepRacerコンソールの操作フロー
12DeepRacerコンソール
13DeepRacerに対する強化学習の環境State (状態)DeepRacerのカメラ画像Action (⾏動)状態に対するエージェント(DeepRacer)の動作Reward (報酬)報酬関数で設定した動作の結果に対する報酬値
14DeepRacerコンソールを⽤いた開発の流れ必要なAWSリソースを作成学習モデルを作成・学習実⾏学習済みモデルの評価・デプロイ
15必要なリソースを作成※ S3やVPCの課⾦も発⽣しているので注意︕
16モデルを学習モデル名・概要⼊⼒学習対象のコース選択⾏動パターンの設定報酬関数の実装ハイパーパラメータの設定学習時間の設定
17トレーニングの実⾏時間毎の累積報酬DeepRacerのカメラ画像(シミュレーター)
18学習済みモデルを評価学習済みモデルで3〜5回トライアルを⾏う⁻ Time : 1回のトライアルでかかった時間⁻ Trial result : 100%ならコース1周完⾛
19DeepRacerのAction設定⽅法l ハンドルの操作⾓l スピード(m/s)→最⼤値と⾏動数(刻み幅)で設定
20設定されたActionハンドルの操作⾓とスピードの掛け合わせで⾏動パターンが設定される
21Actionを設定する上での注意点⾏動パターンを増やし過ぎると学習に時間が掛かる学習ジョブのClone時は元のActionを変更できないコースの特性に合わせて設定が必要報酬関数の設計とトータルで考える必要がある
22報酬関数を作成するエージェント(DeepRacer)から得られる情報を元に⾏動に対する報酬を設定するhttps://docs.aws.amazon.com/ja_jp/deepracer/latest/developerguide/deepracer-reward-function-input.html
23報酬関数の例 パターン1センターラインに沿って⾛⾏させる
24報酬関数の例 パターン2早いスピードで⾛⾏させる※Action設定でスピードのパターンが1種類のみの場合は無意味
25報酬関数の例 パターン3急ハンドルやジグザグ⾛⾏を抑制する
26参考ブログエントリー その1https://dev.classmethod.jp/cloud/aws/aws-deepracer-virtual-circuit-join/
27参考ブログエントリー その2https://dev.classmethod.jp/machine-learning/aws-deepracer-pattern-of-reward-function/
28London Loopのハイライト
29London LoopLondon Loop
30序盤センターライン寄せとジグザグハンドル抑制の報酬関数を組み合わせ暫定6位に︕
31これ、いけるのでは︕︖
32中盤残り10⽇あたりで急に全体のタイムが伸び始める(この時点で30位ぐらいまで落ちる)
33(予想した)限界タイムに近づいている…
34終盤そして最終〆切間近…
35終盤
36︕︕︕
37結果惨敗 orz(46位)
38総評• 12秒台に⼊ってからタイムが伸び悩む• ⼯夫次第で12秒前半はいけたかも• 終盤に⼀度RoboMakerのアップデートによりDeepRacerコンソールが利⽤不能に(正確にはROSのアップデートによるもの)• 再度コンソールが利⽤可能になってから急激にトップタイムが伸びた(…)
39London Loopに対するアプローチ
40コースの特徴を捉えるセンターラインに沿うと上⼿くいきそうキツめのカーブがいくつかある(スピードの調整が必要︖)re:Invent 2018
41コースの特徴を捉えるLondon Loop センターラインにびったり沿うと無駄が多そう緩いカーブの連続で構成されている(速いスピードを維持するのが良さそう︖)
42前半のアプローチ• とはいえちゃんと⾛りきれないと意味がない(デプロイしても記録なしになる)• センターラインに沿うような報酬の与え⽅• 緩いカーブが多いので、出来るだけ直線的に⾛らせたい• 急ハンドルを抑制するような報酬の与え⽅• あとは速いスピードを維持するためにスピードは早めの⼀種類のみ(最初は4m/s→結局5m/sに)
43前半のアプローチ
44これで序盤6位に︕
45後半のアプローチ• フルスロットル(5m/s)でただ1周⾛り切れるだけではタイムが伸びない• 出来るだけロスのない⾛りが必要• CloudWatch Logを読み解く• 1周するのに○秒、○step掛かる• △秒で⾛るには、△Step以下で⾛りきる必要がある• progressとstepを使ってなんとかできないか
46後半のアプローチ
47これでさらにタイムが短縮︕
48でも最終的に惨敗 orz
49実際にモデルの学習を繰り返してわかったことLondon loopをひたすら回した結果• センターラインにびったり張り付いても速くない• 意外とフルスロットルでいける• 報酬関数は複雑なほど良いわけでは無い• 最終的にカリッカリにタイム短縮を狙うならstepsやprogressの考慮が必要…︖• さらにカリッカリにチューニングする場合はハイパーパラメータの調整も⼊ってきそう
50今後の⼤会に向けて
51現在開催中のVirtual CircuitKumo Torakku⻑いホームストレートと連続低速コーナーより複雑な学習モデルが必要speed設定が0.8〜8.0m/sに(以前は0.5〜5.0m/s)
52傾向と対策• 軽く学習回してみた感じ、流⽯にフルスロットル⼀本では曲がりきれない• スピードのパターンが増える• 低速コーナーと⻑いストレートの両⽅対応しないとタイムが伸びない• ステアリングのパターンを減らして、スピードに関する報酬を調整すると少しマシになったより多くの試⾏錯誤が必要
53DeepRacerはお⾦が掛かるぶっちゃけた話
54必要なもの• 情報• うまくいったパターン• うまくいかなかったパターン• 設計とレース結果以外の情報(ログの解析など)• 強化学習の知識• (とはいえ)資⾦• 所属企業の⽀援• AWS利⽤料⾦以外で掛かる⾦銭⾯について(実機とかコースとか)
55協⼒が必要個⼈で戦うには限界があるオープンな情報と競り合いからより良い結果が⽣まれる⽇本⼈からDeepRacer Leagueの世界チャンピオンを︕
56まとめ
57まとめDeepRacer League Virtual Circuitの概要DeepRacerコンソールの操作フローLondon LoopのハイライトLondon Loopに対するアプローチ今後の⼤会に向けて協⼒が必要
58DeepRacer 難しい…
59でも DeepRacer 楽しい︕