Skip to content
This repository has been archived by the owner on Jan 25, 2021. It is now read-only.

Commit

Permalink
Merge pull request aws-solutions-library-samples#26 from araitats/master
Browse files Browse the repository at this point in the history
[Workshop Japanese] Level - Granularity
  • Loading branch information
muhyun authored Jun 5, 2019
2 parents bb55a28 + 42b0ad3 commit 07b2784
Showing 1 changed file with 13 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -88,9 +88,9 @@ AWS DeepRacerリーグの詳細はセクション2で説明します。このセ
パラメーターの説明

- Maximum steering angleは、車が曲がる際のフロントホイールの左右それぞれの最大角度です。このパラメーターはどれくらいホイールを回転させるかの上限を決めるもので、最大値は30度です。
- Steering levelsは、左右それぞれの最大ステアリング角の分割数です。Maximum steering angleを30度に設定した場合、左側に+30度、右側に-30度傾けることができます。Maximum steering angleを30度に設定し、Steering levelsに5を設定すると、ステアリング角は左から右に向かって、30度,15度、0度、-15度、-30度の5分割になります。ステアリング角は0度を中心として左右対称です。
- Steering angle granularityは、左右それぞれの最大ステアリング角の分割数です。Maximum steering angleを30度に設定した場合、左側に+30度、右側に-30度傾けることができます。Maximum steering angleを30度に設定し、Steering angle granularityに5を設定すると、ステアリング角は左から右に向かって、30度,15度、0度、-15度、-30度の5分割になります。ステアリング角は0度を中心として左右対称です。
- Maximum speedは、車がシミュレータ内を走行する最高速度です。
- Speed levelsは、0 m/sから、設定した最高速度の範囲の分割数です。アクションスペースでの速度の範囲は、0 m/sは含まれず、設定した最高速度を含みます。Speed levelsに3、Maximum speedに3を設定した場合、アクションスペースでの速度は1 m/s、2 m/s、3 m/sが使用可能です。これは単純に3 m/s÷3=1 m/sの計算をし、0 m/sから3 m/sの間を1 m/sずつ増加させていることを意味します。
- Speed granularityは、0 m/sから、設定した最高速度の範囲の分割数です。アクションスペースでの速度の範囲は、0 m/sは含まれず、設定した最高速度を含みます。Speed granularityに3、Maximum speedに3を設定した場合、アクションスペースでの速度は1 m/s、2 m/s、3 m/sが使用可能です。これは単純に3 m/s÷3=1 m/sの計算をし、0 m/sから3 m/sの間を1 m/sずつ増加させていることを意味します。

上記の例の場合、最終的なアクションスペースには15個の個別のアクション(速度が3種類 x ステアリング角が5種類)が含まれます。この情報はAWS DeepRacerサービスに表示されます。もしまだ設定されていない場合、アクションスペースを設定してください。お好きな設定をしていただいて構いません。なお、アクションスペースが大きくなるとトレーニングに少し時間がかかるかもしれません。

@@ -135,7 +135,7 @@ AWS DeepRacerリーグの詳細はセクション2で説明します。このセ

![rewardparams](img/reward_function_parameters_illustration.png)

これはre:Inventトラックで使われた、waypointsを可視化した画像です。報酬関数の中では、waypointsの中心線のみアクセスすることができます。このグラフは、報酬関数内でwaypointsのリストを出力し、プロットすることで自身で作ることができます。print関数を報酬関数内で利用する場合、出力はAWS RoboMaker logsに置かれます。どのトラックにおいても行うことができます。詳細は後の方に記します。
以下の折れ線グラフはre:Inventトラック上の、waypointsを可視化した画像です。報酬関数の中では、waypointsの中心線のみアクセスすることができます。報酬関数内でwaypointsのリストを出力しプロットすることで、このグラフを自作することができます。print関数を報酬関数内で利用する場合、出力はAWS RoboMaker logsに置かれます。どのトラックにおいても行うことができます。詳細は後の方に記します。

![waypoints](img/reinventtrack_waypoints.png)

@@ -169,7 +169,7 @@ AWS DeepRacerリーグの詳細はセクション2で説明します。このセ
return float(reward)

ヒント: 0に等しい報酬を与えないでください。報酬を小さな値で初期化しているため、オプティマイザーは報酬に0を与えられると混乱します。
ヒント: 0の値を報酬としてを与えないでください。AWS DeepRacer内で使用されているオプティマイザーは報酬に0を与えられると混乱します。0の値を与える代わりに、報酬を小さな値で初期化します。

