Main Content

強化学習エージェント

強化学習の目標は、不確実な環境内でタスクを完了できるようエージェントに学習させることです。それぞれの時間間隔において、エージェントは環境から観測値と報酬を受け取り、環境にアクションを送信します。報酬は、タスク目標を完了することに関して、前のアクション (前の状態から取得) がどの程度成功したかを示す即時指標です。

Reinforcement Learning Environmentsで説明され、次の図に示されているように、エージェントと環境は、"離散的な" タイム ステップから成る各シーケンスにおいて相互作用します。

Diagram showing an agent that interacts with its environment using a policy that is updated by the reinforcement learning algorithm. Actions and observations for time t, as well as rewards and observations for time t+1, are shown.

慣例により、観測値は 1 つ以上の "チャネル" に分割でき、各チャネルは、数値 (無限および連続) 集合または有限 (離散) 集合のいずれかにすべてが属する単一要素から成るグループを搬送します。各グループは、任意の数の次元 (ベクトルや行列など) に従って編成できます。アクションには 1 つのチャネルのみが許可されることと、報酬は数値スカラーでなければならないことに注意してください。アクションと観測値の仕様オブジェクトの詳細については、rlFiniteSetSpec および rlNumericSpec を参照してください。

エージェントには、方策と学習アルゴリズムの 2 つのコンポーネントが含まれます。

  • 方策は、現在の環境の観測値を、実行されるアクションの確率分布にマッピングしたものです。エージェントにおいては、方策は調整可能なパラメーターおよび深層ニューラル ネットワークなどの特定の近似モデルを使用する関数近似器によって実装されます。

  • 学習アルゴリズムは、アクション、観測値、および報酬に基づいて方策パラメーターを継続的に更新します。学習アルゴリズムの目標は、タスク実行中に受け取る累積長期報酬の期待値が最大になる最適な方策を見つけることです。

エージェントに応じて、学習アルゴリズムは、方策を学習する 1 つ以上のパラメーター化された関数近似器で演算を行います。近似器が使用される方法は 2 つあります。

  • クリティック — ある観測値とアクションについて、クリティックは方策の価値の近似値 (つまり、方策の割引累積長期報酬の期待値) を返します。

  • アクター — ある観測値について、アクターは方策の価値を (多くの場合) 最大化するアクションを返します。

クリティックのみを使用してアクションを選択するエージェントは、"間接的方策表現" に依存します。これらのエージェントは "価値ベース" とも呼ばれ、近似器を使用して価値関数 (観測値の関数としての値) または Q 値関数 (観測値とアクションの関数としての値) を表します。一般に、これらのエージェントは離散行動空間でより適切に機能しますが、連続行動空間では計算コストがかかる可能性があります。

アクターのみを使用してアクションを選択するエージェントは、"直接的方策表現" に依存します。これらのエージェントは "方策ベース" とも呼ばれます。方策は決定論的または確率的のいずれかになります。一般に、これらのエージェントはより単純で、連続行動空間を処理できますが、学習アルゴリズムはノイズを含む測定値に敏感であり、局所的最小値に収束する可能性があります。

アクターとクリティックの両方を使用するエージェントは、"actor-critic" エージェントと呼ばれます。これらのエージェントで学習が実行されている間、アクターは (報酬を直接使用する代わりに) クリティックからのフィードバックを使用して、行うべき最適なアクションを学習します。同時に、クリティックは報酬から価値関数を学習し、アクターを適切に評価できるようになります。一般に、これらのエージェントは、離散行動空間と連続行動空間の両方を処理できます。

エージェント オブジェクト

Reinforcement Learning Toolbox™ は、エージェントを MATLAB® オブジェクトで表します。このオブジェクトは、getAction などのオブジェクト関数 (メソッド) を使用して環境とやり取りします。この関数は、環境の観測値が与えられたときにアクションを出力として返します。

ある環境のエージェント オブジェクトを MATLAB ワークスペースで作成したら、環境変数とエージェント変数の両方を組み込み関数 train および sim の引数として使用できます。これらの関数は、それぞれ環境内でエージェントの学習またはシミュレーションを行います。

