[강화학습 메모] Proximal Policy Optimization (PPO, 2017)

Joonas' Note

[강화학습 메모] Proximal Policy Optimization (PPO, 2017) 본문

AI

[강화학습 메모] Proximal Policy Optimization (PPO, 2017)

2023. 3. 11. 09:21 joonas 읽는데 4분
  • Proximal Policy Optimization (PPO, 2017)
  • (1) Importance sampling
  • (2) Clipping
  • (3) GAE (Generalized Advantage Estimate)
  • 정리
  • 참고

Proximal Policy Optimization (PPO, 2017)

목적 함수를 완성하기 위한 gradient 식은 아래와 같다.

θJθt=0st,at,st+1θlnpθ(at|st) At pθ(st,at) p(st+1|st,at) dst,at,st+1

여기서 At는 n-step TD error 인데, At의 정의에 따라서 아래와 같이 달라졌었다.

At={GtREINFORCEQ(st)ActorCriticQ(st,at)V(st)A2C

(1) Importance sampling

굳이 pθ(st,at) p(st+1|st,at) 에서 뽑지 않고, 다른 pdf 에서 뽑고 보상을 해줌으로써 같은 효과를 누리겠다.

Exp(x)[x]=xxp(x)dx=x(xp(x)q(x))q(x)dx=Exq(x)[xp(x)q(x)]

좌항은 1NNi=1xi 과 근사하고, 우항은 1NNi=1xip(xi)q(xi) 과 근사하다. 그럼 두 근삿값이 비슷하다고 어림할 수 있으니 아래처럼 된다.

1NNi=1xi  1NNi=1xip(xi)q(xi)

위와 같은 importance sampling 을 기반으로 해서 식을 전개한다.

p(xi)pθ(at|st) 로 보고, q(xi) 를 어떤 옛날 값인 pθprev(at|st) 로 보는 것이다.

θJθt=0st,at,st+1θlnpθ(at|st) At pθ(st,at) p(st+1|st,at) dst,at,st+1t=0st,at,st+1θlnpθ(at|st)pθprev(at|st) At pθprev(st,at) p(st+1|st,at) dst,at,st+1

이제 더 이상 pθprev(st,at) 를 버리지 않고 다시 사용할 수 있게 되었다.

Policy update는 아래와 같다.

θθ+αθti=tN+1pθ(ai|si)pθprev(ai|si)Ai

위에서 전개한 식이 근삿값인 이유는, pθprev(st)pθ(st) 를 만족해야하기 때문이고, 그러므로 θ도 너무 차이가 나면 안되고 θprevθ 이여야한다.

목표는 max ti=tN+1pθ(ai|si)pθprev(ai|si)Ai 이고 제약사항으로는 Est KL[Pθprev,Pθ] 이다.

💡 여기서 KL 함수는 쿨백-라이블러 발산(Kullback–Leibler divergence, KLD)은 두 확률 분포의 차이를 계산하는 데에 사용하는 함수이다. 어떤 이상적인 분포에 대해 그 분포를 근사하는 다른 분포를 이용해서 샘플링을 했을때 발생할 수 있는 엔트로피의 차이를 계산한다.
💡 라그랑주 완화법(Lagrangian Relaxation)을 사용해서 constraint set을 확장하여 근사적으로 문제를 해결할 수 있다고 한다.

하지만 PPO 논문에서는 클리핑(clipping)을 사용했다.

(2) Clipping

원래 TRPO(Trust Region Policy Optimization, 2015) 논문이 먼저 있었는데, 이걸 클리핑으로 간단하게 해결한 게 PPO 라고 한다.

현재 정책을 \pi_{\theta_{OLD}}(u_t\mid x_t)라 하자.

또 둘의 비율을 r_t(\theta) = \frac{\pi_\theta(u_t\mid x_t)}{\pi_{\theta_{OLD}}(u_t\mid x_t)}이라 하자.

그려면 r_t(\theta)는 1에 매우 가까운 숫자여야 한다. 두 정책이 비슷해야하기 때문이다.

1-\epsilon < r_t(\theta)<1+\epsilon이로 한정할 것이다.

r_t(\theta)가 위 범위 안에 있으면 그대로 r_t(\theta)를 채택할 것이다. 또 1+\epsilon보다 크면, 1+\epsilon

1-\epsilon보다 작으면 1-\epsilon을 채택할 것이다.

(3) GAE (Generalized Advantage Estimate)

\begin{aligned}   R_t + \gamma V(s_{t+1})-V(s_t) & : 1~step~TD~error \\   R_t + \gamma V(s_{t+1}) + \gamma^2 V(s_{t+2}) - V(s_t) & : 2~stepTD~error \\   & \vdots\\ R_t + \dots + \gamma^n V(s_{t+n}) - V(s_t)   & : n~step~~TD~error \\ \end{aligned}

모든 n step 에 대해서 EMA(Exponential moving average)를 구해서 사용한다.

TD(\lambda) \rightarrow \sum_{n=1}^\infty (1-\lambda) \lambda^{n-1}~A_{t}^{(n)}

A_t^{(n)} 을 전개해보면,

\begin{aligned} A_t^{(1)} & = R_t + \gamma V(s_{t+1})   V(s_t) \triangleq \delta_t \\   A_t^{(2)} & = R_t + \gamma V(s_{t+1}) \gamma^2 V(s_{t+2})   V(s_t) \\ & = (R_t + \gamma V(s_{t+1}) - V(s_t)) + \gamma (R_{t+1} + \gamma V(s_{t+2}) - V(s_{t+1})) \\ &= \delta_t + \gamma \delta_{t_1} \\   A_t^{(n)} & = \sum_{k=t}^{t+n-1} \gamma^{k-t} \delta_k \end{aligned}

위와 같이 표현할 수 있고, 이걸 TD(\lambda) 로 적은 식에 대입해보면,

\begin{aligned}   TD(\lambda) & \rightarrow \sum_{n=1}^\infty (1-\lambda) \lambda^{n-1}~A_{t}^{(n)} \\   & = (1-\lambda) (\delta_t     \lambda(\delta+\gamma \delta_{t+1})     \lambda^2(\delta+\gamma \delta_{t+1}+ \gamma^2 \delta_{t+2})     \dots ) \\   & = (1-\lambda) ( \delta_t (1+\lambda+\lambda^2+\dots)     \gamma \delta_{t+1} (\lambda+\lambda^2+\dots)     \dots ) \\   & = \sum_{k=t}^{\infty} (\gamma \lambda)^{k-t} \delta_k ~ \triangleq A_t^{GAE} \end{aligned}

중간에는 등비급수 사용하면 (1+\lambda+\lambda^2+\dots)\frac{\lambda}{1-\lambda} 가 된다. (단, |\lambda| < 1 )

정리

  1. \theta, w~ 초기화
  2. 다음을 반복
    1. N개의 샘플 수집 (a^{(i)}$ sample : $\{s_i, a_i, s_{i+1}\})
    2. 다음을 반복 — (epoch)
      • Actor update; \theta \leftarrow \theta + \alpha \nabla_{\theta} \sum_{i=t-N+1}^{t} J_i^{clip}
      • Critic update; w \leftarrow w + \beta \nabla_{w} \sum_{i=t-N+1}^{t} (\hat A_i^{GAE})^2
    3. 배치 클리어

수식에 action의 확률을 계산하는 부분이 남아있다보니, 완전한 off policy 는 아니고 on policy 라고 한다.

참고

강화학습 알아보기(4) - Actor-Critic, A2C, A3C · greentec's blog

 

TRPO와 PPO 알고리즘의 개념

앞선 글들에서 소개했듯이, 강화학습은 주어진 Environment에서 State을 기준으로, 최고의 Action을 학습해나가는 과정이다. State에서의 Action을 통한 결과를 반영하여 (State, Action) = (s,a)의 관계 Q function

engineering-ladder.tistory.com

 

 

Proximal Policy Optimization — Spinning Up documentation

You Should Know In what follows, we give documentation for the PyTorch and Tensorflow implementations of PPO in Spinning Up. They have nearly identical function calls and docstrings, except for details relating to model construction. However, we include bo

spinningup.openai.com

 

 

Sample Efficient Actor-Critic with Experience Replay

This paper presents an actor-critic deep reinforcement learning agent with experience replay that is stable, sample efficient, and performs remarkably well on challenging environments, including the discrete 57-game Atari domain and several continuous cont

arxiv.org

 

 

Generalized Advantage Estimate: Maths and Code

I got a question about the Generalized Advantage Estimate (GAE) on my article implementing the Phasic Policy Gradient (PPG) algorithm, so I thought I’d follow up here with some extra details 😊 Here…

towardsdatascience.com

 

 

Exponential Moving Average

Neural Network Training Trick Improves Model Generalization

leimao.github.io

 

Comments