JAWS DAYS 2020AWS DeepRacerリーグで世界一になるには株式会社DNPデジタルソリューションズ
コミュニケーションプロセス開発本部
瀧下初香（Sola）

本資料について
本資料は社内で実施しているAWS DeepRacer勉強会の内容をもとに、公開用の資料として整理したものです。
AWS DeepRacerの経験者、既に機械学習・強化学習を学んでいる人向けの内容となっています。
コース名「The 2019 DeepRacer Championship Cup」は「re:Invent2019コース」としています。

自己紹介

AWS DeepRacerリーグ2019 世界チャンピオン
瀧下 初香（レーサー名 Sola）
DNPデジタルソリューションズ
コミュニケーションプロセス開発本部
好きなAWSサービス

Amazon SageMaker

サポートメンバー紹介
デジくま君（アシスタント）
DNPデジタルソリューションズ

公式キャラクター

世界各国のAWS Summitで情報収集を行っている。2020年はAWS Summit Parisに行く予定だったが断念。将来の夢はVtuberで人気者になること。

AWS re:Invent 2018AWS Summit Singapore 2019AWS re:Invent 2019AWS Summit Paris 2020

AWS DeepRacerとのはじまり• これまでのAWSの経験はなかった• AWS DeepRacerの社内勉強会で初めてログイン(2019年3月)••

AWS DeepRacerがre:Invent2018で発表された事は知っていた
強化学習は物理的に結果を評価するのが大変なのでこれは楽しそうと思った

AWSで機械学習を始めて１年も経たずに世界で１番になるなんて、まさにアメリカンドリームだね！

モデル作りの環境について• はじめはSageMakerでモデルを作っていた••

DeepRacerコンソールがGAされていなかったので、公開されているDeepRacer用ノートブックを使って学習しモデルを作っていたモデルの評価もノートブック上でラップタイム計測していた•

AWS DeepRacer で社内レースをやるために、ラップタイムを計測してみた
https://qiita.com/dnp-hara/items/cb4081fa5bdfbe749c22• GAされてからはDeepRacerコンソールでモデルを作っていた••思いついたことをいろいろ試した
全く同じ条件の学習でもシミュレーション結果が異なるモデルになることも• AWSが提供しているログ分析ノートブックやCloudWatchLogsを使って学習データを確認していた

AWS DeepRacerリーグ優勝モデルのコンセプト

スピードよりも安定性を重視するモデル

ここから実際に優勝したときのモデルの学習内容について、ズバリ聞いていくよ！

報酬関数• AWS DeepRacer開発者ガイド例１：センター寄りの報酬の関数がベース••

条件や報酬の割合の数値は変更している
re:Invent2019コースはre:Invent2018コースより幅が広いので中央寄りから広めに変更した• スピードに対する報酬も追加している• １ステップで得られる最大報酬は、エージェントの状況下により、センター報酬を優勢、またはスピード報酬を優勢にしていた• １度良い結果がでたら、そのモデルを改善していく• 例３：ジグザク抑制のサンプル関数も試したがあまり良い結果は得られなかった（Solaの場合）

アクションスペース• アクションスペースは重要視••

１つのモデルを作成するにあたり、途中で変更はしていない
DeepRacerコンソールだけではできないが、クローン元モデル.tar.gzのmodel_metadata.jsonを差し替えてクローン学習することで途中でアクションスペースの変更は可能• 速度は 7m/sと3.5m/s•（最大速度7m/s、粒度2段階）

re:Invent2019コースは幅が広くなっているので最大速度を東京サミットモ
デルより上げた2019年12月のAWS DeepRacerコンソールのアップデートにより、速度の基準が以前と変わっていますのでご注意ください！

2019年12月以前のスピード≒ アップデート後のスピード×3.5倍• ステアリング角度はコースの形状（カーブのきつさ）で角度と粒度を決定•

アクションスペースの異なるモデルをたくさん作って評価した

学習時間とクローン戦略• 学習時間は１つのモデルで７～８時間••

数回のクローンの学習時間を含む報酬関数の複雑さ、アクションの数、ハイパーパラメータによって学習時間は変わる• クローン時にハイパーパラメータを変更••••

主に以下の5つ• Learning late（学習レート）• Batch size（バッチサイズ）• Number of epochs• Entropy• Number of experience episodes between each policy-updating
iteration (各ポリシー更新反復間のエクスペリエンスエピソードの数)
バッチサイズ、エポック数、エピソード数は最初に大きな値を設定した
2時間くらい学習後、ログを見て値を小さくしていったり、最初から小さな値を設定して４～５時間学習させた
あとは学習レートやエントロピーの値を調整していた• 値は報酬関数のグラフやログを見て適当な値を入れて調整していた