ソフトウェアは、さまざまなタイプの組み込みエージェントを提供します。このそれぞれについて、その近似オブジェクト (アクターやクリティックなど) およびモデル (ニューラル ネットワークやカスタム基底関数など) を手動で構成できます。ほとんどの組み込みエージェントで、既定のネットワーク構成を使用することもできます。あるいは、カスタム エージェント オブジェクトを作成することもできます。

組み込みエージェント

次の表は、Reinforcement Learning Toolbox ソフトウェアで提供されるすべての組み込みエージェントのタイプ、行動空間、使用される近似器をまとめたものです。

On-Policy エージェントは、判定に使用する方策を評価または改善しようとしますが、Off-Policy エージェントは、判定に使用する方策 (またはデータの生成に使用された方策) とは異なる可能性がある方策を評価または改善します。エージェントごとに、観測空間は離散的、連続的、または混合となります。詳細については、[1] を参照してください。

組み込みの On-Policy エージェント: タイプおよび行動空間

エージェントタイプ行動空間
SARSA Agents価値ベース離散
Policy Gradient (PG) Agents (PG)方策ベース離散または連続
Actor-Critic (AC) Agents (AC)actor-critic離散または連続
Trust Region Policy Optimization (TRPO) Agents (TRPO)actor-critic離散または連続
Proximal Policy Optimization (PPO) Agents (PPO)actor-critic離散または連続

組み込みの Off-Policy エージェント: タイプおよび行動空間

組み込みエージェント: 各エージェントが使用する近似器

近似器Q、DQN、SARSAPGAC、PPO、TRPOSACDDPG、TD3

価値関数クリティック V(S)。次を使用して作成できます。

rlValueFunction

 X (ベースラインを使用する場合)X  

Q 値関数クリティック Q(S,A)。次を使用して作成できます。

rlQValueFunction

X  XX

離散行動空間用の多出力 Q 値関数クリティック Q(S)。次を使用して作成できます。

rlVectorQValueFunction

X    

決定論的方策アクター π(S)。次を使用して作成できます。

rlContinuousDeterministicActor

    X

離散行動空間用の確率的 (マルチヌーイ) 方策アクター π(S)。次を使用して作成できます。

rlDiscreteCategoricalActor

 XX  

連続行動空間用の確率的 (ガウス) 方策アクター π(S)。次を使用して作成できます。

rlContinuousGaussianActor

 XXX 

既定のネットワークをもつエージェント — Q 学習エージェントと SARSA エージェント以外のすべてのエージェントは、アクターおよびクリティック用の既定のネットワークをサポートします。環境の観測仕様とアクション仕様に基づいて既定のアクターとクリティックを使用し、エージェントを作成できます。これを行うには、MATLAB コマンド ラインで次の手順を実行します。

  1. 環境用の観測仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、getObservationInfo を使用してこの仕様を取得できます。

  2. 環境用のアクション仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、getActionInfo を使用してこの仕様を取得できます。

  3. 必要に応じて、それぞれの学習可能な層のニューロンの数、または LSTM 層を使用するかどうかを指定します。これを行うには、rlAgentInitializationOptions を使用してエージェント初期化オプション オブジェクトを作成します。

  4. 必要に応じ、特定のエージェント用のオプション オブジェクト セットを作成して、エージェント オプションを指定します。このオプション オブジェクトには、エージェントのアクターまたはクリティックの最適化オブジェクトを指定する rlOptimizerOptions オブジェクトが含まれます。

  5. 対応するエージェント作成関数を使用してエージェントを作成します。結果として得られるエージェントには、上の表にリストされている適切なアクターとクリティックが含まれます。このアクターとクリティックは、エージェント固有の既定の深層ニューラル ネットワークを内部近似器として使用します。

アクター関数近似器とクリティック関数近似器の作成の詳細については、Create Policies and Value Functionsを参照してください。

