티스토리 뷰

Study/AI

[RL][Review] Deterministic Policy Gradient Algorithm

생각많은 소심남 2022. 11. 3. 18:22

(논문의 의도를 가져오되, 개인적인 의견이 담길 수도 있습니다.)

Deterministic Policy Gradient Algorithm (D.Silver et al, 2014)

Abstract

 이 논문에서는 Continuous Action을 수행할 수 있는 Deterministic Policy Gradient (DPG)에 대해서 소개하고 있다. DPG는 (보통 Q value function이라고 알고 있는) action-value function(\(Q^{\pi}(s, a)\) )의 expected gradient 형태로 되어 있어, 일반적으로 알고 있는 (Stochastic) Policy Gradient 보다 data efficiency 측면에서 이점이 있다. 대신 Deterministic하기 때문에 exploration이 상대적으로 적어지게 되는데, 이를 극복하기 위해서 off-policy(target policy 와 behavior policy가 다른) actor-critic algorithm을 사용한다. 그래서 이를 이용해서 behavior policy는 exploration을 하게끔 하고, 여기서 deterministic한 target policy를 배우는게 목적이다. 결과적으로 DPG를 통해서 high-dimensional action space에서도 stochastic Policy Gradient보다 더 좋은 성능을 보여주는 것을 목적으로 하고 있다.

Introduction

 Value-based method는 discrete action에서만 동작할 수 있기 때문에 보통 Continuous Action space를 가지는 경우는 value function을 사용하는게 아닌 Policy 자체를 학습하는 Policy Gradient algorithm을 많이 사용하는데, 이 Policy Gradient의 핵심 아이디어는 \(\theta\)라고 하는 parameter에 의해서 결정되는 일종의 확률분포 \(\mathbb{P}[a|s;\theta]\)를 policy \(\pi_{\theta}(a|s)\)로 정의해서 특정 state \(s\)에서의 action \(a\)를 확률적으로(stochastic) 결정하자는 것이다. 쉽게 말해서 \(s\)에서의 action \(a\)가 딱 결정되는게 아니라 70%의 확률로 \(a_1\), 20%의 확률로 \(a_2\),.. 이렇게 하자는 것이다. 그래서 이 논문이 나오기 이전까지는 이런 stochastic policy를 sampling해서 더 좋은 total expected reward가 나오는 방향으로 policy parameter \(\theta\)를 조절하는 것이 Policy Gradient의 역할이었다. 

 그래서 이 논문에서 보여주고자 한 것은 이런 stochastic policy가 아닌 deterministic policy로도 Policy Gradient 계산이 가능하다는 것과, 형태가 간단한 model-free 형태여서 이전 policy Gradient에서도 사용했던 action-value function의 gradient를 그대로 사용할 수 있다는 것이다. 더불어 deterministic policy도 결국은 policy에 대한 variance가 0인 stochastic policy gradient와 동일하다는 것을 증명하려고 했다. 

 사실 Deterministic Policy Gradient와 Stochastic Policy Gradient의 차이를 높고 보자면, Policy Gradient 계산식에서 볼 수 있다. Stochastic Policy Gradient를 계산할 때는, 모든 State \(s\)와 Action \(a\)에 대한 확률분포를 바탕으로 계산해야 되기 때문에, 결국 수많은 데이터 기반으로 샘플링을 해야 되고, 계산될 때도 모든 state space와 action space를 고려해야 했다. 하지만 Deterministic policy의 경우는 state에 대한 action이 deterministic하기 때문에 action term을 고려할 필요가 없어진다. 결국 Policy Gradient를 계산할 때 action term이 줄게 되는 것이다. 대신 Stochastic Policy Gradient는 말 그대로 확률적이기 때문에 조금더 Unknown state에 대한 exploration이 가능하지만, Deterministic Policy Gradient는 그런 측면에서 exploration이 발생할 가능성이 낮게 된다. 그렇기 때문에 이를 극복하기 위해서 Abstract에서 소개한 바와 같이 Off-policy algorithm을 제시했다. Off-policy 기법을 쓰게 되면, environment에서 수행하는 학습하는 behavior policy \(\beta\)와 궁극적으로 학습해야 할 target policy \(\pi\)가 나뉘어지게 되는데, exploration을 적절하게 수행하기 위해서 behavior policy는 stochastic하게 구성하고, target policy는 deterministic하게 학습하게 함으로써 exploitation이 발생하도록 했다. 이를 위해서 differentiable function approximator를 사용했고, 이 approximator의 gradient에 따라 policy parameter \(\theta\)를 조절하게끔 되었다. 여기에 competible function approximation이란 개념을 적용해서 function approximation을 통한 결과가 policy gradient에 bias되는 현상을 막고자 했다.

