【レポート】DeepRacerワークショップ #AWSSummit

現在開催中のAWS Summit Tokyo2019にて、Day1のセッション「DeepRacerワークショップ」に参加してきた際のレポートです。
2019.06.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。AWS事業本部のShirotaです。

今日は、本日6/12から3日間開催されますAWS Summit Tokyo2019に来ております。 Day1のセッション、「DeepRacerワークショップ」に参加致しましたのでこちらについてレポートをお送りしたいと思います。 また、私は去年のre:InventのDeepRacerワークショップにも参加して来たので、それと比較出来る点は比較しながらお話させて頂きたいと思います。

セッションの概要

基本的に二部構成となっておりました。

  1. DeepRacerの概要を学ぶ(座学)
  2. 実際にDeepRacerを触ってみる(ハンズオン)

このセッションの構成は、去年のre:InventでのDeepRacerのセッション構成と似ていました。 因みに、re:Inventでは6人1組で1テーブルに座り、グループワークするような形式だったのですがAWS Summitでは長テーブルに4〜5人で座り、個人でDeepRacerを触るような感じでした。

セッションで貰えたもの

今回、貰えたものはこんな感じです。

▲ DeepRacerステッカー、よく見ると「Tokyo」の文字が!

実際にDeepRacerのサービスを使うので、$25のバウチャーも貰えました!(re:Inventでも帰国後にDeepRacerが出来るようにとバウチャーを貰えた記憶) re:Inventの時は実機があったので、実機に学習させたモデルを入れるためのUSBメモリ等もありました。

因みに、会場内で実際にDeepRacerのコンソールを触った事がある人は2割ほど、実機を走らせた事がある人は流石にいなかったようです。

セッションの内容

今回は、なるべくサクッとセッション内容をお伝えしたいので箇条書きで内容を纏めさせて頂きます。

Deep Racerの概要

  • DeepRacer:誰でも強化学習ができるサービスとして提供している
    • 実際に走る車の提供(Deep Racer)
    • 学習と評価のためのシミュレータ
    • 世界中でのレースリーグも開催!

どう強化学習を用いているのか

  • DeepRacerはカメラがついている<l/i>
  • このカメラが画像をインプットする
  • ハンドルの切り方を判断したりするモデル
  • エージェント(DeepRacer)が様々な運転を試してゴールに到達できるように学習する
    • どういう状態にいるのか
    • どういうコースなのか
    • 何をすれば良いのか
  • 強化学習とは?:人工知能の一種である機械学習(強化学習/強化あり学習/強化なし学習)の一種
    • 教師あり学習:全ての学習データは、対応するラベルが必要
    • 教師なし学習:ラベルが要らない
    • 強化学習:特定の環境下で、一連の行動から学習
  • うまくいくと報酬あり、うまくいかないと報酬なし(犬のしつけに例えた強化学習の説明)

DeepRacerの強化学習で用いる用語

  • エージェント:車
  • 環境:コース
  • 状態:コースでどこにいるか
  • 行動:どう進めば良いか
  • 報酬:行動の指標になる(設計は我々がやる)
  • エピソード:シミュレーションの蓄積
  • 報酬関数:強化学習において、特定の行動にインセンティブを与える。これが重要!

レースの為の報酬関数

  • エージェントがゴール(G)まで走る
  • コースを外れずにゴールできたらG=2と定義してあげる
  • はじめ、車はランダムに走る為ゴールに行かないことが多い
  • 上記の定義では報酬がそもそも与えられなくて学習できない!=ガイドラインをもっと引いてあげる必要がある
  • 報酬関数のアップデートをする
    • コースの真ん中を走ると2あげる関数を設定→道の真ん中を走っていってくれるようになる!
  • 報酬関数を定義、エージェントがいっぱいシミュレーションする→価値関数になる。これで最適化
  • 価値関数:多数の探索を繰り返した後の各状態の最大値