強化学習デザイナー アプリを使用して、既存の環境をインポートし、DQN、DDPG、PPO、または TD3 のエージェントを対話的に設計できます。アプリを使用すると、環境内でエージェントの学習およびシミュレーションを行い、シミュレーション結果を解析し、エージェント パラメーターを調整し、エージェントをさらに使用したり展開したりするために MATLAB ワークスペースにエクスポートすることができます。詳細については、Create Agents Using Reinforcement Learning Designerを参照してください。

エージェント タイプの選択

エージェントを選択するときのベスト プラクティスは、行動空間および観測空間と互換性のある、よりシンプルな (そして学習がより速い) アルゴリズムから始めることです。単純なアルゴリズムが期待どおりに動作しない場合、徐々に複雑なアルゴリズムを試すことができます。

PG エージェントと AC エージェントは、方策勾配および actor-critic の概念の初期の (かつ単純な) 実装であることに注意してください。これらのエージェントは調整が比較的容易でメモリ効率が高い場合がありますが、一般的に PPO や DQN に対して機能的な利点はほとんどなく、主に教育目的で提供されています。

同様に、PPO は一般に、あらゆる面で TRPO よりも優れたパフォーマンスを発揮します (TRPO では調整が特に困難)。さらに、TRPO は、高次の微分を計算できる深層ネットワークをもつアクターとクリティックのみをサポートします (したがって、TRPO エージェント内で再帰型ネットワーク、カスタム基底関数、またはテーブルを使用するアクターやクリティックを使用することはできません)。

  • 離散行動空間 — 比較的小さい離散行動空間をもつ単純な環境では、表形式近似器の使用が有効です (観測空間も離散的である場合)。そのような場合、Q 学習エージェントと SARSA エージェントが最も単純な互換エージェントです。通常は、学習速度の点で Q 学習の方が優れたパフォーマンスを発揮し、SARSA の方がわずかにロバストです。

    状態とアクションのペアの数は状態とアクションの数に応じて指数関数的に増加するため、表形式の近似は、大きな状態空間と行動空間をもつ環境にはうまく対応できません。表形式近似器では通常このような問題をうまく一般化できず、状態空間が大きくなるにつれてメモリと学習時間を増やす必要があります。上記のような場合や観測空間の一部が連続している場合は、カスタム基底関数で十分でない場合に限って (まれなケースですが) ネットワーク近似器を使用します。

    ニューラル近似器をサポートする離散行動空間をもつエージェントを次の図で比較します。1 つの Off-Policy エージェント (DQN) が上にあり、4 つの On-Policy エージェント (PPO、TRPO、AC、および PG) が下にあります。赤いシンボルは、PPO が最先端のエージェントであることを示します。

    Five agents compared in terms of training speed, ease of tuning, robustness, memory efficiency and parallelization capabilities.

    エージェントは 6 つの異なる指標を使用して比較されます。学習速度 (Training speed) のメトリクスは、それぞれ計算コストが高い環境のもの (expensive) と計算コストが低い環境のもの (cheap) の 2 つがあります。調整の容易さ (Ease of tuning) は、エージェントのハイパーパラメーターが少ないほど、またはハイパーパラメーターが理解しやすく調整しやすいほど高くなります。ロバスト性 (Robustness) は、ハイパーパラメーター、重み、および初期条件に対する感度に反比例します。メモリ効率 (Memory efficiency) は学習時のメモリ使用量に反比例し、並列化 (Parallelization) はエージェント学習アルゴリズムが並列ワーカーの数に応じてどの程度うまくスケールできるかを示します。

    この図は次のように要約できます。

    • DQN と PPO は全体的に良好なパフォーマンスを示す。

    • DQN は一般に調整が容易で (したがって、良い出発点となり得る)、計算コストの高い環境には比較的良い選択肢となる。

    • PPO (赤いシンボルで示されているように、直近に開発されたもの) は、並列化、ロバスト性、計算コストが低い環境での学習速度についてパフォーマンスが向上する傾向がある。

  • 連続行動空間 — ニューラル近似器をサポートする連続行動空間をもつエージェントを次の図で比較します。3 つの Off-Policy エージェントが上にあり、4 つの On-Policy エージェントが下にあります。赤いシンボルは最先端のエージェントを示します。

    Seven agents compared in terms of training speed, ease of tuning, robustness, memory efficiency and parallelization capabilities.

    前の図と同様に、最初の 2 つのメトリクスは、それぞれ計算コストが高い環境と計算コストが低い環境での学習速度です。調整の容易さは、エージェントのハイパーパラメーターが少ないほど、またはハイパーパラメーターが理解しやすく調整しやすいほど高くなります。ロバスト性 (Robustness) は、ハイパーパラメーター、重み、および初期条件に対する感度に反比例します。メモリ効率 (Memory efficiency) は学習時のメモリ使用量に反比例し、並列化 (Parallelization) はエージェント学習アルゴリズムが並列ワーカーの数に応じてどの程度うまくスケールできるかを示します。

    連続行動空間をサポートするエージェントの図は次のように要約できます。

    • DDPG が最も調整が容易で、次に TD3、SAC、PPO が続く。

    • DDPG は出発点として適しており、全体的に良好なパフォーマンスを発揮する傾向がある。

    • TD3 と SAC はどちらも DDPG のより複雑でロバストな改良バージョンであり、計算コストの高い環境にとって優れた選択肢となる。

    • SAC は探索に役立つ確率的方策を生成する。調整は若干難しくなるが、メモリ効率が向上する。

    • PPO は調整が難しい可能性があるが、全体的に非常に優れたパフォーマンスを発揮する傾向がある。特に、計算コストが低い環境では優れた選択肢であり、高度な並列化が可能。