Background

 보통 강화학습으로 문제를 해결하기 위해서는 해당 문제를 Markov Decision Process (MDP)로 모델링해야 되는데 이때 필요한 정보는 다음과 같다. (약간 변형이 된 형태이다.)

$$ \begin{align} \mathcal{S} &: \text{state space} \\
 \mathcal{A} &: \text{action space} \\
 p_1(s_1) &: \text{initial state distribution with density} \\
 p(s_{t+1} | s_t, a_t) &: \text{stationary transition dynamics distribution with conditional density} \\
 r : \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R} &: \text{reward function} \\
\gamma &: \text{discount factor}
 \end{align}$$

( 참고로 위의 요소 중 transtion distribution (or transition probability)는 시작 시점 부터 \(T\)때까지 얻은 trajectory \(s_1, a_1, s_2, a_2, \dots, s_t, a_t\)에 대해 Markov Property(\(p(s_{t+1}|s_1, a_1, \dots, s_t, a_t) = p(s_{t+1}|s_t, a_t)\))를 만족해야 한다.)

 그리고 우리가 궁극적으로 구해야 할 policy는 이 MDP내에서 action을 선택하는데 사용한다. 보통 이 policy는 stochastic하고 표현을 \(\pi_{\theta} : \mathcal{S} \rightarrow \mathcal{P}(\mathcal{A})\)라고 표기한다. 이 식에서 \(\mathcal{P}(\mathcal{A}) \)은 action space \(\mathcal{A}\)에서 action이 나올 확률 분포를 나타낸 것이고, policy parameter \(\theta\)는 n개의 parameter로 구성된 vector 형태로 되어 있다. 그래서 논문에 나오는 \(\pi_{\theta}(a_t|s_t)\)는 policy \(\pi_{\theta}\)가 수행될 때 \(a_t\)가 나타날 수 있는 조건부 확률 분포라고 보면 된다. 그러면 이 policy \(\pi_{\theta}\)를 앞에서 소개한 MDP상에서 수행하면서 일종의 trajectory \(h_{1:T} = s_1, a_1, r_1, \dots, s_T, a_T, r_T\)를 얻을 수 있다. (물론 trajectory의 차원은 \(\mathcal{S} \times \mathcal{A} \times \mathbb{R}\)이 될 것이다. 여기서 \(r_t^{\gamma}\) 은 time step \(t\)까지 얻은 total discounted reward이고, 아래와 같이 계산할 수 있다.

$$ r_t^{\gamma} = \sum_{k=t}^{\infty} \gamma^{k-t} r(s_k, a_k) \quad \text{where } 0 < \gamma < 1 $$

위에서 제시된 정보를 이용해서 각각의 value function를 다음과 같이 구할 수 있다.
$$ V^{\pi}(s) = \mathbb{E}[r_1^{\gamma} | S_1 = s; \pi] \\ Q^{\pi}(s, a) = \mathbb{E}[r_1^{\gamma} | S_1 = s, A_1 = a; \pi] $$

 앞에서 구한 total discounted reward를 이용해서 performance objective function \(J(\pi) = \mathcal{E}[r_1^{\gamma}|pi]\)를 계산할 수 있는데, 보통 강화학습의 궁극적인 목표는 이 performance objective function이 최대치가 되게 하는 policy \(\pi\)를 찾는 것이다. (다르게 표현하자면 total discounted reward가 최대가 되는 policy를 찾는 것이다.) 

 추가로 \(s'\)을 state \(s\)에서 앞에서 소개한 transition distribution \(p(s \rightarrow s', t, \pi)\)에 따라 \(t\)번 이동했을 때의 state라고 정의하고, 이에 따른 (discount factor가 반영된) state distribution을 \(\rho^{\pi}(s') := \int_{S} \sum_{t=1}^{\infty} \gamma^{t-1} p_1(s) p(s \rightarrow s', t, \pi) ds \)라고 하면, 이를 이용해서 앞의 performance objective를 기대값 형태로 아래와 같이 정리할 수 있다.

