「最も効率が良い方法」ベストプラクティスの共有

俺のベストプラクティス

機械学習の知識ゼロで挑む AWS DeepRacer【初心者向け】

更新日:

エンジニアのためのレース、AWS DeepRacerが開幕。

全くの素人がどこまで戦えるのか
挑戦の過程と、これから始める方に役立つ情報を共有します。

 

Day1 ゼロから始めて初レースまで

2019年6月のAWS SUMMITに向けて情報収集していたところ、

見つけてしまいました。メチャ面白そうなものを。

 

オンラインで参加できるバーチャルレースと呼ばれるものがあり、

第一回のLondon Loopが4月29日~5月31日まで開催中です。

 

なんてこった!

あと一週間も無いとは。。。

 

もっと早く知りたかったですが、終わる前に知ることが出来たと気持ちを切り替えて速攻で参加してみました。

 

機械学習が楽しみながら学習ができるということで、

知識ゼロからのスタートは無謀かもしれませんが、当たって砕けろの精神で。

たとえ砕けても何かしらの学びや発見があるはず!

 

 

初レース参加までの手順は、

ざっくりと下記3点

 

1.AWSコンソールのアカウント登録しサインイン(アカウントが無い場合)

2.強化学習に使うモデルを作成し、1回、強化学習させる

3.強化学習したモデルを仮想トラックで試走し、本番London Loopに参戦

 

AWSの下記資料を参考に手順を進めました。

https://docs.aws.amazon.com/ja_jp/deepracer/latest/developerguide/deepracer-sign-up-aws-account.html

 

 

後になって分かった注意点

後になって分かったことが幾つかありましたので参考までに共有します。

事前に知っておくと、もっとDeepRacerを楽しめると思います。

 

後になって分かった注意点①

上記手順2の強化学習を開始すると課金が発生します。

 

詳細は手順を進める際に表示されるメッセージに書かれていますが、

 

 

小さい字で書かれていて読まないですよね(笑)

ざっくりと強化学習1hあたり3ドル(US)+α費用が発生します。

 

初めてAWSアカウントを作った場合は「無料枠」があるのですが、

2時間程度、強化学習した後、「サービス」→「請求」を確認したところ、

 

 

 

このように$7.82=約860円程度となっていました。

あっという間に幾つかのサービスの「無料枠」を使い切ったようです。

 

最先端の機械学習ができることを考えたら安いのかもですが、

なかなか痛いですね(笑)

 

 

後になって分かった注意点②

最初のモデル作成時の「報酬関数」と「ハイパーパラメータ」は
デフォルト値でOKです。

 

最初は機械学習をしてコースを完走できることを目指したほうが良いと思います。

とくに「ハイパーパラメータ」は当面、上位争いに加わるまではノータッチでOKです。

 

 

 

後になって分かった注意点③

車載カメラの映像がストップした場合はブラウザの再読み込み+再生ボタンで表示される

 

 

筆者の場合、車載カメラ映像の下の再生ボタンを押したり、
バーを動かしてみたりしても映像が全く表示されずショボーンとなって諦めていましたが、
一旦他のページに飛んだ後、同じページに戻ってきたときに時に映像が表示されて気が付きました。

 

 

後になって分かった注意点④

強化学習の様子を仮想コースの上空から見たい場合は、

「サービス」→「AWS RoboMaker」をクリック
「シミュレーションジョブ」の中の該当の「ID」のリンクをクリック
「GAZEBO」をクリックすると別画面が開くので、右上のほうのオレンジ色のアイコンをクリックし、
上空からのモードに変更

 

 

 

やはり車載カメラの映像に加えて、上空からも見たいですよね。

強化中のマイカーが健気に学習している様子を観察しているだけでも楽しいです。

 

 

初の機械学習と初レースの結果について

そんなわけで、試行錯誤しながらなんとか初の強化学習を終えて、

初レースに参戦してみました。ワクワクしますね。

 

■Action space(デフォルト)
Maximum steering angle: 30
Steering angle granularity: 5
Maximum speed: 1
Speed granularity: 2

 

■報酬関数 Reward function(デフォルト)
def reward_function(params):
”’
Example of rewarding the agent to follow center line
”’# Read input parameters
track_width = params[‘track_width’]
distance_from_center = params[‘distance_from_center’]# Calculate 3 markers that are at varying distances away from the center line
marker_1 = 0.1 * track_width
marker_2 = 0.25 * track_width
marker_3 = 0.5 * track_width    # Give higher reward if the car is closer to center line and vice versa
if distance_from_center <= marker_1:
reward = 1.0
elif distance_from_center <= marker_2:
reward = 0.5
elif distance_from_center <= marker_3:
reward = 0.1
else:
reward = 1e-3 # likely crashed/ close to off trackreturn float(reward)

 

アクションリストと報酬関数とハイパーパラメータはデフォルトで、

2時間の強化学習の結果、報酬グラフは下記の結果になりました。

 

※最初は1時間でよいかもです。追加が必要ならクローンを作成し追加学習が可能です。

 

 

割と順調に伸びて・・・いるのでしょうか(笑)

変動が激しいのが気になります。調子が良い時と悪い時の差が激しいということでしょうかね。

 

 

続いて本番レース前の評価の結果は・・・

 

 

3週とも100%になっているのでなんとかコースを完走できたようです。ほっ。

 

 

ということで、ついに本番London Loopに参戦!

 

 

結果は・・・

 

 

ラップタイムは1分21秒235 で400位台の結果!

 

本番前の評価だともう少し早いタイムが出ていましたが、

運の要素もありそうですね。

 

 

明日からは報酬関数を調整してタイムを上げていきたいと思います。

 

 

最後に・・・

 

後になって分かった注意点⑤

レーサー名は後から変更ができないのでご注意下さい

 

安易な名前を付けてしまって後悔。。

AWSさん、変更できるようにしてください(泣)

 

Day2 機械学習の知識ゼロで挑む AWS DeepRacer【2日目の結果】

2日目の結果はこちらからどうぞ

 

  • B!