Main Content

深層決定論的方策勾配 (DDPG) エージェント

深層決定論的方策勾配 (DDPG) アルゴリズムは、モデルフリーのオンライン Off-Policy 強化学習手法です。DDPG エージェントは、累積長期報酬の期待値が最大になる最適な方策を検索する、actor-critic 強化学習エージェントです。

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

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

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

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

クリティックアクター

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

決定論的方策アクター π(S)。rlContinuousDeterministicActor を使用して作成

学習が実行されている間、DDPG エージェントは次を行います。

  • 学習時に各タイム ステップでアクターとクリティックのプロパティを更新する。

  • リング経験バッファーを使用して過去の経験を保存する。エージェントは、バッファーからランダムにサンプリングされた経験のミニバッチを使用して、アクターとクリティックを更新する。

  • 各学習ステップで、確率的ノイズ モデルを使用して、方策によって選択されたアクションに摂動を与える。

アクター関数とクリティック関数

方策と価値関数を推定するために、DDPG エージェントは次の 4 つの関数近似器を維持します。

  • アクター π(S;θ) — アクターはパラメーター θ をもち、観測値 S を受け取り、長期的な報酬が最大になる対応するアクションを返します。

  • ターゲット アクター πt(S;θt) — 最適化の安定性を向上させるために、エージェントは最新のアクター パラメーター値を使用してターゲット アクター パラメーター θt を周期的に更新します。

  • クリティック Q(S,A;ϕ) — クリティックはパラメーター ϕ をもち、観測値 S とアクション A を入力として受け取り、対応する長期報酬の期待値を返します。

  • ターゲット クリティック Qt(S,A;ϕt) — 最適化の安定性を向上させるために、エージェントは最新のクリティック パラメーター値を使用してターゲット クリティック パラメーター ϕt を周期的に更新します。

Q(S,A;ϕ) と Qt(S,A;ϕt) は両方とも同じ構造とパラメーター表現をもち、π(S;θ) と πt(S;θt) は両方とも同じ構造とパラメーター表現をもちます。

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

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

エージェントの作成

DDPG エージェントの作成および学習は、MATLAB® コマンド ラインまたは強化学習デザイナー アプリを使用して行うことができます。強化学習デザイナーを使用したエージェントの作成の詳細については、Create Agents Using Reinforcement Learning Designerを参照してください。

コマンド ラインで、環境の観測仕様とアクション仕様に基づいて既定のアクターとクリティックを使用して、DDPG エージェントを作成できます。これを行うには、次の手順を実行します。

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

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

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

  4. 必要に応じて、rlDDPGAgentOptions オブジェクトを使用してエージェント オプションを指定します。

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

あるいは、アクターとクリティックを作成し、それらのオブジェクトを使用してエージェントを作成することもできます。この場合、アクターおよびクリティックの入力と出力の次元が、その環境の対応するアクション仕様および観測仕様と確実に一致するようにしてください。

  1. rlContinuousDeterministicActor オブジェクトを使用してアクターを作成します。

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

  3. rlDDPGAgentOptions オブジェクトを使用してエージェント オプションを指定します。

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

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

学習アルゴリズム