$$ \begin{align} J(\pi_{\theta}) &= \int_S \rho^{\pi}(s) \int_A \pi_{\theta}(s, a) r(s, a) da ds \\ 
 &= \mathbb{E}_{s \sim \rho^{\pi}} [r(s, a)] \end{align} $$

Stochastic Policy Gradient Theorem

 그래서 이 논문전까지 소개된 Stochastic Policy Gradient는 performance object의 gradient \(\nabla_{\theta} J(\pi_{\theta})\)를 계산해서 이에 따라 policy parameter \(\theta\)를 조절하는 algorithm을 결과로 도출한 것이다.

$$ \begin{align} \nabla_{\theta} J(\pi_{\theta}) &= \int_S \rho^{\pi}(s) \int_A \nabla_{\theta} \pi_{\theta}(a|s) Q^{\pi}(s, a) da ds \\ &= \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}} [\nabla_{\theta} \log \pi_{\theta}(a|s) Q^{\pi}(s,a)]  \end{align} $$

(위 식에 대한 증명을 확인하고 싶으면 이전의 Policy Gradient Algorithm 포스트를 참고하면 좋을거 같다.)

 사실 위 식이 미분도 하고, 적분도 해서 복잡한 것처럼 보이지만, policy gradient 자체가 state distribution의 영향을 받지 않기 때문에 결과적으로 적분이 기대값 형태로 함축되어서 연산이 크게 줄어들기 때문에 실용적으로 활용할 수 있게 되었다. 문제는 이제 해당 식에 남아있는 action-value function \(Q^{\pi}(s,a)\)를 어떻게 estimate할 수 있냐인데, 가장 간단한 방법이 여러 번 같은 policy를 수행해서 이중 return \(r_{t}^{\gamma}\)를 sampling해서 이걸로 \(Q^{\pi}(s, a)\)를 계산하는 것이다. 이게 바로 REINFORCE라고 불리는 monte-carlo policy gradient algorithm이다. 

Stochastic Actor-Critic Algorithm

 Actor-Critic Algorithm은 Policy Gradient 기반으로 되어 있어 크게 Actor와 Critic으로 이뤄져 있다. Actor는 앞에서 언급했던 Performance Objective의 gradient인

$$ \nabla_{\theta} J(\pi_{\theta}) = \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}}[ \nabla_{\theta} \log \pi_{\theta} (a|s) Q^{\pi}(s,a)] $$

를 gradient ascent하도록(보통 gradient descent를 하면 loss를 minimize할 때 사용하던 거였지만, 여기서는 performance를 올리는데 사용해야 하기 때문에 gradient ascent를 사용한다.) \(\theta\)를 조절한다. 그런데 사실 위 식에서 우리는 policy \(\pi\)를 수행한 상태가 아니기 때문에, 이에 따른 진짜 \(Q^{\pi}(s,a)\)도 모르는 상태이다. 그래서 \(\pi\) 대신 임의의 \(w\)를 policy로 가져온 \(Q^{w}(s,a)\)를 action-value function으로 대신 사용한다. 물론 임의의 \(Q^{w}(s,a)\)를 바로 사용할 수 없기 때문에, TD Learning 같은 것을 써서 실제의 value function \(Q^{\pi}(s,a)\)와 어느정도 유사하게끔 해주는 역할을 수행하는 것이 Critic이다. 결국 실제값이 아닌 어느정도 estimate된 value function \(Q^{w}(s,a)\)를 사용하기 때문에 최종으로 얻은 결과와 어느 정도 bias가 발생하게 된다. 그런데 만약 다음과 같은 조건을 만족하는 function approximator를 사용한다면, (논문에서는 이런 function approximator를 compatible function approximator라고 소개하고 있다.)