**Example 2**:極端なステアリングにペナルティーを与え、中心線に沿った動きに報酬を与える高度な報酬関数

@@ -260,13 +260,13 @@ AWS DeepRacerリーグの詳細はセクション2で説明します。このセ

経験としても知られる **step** は、 (s,a,r,s’)のタプル型です。s はカメラによってキャプチャされた観測(または状態)、a は車両によって行われた行動、r は行動によって生じる報酬、s’ は行動から得られた新しい観測(または新しい状態)です。

**episode** は、車両がスタート地点から出発し、最終的にトラックを完走するか、またはトラックから外れるまでの期間です。つまり、 episodeは、一連のstep、つまり経験です。異なるepisodeは、長さが異なる場合があります。
**episode** は、車両がスタート地点から出発し、最終的にトラックを完走するか、またはトラックから外れるまでの期間です。つまり、 step(つまり経験)の連続がepisodeになります。異なるepisodeは、長さが異なる場合があります。

**experience buffer** は、トレーニング中に様々な長さの一定数のepisodeで収集された順序付けられたstepで構成されています。experience bufferは、ニューラルネットワークを更新するための基本情報(方策と価値)として機能します。
**experience buffer** は、トレーニング中、一定数の、順序付けられたstepからなる様々な長さのepisodeで構成されています。experience bufferは、ニューラルネットワークを更新するための基本情報(方策と価値)として機能します。

**batch** は、順序付けられた 経験のリストで、一定期間に渡るシミュレーションで得られた経験の一部を表し、policy networkの重みの更新で使用されます。
**batch** は、順序付けられた経験のリストで、一定期間に渡るシミュレーションで得られた経験の一部を表し、policy networkの重みの更新で使用されます。

experience buffer からランダムにサンプリングされたセットを **training data set** と呼び、policy network の重みを更新するのに使用されます。
experience buffer からランダムにサンプリングされた**batch**のセットを **training data set** と呼び、policy network の重みを更新するのに使用されます。

これらのパラメータは専門家によってテストおり、re:Inventのトラックと、小さな action space でうまく機能するようになっているので、あまり変更しないでください。ただし、トレーニングの収束性を大幅に改善することができるので、モデルのイテレーションを開始するときに変更することを検討してください。

@@ -276,10 +276,10 @@ experience buffer からランダムにサンプリングされたセットを *
| Batch size | 車両の経験は、experience bufferからランダムでサンプリングされ、ディープニューラルネットワークの重みを更新するため使用されます。例えば、experience bufferに5120の経験があり、ランダムサンプリングを無視してバッチサイズを512を指定すると、10のバッチ得られます。各バッチは、重みの更新に使用されます。バッチサイズを大きくした場合、重みの更新は安定しますが、トレーニングが遅くなる可能性があるので注意してください。|
| Number of epochs | エポックは、すべてのバッチを1回実行することを表し、重みは各バッチが処理される毎に更新されます。例えば、10 エポックの場合、すべてのバッチを使用して重みを更新するプロセスを10回繰り返すことを意味します。エポックを増やすことでより安定して重みを更新できますが、トレーニングが遅くなります。バッチサイズが小さい場合は、少ないepochを使用できます。|
| Learning rate | 学習率は、重みを更新する大きさを制御します。簡単に言えば、方策の重みを変えて累積報酬を最大にしたい場合、方策をどれだけ変えるべきかということです。学習率を大きくするとトレーニングは早くなりますが、収束しにくくなります。学習率を小さくすると収束は安定しますが、トレーニングに時間がかかります。|
| Exploration | 探索と搾取の間のトレードオフを決めるために使用する方法を指定します。言い換えると、探索をやめるべきか(ランダムに行動)、これまでの経験を利用するべきかを決定するためにどのような方法を使うべきか、ということです。個別のaction spaceを使うので、必ずCategoricalParametersを選択してください。|
| Exploration | 探索と搾取の間のトレードオフを決めるために使用する方法を指定します。言い換えると、いつ探索(ランダムに行動)をやめ、これまでの経験を利用するべきかを決定するためにどのような方法を使うべきか、ということです。個別のaction spaceを使うので、必ずCategoricalParametersを選択してください。|
| Entropy | action spaceの確率分布に追加された、ある程度の不確実性、ランダム性。ランダムにアクションを選択して 状態/action space をより広く探索するのに役立ちます。|
| Discount factor | 割引率は、将来の報酬が予想累積報酬にどれだけ寄与するかを指定します。割引率を大きくすると、モデルは予想累積報酬を決定し、トレーニングが遅くなります。例えば割引率が0.9の場合、車両は移動のために将来の10 stepに報酬が含まれることになります。0.999の割引率であれば、車両は移動するために将来の1000ステップに報酬が含まれることになります。推奨される割引率は、0.99、0.999、および0.9999です。|
| Loss type | 損失タイプは、重みを更新するために使用される目的関数(コスト関数)のことです。Huberと平均二乗誤差は、小規模な更新でも同様に動作します。しかし、更新が大きくなるに連れてHuberの損失は、平均二乗誤差の損失に比べて増分が小さくなります。学習の収束に問題が有る場合、Huberを使います。収束性がよく、より早くトレーニングしたい場合は平均二乗誤差を使用してください。|
| Discount factor | 割引率は、将来の報酬が予想累積報酬にどれだけ寄与するかを指定します。割引率を大きくすると、モデルは予想累積報酬を決定するためにより長い将来を見るため、トレーニングが遅くなります。例えば割引率が0.9の場合、車両は将来の〜10 stepに含まれる報酬によって移動を決定します。0.999の割引率であれば、将来の〜1000ステップに含まれる報酬を考慮して移動します。推奨される割引率は、0.99、0.999、および0.9999です。|
| Loss type | 損失タイプは、重みを更新するために使用される目的関数(コスト関数)のことです。Huberと平均二乗誤差は、小規模な更新の場合同様に動作します。しかし、更新が大きくなるに連れてHuberの損失は、平均二乗誤差の損失に比べて増分が小さくなります。学習の収束に問題が有る場合、Huberを使います。収束性がよく、より早くトレーニングしたい場合は平均二乗誤差を使用してください。|
| Number of episodes between each training | このパラメータは、各モデルのトレーニング・イテレーション毎に車両がどれだけ経験を得るべきかを制御します。例えば多くの極大値を持つ複雑な問題の場合、experience bufferは多くの無相関データが必要です。大きくした場合、トレーニングは遅くなりますが安定します。推奨値は、10、20、40です。|

