どこから見てもメンダコ

軟体動物門頭足綱八腕類メンダコ科

Soft-Actor-Critic (SAC) ①Soft-Q学習からSACへ

連続値制御のための有力手法である Soft Actor-Critic (SAC) の解説と、tensorflow2での実装例です。実装するだけならDDPGやその後継であるTD3とたいして変わりませんが、しっかり理解しようとするとなかなか苦労する手法です。

注意
Soft-Q学習および最大エントロピー強化学習に興味がない場合は ②tensorflow2での実装 だけで十分です。

次:②tensorflow2での実装 horomary.hatenablog.com


Soft-Q Learning論文: [1702.08165] Reinforcement Learning with Deep Energy-Based Policies

SAC論文 ①: [1801.01290] Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor

SAC論文 ②: [1812.05905] Soft Actor-Critic Algorithms and Applications

SAC論文 ③: https://arxiv.org/pdf/1812.11103.pdf


前提手法:DDPG, DQN

horomary.hatenablog.com

horomary.hatenablog.com


Sergey Levineの講演
youtu.be


はじめに

Soft Actor Critic (SAC) は 確率的方策*1を利用可能にした DDPG と実装的には理解することができます。

DDPGはオフポリシー学習に由来するサンプル効率の良さというメリットの一方で、決定論的方策ゆえの探索力の弱さに由来するハイパラ調整の困難さと高次元行動空間の不得手さという課題を抱えていました。そこで、SACはDDPGへSoft-Q学習確率的方策を導入することによってDDPGの探索の弱さの問題を自然に解決しました。

Soft-Q-learningでは報酬r(s, a)に方策エントロピー項を組み込むことにより、”報酬最大化”も”探索”も目的とすることでQ学習で自然に探索を行うことを可能にします。

※DDPGとTD3については過去記事を参照

DDPGでPendulum-v0(強化学習, tensorflow2) - どこから見てもメンダコ

TD3の解説・実装(強化学習) - どこから見てもメンダコ


Q学習における探索促進テクニック

方策が局所最適に陥らないために探索と活用(Exploration vs. Exploitation)のバランスをうまくとることは強化学習において重要な課題の一つです。 しかし、もっともシンプルなQ学習では常にQ関数を最大化するアクションを採用する決定論的方策である”貪欲方策 (Greedy policy)”を使用するので、探索力の弱さという問題を抱えることとなります。

貪欲方策
 \displaystyle{
\pi(a) = \underset{a} {\text{argmax }} Q(s, a)
}


このQ学習の探索力の弱さを補うためによく使われるアプローチがε-Greedy方策です。この方法はDeepmindDQN (2013)でも使用されています。このアプローチはごく単純で、行動の決定時にεの確率で完全にランダムなアクションを採用し、1-ε の確率で貪欲方策でアクション決定を行うことで貪欲方策を確率的貪欲方策へ拡張し探索力を高めようというものです。

ε-Greedy方策
(1-ε) の確率で:貪欲方策  \displaystyle{
\pi(a) = \underset{a} {\text{argmax }} Q(s, a)
}
εの確率で: ランダムなアクションを選択


Greedy方策のように推定Q値を最大化(hard-max)するアクションを採用するのではなく、推定Q値の指数分布に応じた選択確率で各アクションを採用する方策をSoftmax方策あるいはボルツマン方策*2 と言います。

Softmax方策
 \displaystyle{
\pi(a|s) = \frac { e^{ \frac{1}{\beta} Q(s, a)} }{\sum_{i}{ e^{ \frac{1}{\beta} Q(s, a_{i})} }}
}

softmax方策が効果を発揮するのは取りうる選択肢に似たようなQ値のアクションが並ぶ時です。たとえば状態sにおける選択肢にa1, a2があったとしてそのQ値がQ(s, a1)=100, Q(s, a2)=101 という拮抗した場合であっても貪欲方策では常にa2が選ばれてしまいます。一方でsoftmax方策の場合はa1とa2のQ値が似ていれば同じ程度の確率でa1, a2が選択されます。また、softmax方策は微分可能な確率方策であることも重要なポイントです。


詳細は説明しませんが、他にもQ関数の出力に確率的なノイズを追加する NoisyNet のようなアプローチもあります。また、分散並列強化学習手法であるApex-DQNではε-Greedyの拡張として並列agentのそれぞれに異なる探索率εを設定するというようなテクニックを採用しています。

このようにQ学習における探索促進手法はさまざまありますが、ここまでで紹介したものはすべて アクション選択に確率的なノイズを乗せることによって探索を促進するアプローチである、とまとめることができます。


Soft-Q学習:探索 ”も” 目的とするQ学習

