AWS DeepRacer Virtual Circuit 6月の優勝者Fumiakiに聞いてみた

# はじめに
AWS DeepRacerリーグの6月の仮想サーキットで登場した新たなコースは、社内でも勉強会をはじめとして多くの話題に挙がりました。特に

- トレーニング用トラック（Kumo Torakku Training）が、なかなか完走できない問題
- レース用トラック（KumoTorakku）は形が異なる問題

については、闊達な議論が飛び交いました。

この癖のある6月のバーチャルサーキットで1位を獲得することができたFumiakiの走行記録とヒアリングした学習方針を公開します。

今回も分析にはAWS DeepRacerワークショップのGitHubで公開されているlog-analysisノートブックを使いました。
https://github.com/aws-samples/aws-deepracer-workshops/
ログ分析ツールの導入方法や使い方は
[AWS DeepRacerのログ分析ツールを使ってみた](https://qiita.com/dnp-ayako/items/d4e1378bef45cd0994dd)
を参考にしてください。

**注意**

- 以下の内容は 2019 年 7 月 4 日時点のサンプルノートブックを対象にしています。その他のバージョンのノートブックでは利用できない可能性があります。
- ログの分析は、6月の仮想サーキットで1位を獲得したデータ、モデルを対象にしています。
- 本記事は、あくまで個人の見解に基づいて記載しております。

# トレーニングモデルの分析結果

### Plot rewards per Iteration
![plotreward.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426326/74525af7-acd8-8a97-ce91-7bb5044703fb.png)
1stepあたりの最大報酬は1です。

### Reward distribution for all actions
![rewarddistribution.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426326/acf8a2e6-aa49-096d-9ae7-019ed4243b23.png)


### Probability distribution on decisions (actions)
![Probability distribution.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426326/10aadbf1-9660-4da4-16ad-651367b7e976.png)

# 仮想サーキットの走行記録

仮想サーキットで送信した記録はCloudWatchLogsの
/aws/deepracer/leaderboard/SimulationJobs/以下に走行後にログとして残されています。

### Evaluation Run Analysis
![eval_run.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426326/af6b1bd1-0a2d-80d5-e218-2871dedd606b.png)

全エピソード中、完走したのは4回目の１回だけでした。
結果中のLaptimeは10.11秒とありますが分析では最初のステップがタイムとして含まれていないため、公式記録は10.312秒です。

また、分析用にトレーニングトラック用を利用しているのでコースアウトしているように見えますが、実際のレース用トラックは以下の図（右）のように急なヘアピン、シケインはありません。

![eval_truck.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426326/e52f1966-ab02-f407-1547-9ca69d916c98.png)


完走したエピソードのstep数は149です。
![completelap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426326/d2eee6b8-fd62-38a9-096b-4934544a4d8c.png)


# 感想と考察
以下はあくまで個人的な見解となります。

Reward distribution for all actionsを見ると、トラック上のカーブやシケインに沿うのではなくショートカットコースに沿っていることがわかります。（Fumiakiは5月のLondonLoopでも同じ手法をとっていました）
トレーニングトラックで左曲がりになる以下のポイントは、レーストラックでは右曲がりになっています。
![kansou1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426326/aa13ce81-6b36-d866-7dec-633d9af56c93.png)

トレーニング中においてシミュレーションでは、左に曲がるコース映像のハズです。
このポイントだけあえて**コースラインとは逆の方向、右に曲がれる学習をし、且つ他のポイントではコース通りに曲がれるような学習をしている**ことがわかりました。
これらは仮想サーキットの完走率（1/5）にも現れており、コースアウトしやすいポイントにもなっています。
このことから、仮想サーキットへはこの可能性を信じておそらく何度も挑戦したのだと思います。

# 学習方針
ログやデータから読み取れないところは、直接Fumiakiに聞いてみました。

### 1. トレーニング用のKumoTorakkuを完走するには？
まずは完走させることを目的に学習した後で、速いスロットルが選ばれやすくなるように追加学習をしました。
具体的にはKumo Torakkuをメインに他のトラックを少し組み入れてトレーニングしました。
正直、これ以外にもいろいろと試行錯誤を繰り返しているので、何が効いているのか分からない部分はありますが。。

### 2. トレーニングとレース（仮想サーキット）トラックの違いについて
トレーニングトラックよりレーストラックの方が走りやすいので、トレーニングトラックが殆ど走れなくてもレース用のトラックで完走出来たりするケースもありました。
リーダーズボードのEvaluationを見るとレースは全5回走行で、Kumo Torakkuはそのうち1回完走すれば良いので、奇跡の1周に頼りやすいと思いました。
（※5月のLondonLoopでは3回以上の完走が記録として必須でした。）

また、トレーニングのトラックではもっと完走率の高く、速いモデルができていたのですが、それは仮想サーキットコースでは一度も完走できませんでした。
トレーニングトラックに特化し過ぎるのも注意が必要かもしれません。

# 最後に
今月のバーチャルレース当初はそれぞれの課題を個人で抱えていましたが、今回のトラックが比較的難しかったことが共通の課題となり、勉強会以外でも、職場・部署の壁を越えてより積極的にコミュニケーションをとり、議論を深めあう機会になりました。
エンジニア同士お互いに敬意を持って、わからないことを聞いてみる、知っていることを教える、ということも良かったと思います。

Congratulations! Fumiaki!