$$ \begin{align} & \text{i)} \quad Q^{w}(s,a) = \nabla_{\theta} \log \pi_{\theta}(a|s)^T w \\
 & \text{ii)} \quad \epsilon^2(w) = \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}} [ (Q^{w}(s,a) - Q^{\pi}(s,a))^2 ] \end{align} $$

(\(\text{ii)}\) 식은 잘 알겠지만, estimate된 값과 실제 값간의 오차를 mean squared error로 구한 것을 나타낸 것이고, 이 값이 최소화되는 \(w\)를 찾으면 궁극적으로 \(Q^{w}(s,a) \approx Q^{\pi}(s,a)\)가 될 것이다. 보통 이런 기법은 linear regression의 해를 찾는데 많이 활용된다)

 최종적으로 bias가 없어진다. 이때 선택된 \(w\)를 통해서 구한 \(Q^{w}(s,a)\)로 performance objective를 다시 정리해보면 다음과 같다.

$$  \nabla_{\theta} J(\pi_{\theta}) = \mathbb{E}_{s \sim \rho^{\pi}, a \sim \pi_{\theta}}[ \nabla_{\theta} \log \pi_{\theta} (a|s) Q^{w}(s,a)] $$

Off-Policy Actor-Critic

 Off-policy로 policy Gradient를 estimate한다는 것은 학습시키는 policy \(\pi_{\theta}\)와 별개인 behavior policy \(\beta(a|s) \neq \pi_{\theta}(a|s)\)로부터 trajectory를 sampling한다는 것이다. 이렇게 off-policy를 따르게 되면, 앞에서 계속 언급했던 performance objective도 behavior policy의 state distribution ( \(\rho^{\beta}(s)\))을 평균적으로 구한 것을 바탕으로 계산한, target policy에 대한 value function을 사용한 것으로 조금 바뀌게 된다.

$$ \begin{align} J_{\beta}(\pi_{\theta}) &= \int_S \rho^{\beta}(s) V^{\pi}(s) ds \\
&= \int_S \int_A \rho^{\beta}(s) \pi_{\theta}(a|s) Q^{\pi}(s, a) da ds   \end{align} $$ 

 물론 위 식을 미분하게 되면 말그대로 off-policy policy gradient를 구하게 되는 것이다.

$$ \begin{align} \nabla_{\theta} J_{\beta}(\pi_{\theta}) &\approx \int_S \int_A \rho^{\beta}(s) \nabla_{\theta} \pi_{\theta} (a|s) Q^{\pi}(s,a)da ds \\ 
&= \mathbb{E}_{s \sim \rho^{\beta}, a \sim \beta} \big[ \frac{\pi_{\theta}(a|s)}{\beta_{\theta}(a|s)} \nabla_{\theta} \log \pi_{\theta}(a|s) Q^{\pi}(s,a) \big] \end{align} $$

 이렇게 근사를 하게 되면 기본적으로 \(Q^{\pi}(s,a)\) 는 \(\theta\)에 관한 식이 아니기 때문에, 위와 같이 gradient를 취하게 되면 해당 term인  \(\nabla_{\theta}Q^{\pi}(s,a)\)는 없어지게 된다. "Linear off-policy actor-critic"(Degris et al, 2012)에서 이런 성향을 이용하면, policy gradient를 취할때 수행하는 gredient ascent에서 최소한 local optima에 도달할 수 있다고 표현을 하고 있다. 그래서 그 논문에서 소개한 Off-Policy Actor-Critic (OffPAC)에서는 따로 trajectory를 생성하기 위해서 behavior policy \(\beta(a|s)\)를 사용하고 있다. OffPAC에서 Critic은 behavior policy에서 구한 trajectory를 이용해서 실제 policy의 value function을 근사한 새로운 value function \(V^{v}(s) \approx V^{\pi}(s)\)를 구하고, Actor는 Critic과 마찬가지로 behavior policy에서 구한 trajectory를 이용해서 policy parameter \(\theta\)를 update한다. 이때 앞에서 구한 \(\nabla_{\theta}J_{\beta}(\pi_{\theta})\)를 활용해야 되는데, 우리가 off-policy를 활용하는 이상 \(Q^{\pi}(s,a)\)를 알 수 없다. 그렇기 때문에 보통 value function을 모를 때 이를 근사하는 방법인 TD Learning을 사용하고, 우리가 구해야 하는 \(Q^{\pi}(s,a)\) 대신 \(\delta_t = r_{t+1} + \gamma V^v(s_{t+1}) - V^v(s_t)\)를 이용하게 된다. 물론 target policy \(\pi\)와 behavior policy \(\beta\)간의 sampling distribution을 맞추기 위해서, Actor와 Critic 모두 Importance Sampling Ratio \(\frac{\pi_{\theta}(a|s)}{\beta_{\theta}(a|s)}\)를 적용해야 한다.