※簡単のため割引率=1.0の場合かつP(s' | s, a) = 1の決定論的な挙動をする系の場合で考えます

[1702.08165] Reinforcement Learning with Deep Energy-Based Policies

ここまで紹介した探索促進テクニックはあくまで確率的ノイズの追加によって探索を促進する手法でした。これに対して、報酬に方策エントロピー項を組み込むことにより、”報酬最大化”も”探索”も目的とすることでQ学習で自然に探索を行うことを可能にする、というのがSoft-Q学習の中心的なコンセプトです。

具体的にはSoft-Q学習では期待総報酬に加えて、方策エントロピーの期待値も最大化することも目指します。

一般的な強化学習では総報酬の期待値を最大化することを目的関数とする
 \displaystyle{
J(\pi) = E_{\pi} \left[{ \sum_{t=0}^{T}{R(s_t, a_t)} }\right]
}


Soft-Q学習では総報酬の期待値と方策エントロピーを最大化することを目的関数とする
 \displaystyle{
J_{soft}(\pi) = E_{\pi} \left[{ \sum_{t=0}^{T}{(R(s_t, a_t)} + \alpha H(\pi( \cdot | s_t)) )}\right]
}
 \displaystyle{ H(\pi( \cdot | s_t)) } は方策のエントロピー, αはハイパーパラメータ


方策エントロピーとは

強化学習における方策のエントロピーとは直感的にはアクション選択におけるランダムさの尺度であると表現できます。
たとえばガウス方策であればσの大きさでエントロピーの大きさが決まります。

数式で言えば、方策のエントロピーHとはアクションの対数選択確率  \displaystyle{\log\pi(a | s)} の期待値です。
期待値ですので方策に従ってアクションが生成されているサンプルの場合、つまり普通に強化学習エージェントが方策に従ってサンプルを収集している場合は \displaystyle{\log\pi(a | s)}のミニバッチ内での単純平均を計算すればOKです。*3

 \displaystyle{
H(\pi( \cdot | s_t)) = \sum_{a} {-\pi(a | s)\log\pi(a | s)} = E_{a\sim\pi} \left[ {-\log\pi(a | s)} \right]
}

方策エントロピーが大きいということは同じ状態Sを入力しても異なるアクションAが採用される可能性が高いということです。よってこの方策エントロピー項が目的関数に組み込まれることにより、Q学習における探索の問題を自然に解決することが期待できます。

また、エントロピー最大化を目的関数に組み込むことは他にも転移学習が楽になるなどいろいろメリットがあります。このあたりの詳細は下記リンクによくまとまっているので参照ください。 bair.berkeley.edu


Soft Q 関数の更新 *4

まずは上述のエントロピーの定義に従ってSoft-Q学習の目的関数を書き直しました。

Soft-Q学習の目的関数
 \displaystyle{
J_{soft}(\pi) = E_{\pi} \left[{ \sum_{t=0}^{T}{(R(s_t, a_t)} -  \alpha \log\pi(a_{t} | s_{t}) )}\right]
}

この目的関数を最大化するためのQを考えると、soft-Q学習におけるベルマン方程式は下記のように書けます。

Soft-Q学習におけるベルマン方程式
 \displaystyle{
Q_{soft}(s_{t}, a_{t}) = R(s_{t}, a_{t}) + E_{\pi}\left[ - \alpha \log\pi(a_{t+1} | s_{t+1}) + Q_{soft}(s_{t+1}, a_{t+1})\right]
}

普通のQ学習における価値関数Vが、  \displaystyle{
V(s_{t}) = E_{\pi}\left[ Q(s_{t}, a_{t})\right]
} と表現できるのに対して、
Soft-Q学習における価値関数Vは  \displaystyle{
V_{soft}(s_{t}) = E_{\pi}\left[ - \alpha \log\pi(a_{t} | s_{t}) + Q(s_{t}, a_{t})\right]
}となるので、状態Vにエントロピーという価値が追加されています。

ちなみにこの式は ”SoftQ学習における即時報酬 = 通常の即時報酬 + 遷移先でのエントロピーボーナス” と捉えると普通のQ学習におけるベルマン方程式と同じと見ることもできます。

備考:Q学習とのつながり
 \displaystyle{
Q_{soft}(s_{t}, a_{t}) = R_{soft}(s_{t}, a_{t}) + E_{\pi}\left[ Q_{soft}(s_{t+1}, a_{t+1})\right]
}
 \displaystyle{
\text{where}\quad R_{soft}(s_{t}, a_{t}) = R(s_{t}, a_{t}) + E_{\pi}\left[{ - \alpha \log\pi(a_{t+1} | s_{t+1})  }\right]
}


Soft-Q学習における方策更新

Soft-Q学習における方策関数は出力するアクションの確率分布がSoft-Q関数の指数分布(つまりsoftmax方策)に比例するように更新することで最適方策に収束します。つまりQ関数から得られるsoftmax方策を近似する関数を方策関数として実装します。

ここで、もし離散行動空間であれば方策を関数近似する必要はなくDQNスタイルで実装したQ関数の出力からsoftmax方策を実行すればOKです。そうではなくわざわざ近似関数を別に実装するのは連続行動空間でQ関数からSoftmax方策を得るのは簡単ではないためです。Soft-Q学習における方策関数はQを扱いやすくするための近似関数でしかないため、著者は後のSAC論文でこの実装はactor-criticっぽくはあるが真のactor-criticフレームワークでは無いと述べています。


※図はhttps://bair.berkeley.edu/blog/2017/10/06/soft-q-learning/より

”方策関数の出力するアクションの確率分布がSoft-Q関数の指数分布に比例するように更新”、を実現するためには十分に表現力の高い形式で方策関数(論文ではdeep-energy based policyと呼ばれている形式)を用意し、方策関数の出力する確率分布とSoft-Q関数から得られるsoftmax方策とのKL距離を最小化するように更新していけばOKです。とまあ言うだけなら簡単なのですが、連続値制御でこれを実現しようとしたらとんでもなく実装が煩雑になってしまった、というのがSACの理論的根拠になっているSoft-Q学習([1702.08165] Reinforcement Learning with Deep Energy-Based Policies)です。


Soft Actor Critic(SAC)

Soft-Q学習の理論的貢献は素晴らしいのですがあまりに実装が煩雑で実用性がイマイチという欠点がありました。また、表現力が非常に高い形式の方策関数を使用したために学習が潜在的に不安定になるという問題もあります。

そこで[1801.01290] Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic ActorではSoft-Q学習を理論的根拠にしつつも、Soft-Q学習における方策関数はSoft-Q関数から得られるsoftmax方策の厳密な近似器である必要がなく、任意の形式の方策(例:ガウス方策、混合ガウス方策 など)を使用してよい ことを新たに証明し、シンプルなactor-critic型のSoft-Q学習を提案しました。これがSoft-Actor-Criticです。

ちなみに最新のSACの実装はDDPGおよびその改良手法であるTD3と非常によく似ており、TD3に多少の改変を加えるだけで実装できてしまいます。


混合ガウス方策について

いくら任意の方策関数の形式でもよいとは言え、Soft-Q学習の流れから考えればdeep-energy based方策とまでは言わずとも混合ガウス分布方策のようにある程度表現力が高い方策関数のが良いのだろうと思います。

実際、初期versionのSAC論文(OpenReview版, 下記リンク)では混合ガウス分布方策を前提にしているのですが、同じ論文内の HalfCheetah-v1における検証実験では単ガウス方策でも16-混合ガウス分布方策でもほぼ性能が変わらないということが示されています。

https://openreview.net/pdf?id=HJjvxl-Cb

これを受けてなのか、後の版の実験セクションでは何も言わずに単ガウス方策での結果を示しています。だからと言って必ずしも混合ガウス方策が無意味と決まったわけではなく、mujoco環境程度ではそこまで複雑な表現ができる方策関数は必要ないというだけで今後再評価されるときが来るかもしれません。


SAC実装の変遷

The SAC algorithm has changed a little bit over time. An older version of SAC also learns a value function V_{\psi} in addition to the Q-functions; this page will focus on the modern version that omits the extra value function.
Soft Actor-Critic — Spinning Up documentation

と書いてある通り、SACの実装は初期から少し変化しています。

大きな違いは下記の2点です
・初期の実装はQ、V、π を関数近似していたが、最新の実装はQ、πのみ関数近似する
・温度パラメータαは初期はハイパラとして与えていたが最新の実装では訓練の中で自動調整する

実装の詳細については ②tensorflow2での実装 にて

horomary.hatenablog.com


参考リンク

OpenAI Spinning up: Soft Actor-Critic — Spinning Up documentation

UCバークレーBAIR:
Learning Diverse Skills via Maximum Entropy Deep Reinforcement Learning – The Berkeley Artificial Intelligence Research Blog

Soft Actor Critic—Deep Reinforcement Learning with Real-World Robots – The Berkeley Artificial Intelligence Research Blog

カーネギーメロン大講義資料:https://www.andrew.cmu.edu/course/10-403/slides/S19maxentRL.pdf

マギル大講義資料: https://www.cs.mcgill.ca/~cs526/roger.pdf

南京大講義資料:http://www.lamda.nju.edu.cn/yanggy/slide/Maximum_entropy_RL_Guoyu_Yang.pdf

Maximum Entropy Reinforcement Learning (Stochastic Control)


*1:たとえばガウス分布の平均と分散を出力する方策ネットワーク

*2:ちなみにボルツマン方策といわれるのは、統計力学などで用いられる気体などにおける系内の各分子のエネルギー分布を示すボルツマン分布と同じ形だからです。βを温度パラメータと言うのもこれに由来します。βが小さいほど=温度が低いほどエントロピーの寄与が小さくなるためエネルギー=Q値の重要度が高まっていきβ=0のときhardmax方策(貪欲方策)に一致します。

*3:サイコロを2個振ったときの和の期待値を計算するために2×1/36+2×2/36+... と各事象ごとの確率から期待値を計算するか、実際にサイコロ2個振る試行を100回繰り返して単純平均をとるかの違い

*4:Soft-Q学習の説明はSoft-Q learningの論文である"Reinforcement learning with deep energy based policies" よりも "Soft Actor-Critic Algorithms and Applications"に掲載の説明の方が分かりやすいので後者をベースに説明