このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
SARSA エージェント
SARSA アルゴリズムは、離散行動空間をもつ環境向けの On-Policy 強化学習手法です。SARSA エージェントは、現在の方策の割引累積長期報酬の期待値を推定するように価値関数ベースのクリティックに学習させます。したがって、SARSA は Q 学習の On-Policy バージョンです。さまざまな種類の強化学習エージェントの詳細については、強化学習エージェントを参照してください。
Reinforcement Learning Toolbox™ において、SARSA エージェントは rlSARSAAgent オブジェクトによって実装されます。
メモ
SARSA エージェントは再帰型ネットワークをサポートしません。
SARSA エージェントは、次の観測空間と行動空間をもつ環境で学習させることができます。
| 観測空間 | 行動空間 |
|---|---|
| 連続または離散 | 離散 |
SARSA エージェントは次のクリティックを使用します。
| クリティック | アクター |
|---|---|
Q 値関数クリティック Q(S,A)。 | SARSA エージェントはアクターを使用しない。 |
学習が実行されている間、エージェントは ε-greedy 探索を使用して行動空間を探索します。各制御間隔中に、エージェントは確率 ϵ でランダムなアクションを選択します。それ以外の場合は、確率 1-ϵ で行動価値関数が最大となるアクションを選択します。
クリティック関数近似器
現在の方策の価値を推定するために、SARSA エージェントはクリティックを使用します。クリティックは、パラメーター ϕ を使用してパラメーター化された行動価値関数 Q(S,A;ϕ) を実装する関数近似器オブジェクトです。与えられた観測値 S とアクション A について、クリティックは現在の方策を前提とした割引累積長期報酬の期待値の対応する推定値を保存します。学習が実行されている間、クリティックはパラメーターを調整して推定を改善します。
テーブルベースの価値関数を使用するクリティックの場合、ϕ のパラメーターはテーブル内の実際の Q(S,A) 値です。
価値関数近似のためのクリティック作成の詳細については、Create Policies and Value Functionsを参照してください。
学習が実行されている間、エージェントは ϕ のパラメーター値を調整します。学習後、パラメーターは調整された値のままになり、学習済みの価値関数近似器がクリティック Q(S,A) に保存されます。
エージェントの作成
SARSA エージェントを作成するには、次のようにします。
rlQValueFunctionまたはrlVectorQValueFunctionオブジェクトを使用してクリティックを作成します。rlSARSAAgentOptionsオブジェクトを使用してエージェント オプションを指定します。あるいは、最初にエージェントを作成してから (ステップ 3)、ドット表記を使用してそのオプション オブジェクトにアクセスし、オプションを変更することもできます。rlSARSAAgentオブジェクトを使用してエージェントを作成します。
学習アルゴリズム
SARSA エージェントは次の学習アルゴリズムを使用します。学習アルゴリズムを構成するには、rlSARSAAgentOptions オブジェクトを使用してオプションを指定します。
クリティック Q(S,A;ϕ) を ϕ のランダムなパラメーター値で初期化します。
各学習エピソードについて、次のようにします。
環境から初期観測値 S を取得します。
現在の観測値 S に対して、確率 ϵ でのランダム アクション A を選択します。それ以外の場合は、クリティック価値関数が最大となるアクションを選択します。
ϵ とその減衰率を指定するには、
EpsilonGreedyExplorationオプションを使用します。S が終了状態になるまで、エピソードの各ステップに対して以下を繰り返します。
アクション A0 を実行します。報酬 R と次の観測値 S' を観測します。
現在の観測値 S' に対して、確率 ϵ でのランダム アクション A' を選択します。それ以外の場合は、クリティック価値関数が最大となるアクションを選択します。
S' が終了状態の場合、価値関数のターゲット y を R に設定します。それ以外の場合、次のように設定します。
割引係数 γ を設定するには、
DiscountFactorオプションを使用します。価値関数ターゲットと現在の Q(S,A;ϕ) 値の差 ΔQ を計算します。
学習率 α を使用してクリティックを更新します。クリティックの作成時に学習率を指定するには、エージェント オプション オブジェクト内の
rlCriticOptimizerOptionsプロパティでLearnRateオプションを設定します。テーブルベースのクリティックの場合は、テーブル内の対応する Q(S,A) 値を更新します。
他のすべてのタイプのクリティックについては、パラメーター ϕ に対する損失関数の勾配 Δϕ を計算します。次に、計算された勾配に基づいてパラメーターを更新します。この場合、損失関数は ΔQ の 2 乗です。
観測値 S を S' に設定します。
アクション A を A' に設定します。
参照
[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.