Action-Value Gradient

 거의 모든 model-free RL algorithm은 Policy Evaluation과 Policy Improvement가 혼합되어 있는 Generalized Policy Iteration(GPI)을 기반으로 되어 있다. Policy Evaluation은 Monte-Carlo Evaluation이나 TD Learning과 같이 action-value function \(Q^{\pi}(s,a)\)나 \(Q^{\mu}(s,a)\)를 추정하는 것을 말하고, Policy Improvement는 Policy Evaluation으로 추정한 value function을 기반으로 policy를 update하는 것을 말한다. 보통 이때는 greedy maximization (또는 soft maximization)이란 방법을 취하곤 한다. (\( \mu^{k+1}(s) = \arg \max_a Q^{\mu^k} (s,a) \))

 이 논문에서 다루고 있는 Continuous Action space로 범주를 넓혔을 때, 위와 같이 greedy하게 policy improve를 수행하면 매 step마다 \(\arg \max\)를 통해 maximization을 취해야 한다. 이 경우 만약 action space가 넓어지게 되면 그만큼 연산 측면에서 비효율적이 된다. 그래서 이런 maximization 방법 대신에 \(Q\)의 gradient의 방향으로 policy를 변화시키면 동일한 효과를 얻으면서 연산을 줄일 수 있게 된다. 

$$ \theta^{k+1} = \theta^k + \alpha \mathbb{E}_{s \sim \rho^{\mu^k}} [ \nabla_{\theta} Q^{\mu^k} (s, \mu_{\theta}(s))] $$

 조금더 자세히 말하자면, 매번 방문한 state \(s\)별로 policy parameter \(\theta^{k+1}\)를 value function \(\nabla_{\theta} Q^{\mu^k} (s, \mu_{\theta}(s)) \) 에 비례하게 update시키자는 것이다. 이때 방문한 state별로 policy improvement의 방향이 다를 수 있기 때문에 state distribution \(\rho^{\mu}(s)\)에 대해서 expectation을 취한 형태가 위의 식이다. 이 식에서 chain rule을 쓰면 action에 대해서 value function을 미분한 형태와 policy parameter에 대해서 policy를 미분한 형태로 쪼개서 구할 수 있다.

$$ \theta_{k+1} = \theta_{k} + \alpha \mathbb{E}_{s \sim \rho^{\mu^k}} [ \nabla_{\theta} \mu_{\theta} (s) \nabla_{a} Q^{\mu^k}(s,a) \vert_{a=\mu_{\theta}(s)} ] $$

 참고로 \(\nabla_{\theta} \mu_{\theta}(s)\)은 Jacobian Matrix를 나타내는데, matrix의 각 column \(d\)는 policy parameter \(\theta\)가 적용된 policy \(\mu\)상에서 \(d\)번째 action을 말하는 것이다. 그런데 여기서 policy를 바꾸게 되면, 방문한 state \(s\)도 바뀌게 될 것이고, 이에 따라 state distribution \(\rho^\mu\)도 바뀌게 될 것이다. 그래서 어떻게 보면 위와 같이 구해서는 Policy Improvement를 할 수 없을 수도 있겠지만, 다음 부분에서 언급하다시피 일반적인 Stochastic Policy Gradient처럼 굳이 state distribution의 gradient를 계산할 필요가 없다. 대신 policy improve시 사용하는 항이 이전에 소개한 performance objective이다.

