このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
深層決定論的方策勾配 (DDPG) エージェント
深層決定論的方策勾配 (DDPG) アルゴリズムは、モデルフリーのオンライン Off-Policy 強化学習手法です。DDPG エージェントは、累積長期報酬の期待値が最大になる最適な方策を検索する、actor-critic 強化学習エージェントです。
さまざまな種類の強化学習エージェントの詳細については、強化学習エージェントを参照してください。
DDPG エージェントは、次の観測空間と行動空間をもつ環境で学習させることができます。
観測空間 | 行動空間 |
---|---|
連続または離散 | 連続 |
DDPG エージェントは次のアクターとクリティックを使用します。
クリティック | アクター |
---|---|
Q 値関数クリティック Q(S,A)。 | 決定論的方策アクター π(S)。 |
学習が実行されている間、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 エージェントを作成できます。これを行うには、次の手順を実行します。
環境用の観測仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、
getObservationInfo
を使用してこの仕様を取得できます。環境用のアクション仕様を作成します。既に環境インターフェイス オブジェクトがある場合は、
getActionInfo
を使用してこの仕様を取得できます。必要に応じて、それぞれの学習可能な層のニューロンの数、または LSTM 層を使用するかどうかを指定します。これを行うには、
rlAgentInitializationOptions
を使用してエージェント初期化オプション オブジェクトを作成します。必要に応じて、
rlDDPGAgentOptions
オブジェクトを使用してエージェント オプションを指定します。rlDDPGAgent
オブジェクトを使用してエージェントを作成します。
あるいは、アクターとクリティックを作成し、それらのオブジェクトを使用してエージェントを作成することもできます。この場合、アクターおよびクリティックの入力と出力の次元が、その環境の対応するアクション仕様および観測仕様と確実に一致するようにしてください。
rlContinuousDeterministicActor
オブジェクトを使用してアクターを作成します。rlQValueFunction
オブジェクトを使用してクリティックを作成します。rlDDPGAgentOptions
オブジェクトを使用してエージェント オプションを指定します。rlDDPGAgent
オブジェクトを使用してエージェントを作成します。
関数近似のためのアクターとクリティックの作成の詳細については、Create Policies and Value Functionsを参照してください。
学習アルゴリズム
DDPG エージェントは以下の学習アルゴリズムを使用し、タイム ステップごとにアクター モデルとクリティック モデルを更新します。学習アルゴリズムを構成するには、rlDDPGAgentOptions
オブジェクトを使用してオプションを指定します。
クリティック Q(S,A;ϕ) をランダムなパラメーター値 ϕ で初期化し、同じ値でターゲット クリティック パラメーター ϕt を初期化する ()。
アクター π(S;θ) をランダムなパラメーター値 θ で初期化し、同じ値でターゲット アクター パラメーター θt を初期化する ()。
各学習タイム ステップについて、次のようにする。
現在の観測値 S に対して、アクション A = π(S;θ) + N を選択します。ここで、N はノイズ モデルからの確率的ノイズです。ノイズ モデルを構成するには、
NoiseOptions
オプションを使用します。アクション A を実行します。報酬 R と次の観測値 S' を観測します。
経験 (S,A,R,S') を経験バッファーに保存します。経験バッファーの長さは、
rlDDPGAgentOptions
オブジェクトのExperienceBufferLength
プロパティで指定されます。経験バッファーから M 個の経験 (Si,Ai,Ri,S'i) のランダムなミニバッチをサンプリングします。M を指定するには、
rlDDPGAgentOptions
オブジェクトのMiniBatchSize
プロパティを使用します。S'i が終了状態の場合、価値関数のターゲット yi を Ri に設定します。それ以外の場合、次のように設定します。
価値関数のターゲットは、経験報酬 Ri と将来の割引報酬の合計です。割引係数 γ を指定するには、
DiscountFactor
オプションを使用します。累積報酬を計算するために、エージェントはまず、サンプリングされた経験からの次の観測値 S'i をターゲット アクターに渡すことによって、次のアクションを計算します。エージェントは、ターゲット クリティックに次のアクションを渡すことによって累積報酬を求めます。
NumStepsToLookAhead
の値を N に等しいと指定した場合、N ステップの収益 (次の N ステップの報酬と、N 番目の報酬を発生させた状態の割引推定値を加算したもの) がターゲット yi の計算に使用されます。すべてのサンプリングされた経験にわたる損失 L を最小化して、クリティック パラメーターを更新します。
以下のサンプリングされた方策勾配を使用してアクター パラメーターを更新し、割引報酬の期待値を最大化します。
ここで、Gai はアクター ネットワークによって計算されたアクションに関するクリティックの出力の勾配であり、Gπi はアクター パラメーターに関するアクターの出力の勾配です。両方の勾配が観測値 Si に対して評価されます。
ターゲットの更新方法に応じて、ターゲットとなるアクターとクリティックのパラメーターを更新します。詳細については、ターゲットの更新方法を参照してください。
簡単にするために、このアルゴリズムのアクターとクリティックの更新は、基本的な確率的勾配降下法を使用した勾配の更新を示しています。実際の勾配更新方法は、rlCriticOptimizerOptions
プロパティに割り当てられた rlOptimizerOptions
オブジェクトで指定したオプティマイザーによって異なります。
ターゲットの更新方法
DDPG エージェントは、以下のターゲット更新方法のいずれかを使用して、ターゲットとなるアクターとクリティックのパラメーターを更新します。
平滑化 — 平滑化係数 τ を使用して、タイム ステップごとにターゲット パラメーターを更新します。平滑化係数を指定するには、
TargetSmoothFactor
オプションを使用します。周期的 — 平滑化なしでターゲット パラメーターを周期的に更新します (
TargetSmoothFactor = 1
)。更新期間を指定するには、TargetUpdateFrequency
パラメーターを使用します。周期的平滑化 — 平滑化を使用してターゲット パラメーターを周期的に更新します。
ターゲット更新方法を構成するには、rlDDPGAgentOptions
オブジェクトを作成し、次の表に示すように TargetUpdateFrequency
パラメーターと TargetSmoothFactor
パラメーターを設定します。
更新方法 | TargetUpdateFrequency | TargetSmoothFactor |
---|---|---|
平滑化 (既定) | 1 | 1 未満 |
周期的 | 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.