Vanilla policy gradient(強化学習アルゴリズム)

  • 良い、悪い以外の情報を増やす為に用いる
  • 現在のポリシーを利用してシミュレーションをなんども実行、エピソードを集める
  • 推定累積報酬の勾配(Gradient)を計算→こうするとよりよく報酬が得られる!を求める
  • 勾配を登る方向へポリシーを更新、より良いポリシーを使うようにする
  • これを繰り返し、累積報酬の最大化を目指す
  • 他のアルゴリズムとどう違う?
  • 教師あり学習(Behavioral cloning):カメラ付きの実機カーをプロが運転するようなもので、この時の画像と運転を記録してモデルを学習させる
  • 強化学習:仮装エージェントがシミュレーション環境で行動を繰り返し、経験を積む
  • 状態(画像)を入力すると運転行動を決定する(ここは教師あり学習も強化学習と同じ)

シミュレータについて

  • シミュレーションアーキテクチャはVPC内にある

▲ 実際にワークショップで使われた資料にあった図を書き起こしました

  • VPC内でSagemakerとRobomakerが動いている
  • NATGatewayからモデルがS3へ,シミュレーション動画がKinesis Video Streamへ、 トレーニング中のメトリクスはCloudWatchへ送られている

DeepRacerコンソールの使い方の一連の流れ

  • モデルを作る
  • 学習の設定(報酬関数をPythonで、トレーニングの方針をハイパーパラメータで、行動空間(スピードどれくらい出すかとか)
  • 学習
  • 評価が吐き出される(→良いモデルができたらバーチャルサーキットやSummitサーキットへ、DeepRacerカーのテスト)バーチャルサーキットは鈴鹿サーキットを模してるらしい!
  • モデルの調整→また学習の設定をして学習させるのループへ

GitHubに載っている要素

  • 行動空間の設定:スピードとステアリングの組み合わせで定義、細かい調整を行うために粒度を設定可能(Action Spaceのセクションで詳細の説明あり)
  • 報酬関数の実装:初めはサンプルで試せる(サンプルの解説・多数の要素の説明)
  • アルゴリズム設定で用いるハイパーパラメータについて

実際に使用したGitHubのReadmeは、re:Inventで用いた物を和訳したものでした。

実際にコンソールを触ってみる

上記でお話した、GitHubのReadmeを読みながら実際にコースを選び、モデルを作成し、報酬関数をセットしたりハイパーパラメータを設定したりして学習をさせました。 DeepRacerの面白いところは、 デフォルトで入っている数値を利用して簡単に強化学習が体験できる ところにもあるな、と感じました。

基本的に扱われていたものは去年のre:Inventのものと同様でしたが、日本語で改めて話を聞いてみる事は中々勉強になったと思います。Readmeの日本語版があるところも読み易くて助かります。

AWS Summitの現地でDeepRacerを走らせてみよう!

今回のワークショップを通して作成したモデルを持ち込んで、現在AWS Summit Tokyoの会場で実施されているDeepRacerのレースに参加する事が出来ます! ただ、私はDay1の13〜15時のセッションを受けたのですが、その時点で既にレースは 200分待ち で参加が難しい状況になっているとのアナウンスがありました。丁度近くの夢の国みたいですね

去年のre:Inventではこのワークショップ、実機が貰えるという事もあり20個近くあったセッションが瞬殺で予約で埋まったり当日待機列の人数上限にも引っかかったりと参加が難しく、新サービスだから勉強してみたいな、と思った人々の心を打ち砕いた事は今でも記憶に新しいです。 話題になっていたけど結局DeepRacerを触れていないな、と言った方は気軽に当日参加してみてはいかがでしょうか? Day2では 10:00〜12:0013:00〜15:0015:30〜17:30 の3回、 Day3では 13:00〜15:0015:30〜17:30 の2回が開催される予定です。 因みに会場はメインのセッション会場から5分ほど歩いたところにある 国際会議場 3F にあります。前後のセッションの取り方には十分お気をつけ下さい。