第3回 強化学習を簡単に調整できるDeepRacerのコンソールとシミュレーター:AWS DeepRacer入門(1/2 ページ)
DeepRacerのコンソールとシミュレーション環境の内容について解説。また、コンソール上で設定できる強化学習の各ハイパーパラメーターについても説明する。ディープラーニングや強化学習の初学者にもってこいの学習コンテンツだ。
AWS DeepRacerは、自律走行を行うミニカーである(前々回詳しく説明した)。その走行エンジンの作成には、ディープラーニングの「強化学習」と呼ばれる手法が用いられる(前回詳しく説明した)。強化学習による「学習」や「評価」は、シミュレーション環境(=シミュレーター)上で行えるようになっている(※よって、機械学習を学ぶ目的だけであれば、DeepRacerの実機を用意する必要はない)。
そのシミュレーター(Simulator)とは、仮想的な車(DeepRacerの車体)を強化学習のエージェントとして走らせられる仮想的なレーシング会場(=バーチャルサーキット)と、その実行環境のことである(図1)。
また、車の走り方、つまり強化学習のハイパーパラメーター(=学習を調整するための各種数値)などは、AWSコンソール(=各種操作をするためのWebページ)上で設定&調整できるようになっている(図2)。
実際にコンソールでハイパーパラメーターなどを設定してシミュレーター上で学習・評価を行うと、その走行結果(=エピソード)が経験データとして蓄積されていく。そのデータを基に強化学習が行われて、走行エンジン(機械学習モデル)がより賢くなっていき、学習を繰り返すことで次第にうまくバーチャルサーキットを走れるようになる。さらには、学習済みモデルをUSBメモリ経由で実機の車にコピーすることで、物理的なレーシング会場(=Summitサーキットリーグ)でも車を自動走行させられる仕組みとなっている。
本稿では、そんなDeepRacerのシミュレーターやコンソールの内容について、AWS Summit Tokyo 2019で開かれた「DeepRacerワークショップ」の取材に基づき、解説する。本稿の内容は、ディープラーニングおよびその強化学習で主にどのようなハイパーパラメーターが調整できるかをざっくりと知るのにちょうどよい内容だと思う。ディープラーニングの初心者にもぜひ読んでみてほしい。
DeepRacerのシミュレーター
シミュレーターが必要な理由
DeepRacerは、何度も説明している通り、学習手法として強化学習を採用している。しかし、AIロボットカーの走行エンジンの学習方法としては、教師あり学習が使われることも多い。
前回も説明したように教師あり学習とは、データの中に正解となる教師ラベルを用意しておく学習方法である。AIロボットカーにおける教師ラベルとは、熟練ドライバーによるカメラ画像のことである。AIロボットカーをラジコン操作して、その走行を正解としてモデルに学習させるわけである(図3の右)。
一方、DeepRacerの強化学習の場合は、行動に対するコース(環境)からのフィードバック(報酬や状態)を受けて自動的に学習していくことになる(図3の左)。その一連の仕組みを提供しているのがシミュレーターなのである。
では、そのシミュレーターとは、どのようなもので構成されているのだろうか?
シミュレーターの構成内容
シミュレーターの構成内容(アーキテクチャ)については第1回でも簡単に紹介したが、今回説明する内容の前提知識としてあらためて詳しく説明しておこう。
DeepRacerでの強化学習は、機械学習の構築・トレーニング・デプロイという一連の作業を効率的に進めるためのサービスである「Amazon SageMaker」を用いて行われる。
また、DeepRacerでのシミュレーションは、知能ロボットアプリケーションの開発・テスト・デプロイという一連の作業を効率的に進めるためのサービスである「AWS RoboMaker」を用いて行われる。
AWSのDeepRacerコンソールでリソースの作成を行うと、SageMakerとRoboMakerのコンテナが、DeepRacer用のAmazon VPC(Virtual Private Cloud:仮想プライベートクラウド)の中で立ち上げられてリンクする。同時に、
- ストレージサービスである「Amazon S3」のバケット
- ビデオストリームサービスである「Amazon Kinesis Video Streams」
- ログやメトリクスの収集&可視化サービスである「Amazon CloudWatch」
が作成される。ちなみに、VPCスタック(SageMaker/RoboMaker)と、S3/Kinesis Video Streams/CloudWatch間の接続は、
を介して行われる。
シミュレーターの一連の流れ
アーキテクチャ内の一連の流れを示すと、まず、RoboMakerでシミュレーションを行った結果を使って、SageMakerでモデルのトレーニングを行っていく。
その際のログやメトリクス(=結果の数値など)はCloudWatchに格納されて、その一部である累積報酬の結果はAWSコンソール上にグラフとして可視化される。
また、車の走行の様子がカメラ目線の映像で、Kinesis Video StreamsによりAWSコンソール上に表示される(動画1や、前掲の図1がまさにその例)。
学習済みのモデルは、S3バケットの中に格納される。
動画1 メトリクスのグラフ表示と、車の走行映像表示の例【第1回の動画2の再掲】
以上がシミュレーターの概要である。次にDeepRacerのコンソールについて説明しよう。
AWSにおけるDeepRacerのコンソール
まずは、全体的な概要をつかむため、コンソールの使い方の流れを紹介する。当然ではあるが、前述の「シミュレーター」と説明が被る部分はあるのでご了承いただきたい。
DeepRacerコンソールの使い方の流れ
図5の1〜5の流れで、コンソールを使っていく。
1番目に、強化学習モデルの作成を開始すると、2番目のステップに移行する。
2番目に、モデルの学習方法の設定&調整として主に、
- 報酬関数: 前回説明したように強化学習の要。Pythonコードでロジックを記述
- ハイパーパラメーター: 強化学習の学習方法を設定&調整するための各種数値
- 行動空間: 車のステアリング角度やスピードなどの数値
などを独自に指定する。最後に、学習を停止する条件として、学習し続けるのを避けるための最大学習時間(分単位で、5〜480分)を指定して、3番目のステップに移行する。
3番目に、モデルの学習(トレーニング)を開始する。トレーニング実行中は、前述のとおり、学習中のシミュレーション走行の様子がビデオストリーム映像で表示され、累積報酬の結果がグラフに表示される。学習は、先ほど設定した最大学習時間内で完了する(※学習済みモデルは、前述のとおり、S3バケットに格納される)。学習が完了したら、4番目のステップが実行可能になる。
4番目に、モデルの性能評価を開始する。あらためて学習済みモデルが、コースを正確に速く走れるかを検証するわけだ。この際にも走行シミュレーション映像が表示されるだけでなく、評価結果としてコースの走行タイムと完走状況といった情報も表示される。
評価でコースを完走できて、走行タイムも良ければ、
- バーチャルサーキットのオンラインリーグやSummitサーキットリーグで実運用するか
- 学習済みモデルをダウンロードして、USBメモリ経由でAWS DeepRacerカー(実機)に入れて走行テストするか
してみるとよい。
コースを完走できなかったり、走行タイムが悪かったり、シミュレーションではうまくいくが実機ではうまく走行できなかったりした場合は、5番目のステップに移行する。
5番目に、完走とタイム向上を目指して、モデルの調整を行う。具体的にはモデルをクローン(複製)することで「強化学習モデルの調整」を開始し、2番目のステップである「学習方法の設定&調整」から、再び一連の流れを繰り返す。ここで報酬関数を変更したり、ハイパーパラメーターを再調整したりするのが鍵であり、どう調整するかが腕の見せ所である。
このようにしてコンソールを使っていくわけだが、実際の活用法(次回解説)に入る前に、特に重要な「2番目のステップ:学習方法の設定&調整」における、
- 行動空間の設定
- 報酬関数の実装
- ハイパーパラメーターの設定&調整
の3点について、より具体的な内容を見ておこう。
Copyright© Digital Advantage Corp. All Rights Reserved.