DDPG エージェントは以下の学習アルゴリズムを使用し、タイム ステップごとにアクター モデルとクリティック モデルを更新します。学習アルゴリズムを構成するには、rlDDPGAgentOptions オブジェクトを使用してオプションを指定します。

  • クリティック Q(S,A;ϕ) をランダムなパラメーター値 ϕ で初期化し、同じ値でターゲット クリティック パラメーター ϕt を初期化する (ϕt=ϕ)。

  • アクター π(S;θ) をランダムなパラメーター値 θ で初期化し、同じ値でターゲット アクター パラメーター θt を初期化する (θt=θ)。

  • 各学習タイム ステップについて、次のようにする。

    1. 現在の観測値 S に対して、アクション A = π(S;θ) + N を選択します。ここで、N はノイズ モデルからの確率的ノイズです。ノイズ モデルを構成するには、NoiseOptions オプションを使用します。

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

    3. 経験 (S,A,R,S') を経験バッファーに保存します。経験バッファーの長さは、rlDDPGAgentOptions オブジェクトの ExperienceBufferLength プロパティで指定されます。

    4. 経験バッファーから M 個の経験 (Si,Ai,Ri,S'i) のランダムなミニバッチをサンプリングします。M を指定するには、rlDDPGAgentOptions オブジェクトの MiniBatchSize プロパティを使用します。

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

      yi=Ri+γQt(Si',πt(Si';θt);ϕt)

      価値関数のターゲットは、経験報酬 Ri と将来の割引報酬の合計です。割引係数 γ を指定するには、DiscountFactor オプションを使用します。

      累積報酬を計算するために、エージェントはまず、サンプリングされた経験からの次の観測値 S'i をターゲット アクターに渡すことによって、次のアクションを計算します。エージェントは、ターゲット クリティックに次のアクションを渡すことによって累積報酬を求めます。

      NumStepsToLookAhead の値を N に等しいと指定した場合、N ステップの収益 (次の N ステップの報酬と、N 番目の報酬を発生させた状態の割引推定値を加算したもの) がターゲット yi の計算に使用されます。

    6. すべてのサンプリングされた経験にわたる損失 L を最小化して、クリティック パラメーターを更新します。

      L=12Mi=1M(yiQ(Si,Ai;ϕ))2

    7. 以下のサンプリングされた方策勾配を使用してアクター パラメーターを更新し、割引報酬の期待値を最大化します。

      θJ1Mi=1MGaiGπiGai=AQ(Si,A;ϕ)whereA=π(Si;θ)Gπi=θπ(Si;θ)

      ここで、Gai はアクター ネットワークによって計算されたアクションに関するクリティックの出力の勾配であり、Gπi はアクター パラメーターに関するアクターの出力の勾配です。両方の勾配が観測値 Si に対して評価されます。

    8. ターゲットの更新方法に応じて、ターゲットとなるアクターとクリティックのパラメーターを更新します。詳細については、ターゲットの更新方法を参照してください。

簡単にするために、このアルゴリズムのアクターとクリティックの更新は、基本的な確率的勾配降下法を使用した勾配の更新を示しています。実際の勾配更新方法は、rlCriticOptimizerOptions プロパティに割り当てられた rlOptimizerOptions オブジェクトで指定したオプティマイザーによって異なります。

ターゲットの更新方法

DDPG エージェントは、以下のターゲット更新方法のいずれかを使用して、ターゲットとなるアクターとクリティックのパラメーターを更新します。

  • 平滑化 — 平滑化係数 τ を使用して、タイム ステップごとにターゲット パラメーターを更新します。平滑化係数を指定するには、TargetSmoothFactor オプションを使用します。

    ϕt=τϕ+(1τ)ϕt(critic parameters)θt=τθ+(1τ)θt(actor parameters)

  • 周期的 — 平滑化なしでターゲット パラメーターを周期的に更新します (TargetSmoothFactor = 1)。更新期間を指定するには、TargetUpdateFrequency パラメーターを使用します。

  • 周期的平滑化 — 平滑化を使用してターゲット パラメーターを周期的に更新します。

ターゲット更新方法を構成するには、rlDDPGAgentOptions オブジェクトを作成し、次の表に示すように TargetUpdateFrequency パラメーターと TargetSmoothFactor パラメーターを設定します。

更新方法TargetUpdateFrequencyTargetSmoothFactor
平滑化 (既定)11 未満
周期的1 より大きい1
周期的平滑化1 より大きい1 未満

参照

[1] Lillicrap, Timothy P., Jonathan J. Hunt, Alexander Pritzel, Nicolas Heess, Tom Erez, Yuval Tassa, David Silver, and Daan Wierstra. “Continuous Control with Deep Reinforcement Learning.” ArXiv:1509.02971 [Cs, Stat], September 9, 2015. https://arxiv.org/abs/1509.02971.

参考

オブジェクト

関連する例

詳細