Deterministic Policy Gradient Theorem

 이 논문에서 소개된 Deterministic Policy을 정의하자면, n차원으로 구성된 parameter vector \(\theta \in \mathbb{R}^n\)에 의해서 값을 설정할 수 있는 policy \(\mu_{\theta} : \mathcal{S} \rightarrow \mathcal{A}\)를 말하고, 해당 policy의 좋고 나쁜 정도를 표현하는 performance objective function을 \(J(\mu_{\theta}) = \mathbb{E}[r_1^{\gamma}|\mu]\)를 정의할 수 있다. 굳이 해석하면, 정해진 policy \(\mu\)를 수행하면서 얻을 수 있는 (discounted factor \(\gamma\)가 반영된) reward의 총합에 대한 expectation이 되겠다. 여기에 대한 probability distribution은 \(p(s \rightarrow s', t, \mu)\)이고, (discounted) state distribution은 Stochastic Policy와 동일하게 \(\rho^{\mu}(s)\)로 정의해둔다. 사실 state distribution 자체가 말 그대로 특정 state가 어느 분포를 띄는지를 나타낸 값이므로,이를 이용해서 앞에서 언급한 performance objective를 표현하면, 하나의 expectation을 구하는 형식으로 바꿀 수 있게 된다.

$$ \begin{align} J(\mu_{\theta}) &= \int_{S} \rho^{\mu}(s) r(s, \mu_{\theta}(s)) ds \\
&= \mathbb{E}_{s \sim \rho^{\mu}}[r(s, \mu_{\theta}(s))]\end{align} $$

이제 문제는 위의 Deterministic Policy의 특성을 사용해서도 Policy Gradient Theorem을 만족시키냐 하는 것이다. 이 Policy Gradient Theorem이란 Sutton이 "Policy Gradient Method for reinforcement learning with function approximation" 이란 논문을 통해서 소개한 정리인데, 간단히 설명하자면 특정 policy를 수행한 상태에서 얻은 total expected reward에 대한 derivative는 reward 자체에다가 수행하고 있는 policy에 \(\log\)를 취한 것의 derivative를 곱한 결과와 같다는 것을 증명했다.(이전 포스트중 Policy Gradient Algorithm에서 이에 대한 증명을 소개했었다.) 그러면 다시 말해서 Determinstic Policy를 써도 굳이 reward 미분하지 않고도 policy에 대한 미분만 구할 수 있으면 Theorem이 성립한다는 것이 논문의 전제 조건이었고, 이는 Appendix에서 증명했다. 여기서 도출할 수 있는 Theorem 1은 다음과 같다.

만약 MDP가 Appendix A.1의 조건을 만족한다면, \(\nabla_{\theta}\mu_{\theta}(s)\)와 \(\nabla_{a} Q^{\mu}(s, a)\)는 존재하며, 아래와 같이 deterministic policy gradient도 존재하게 된다.

$$ \begin{align} J(\mu_{\theta}) &= \int_{S} \rho^{\mu}(s) \nabla_{\theta} \mu_{\theta}(s) \nabla_a Q^{\mu}(s, a) \vert_{a=\mu_{\theta}(s)} ds \\
&= \mathbb{E}_{s \sim \rho^{\mu}}[\nabla_{\theta} \mu_{\theta}(s) \nabla_a Q^{\mu}(s, a) \vert_{a=\mu_{\theta}(s)}]\end{align} $$

Limit of the Stochastic Policy Gradient

앞에서 소개한 두번째 식을 살펴보면 deterministic policy gradient에는 그렇게 stochastic한 성향이 보이지 않아보이는데, 사실 다음의 경우를 통해서 deterministic policy gradient도 특별한(제한된 것이긴 하지만) 경우의 stochastic policy gradient임을 보일 수 있다. 먼저 기존의 \(\pi_{\mu_{\theta}, \sigma}\)로 정의되는 stochastic policy를 variance parameter \(\sigma = 0\)을 가지는 deterministic policy \(\mu_{\theta} : \mathcal{S} \rightarrow \mathcal{A}\) 로 생각해보면 결국 \(\pi_{\mu_{\theta}, 0} \equiv \mu_{\theta} \)라는 것을 알 수 있다. 그러면 \(\sigma \rightarrow 0\)일 때 stochastic policy gradient가 deterministic policy gradient로 수렴하는 것만 보여주면 된다. (이에 대한 내용도 Appendix C에 나와있다.) 여기서 도출할 수 있는 Theorem 2는 아래와 같다.

$$ \lim_{\sigma \downarrow 0} \nabla_{\theta} J(\pi_{\mu_{\theta}, \sigma}) = \nabla_{\theta} J(\mu_{\theta}) $$

위 식에서 왼쪽 항은 일반적인 stochastic policy gradient의 gradient를 나타낸 것이고, 오른쪽항은 deterministic policy gradient 의 gradient를 나타낸 것이다. 이 식을 통해서 policy gradient의 범주라고 할 수 있는 function approximation, natural gradient, actor-critic, episodic/batch 기법들이 모두 deterministic policy gradient에도 적용할 수 있다는 것을 증명하기 때문이 중요한 부분이 되겠다.

Deterministic Actor-Critic Algorithms

앞의 theorem을 통해서 이제 deterministic policy gradient를 on-policy와 off-policy actor-critic 기법에 적용해볼 수 있다. 

On-policy Deterministic Actor-Critic

일반적으로 deterministic policy에 따라서 action을 취하게 되면 탐색이 잘 적절하게 이뤄지지 않아서 sub optimal solution에 빠지는 경우가 많다. 이런 내용을 배제하고 우선 deterministic policy를 학습하고 이에 따라 행동하는 on-policy deterministic actor-critic 알고리즘에 대해서 소개하고자 한다. 물론 이 알고리즘의 목표는 교육용이긴 하지만 어쩌면 environment상에 충분한 noise가 있는 상황에서도 deterministic policy를 사용해도 충분한 탐색이 이뤄지는지를 확인하는데 도움이 될 것이다.

stochastic actor-critic처럼 deterministic actor-critic도 actor와 critic으로 나눠지는데 critic은 action-value function을 추정할 것이고, actor는 이 function의 gradient가 증가하는 방향으로 action을 취하게 될 것이다. 엄밀하게 말하자면 actor는 앞의 theorem 1을 통해서 소개된 바와 같이 stochastic gradient ascent를 사용해서 deterministic policy \( \mu_{\theta}(s)\)의 계수 \(\theta\)를 조절하게 될 것이다. 그리고 실제 action value function \(Q^{\mu}(s, a)\) 대신 미분가능한 action value function \(Q^{w}(s, a)\)를 사용할 것이고, 그러면 critic에서는 적절한 policy evaluation 알고리즘을 사용해서 \(Q^{w}(s, a) \approx Q^{\mu}(s, a)\)를 추정하게 된다. 예를 들어서 이번 deterministic actor-critic에서는 critic은 SARSA update를 통해서 action-value function을 추정한다.

$$ \delta_t = r_t + \gamma Q^{w} (s_{t+1}, a_{t+1}) - Q^w(s_t, a_t) \\
w_{t+1} = w_t + \alpha_w \delta_t \nabla_w Q^w (s_t, a_t) \\
\theta_{t+1} = \theta_t + \alpha_\theta \nabla_\theta \mu_{\theta}(s_t) \nabla_a Q^w (s_t, a_t) \vert_{a = \mu_\theta(s)} $$

 

(작성중)

 

댓글