share facebook facebook twitter menu hatena pocket slack

2019.05.21 TUE

DeepRacerが反抗期を迎えた件について(WIP)

武川 努

WRITTEN BY 武川 努

はじめに

DeepRacer Preview申請が通ったので試してます。
当初順調だったのですが、不可解な現象に遭遇していてその情報の共有となります。
残念ながら、現時点で原因わかっていないのであくまで現象の共有のみとなります。

ここではDeepRacerの入門的な話はとばしてます。触る分にはそんなに難しくないです。
DeepRacerの説明はAWSの開発者ガイド をみるとよいです。ただ、preview版なので記述が実際に追いついていない部分も多少あります。

書いている人について

  • AWSの基本はわかっている
  • 機械学習については コーセラでまなんだが実践経験はなし
  • Deep learning、reinforcement learning の知識はなし
  • pythonは読めるがたいして書けない

経緯について

モデル作成 -> 3時間トレーニング -> うまく走る -> モデルクローン -> 5時間トレーニング -> 反抗期

という流れでした。以下順に説明していきます。

作成モデルについて

アクションと報酬関数を定義すればシミュレーション可能です。

報酬関数

スピードが欲しかったのでコース上存在すれば1でそれにスピードを足した数を報酬としています

def reward_function(params):

    reward = 1e-3  # likely crashed/ close to off track    

    on_track = params['all_wheels_on_track']
    speed = params['speed']
    steering_angle = params['steering_angle']

    if on_track :
        reward = 1.0 + speed

    return float(reward)

アクション

方向は5種類(3,5,7が選択可能)、速度も3種類を選択して15アクションで設定です

その他

Hyper parameterなどは変更していません。

3時間トレーニング

何回かためして経験で2時間以上トレーニングしたほうがいい結果がでる用に見えたので3時間トレーニングしました

グラフがあまり安定していませんが、結果できたモデルは25秒程度のラップで動きました。
ちなみにこんな感じではしってました
https://www.take00.com/dr/low_stering2_training.mp4 (1.8MB)

モデルクローン

できたモデルをクローンすることで、追加のトレーニングができます。その際には報酬関数を変更することもできます(アクションは変更できない)。

5時間トレーニング

長時間トレーニングすれば10秒台も余裕なんじゃないの?とあまく考え5時間トレーニングしました

開始から2時間頃すると評価がほぼ0になっています。

反抗期

開始後すぐに右に曲がりコースアウトをする、を永遠に続けるようになります。こうなるといくらトレーニングしても評価があがらないです。
動画はこちら。 https://www.take00.com/dr/failed.mp4 (576KB)

仮説

  • 報酬のグラフが上下しすぎていて学習できない?
  • モデルのcloneはしてはいけない?

調べてること

Hyper parameter

変更することによる影響がよくわからないので学習が遅くなる方向で、パラメータを変更してみましたが状況変化はないです

cloduwatchで見える報酬グラフとログのつきあわせ

  • これから調査予定だが、きれいに走っているのにcloudwatchの報酬の値が低いという現象が結構な頻度でおきているようにみえる。

元記事はこちら

DeepRacerが反抗期を迎えた件について(WIP)

武川 努

武川 努

構築担当。日々、AWSに触れ学んでおります。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。