他チームとの争点とは①ーAWS DeepRacer-
世界一になることを目標にチームを発足してから、はや2ヶ月。
DeepRacerで優勝するために僕が担当するReinforcement Learning(強化学習)チームは、「コースを外れずに最大限早く走れるようにする」ことをミッションに動いてきた。
現時点では、DeepRacerで他チームと差がうまれる点を把握し、車体への学習を進めている。自動運転に興味がある人はさらっと読んでほしい。
- 他チームと差がうまれる点
「コースを外れずに最大限早く走れるようにする」を達成するために、まずは現状把握に取り組んでいた。
具体的には、①DeepRacerに参加するチームが操作できるものは何か、②他のチームと差がつくのはどこか、の2点を把握することに努めた。
①DeepRacerに参加するチームが操作できるものは何か
実は本大会で我々が操作できるものは限られている。一般的に自動運転に必要なソフトウェアは、
- 画像認識(周囲の把握)
- 強化学習(次に取る行動を決定する)
- 深層学習(行動の方策(戦略)を更新する)
の3つが必要である。
本大会で操作できるのは、2と3である。AWSが大会を主催する目的を考えれば妥当な結果かもしれない。
2と3は具体的に何をするのか。
②他のチームと差がつくのはどこか
ここから他のチームと差がつく内容になる。
2に関しては、報酬関数の組み方が他チームとの差が生まれる点になると想定している。いや、報酬関数ってなんだよっていう方もいらっしゃると思うので、簡単に報酬関数含め強化学習の仕組みを説明する。
強化学習とは図1のように、機械学習の1つに分類されており、教師あり学習と教師なし学習に並ぶ手法である。教師あり学習、教師なし学習は基本的に人間は目的変数(方程式でいうy)に影響を及ぼす独立変数(方程式でいうx)を仮説ベースで考え、モデルに投入する。一方で、強化学習は機械が目的変数に影響を及ぼす独立変数を特定し、優先順位を付けていく。
強化学習の仕組みを説明するときに、図2が登場する。それぞれの単語について自動運転で例を挙げると下記のようになる。
- エージェント⇒車体
- 環境⇒運転する人が見ている世界
- 行動⇒アクセルを踏む、ブレーキを踏む、ハンドルを切る
- 状態⇒環境をデータ化したもの
- 報酬⇒行動したことによって得た環境に点数を付けたもの
エージェントが環境(St)を把握し、行動をとることで、世界が新しい環境(St+1)になり、新しい環境が目的に対してどの程度評価できるかを報酬としてエージェントに与える。これを繰り返すことで、エージェントは目的を達するためにどんな行動をとるべきかを学習していくのである。
強化学習の仕組みをざーーーーっくりと理解した上で本論に戻ると、本大会で他チームと差が生まれる点の1つは、報酬関数の組み方である。どのような環境になったら負の報酬を与えるのか、どのように報酬の傾斜をつけるのか、これらを設計しコードに落とし込むことができるかどうかが学習の精度・スピードに差を生むことになる。
ちなみに、DeepRacerで与えられている報酬関数のパラメータは図2、3の通りである。
これらを調整するのがRLチームの最も力をいれることであり、他チームと差が生まれる点である。
この調整を試行錯誤するには開発シュミレータ環境が必要だが、実はまだAWSはDeepRacerというサービスをローンチできておらず、試行錯誤できない状態である。。。(走りながら大会開催を発表するあたりはさすがAmazon)
とはいえ、いつローンチされるかわからないものを待っていても時間が無駄なため、図4のような開発シュミレータ環境を自分たちで構築した。
図にあるラジコンにコースを走らせ(無論、最初はコースから外れて明後日の方向に進んでしまう)、最終的に白線のラインを外れずにコースを走り切る報酬関数の組み方を試行錯誤している。
そして、序盤で提示した下記の3に関して。
- 画像認識(周囲の把握)
- 強化学習(次に取る行動を決定する)
- 深層学習(行動の方策(戦略)を更新する)
3では、深層学習のハイパーパラメータの調整とアルゴリズムのカスタマイズで他チームと差がつくと想定している。
3については次の記事で書きます。
(深層学習の説明の仕方を考えていたら疲れてきたので。。。)