はじめに
新人研修にてAWS DeepRacer研修が行われました。
DeepRacerとは、Amazonが提供するクラウドサービスAWS上で作成した強化学習のモデルを使用し、シミュレータやレーシングカーを使用してレースを行うサービスです。
二日間に亘って研修が行われ、今回の研修で初めて、DeepRacerを体験して強化学習に触れることができました。
概要
AWS DeepRacer研修では、3種類のコースがレース会場に用意されていました。
仮想環境でそれぞれのコースに適応するための学習を行い、シミュレーションを繰り返すことでよりよいモデルを構築していきます。
コースを速く、安定的に走行させるためにどのようなパラメータ設定が適切か、学習させるコースについても様々な特徴を持つコースから検討を行います。
その後、実環境での走行練習を経て出た課題を、プログラムの変更や学習させるコースの選択によってさらなる改善を行っていきます。
最終日の二日目は、大会形式でコース一周のタイムを競い合いました。
学習のさせ方と工夫した点
まず、仮想環境でシミュレーションを行っていきます。
最初のシミュレーションでは、「カーブでのコースアウトを避け、最後まで走り切る」という目標を立て、目標を実現するために以下のように設定を行いました。
- 報酬関数:Time trial – follow the center line(既定値)
中央線に近い走行をしたときに高い報酬を与え、中央線から離れるほど報酬が少なくなる。 - ハンドルを切る角度:左右それぞれ30度
- スピード:下限1m/s、上限2m/s
暴走を防ぐため、速度差をできるだけ抑えて設定
仮想環境でのシミュレーションでは、コース一周のタイムは最初約30秒でしたが、1時間の学習を3回ほど繰り返すと、タイムは約15秒にまで短縮されていきました。
実環境で走らせてみた
今度は、学習させたモデルを実際のコースで走らせてみます。
コースはRL Speedway、急なカーブとゆるやかなカーブを含んだコースです。
走らせた結果、曲がり方は中心の線に沿うように曲がり、直線では中央線に沿ってジグザグにぶれが生じている印象がありました。
また、課題として以下の2点があげられました。
- ゆるやかなカーブでコースから外れてしまう(同じ個所)
- 直線では、スピードを出したい
特に一つ目の緩やかなカーブのコースアウトは仮想環境では、見られなかった課題でした。
学習時間が限られていたため、コースアウトの回数が少ないモデルのクローンを作成し、各設定を変更したモデルをいくつか作成し、より優れたものを選定することとしました。
課題を受けて変更した点は以下の通りです。
- ゆるやかなカーブでコースから外れてしまう(同じ個所)
- ゆるやかなカーブを持つコースを複数学習させ、モデルの汎化を試みた
また、直線でスピードを出すにはスピードの変更が必要でしたが、コースアウトにつながるため、リモコンの操作で直線走行時にスピードの調整を行うことにしました。
本番での走行
本番の走行では、RL Speedwayのコースで走行を行いました。
課題としていたゆるやかなカーブでのコースアウトは、やはり曲がり切れず、課題として残りました。
コースアウトした実機をコース上に戻す役割のメンバーを本番ではその位置に配置し、コースアウトしたら即復帰が行えるようにしていました。
指導員の方の話によると、実環境の走行は仮想環境にできるだけ近い状態にする方が好ましく、カーブの位置に人が立っていると、学習の結果を上手く走行に反映できなくなってしまい、良くないということでした。
しかし、それ以外の走行はシミュレーション通りスムーズに走ることができ、シミュレーションのタイムと同じ15秒で一周することができました。
終わりに
研修ではモデルを以下の工程を繰り返して構築していきました。
- 強化学習を行うための報酬関数、各パラメータの設定
- シミュレータを利用した仮想環境でのモデルの走行
- 実環境での実機の走行
- 仮想環境と実環境のギャップをなくすための改善
特に4番は学習させたことが想定通りに生かせていない、全く違う挙動をしているなど、研修中で一番苦労した点でもありました。
これらの経験からAWS DeepRacer研修に参加して、強化学習においては以下の3点が特に大切だと実感しました。
-
実機はカメラから得た情報を入力としていたため、カメラに映るものは、学習した環境に近い映像の方がよい。
人が映り込むと障害物は学習させていないため、走行を妨げる可能性がある。 -
仮想環境と実環境では床とタイヤの摩擦などの物理的要因に違いがあるため、それらを考慮する。
実環境ではリモコン操作でスピードの調整をあらかじめ行った。 -
できるだけ実環境を意識した学習をさせる。
走行するコースの特徴に合わせ、ハンドルを切る角度が小さいほうが良いのか考え、それに伴ってスピードの設定を行い、学習させるコースを選定した。
AIは学習のさせ方によって、与えられた課題に特化したり、様々課題に順応できるよう汎化したりと違いが出てくるので、最終的に何をクリアさせたいのか目的を明らかにしておく必要があると感じました。
今回の研修でAIが最初は克服できなかった課題を徐々にクリアして成長していく過程に面白さを感じることができ、とても貴重な体験になりました!