モデルベースの方策の最適化

Off-Policy エージェント (DQN、DDPG、TD3、SAC) を使用している場合は、モデルベースの方策最適化 (MBPO) エージェントを使用して、学習サンプルの効率を向上させることを検討できます。MBPO エージェントは環境の内部モデルを包含し、環境とやり取りすることなく追加の経験を生成するためにそれを使用します。

学習が実行されている間、MBPO エージェントは環境とやり取りすることで実際の経験を生成します。これらの経験は、追加の経験の生成に使用する内部環境モデルに学習させるために使用されます。次に、学習アルゴリズムは、実際の経験と生成された経験の両方を使用して、エージェントの方策を更新します。

MBPO エージェントは、モデルによって多様な経験の大規模なセットを生成できるため、モデルフリー エージェントよりもサンプルの効率性が高くなります。ただし、MBPO エージェントは、ベース エージェントの学習に加えて環境モデルに学習させ、サンプルを生成しなければならないため、モデルフリー エージェントよりもはるかに多くの計算時間を必要とします。

詳細については、Model-Based Policy Optimization (MBPO) Agentsを参照してください。

エージェントからの方策オブジェクトの抽出

エージェントから方策オブジェクトを抽出し、getAction を使用して、与えられた入力観測値に対して方策から決定論的または確率的なアクションを生成できます。方策オブジェクトを使用すると、アプリケーションへの展開やカスタム学習の目的に役立ちます。詳細については、Create Policies and Value Functionsを参照してください。

カスタム エージェント

カスタム エージェントを作成することで、他の学習アルゴリズムを使用して方策の学習を行うこともできます。カスタム エージェントを作成すると、組み込み関数 train および sim を使用できるようになります。この関数は、エージェントの学習やシミュレーションを行うことができます。これを行うには、カスタム エージェント クラスのサブクラスを作成し、必須メソッドとオプション メソッドから成るセットを使用してエージェントの動作を定義します。詳細については、Create Custom Reinforcement Learning Agentsを参照してください。

あるいは、trainsim に依存しないカスタム学習アルゴリズムを実装するために、カスタム学習ループを作成できます。カスタム学習ループの詳細については、Train Reinforcement Learning Policy Using Custom Training Loopを参照してください。

参照

[1] Sutton, Richard S., and Andrew G. Barto. Reinforcement Learning: An Introduction. Second edition. Adaptive Computation and Machine Learning. Cambridge, Mass: The MIT Press, 2018.

参考

オブジェクト

関連する例

詳細