SAC(Soft‐Actor‐Critic) - Shinichi0713/RL-study GitHub Wiki
はじめに
Soft Actor Critic (SAC) は 確率的方策*1を利用可能にした DDPG と実装的には理解することができます。
DDPGはオフポリシー学習に由来するサンプル効率の良さというメリットの一方で、決定論的方策ゆえの探索力の弱さに由来するハイパラ調整の困難さと高次元行動空間の不得手さという課題を抱えていました。そこで、SACはDDPGへSoft-Q学習と確率的方策を導入することによってDDPGの探索の弱さの問題を自然に解決しました。
Soft-Q-learningでは報酬r(s, a)に方策エントロピー項を組み込むことにより、”報酬最大化”も”探索”も目的とすることでQ学習で自然に探索を行うことを可能にします。
Q学習における探索促進テクニック
方策が局所最適に陥らないために探索と活用(Exploration vs. Exploitation)のバランスをうまくとることは強化学習において重要な課題の一つです。 しかし、もっともシンプルなQ学習では常にQ関数を最大化するアクションを採用する決定論的方策である”貪欲方策 (Greedy policy)”を使用するので、探索力の弱さという問題を抱えることとなります。
\pi(a) = argmax_{a}Q(s, a)
このQ学習の探索力の弱さを補うためによく使われるアプローチがε-Greedy方策です。この方法はDeepmindのDQN (2013)でも使用されています。このアプローチはごく単純で、行動の決定時にεの確率で完全にランダムなアクションを採用し、1-ε の確率で貪欲方策でアクション決定を行うことで貪欲方策を確率的貪欲方策へ拡張し探索力を高めようというものです。
Greedy方策のように推定Q値を最大化(hard-max)するアクションを採用するのではなく、推定Q値の指数分布に応じた選択確率で各アクションを採用する方策をSoftmax方策あるいはボルツマン方策*2 と言います。
\pi(a \mid 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方策は微分可能な確率方策であることも重要なポイントです。
Soft-Q学習:探索 ”も” 目的とするQ学習
ここまで紹介した探索促進テクニックはあくまで確率的ノイズの追加によって探索を促進する手法でした。 これに対して、報酬に方策エントロピー項を組み込むことにより、”報酬最大化”も”探索”も目的とすることでQ学習で自然に探索を行うことを可能にする、というのがSoft-Q学習の中心的なコンセプトです。
エントロピーとは
方策強化学習における方策のエントロピーとは直感的にはアクション選択におけるランダムさの尺度であると表現できます。 たとえばガウス方策であればσの大きさでエントロピーの大きさが決まります。
数式で言えば、方策のエントロピーHとはアクションの対数選択確率 $logπ(a|s)$ の期待値です。
H(\pi(\cdot|s_t)) = \sum_a -\pi(a|s) \log \pi(a|s) = \mathbb{E}_{a \sim \pi} [-\log \pi(a|s)]
方策エントロピーが大きいということは同じ状態Sを入力しても異なるアクションAが採用される可能性が高いということです。 よってこの方策エントロピー項が目的関数に組み込まれることにより、Q学習における探索の問題を自然に解決することが期待できます。 また、エントロピー最大化を目的関数に組み込むことは他にも転移学習が楽になるなどいろいろメリットがあります。このあたりの詳細は下記リンクによくまとまっているので参照ください。
Soft Q 関数の更新
上述のエントロピーの定義に従ってSoft-Q学習の目的関数を書き直しました。
”方策関数の出力するアクションの確率分布がSoft-Q関数の指数分布に比例するように更新”、を実現するためには十分に表現力の高い形式で方策関数(論文ではdeep-energy based policyと呼ばれている形式)を用意し、方策関数の出力する確率分布とSoft-Q関数から得られるsoftmax方策とのKL距離を最小化するように更新していけばOKです。
Soft-Q関数の目的関数は報酬とポリシーのエントロピー項を同時に最大化する形で定義される。
J_{\mathrm{soft}}(\pi) = \mathbb{E}_\pi \left[ \sum_{t=0}^T \left( R(s_t, a_t) - \alpha \log \pi(a_t \mid s_t) \right) \right]
この目的関数を最大化するためのQを考えると、soft-Q学習におけるベルマン方程式は以下のように記載できます。
Q_{\mathrm{soft}}(s_t, a_t) = R(s_t, a_t) + \mathbb{E}_\pi \left[ -\alpha \log \pi(a_{t+1} \mid s_{t+1}) + Q_{\mathrm{soft}}(s_{t+1}, a_{t+1}) \right]
普通のQ学習における価値関数
普通のQ学習における価値関数 $V$ は、次のように表されます。
V(s_t) = \mathbb{E}_\pi \left[ Q(s_t, a_t) \right]
Soft-Q学習における価値関数
Soft-Q学習における価値関数 $V_{\mathrm{soft}}$ は、エントロピー項を含めて次のように表されます。
V_{\mathrm{soft}}(s_t) = \mathbb{E}_\pi \left[ -\alpha \log \pi(a_t \mid s_t) + Q(s_t, a_t) \right]
このように、状態価値 $V$ にエントロピーという価値が追加されています。
Soft-Q学習のベルマン方程式
この式は
「Soft-Q学習における即時報酬 = 通常の即時報酬 + 遷移先でのエントロピーボーナス」
と捉えると、普通のQ学習のベルマン方程式と同じ形になります。
Q_{\mathrm{soft}}(s_t, a_t) = R_{\mathrm{soft}}(s_t, a_t) + \mathbb{E}_\pi \left[ Q_{\mathrm{soft}}(s_{t+1}, a_{t+1}) \right]
ここで、
R_{\mathrm{soft}}(s_t, a_t) = R(s_t, a_t) + \mathbb{E}_\pi \left[ -\alpha \log \pi(a_{t+1} \mid s_{t+1}) \right]