【強化学習、図】DDPG(Deep Deterministic Policy Gradient ) について[メモ]

DDPGについて勉強したのでメモしておきます。

概要(箇条書きで)

  • DDPGはDeep Deterministic Policy Gradient の略
  • Actor-Critic手法の1つ
  • Deep Q Network(DQN)とは異なり行動が連続値の場合にもつかえる
  • DPG,DQNをベースとした手法

DDPGの構成

Actor-Critc手法なので、actor,criticからなります。
また、Target networkもあるのでもネットワークは4つなります。

ここでは、以下のように各ネットワークのパラメータを定義します。
\(\theta ^Q\): クリティックのパラメータ
\(\theta ^{\mu}\): アクターのパラメータ
\(\theta ^{\hat{Q}}\): ターゲットクリティックのパラメータ
\(\theta ^{\hat{\mu}}\): ターゲットアクターのパラメータ

行動選択

行動選択ですが、Target Actorに状態を入力します。

Target Actorに状態\(s\)を入力し、行動\(a\)(連続値)を出力します。

さらに、探索を行うためにオルンシュタイン=ウーレンベック過程に従ったノイズ\(\mathcal{N} \)を加えた値をアクションとします。

数式にすると以下のようになります。

\begin{aligned}a_t = \mu(s_{t-1} | \theta ^{\hat{\mu}}) + \mathcal{N} \end{aligned}

学習方法

DQNと同様にExperience Replyにより、経験をサンプリングし学習していきます。

以下では、サンプリングした経験の集合を\(B\)とします。

Criticの学習

Criticではサンプリングした経験(\(<s_i , a_i , r_i,s_{i+1}> \ \in B\))を使って、以下の誤差を最小化していきます。

\begin{aligned}L = \frac{1}{|B|} \sum_{i \in B} (r_i + \gamma Q(s_{i+1},\underbrace{\mu(s_{i+1} | \theta ^{\hat{\mu}})}_{actor’s \ \ output} |\theta ^{\hat{Q}}) – Q(s_i ,a_i | \theta ^Q))^2\end{aligned}

遷移先の状態でのアクターから出力された行動の行動価値を使います。

この誤差のイメージとしてはこんな感じになります。(このイメージだとわかりにくくなった・・・)

Actorの学習

アクターのほうですが、以下のような勾配の最大化を行います。

\begin{aligned} \nabla _{\theta ^{\mu}} \mu = \nabla _{\theta ^{Q}} Q(s,\mu (s|\theta ^{\mu})|\theta ^{Q})\end{aligned}

これは連鎖律を使えば、バッチ内においてのDeterministic Policy Gradientを計算することと同じであることがわかります。

Targetの更新

Actor, Critic共にソフトアップデートにより更新します

実装

githubにあげました。

https://github.com/tocom242242/deep-RL-tf2/blob/master/agents/ddpg_agent.py

参考文献

タイトルとURLをコピーしました