지난 포스팅에서는 TRPO 논문의 스토리에 대해서 심도 있게 다뤄보았다. TRPO는 일반적인 정책에 대해서 정책의 monotonic improvement를 보장할 수 있는 방법을 이론과 함께 제시하였다. 하지만, 이론이 복잡할수록 구현은 어려운 법이다. 유명 강화학습 라이브러리에서도 TRPO의 구현체가 없는 것을 보면 TRPO는 구현이 어렵다는 것을 간접적으로 알 수 있다. 내 생각에 TRPO에서 중요한 부분은 현재 정책과 “가까운 정책들 중에서” performance measure를 최적화하는 정책을 찾는 것이다. 이는 performance measure를 최적화하는 방향을 먼저 찾고, 그 방향으로 정책을 아주 조금만 업데이트하면 어느 정도 위의 사항을 달성할 수 있다. PPO는 TRPO의 업데이트 크기를 clip하여 정책을 조금씩만 업데이트 하는 방법이라고 요약할 수 있다.
- 제목: Proximal Policy Optimization Algorithms
- 저자: John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov, Open AI
- 연도: 2017
- 링크: https://arxiv.org/abs/1707.06347
다음 링크에서 본 포스팅의 PDF 파일 버전을 다운 받아서 볼 수 있습니다.
TRPO의 목적함수
TRPO는 업데이트 전 정책 πθold와 업데이트 후 정책 πθ의 KL divergence에 대해 제약 (constraint)을 걸어 다음 surrogate objective를 최대화를 했다. maximizeθˆEt[πθ(at|st)πθold(at|st)ˆAt],(1) subject toˆEt[KL[πθold(⋅|st),πθ(at|st)]]≤δ.(2)
해석하자면,
- 정책은 주어진 상태에 대한 행동들의 확률분포이기 때문에 두 정책 사이의 KL divergence를 계산할 수 있다.
- 업데이트 전, 후 정책의 KL divergence를 δ 이하로 유지하면서 식 (1)의 surrogate objective를 최대화.
- TRPO에서는 식 (1),(2)의 constraint optimization 대신 아래의 (3)을 최대화하는 방법도 제안했지만, β 값을 하나로 정하는 것이 매우 어렵다고 한다. β를 환경에 따라 지정해줘야할 뿐만 아니라, 사실 학습 도중에도 adaptive하게 바꿔줘야할 필요가 있었다.
논문의 해결책
Clipped Surrogate Objective
- KL divergence를 이용하여 업데이트의 크기를 제한하지 않고, 애초에 업데이트 대상인 πθ(at|st)πθold(at|st)ˆAt의 크기를 clipping하여 제한.
- 표기의 편의를 위해 rt(θ)=πθ(at|st)πθold(at|st)라 하자. (진작에 할껄 ,,,)
where clip(x,low,high)={lowif x<lowxif low≤x<highhighif x≥high
- 우선 θ=θold일 때 rt(θ)=1에서 업데이트를 시작한다.
- 만약 ˆAt>0 라면, 상태 st에서 행동 at를 취할 확률을 높여주는 방향으로 policy를 업데이트하게 된다. 따라서 rt(θ)이 1보다 커지게 된다. 이때, clip은 rt(θ)이 1+ϵ 까지만 커지도록 만들어준다.
- 반대로 만약 ˆAt<0 라면, 상태 st에서 행동 at를 취할 확률을 낮춰주는 방향으로 policy를 업데이트한다. 즉, rt(θ)이 1보다 작아지게 된다. 이때, clip은 rt(θ)이 1−ϵ 까지만 작아지게 만들어준다.
Adpative KL Penalty Coefficient
Clipped surrogate objective 방법 대신 식 (3)의 β를 policy가 업데이트 정도에 따라 adaptive하게 바꿔주는 방법인데, 굳이 정리할 필요까지는 없는 듯 ..?
전체 목적 함수
우선 Advantage에 대한 추정량 (estimator)는 다음과 같다. ˆAt=δt+(γλ)δt+1+⋯+(γλ)T−t+1δT−1,(5) whereδt=rt+γV(st+1)−V(st).(6)
λ=1일 때를 살펴보면 조금 와닿는다. ˆAt=−V(st)+rt+γrt+1+⋯+γT−t+1rT−1+γT−tV(ST)
우리가 아는 advantage At=Q(st,at)−V(st)과 식 (6)을 비교해보면 −V(st)는 동일하게 갖고 있으며, 나머지 텀 rt+γrt+1+⋯+γT−t+1rT−1+γT−tV(ST)는 Q(st,at)를 추정량이다. 이 논문에서 제안하는 전체 목적 함수는 다음과 같다. LCLIP+VF+St(θ)=ˆEt[LCLIPt(θ)−c1LVFt(θ)+c2S[πθ](st)],(7)
where LVFt(θ)=(Vθ(st)−Vtargt)2으로 가치 함수 approximator를 훈련시키기 위한 텀이다. S[πθ](st)은 entropy bonus으로서 exploration을 하게 만들어주는 텀이다. c1,c2는 각 텀에 대한 가중치이다.
Algorithm
- 요약: N개의 policy가 각각 병렬적으로 환경과 T번 상호작용하여 NT개의 경험 데이터 획득하고, 이 경험 데이터들을 사용하여 목적 함수 최적화
Experiment
Experimental setting
- HalfCheetah, Hopper, InvertedDoublePendulum, InvertedPendulum, Reacher, Swimmer, Walker2d, all “-v1”, OpenAI Gym.
- Policy network: a MLP with two hidden layers of 64 units, tanh nonlinearities, outputting the mean of a Gaussian distribution, with variable standard deviations.
- No parameter sharing between policy and value function
- No entropy bonus
- Train for 1 million timesteps
- γ=0.99,λ=0.95
참고 문헌
Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). Proximal Policy Optimization Algorithms. arXiv. https://doi.org/10.48550/arXiv.1707.06347