各トレーニング・イテレーション後に新しいモデルはS3バケットに保存します。AWS DeepRacerサービスは、トレーニング実行中にすべてのモデル表示するのではなく、最後のモデルだけを表示します。これらについては Section 3を参照してください。
@@ -300,9 +300,9 @@ experience buffer からランダムにサンプリングされたセットを *


# Section 2: AWS DeepRacer リーグで競う
[AWS DeepRacer リーグ](https://aws.amazon.com/deepracer/league/)は世界初のグローバル自走型レーシングリーグです。このリーグは、2019年に複数都市での対人レースおよびオンライン上で開催されます。レースをし、賞または47人に与えられるre:invent 2019で行われるAWS DeepRacer Knockout Roundsへの参加権および旅費を勝ち取りましょう。その予選を勝ち抜くと、AWS DeepRacer Champioonship Cupに参加できます。詳細は[こちら](https://d1.awsstatic.com/DeepRacer/AWS-DeepRacer-League-2019-Official-Rules-English-29-April-2019(1).pdf)を参照してください。
[AWS DeepRacer リーグ](https://aws.amazon.com/deepracer/league/)は世界初のグローバル自走型レーシングリーグです。このリーグは、2019年に複数都市での直接およびオンライン上で開催されます。レースをし、賞または47人に与えられるre:invent 2019で行われるAWS DeepRacer Knockout Roundsへの参加権および旅費を勝ち取りましょう。その予選を勝ち抜くと、AWS DeepRacer Champioonship Cupに参加できます。詳細は[こちら](https://d1.awsstatic.com/DeepRacer/AWS-DeepRacer-League-2019-Official-Rules-English-29-April-2019(1).pdf)を参照してください。

対人レースはSummit サーキット、オンラインレースは仮想サーキットを参照してください。Summit サーキットイベントの場所は[こちら](https://aws.amazon.com/deepracer/summit-circuit/)から探してください。仮想サーキットの詳細はAWS DeepRacerサービスが一般向け公開されてから発表されます。どの競技に参加する場合でも、AWS DeepRacerを所有する必要はありません。
直接参加型レースはSummit サーキット、オンラインレースは仮想サーキットを参照してください。Summit サーキットイベントの場所は[こちら](https://aws.amazon.com/deepracer/summit-circuit/)から探してください。仮想サーキットの詳細はAWS DeepRacerサービスが一般向け公開されてから発表されます。どの競技に参加する場合でも、AWS DeepRacerを所有する必要はありません。


![League](img/league.png)

0 comments on commit 07b2784

Please sign in to comment.