翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS DeepRacer アクションスペースと報酬関数
アクションスペース
強化学習では、環境とやり取りする際にエージェントで利用できるすべての有効なアクションや選択肢の設定または選択肢をアクションスペースと呼ぶ環境と相互作用するためエージェントが利用できます。AWS DeepRacer コンソールでは、離散アクションスペースまたは連続アクションスペースのいずれかでエージェントをトレーニングできます。
離散アクションスペース
離散アクションスペースでは、有限集合内の各状態に対するエージェントの可能な作用がすべて表されます。AWS DeepRacer の場合、これは環境状況が段階的に変化するごとに、エージェントのニューラルネットワークがカメラおよび LiDAR センサー (オプション) からの入力に基づいて、自動車の速度と方向を選択することを意味します。選択は、あらかじめ定義されたステアリングの角度とスロットル値の組み合わせに限定されます。
ターンに近づいている離散アクションスペースにある AWS DeepRacer 車両は、加速またはブレーキをかけて左、右、または直進のいずれかを選択できます。これらのアクションは、エージェントのオプション (0-9) のメニューを作成するステアリング角度と速度の組み合わせとして定義されます。例えば、0 は -30 度と 0.4 m/s を表すとして、1 は -30 度と 0.8 m/s、2 は -15 度と 0.4 m/s、そして 3 は -15 度と 0.8 m/s を表し、9 まで表すことができます。負の度数で車は右に曲がり、正の度数で車は左に曲がり、0 は車輪がまっすぐになります。
AWS DeepRacer のデフォルトの離散アクションスペースには、次のアクションが含まれます。
アクションの数 | ステアリング | 速度 |
---|---|---|
0 | -30 度 | 0.4 m/s |
1 | -30 度 | 0.8 m/s |
2 | -15 度 | 0.4 m/s |
3 | -15 度 | 0.8 m/s |
4 | 0 度 | 0.4 m/s |
5 | 0 度 | 0.8 m/s |
6 | 15 度 | 0.4 m/s |
7 | 15 度 | 0.8 m/s |
8 | 30 度 | 0.4 m/s |
9 | 30 度 | 0.8 m/s |
連続アクションスペース
連続アクションスペースにより、エージェントは各状態の値の範囲からアクションを選択できます。離散アクションスペースと同様に、これは徐々に異なる環境状況ごとに、エージェントのニューラルネットワークは、カメラと(オプションの)LiDAR センサーからの入力に基づいて、車の速度と方向を選択します。ただし、連続アクションスペースでは、エージェントがアクションを選択するオプションの範囲を定義できます。
この例では、連続アクションスペースでターンに近づく AWS DeepRacer 車両は、0.75 m/s から 4 m/s の速度を選択し、ステアリングの角度を-20 度から 20 度までの間で選択して左、右、または直進することができます。
離散 vs 連続
連続アクションスペースを使用する利点は、パフォーマンスを最適化するトラック上の特定ポイントでスピード/ステアリングアクションを動機付けするためのモデルをトレーニングする報酬機能が書き込みできることです。また、さまざまなアクションからピッキングすることで、スピードとステアリング値でスムーズな変化が可能になり、十分に訓練されたモデルであれば、実際の状況ではより良い結果が得られる可能性があります。
離散アクションスペースの設定では、エージェントの選択を事前定義されたアクションの有限数に制限することで、これらのアクションの影響を理解し、環境 (トラック、レース形式) と報酬関数に基づいてアクションを定義することができます。ただし、連続アクションスペースの設定では、エージェントはトレーニングを通じて提供される最小/最大範囲から最適な速度とステアリング値を選択することを学習します。
選択するモデルに対して値の範囲を設けて提供する方がよい選択肢だと考えられますが、エージェントは最適なアクションの選択方法を学ぶために長めにトレーニングする必要があります。成功させるためには報酬関数の定義にも依存します。
報酬関数
エージェントが環境を調べると、エージェントは値関数を学習します。value 関数を使用すると、エージェントが環境を観察した後、実行されたアクションがどの程度優良なのかを判断できます。value 関数は、AWS DeepRacer コンソールで記述した報酬関数を使用してアクションをスコアリングします。例えば、AWS DeepRacer コンソールの [follow the center line sample reward function] (センターラインのサンプル報酬関数の追跡) では、良いアクションはエージェントをトラックの中心近くに置き、悪いアクションより高くスコアリングしますが、そのエージェントはトラックの中心から離れることになります。
時間をかけて、value 関数により エージェントは総報酬を増加させるポリシーについて学ぶことができます。最適なポリシー (ベストポリシー) は、エージェントが環境の探索に費やす時間と、そのポリシーが経験を通じて学習したことを悪用または最大限に活用するのに費やす時間のバランスをとるものです。
センターラインに従う [AWS DeepRacer サンプル報酬関数の追跡] で、エージェントはまず環境を調査するためにランダムなアクションを実行します。つまり、トラックの中央に留まることはあまりありません。時間が経つにつれて、エージェントはどのアクションがセンターライン付近に留まるかを学習し始めますが、ランダムなアクションを続けてこれを行った場合、ラップ全体でトラックの中心付近に留まるための学習には時間がかかります。したがって、ポリシーが適切なアクションを学習し始めると、エージェントはランダムなアクションを実行するのではなく、これらのアクションを使用し始めます。ただし、適切なアクションを常に使用または悪用した場合、エージェントは環境を調査しなくなるため、新しい検出を行いません。このトレードオフは、RLの探索と悪用の問題と呼ばれます。
デフォルトのアクションスペースとサンプルの報酬関数を試してみてください。それらすべてを探索したら、独自のカスタムアクションスペースおよびカスタムの報酬関数を設計して知識を活かしてください。