メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Q 学習エージェント

Q 学習アルゴリズムは、離散行動空間をもつ環境向けの Off-Policy 強化学習手法です。Q 学習エージェントは、Q 値関数クリティックに学習させて最適な方策の値を推定し、クリティックによって推定された値に基づいて ε-greedy 方策に従います (最適な方策を直接学習しようとはしません)。さまざまな種類の強化学習エージェントの詳細については、強化学習エージェントを参照してください。

Reinforcement Learning Toolbox™ において、Q 学習エージェントは rlQAgent オブジェクトによって実装されます。

メモ

Q 学習エージェントは再帰型ネットワークをサポートしません。

Q 学習エージェントは、次の観測空間と行動空間をもつ環境で学習させることができます。

観測空間行動空間
連続または離散離散

Q エージェントは次のクリティックを使用します。

クリティックアクター

Q 値関数クリティック Q(S,A)。rlQValueFunction または rlVectorQValueFunction を使用して作成

Q エージェントはアクターを使用しない

学習が実行されている間、エージェントは ε-greedy 探索を使用して行動空間を探索します。各制御間隔中に、エージェントは確率 ϵ でランダムなアクションを選択します。それ以外の場合は、確率 1-ϵ で行動価値関数が最大となるアクションを選択します。

Q 学習エージェントが使用するクリティック

最適な方策の価値を推定するために、Q 学習エージェントはクリティックを使用します。クリティックは、パラメーター ϕ を使用してパラメーター化された行動価値関数 Q(S,A;ϕ) を実装する関数近似器オブジェクトです。ある観測値 S とアクション A について、クリティックは、最適な方策に従った場合の割引累積長期報酬の期待値の対応する推定値を保存します (これは最適な方策の価値です)。学習が実行されている間、クリティックは ϕ のパラメーターを調整して行動価値関数の推定を改善します。学習後は、学習済みエージェント内部のクリティックにおいて、調整されたパラメーター値が維持されます。

テーブルベースの価値関数を使用するクリティックの場合、ϕ のパラメーターはテーブル内の実際の Q(S,A) 値です。

クリティックの詳細については、Create Policies and Value Functionsを参照してください。

Q 学習エージェントの作成

Q 学習エージェントを作成するには、次のようにします。

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

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

  3. クリティックの近似モデルを作成します。問題のタイプと次の手順で使用する特定のクリティックに応じて、このモデルは rlTable オブジェクト (離散観測空間のみ)、初期パラメーター値をもつカスタム基底関数、またはニューラル ネットワーク オブジェクトになります。作成するモデルの入力と出力は、次の手順で使用するクリティックのタイプによって異なります。

  4. rlQValueFunction または rlVectorQValueFunction を使用してクリティックを作成します。前の手順で作成したモデルを最初の入力引数として使用します。

  5. rlQAgentOptions オブジェクトを使用してエージェント オプションを指定します。あるいは、この手順をスキップし、後でドット表記を使用してエージェント オプションを変更することもできます。

  6. rlQAgent を使用してエージェントを作成します。

Q 学習の学習アルゴリズム

Q 学習エージェントは次の学習アルゴリズムを使用します。学習アルゴリズムを構成するには、rlQAgentOptions オブジェクトを使用してオプションを指定します。

  • クリティック Q(S,A;ϕ) を ϕ のランダムなパラメーター値で初期化します。

  • 各学習エピソードについて、次のようにします。

    1. エピソードの始めに、環境からの初期観測値を取得します。

    2. S が終了状態になるまで、エピソードの各ステップに対して以下の操作を繰り返します。

      1. 現在の観測値 S に対して、確率 ϵ でのランダム アクション A を選択します。それ以外の場合は、クリティック価値関数が最大となるアクションを選択します。

        A=argmaxAQ(S,A;ϕ)

        ϵ とその減衰率を指定するには、EpsilonGreedyExploration オプションを使用します。

      2. アクション A を実行します。報酬 R と次の観測値 S' を観測します。

      3. S' が終了状態の場合、価値関数のターゲット yR に設定します。それ以外の場合、次のように設定します。

        y=R+γmaxAQ(S',A;ϕ)

        割引係数 γ を設定するには、DiscountFactor オプションを使用します。

      4. 価値関数ターゲットと現在の Q(S,A;ϕ) 値の差 ΔQ を計算します。

        ΔQ=yQ(S,A;ϕ)

      5. 学習率 α を使用してクリティックを更新します。クリティックの作成時に学習率を指定するには、エージェント オプション オブジェクト内の rlCriticOptimizerOptions プロパティで LearnRate オプションを設定します。

        • テーブルベースのクリティックの場合は、テーブル内の対応する Q(S,A) 値を更新します。

          Q(S,A)=Q(S,A;ϕ)+αΔQ

        • 他のすべてのタイプのクリティックについては、パラメーター ϕ に対する損失関数の勾配 Δϕ を計算します。次に、計算された勾配に基づいてパラメーターを更新します。この場合、損失関数は ΔQ の 2 乗です。

          Δϕ=12ϕ(ΔQ)2ϕ=ϕ+αΔϕ

      6. 観測値 SS' に設定します。

参照

[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.

参考

オブジェクト

トピック