DeepRacerバーチャルレースで上位を目指すために考えること

## はじめに
株式会社NTTデータ デザイン＆テクノロジーコンサルティング事業本部の@nttd-kashiwabarayです。
以前以下のページでDeepRacerの学習の基本的な流れを説明しましたが、本日はDeepRacerのバーチャルレースで上位を目指すために検討すべきことを紹介します。

## 【検討①】走行ライン
初めに開催されるバーチャルレースのコースについて、<B>どのようなラインで走行させるか</B>を検討する必要があります。例えば、RL SpeedwayというAWS Summitで利用されたコースで考えてみます。<B>センターラインで走らせる場合</B>は以下のような形となりますが、<B>特に赤枠部分でロスが大きくなります。</B>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/9c25ed50-19a4-af17-dd2f-12484c780082.png)

直線で走らせられる部分は以下のように<B>直線で走らせないと上位を目指せない</B>ので、<B>いかにロスのない走行ライン</B>で速く走らせられるかがポイントとなります。まずは開催コースでどのような走行ラインを描くかを検討しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/de3d1e8d-27f1-403b-9cc8-03c9c093dc03.png)

DeepRacerのルールとしては、<B>4輪すべてがコースアウトしなければよい</B>ので、そのあたりも考慮して走行ラインを検討する必要があります。世界上位者の走りをみていただければ分かるのですが、<B>4輪すべてがはみ出さないギリギリの最短ルートを走らせている</B>ことが分かります。世界上位者の走りは過去の分を含めて、マネージメントコンソールのDeepRacerのメニュー「AWS Virtual Circuit」から確認できますので、ぜひ確認してみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/bc13d58b-1e27-88c2-7748-d823bde1aaa3.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/f70fc0b3-61d6-af7e-8ae5-4dedd3c212e1.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/62b15949-cb63-590c-b25c-3d4b7457ecab.png)


## 【検討②】アクションスペース
次に考えることはアクションスペースです。上記で検討した走行ラインについて、<B>必要なアクションスペース（角度、スピード）を検討</B>します。アクションスペースは大きく分けて、<B>「Continuous」と「Discrete」の2つ</B>があります。

「Continuous」は名称の通り、以下のように連続のアクションスペースとなります。左右のsteering angleの最大角度と、最小・最大のスピードを決定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/47ec84cc-1039-c4db-f455-19049c0a7d94.png)

「Discrete」も名称の通り、以下のような離散のアクションスペースとなります。角度とスピードの組み合わせを選択します。<B>最大で30個の組み合わせを選択</B>することができます。<B>角度とスピードの組み合わせもさることながら、何個のアクションスペースを設定するのかという点もポイント</B>となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/18034622-0c60-0315-6b5c-27ee78735cf6.png)

「Continuous」は取りうる値の範囲が大きいため、最適な値を探索できる可能性は高まるものの、収束は遅くなると考えられます。「Discrete」も取りうる値の組み合わせが多いほど最適なアクションスペースを探索できる可能性は高くなりますが、収束は遅くなり、アクションスペースの組み合わせが少ないほど収束は早くなると考えられますが、その分最適な値を探索できる可能性は低くなるため、<B>どのようなアクションスペースにすべきかはよく検討する</B>必要があります。

## 【検討③】報酬関数
次に検討すべきは、上記で<B>検討したレースラインおよびアクションスペースで走行させるための報酬関数を設計する</B>ことです。以下のURLにあるように、様々な入力パラメータがあるので、その中からどのパラメータを活用して、どのような報酬関数を設計するのかを考えてみましょう。

https://docs.aws.amazon.com/ja_jp/deepracer/latest/developerguide/deepracer-reward-function-input.html

## 【検討④】ハイパーパラメータ
上記3点が重要なポイントとなりますが、<B>学習の中ではハイパーパラメータを調整して、チューニングを実施していく必要</B>があります。例えば、エントロピーの値を大きくすれば、走りの幅を広げることはできますが、その分収束までの時間が長くなります。学習の段階や状況によっても選択する内容は変わってくるかと思いますので、試行錯誤をしながら学習を実施してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/92a6b2be-f39e-a85e-3bc1-65159d69dc59.png)


## 【検討⑤】その他
その他に考えられる要素を以下に箇条書きします。
・Training algorithm
→PPOとSACの2つのアルゴリズムがあります。SACは「Continuous」のアクションスペースでしか活用することはできませんが、それぞれのアルゴリズムによる違いがありますので、検討が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/141c4a03-c96b-b531-cb20-e34c70f65c96.png)

・カメラ／センサー
カメラも「Camera（単一）」と「Stereo camera（複数）」を選択することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/a07ac1fd-42fe-9d49-37a4-d0246e312dc9.png)

## まとめ
バーチャルレースで上位を目指すためには、まずは開催されるコースで<B>どのような走行ラインを描くのかを検討することが重要</B>です。
次に<B>走行ラインに従って、アクションスペースを決定することが重要</B>となります。「Continuous」を選択するのか、「Discrete」を選択するのか。また、「Continuous」であれば最小・最大のスピード、左右の角度幅を検討します。「Discrete」であれば、そのコースの特性を考えながら、いくつのアクションスペースの活用するのか、角度とスピードの組み合わせをどうするかを検討します。
その上で、検討した走行ライン、アクションスペースで走らせるために、どのような報酬関数を設計するのか検討します。
学習を実施していく中では、<B>ハイパーパラメータのチューニングを実施しながら学習をすることが重要</B>です。自身の学習結果のログも確認しながら、調整していきましょう。
また、他のレーサーの走りを確認しながら、どのような走行ラインとなっているかを確認しつつ、思考錯誤しながら世界上位を目指しましょう。

## 仲間募集

NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary>1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)</summary>

クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary>2. データサイエンス領域（データサイエンティスト／データアナリスト）</summary>

データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary>3.お客様のAI活用の成功を推進するAIサクセスマネージャー</summary>

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary>4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》</summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>


## ソリューション紹介

<details><summary> Trusted Data Foundationについて</summary><div>

～データ資産を分析活用するための環境をオールインワンで提供するソリューション～
https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</div></details>


<details><summary> TDF-AM（Trusted Data FoundationⓇ - Analytics Managed Service）について</summary><div>

～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～
https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</div></details>


<details><summary>NTTデータとTableauについて </summary><div>

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://enterprise-aiiot.nttdata.com/service/tableau

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://enterprise-aiiot.nttdata.com/service/informatica

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

</div></details>