AWS DeepRacer 日記 2022/2 (ハイパラチューニングで一定の効果が見られた！)

AWS DeepRacer 日記 2022/2

2021年10月から本格的にDeepRacerリーグに参加し始めました。
今回はDeepRacer日記第4回です。
筆者の試行錯誤を記載していきます。
参考になればうれしいです。

※DeepRacer参加方法については下記にまとめています

https://qiita.com/toma_shohei/items/a79abd8d71a2e284273f

## 1/31　（前回記事参照）

https://qiita.com/toma_shohei/items/0c2f5617cb9ef66a2dbb

前回の最後でエラー解消したので、ハイパラチューニング再開。
安定志向のハイパーパラメータで試していた。

``` A:安定志向のパラメータ
コース：VivalasSpeedway
バッチサイズ　64→128
エポック数　3→10
エピソード数　20→40（推奨される値は10、20 および 40 ）
MinimumSpeed 0.5→1
Maximu speed 1→2
学習時間 120分
```

※ハイパラの意味やチューニング事例については下記の記事にまとめています。

https://qiita.com/toma_shohei/items/54367c179ac4c927f7aa

## 2/7
前回学習結果
順位：177/733
![スクリーンショット 2022-03-04 234426.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/f3449666-b05b-d0d3-b493-12f07e84e267.jpeg)

ジグザグが明らかに減った。

今月からコースが変わったので再度同じ報酬関数とハイパーパラメータで試す

``` A:安定志向のパラメータ
コース：Summit Speedway
バッチサイズ　64→128
エポック数　3→10
エピソード数　20→40（推奨される値は10、20 および 40 ）
MinimumSpeed 0.5→1
Maximu speed 1→2
学習時間 120分
```

学習効率が高いとされるハイパーパラメータも試す

``` A:学習効率が高いパラメータ
コース：Summit Speedway
バッチサイズ　64→32
エポック数　3→5
LearningRate　0.0003→0.001
MinimumSpeed 0.5→1
Maximu speed 1→3
学習時間 120分
```

## 2/14
学習効率が高いとされるハイパーパラメータの方が良い結果となった。
（同時に学習してしまうと、良かったタイムの方しか見れない。。）
![スクリーンショット 2022-02-14 220615.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/0ca0eab5-9dd0-d293-e263-ec1c8fa5a159.jpeg)


順位：67/550
タイムは00:50.262
Off-track 4

コースに急カーブがなかったこともあり、Off-trackは4回。
決まったカーブで1周目と2週目に2回ずつのみコースアウトとなっていた。
![スクリーンショット 2022-03-04 235904.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/22250253-755d-5f6d-4351-300381e72033.jpeg)


安定志向のハイパーパラメータの方は予想通り緩やかに右肩上がりを示した。
![スクリーンショット 2022-02-14 220656.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/8d798a2b-6530-aa6e-59a5-154d36f63552.jpeg)


学習効率が高いとされるハイパーパラメータも同様に報酬関数は右肩上がり。
![スクリーンショット 2022-02-14 220728.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/01a8d378-5014-241c-71e7-bee9cd991531.jpeg)


速いスピードで安定志向のパラメータと同様の完走率（Complettion）であることから
こちらの方がタイムは良い結果となったと推測できる。
しかし曲がり切れていないことが原因のコースアウトは多かった。
ジグザグはあまりない印象。
まだ右肩上がりのRewardであるため、同様のハイパーパラメータで学習を続けてみる
最低スピードと最高スピードを変える

``` A:学習効率が高いパラメータ（継続）
コース：Summit Speedway
バッチサイズ　64→32
エポック数　10→5
LearningRate　0.0003→0.001
MinimumSpeed 0.5
Maximu speed 1→4
学習時間 120分
```

## 2/21
タイムは01:13.490
最低スピードを下げたことで、遅く走っている場面が多くなっていた
最高スピードを上げたが、2m/s以上出している場面はほぼなかった。
コースアウトは3周で1回だけだった
ジグザグがかなり目立つようになった。

完走率、報酬も前回より少ない。
![スクリーンショット 2022-03-03 085519.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/2410ee35-2b71-a673-951a-04ffe3d09033.jpeg)


2/7のモデルからクローンして最大スピードだけあげて再挑戦する
今回は学習時間短めにするため、エポック数は3に下げてみる

``` A:学習効率が高いパラメータで学習時間短め
コース：Summit Speedway
バッチサイズ　64→32
エポック数　3→3
LearningRate　0.0003→0.001
MinimumSpeed 1
Maximu speed 1→4
学習時間 30分
```

今月は学習はここまでにして、ログ分析手法を確立させる方向に舵をきる。

Sagemakerでは下記の通りにできることは確認できているが、お金がかかる。

https://qiita.com/dnp-ayako/items/d4e1378bef45cd0994dd

無料で使えるGoogleコラボでログ分析できないか挑戦する

※Googleコラボとは無料でインストール不要で使えるJupyterNotebookです。

https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja

■ログ分析手法確立への試行錯誤メモ（手法確立出来たら別途纏めます）
・GoogleコラボをGoogleドライブにマウントさせてもJupyterNotebook（ipynb）は開けない
→ファイルからノードブックを開くでローカルにあるipynbファイルを指定すれば開けた。
・boto3が無いと怒られるのでpip install boto3でインストールする
・from log_analysisが無いと怒られるので、下記のディレクトリにcdする
/content/drive/MyDrive/aws-deepracer-workshops-master/log-analysis

models = dr_client.list_models(ModelType="REINFORCEMENT_LEARNING",MaxResults=100)["Models"]
で
NoCredentialsError
となる

LOGはGoogleDriveにアップロードしているので、IAM権限は不要なはず。
根本から見直す必要ありそう。

## 2/28
タイムは01:11.127
最大スピードを最大の4にするとまだまだコースアウトが多く、
ベストなタイムを出すことはできない。
Traning結果のグラフは緩やかな右肩上がり。
まだ学習時間足りていなかった可能性もある。

![スクリーンショット 2022-03-05 001107.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/311339/cb8632e0-e401-9162-3739-c81ddde2aeb0.jpeg)



## まとめ
今月はハイパラの理解が深まりました。
安定志向のパラメータを使うとジグザグがかなり改善されたり、
カーブの少ないコースだからかもですが、学習効率の高いパラメータを使うとさらに良いタイムが出ることが分かりました。
順位も上々でしたので、結果としても良かったです。
学習継続しても良い結果が出なかったことは課題ですね。。

もう少しちゃんと結果分析できた方が良いので、
来月はログ分析力向上を目標に頑張っていこうと思います！