Main Content

Q 学習エージェント

Q 学習アルゴリズムは、モデルフリーのオンライン Off-Policy 強化学習手法です。Q 学習エージェントは、最適な方策に従った場合の割引累積長期報酬の期待値を推定するように価値関数ベースのクリティックに学習させます。

メモ

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

さまざまな種類の強化学習エージェントの詳細については、強化学習エージェントを参照してください。

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

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

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

クリティックアクター

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

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

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

クリティック関数近似器

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

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

価値関数近似のためのクリティック作成の詳細については、Create Policies and Value Functionsを参照してください。

学習が実行されている間、エージェントは ϕ のパラメーター値を調整します。学習後、パラメーターは調整された値のままになり、学習済みの価値関数近似器がクリティック Q(S,A) に保存されます。

エージェントの作成

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

  1. rlQValueFunction または rlVectorQValueFunction オブジェクトを使用してクリティックを作成します。

  2. rlQAgentOptions オブジェクトを使用してエージェント オプションを指定します。あるいは、最初にエージェントを作成してから (ステップ 3)、ドット表記を使用してそのオプション オブジェクトにアクセスし、オプションを変更することもできます。

  3. rlQAgent オブジェクトを使用してエージェントを作成します。

学習アルゴリズム

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

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

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

    1. 環境から初期観測値 S を取得します。

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

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

        A=argmaxAQ(S,A;ϕ)

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

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

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

        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. 観測値 S を S' に設定します。

参照

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

参考

オブジェクト

関連する例

詳細