学習時間とクローン戦略• 複数のコースで学習•優勝モデルはre:Invent2019コースだけではなくEmpire City Trainingコースでも学習させた（re:Invent2019コースの学習だけで完走するモデルもありましたが）モデルの評価ポイント• シミュレーション• Training•

コンソールの報酬関数グラフが右肩上がりから、なだらかになった時点で、学習していない他のコースで学習させてEvaluationを試して結果を確認していたre:invent2019
コースで学習Empire City
Trainingコース
で学習

re:invent2019
コース
で学習

モデルの評価ポイント• シミュレーション（続き）• Training•

トレーニングジョブのエントロピーの値をチェック• 途中で値が上昇し始めてたら、トレーニング時間を短くしたりハイパーパラメータを調節して再トレーニング• 優勝モデルで0.4くらい•

ログ分析ツールで確率分布もチェックしていた• どの報酬範囲を多く選択しているのかわかる•

AWS DeepRacer Tokyo Summitリーグ表彰台3名のモデルをログ分析ツールにかけてみた
https://qiita.com/dnp-ayako/items/2b42f2cf25fa79abd55b

モデルの評価ポイント• シミュレーション（続き）• Evaluation••

シミュレーションの評価走行の結果はすべて完走（100％）でなくともよい• 全5周のうち、完走が数周、90％台がでていれば良しとした優勝モデルで１周あたり12秒のEvaluation結果

モデルの評価ポイント• 実機による走行評価• re:Invent2019ラスガベス出発前に走行会を開催•••

日本から出場するファイナリストも招待
AWS DeepRacer実機はAWSさんのご好意でレンタル
re:Invent2019コースを自作• ビニールシートにテープを張り２日間で製作（運営メンバー4名で）モデルの評価• 実機による走行評価（続き）• モデルが狙い通りの動きをしているかどうかを見極める••

過学習していると走らない。ダメなモデルは１周目からうまく走れない
自分の作ったモデルが想定通りの動きをしてくれているかどうかを確認• 意図した通りの走りなら、スピードを出してもコントロールしやすい• たくさんのモデルを試して良いものを選ぶ••

別コースでトレーニングする前後のモデル等を含めて20個ほど試走して、re:Invent2019チャンピオンシップに持っていくモデルを5つ選んだ
選んだ基準はスピードを上げても安定して走れるモデル• re:Invent2019コースの最初の急カーブを曲がる• 最後のシケインは直線的に走行している
このカーブを曲がれるか、曲がれないかを重視

なるべく直線的に

実機レース• レース中はタブレットでスピード調整をしている•

適度にスピードを出したほうが安定して走れるモデルになっていた• コース環境や実機によって、同じモデルでも走りやタイムは違う••

チャンピオンシップ大会の予選では実際に５～６秒違った
予選レースでは１レース4分の持ち時間なので、前半2分はマシンの個体差に合わせてスピード調整をしていた• 最終的に5つのモデルを持参したがレースで使ったのは１つだけ•

2019年12月のDeepRacerコンソールアップデート前のバージョンで作成• 決勝戦は持ち時間が90秒間なのでとにかく完走してタイムを出すことを目指した（全ラップコースアウトでタイムなしを避けたかった）••

決勝戦の優勝タイムは10.236秒
チャンピオンシップ大会を通しての最速タイムは予選2日目のSola自身の8.089秒

2020のレーサーに向けて• タイムレースなので奇跡の１周狙いもありかも• 自分の狙い通りに走っているか、モデルの特性を理解することが大事• 一人でやるより、仲間と楽しみながら一緒にやったほうがいい•

誰か相談できる人がいると続けられるかも• 仮説とともに評価してみる•

過学習モデルを作り、本当に実機で過学習しているのか確認してみる。など• 速いモデルを作るためには、作ったモデルの評価、検証を繰り返し行うことも必要
何回も試し、繰り返し評価・・・
とても根気のいることだけど、勝つためには大切なことなんだね！

おまけ• Sola というレーサ名は、誰からでも親しみやすく呼んでもらえるように 海外の猫の名前ランキング から名付けました

僕も人気者になったらいろんな人から名前を呼ばれる日が来るかも！？

最後に2019年は福岡支部、AI支部をはじめとしてJAWS-UGのみなさまには大変お世話になりました
また、
re:Invent2019現地で応援してくださったみなさま
re:Capイベントで祝福の言葉をかけていただいたみなさま

本当にありがとうございました
心より御礼申し上げます

DNP ＆ DNPデジタルソリューションズ DeepRacerチーム一同