双生遅延深層決定論的 (TD3) 方策勾配エージェント
双生遅延深層決定論的方策勾配 (TD3) アルゴリズムは、モデルフリーのオンライン Off-Policy 強化学習手法です。TD3 エージェントは、累積長期報酬の期待値が最大になる最適な方策を検索する、actor-critic 強化学習エージェントです。
さまざまな種類の強化学習エージェントの詳細については、強化学習エージェントを参照してください。
TD3 アルゴリズムは、DDPG アルゴリズムを拡張したものです。DDPG エージェントは価値関数を過大推定する可能性があり、それによって準最適のポリシーが生成される可能性があります。価値関数の過大推定を減らすために、TD3 アルゴリズムは DDPG アルゴリズムに対する以下の変更を含んでいます。
TD3 エージェントは 2 つの Q 値関数を学習し、方策の更新時に関数の最小推定値を使用します。
TD3 エージェントは、Q 関数よりも少ない頻度で方策とターゲットを更新します。
方策を更新するとき、TD3 エージェントはターゲット アクションにノイズを付加します。これにより、Q 値推定値が高いアクションが方策によって利用される可能性が低くなります。
TD3 エージェントを使用し、指定したクリティックの数に応じて、次の学習アルゴリズムのいずれかを実装できます。
TD3 — 2 つの Q 値関数を使用してエージェントに学習させます。このアルゴリズムは、前述の 3 つの変更をすべて実装します。
遅延 DDPG — 単一の Q 値関数を使用してエージェントに学習させます。このアルゴリズムは、ターゲット方策平滑化および方策とターゲットの遅延付き更新を使用して、DDPG エージェントに学習させます。
TD3 エージェントは、次の観測空間と行動空間をもつ環境で学習させることができます。
観測空間 | 行動空間 |
---|---|
連続または離散 | 連続 |
TD3 エージェントは次のアクターとクリティックを使用します。
クリティック | アクター |
---|---|
1 つ以上の Q 値関数クリティック Q(S,A)。 | 決定論的方策アクター π(S)。 |
学習が実行されている間、TD3 エージェントは次を行います。
学習時に各タイム ステップでアクターとクリティックのプロパティを更新する。
リング経験バッファーを使用して過去の経験を保存する。エージェントは、バッファーからランダムにサンプリングされた経験のミニバッチを使用して、アクターとクリティックを更新する。
各学習ステップで、確率的ノイズ モデルを使用して、方策によって選択されたアクションに摂動を与える。
アクター関数とクリティック関数
方策と価値関数を推定するために、TD3 エージェントは次の関数近似器を維持します。
決定論的アクター π(S;θ) — アクターはパラメーター θ をもち、観測値 S を受け取り、長期的な報酬が最大になる対応するアクションを返します。
ターゲット アクター πt(S;θt) — 最適化の安定性を向上させるために、エージェントは最新のアクター パラメーター値を使用してターゲット アクター パラメーター θt を周期的に更新します。
1 つまたは 2 つの Q 値クリティック Qk(S,A;ϕk) — それぞれ異なるパラメーター ϕk をもつクリティックは、観測値 S とアクション A を入力として受け取り、対応する長期報酬の期待値を返します。
1 つまたは 2 つのターゲット クリティック Qtk(S,A;ϕtk) — 最適化の安定性を向上させるために、エージェントは対応する最新のクリティック パラメーター値を使用してターゲット クリティック パラメーター ϕtk を周期的に更新します。ターゲット クリティックの数はクリティックの数と一致します。
π(S;θ) と πt(S;θt) は両方とも同じ構造とパラメーター表現をもちます。
各クリティックについて、Qk(S,A;ϕk) と Qtk(S,A;ϕtk) は同じ構造とパラメーター表現をもちます。
Q1(S,A;ϕ1) と Q2(S,A;ϕ2) の 2 つのクリティックを使用する場合、各クリティックは異なる構造をもつことができますが、TD3 はクリティックが同じ構造をもつ場合に最適に機能します。クリティックが同じ構造をもつ場合、異なる初期パラメーター値をもたなければなりません。
関数近似のためのアクターとクリティックの作成の詳細については、Create Policies and Value Functionsを参照してください。
学習が実行されている間、エージェントは θ のパラメーター値を調整します。学習後、パラメーターは調整された値のままになり、学習済みのアクター関数近似器が π(S) に保存されます。
エージェントの作成
TD3 エージェントの作成および学習は、MATLAB® コマンド ラインまたは強化学習デザイナー アプリを使用して行うことができます。強化学習デザイナーを使用したエージェントの作成の詳細については、Create Agents Using Reinforcement Learning Designerを参照してください。
コマンド ラインで、環境の観測仕様とアクション仕様に基づいて既定のアクターとクリティックを使用して、TD3 エージェントを作成できます。これを行うには、次の手順を実行します。
環境用の観測仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、
getObservationInfo
を使用してこの仕様を取得できます。環境用のアクション仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、
getActionInfo
を使用してこの仕様を取得できます。必要に応じて、それぞれの学習可能な層のニューロンの数、または LSTM 層を使用するかどうかを指定します。これを行うには、
rlAgentInitializationOptions
を使用してエージェント初期化オプション オブジェクトを作成します。必要に応じて、
rlTD3AgentOptions
オブジェクトを使用してエージェント オプションを指定します。rlTD3Agent
オブジェクトを使用してエージェントを作成します。
あるいは、アクターとクリティックを作成し、それらのオブジェクトを使用してエージェントを作成することもできます。この場合、アクターおよびクリティックの入力と出力の次元が、その環境の対応するアクション仕様および観測仕様と確実に一致するようにしてください。
rlContinuousDeterministicActor
オブジェクトを使用してアクターを作成します。rlQValueFunction
オブジェクトを使用して 1 つまたは 2 つのクリティックを作成します。rlTD3AgentOptions
オブジェクトを使用してエージェント オプションを指定します。rlTD3Agent
オブジェクトを使用してエージェントを作成します。
関数近似のためのアクターとクリティックの作成の詳細については、Create Policies and Value Functionsを参照してください。
学習アルゴリズム
TD3 エージェントは以下の学習アルゴリズムを使用し、タイム ステップごとにアクター モデルとクリティック モデルを更新します。学習アルゴリズムを構成するには、rlTD3AgentOptions
オブジェクトを使用してオプションを指定します。ここで、K = 2 はクリティックの数、k はクリティックのインデックスです。
各クリティック Qk(S,A;ϕk) をランダムなパラメーター値 ϕk で初期化し、同じランダムなパラメーター値で各ターゲット クリティックを初期化する ()。
アクター π(S;θ) をランダムなパラメーター値 θ で初期化し、同じパラメーター値でターゲット アクターを初期化する ()。
各学習タイム ステップについて、次のようにする。
現在の観測値 S に対して、アクション A = π(S;θ) + N を選択します。ここで、N はノイズ モデルからの確率的ノイズです。ノイズ モデルを構成するには、
ExplorationModel
オプションを使用します。アクション A を実行します。報酬 R と次の観測値 S' を観測します。
経験 (S,A,R,S') を経験バッファーに保存します。
経験バッファーから M 個の経験 (Si,Ai,Ri,S'i) のランダムなミニバッチをサンプリングします。M を指定するには、
MiniBatchSize
オプションを使用します。S'i が終了状態の場合、価値関数のターゲット yi を Ri に設定します。それ以外の場合、次のように設定します。
価値関数のターゲットは、経験報酬 Ri とクリティックからの将来の最小割引報酬の合計になります。割引係数 γ を指定するには、
DiscountFactor
オプションを使用します。累積報酬を計算するために、エージェントはまず、サンプリングされた経験からの次の観測値 S'i をターゲット アクターに渡すことによって、次のアクションを計算します。次に、エージェントは
TargetPolicySmoothModel
を使用して計算されたアクションにノイズ ε を付加し、ノイズの上限と下限に基づいてアクションをクリップします。エージェントは、ターゲット クリティックに次のアクションを渡すことによって累積報酬を求めます。NumStepsToLookAhead
の値を N に等しいと指定した場合、N ステップの収益 (次の N ステップの報酬と、N 番目の報酬を発生させた状態の割引推定値を加算したもの) がターゲット yi の計算に使用されます。学習ステップごとに、すべてのサンプリングされた経験にわたる損失 Lk を最小化して、各クリティック パラメーターを更新します。
D1 ステップごとに、以下のサンプリングされた方策勾配を使用してアクター パラメーターを更新し、割引報酬の期待値を最大化します。D1 を設定するには、
PolicyUpdateFrequency
オプションを使用します。ここで、Gai はアクター ネットワークによって計算されたアクションに関する最小クリティック出力の勾配であり、Gπi はアクター パラメーターに関するアクターの出力の勾配です。両方の勾配が観測値 Si に対して評価されます。
D2 ステップごとに、ターゲットの更新方法に応じてターゲットとなるアクターとクリティックを更新します。D2 を指定するには、
TargetUpdateFrequency
オプションを使用します。詳細については、ターゲットの更新方法を参照してください。
簡単にするために、このアルゴリズムのアクターとクリティックの更新は、基本的な確率的勾配降下法を使用した勾配の更新を示しています。実際の勾配更新方法は、rlCriticOptimizerOptions
プロパティに割り当てられた rlOptimizerOptions
オブジェクトで指定したオプティマイザーによって異なります。
ターゲットの更新方法
TD3 エージェントは、以下のターゲット更新方法のいずれかを使用して、ターゲットとなるアクターとクリティックのパラメーターを更新します。
平滑化 — 平滑化係数 τ を使用して、タイム ステップごとにターゲット パラメーターを更新します。平滑化係数を指定するには、
TargetSmoothFactor
オプションを使用します。周期的 — 平滑化なしでターゲット パラメーターを周期的に更新します (
TargetSmoothFactor = 1
)。更新期間を指定するには、TargetUpdateFrequency
パラメーターを使用します。周期的平滑化 — 平滑化を使用してターゲット パラメーターを周期的に更新します。
ターゲット更新方法を構成するには、rlTD3AgentOptions
オブジェクトを作成し、次の表に示すように TargetUpdateFrequency
パラメーターと TargetSmoothFactor
パラメーターを設定します。
更新方法 | TargetUpdateFrequency | TargetSmoothFactor |
---|---|---|
平滑化 (既定) | 1 | 1 未満 |
周期的 | 1 より大きい | 1 |
周期的平滑化 | 1 より大きい | 1 未満 |
参照
[1] Fujimoto, Scott, Herke van Hoof, and David Meger. "Addressing Function Approximation Error in Actor-Critic Methods". ArXiv:1802.09477 [Cs, Stat], 22 October 2018. https://arxiv.org/abs/1802.09477.