논문 링크: https://arxiv.org/abs/1707.06347
Proximal Policy Optimization Algorithms
We propose a new family of policy gradient methods for reinforcement learning, which alternate between sampling data through interaction with the environment, and optimizing a "surrogate" objective function using stochastic gradient ascent. Whereas standar
arxiv.org
이번 논문 리뷰는 전체적으로 논문을 바탕으로 공부 한 내용을 정리하였다. 필요한 부분에서 논문의 Figure와 수식을 보여주며 설명을 덧붙였다.
PPO는 강화학습(Reinforcement Learning)에서 정책 경사(Policy Gradient) 계열의 알고리즘이다. 기존 정책 경사 방법들의 단점인 불안정한 학습과 복잡한 구현 문제를 해결하는데 중점을 둔 알고리즘이다. PPO의 가장 큰 목표는 안정적이고 신뢰할 수 있는 정책 업데이트를 통해 학습 성능을 높이는 것이다.
▷ 정책 경사(Policy Gradient)란?
정책 경사(Policy Gradient): "잘한 행동은 더 많이 하도록, 못한 행동은 덜 하도록 직접적으로 가르치는 방법"
강화 학습의 목표는 agent가 최상의 보상을 받도록 행동을 가르치는 것이다. 이때 agent의 행동 지침을 정책(Policy)라고 부른다. 정책 경사는 이 '정책'을 직접적으로 좋게 만드는 방법이다.
골프 선수 비유
여기 골프를 배우는 로봇이 있다고 상상해 보자.
- 정책(Policy): 로봇의 스윙 자세, 클럽 선택 등 샷을 하기 위한 모든 행동 방식.
- 행동(Action): 실제로 골프채를 휘두르는 것.
- 보상(Reward): 공이 홀컵에 가까이 갈수록 높은 점수(보상)를 받음.
이 로봇을 어떻게 훈련시킬까?
- 일단 쳐본다: 현재의 정책(스윙 자세)으로 공을 쳐본다.
- 결과를 확인한다: 공이 홀컵에 아주 가깝게 붙음. "이번 샷은 아주 좋음" (높은 보상 획득)
- 정책을 수정한다: 방금 그 "아주 좋았던" 샷을 만들었던 스윙 자세를 더 자주 하도록 정책을 직접 수정. 즉, 그 스윙 자세와 관련된 파라미터들을 보상이 증가하는 방향으로 업데이트.
- 반복: 반대로 공이 엉뚱한 곳으로 날아갔다면(낮은 보상), 그 스윙 자세는 덜 하도록 정책을 수정.
이처럼 '결과(보상)가 좋았던 행동의 확률을 높이고, 결과가 나빴던 행동의 확률은 낮추는' 방식으로 정책을 직접 업데이트하는 것이 바로 정책 경사의 핵심 아이디어이다. 여기서 '경사(Gradient)'라는 단어는 '어느 방향으로 정책을 수정해야 보상이 가장 많이 늘어날까?'를 수학적으로 계산하는 것을 의미한다.
정책 경사의 핵심 수식
정책 경사의 목표는 보상의 기댓값 $J(\theta)$를 최대로 만드는 정책의 파라미터 $\theta$를 찾는 것이다. 이를 위해 $J(\theta)$를 $\theta$로 미분한 경사(gradient)를 계산하고, 이 경사를 따라 파라미터를 업데이트한다. 그 경사는 다음과 같이 표현된다.
$$\nabla_\theta J(\theta) = \hat{\mathbb{E}}_t \left[ \nabla_\theta \log \pi_\theta(a_t|s_t) \hat{A}_t \right]$$
- $\nabla_\theta J(\theta)$ : 우리가 계산하고 싶은 '경사'. 즉, '정책을 어느 방향으로 업데이트해야 보상이 커지는가'에 대한 정보.
- $\pi_\theta(a_t|s_t)$ : 현재 정책. 상태 $s_t$에서 행동 $a_t$를 할 확률을 의미한다.
- $\nabla_\theta \log \pi_\theta(a_t|s_t)$ : '행동의 방향'이다. 이 부분이 특정 행동($a_t$)을 할 확률을 높이거나 낮추는 역할을 수행한다.
- $\hat{A}_t$ : '행동의 좋고 나쁨'을 알려주는 척도(어드밴티지 함수). 이 값이 크면(보상이 좋으면) 해당 행동의 확률을 더 많이 높이고, 작거나 음수이면(보상이 나쁘면) 확률을 낮추게 된다.
결국 이 수식은 "좋았던 행동()은 더 자주 하도록, 나빴던 행동()은 덜 하도록 정책()을 업데이트하라"는 직관적인 아이디어를 수학적으로 표현한 것이다.
PPO는 이 기본적인 정책 경사 아이디어에서 한 걸음 더 나아가, 정책이 너무 급격하게 변해서 학습이 불안정해지는 것을 막기 위해 '클리핑'이라는 안전장치를 추가한, 더 발전된 알고리즘이라고 이해할 수 있다.
핵심 아이디어는 간단하다. 이전 정책(old policy)과 새로운 정책(new policy)의 차이가 너무 커지지 않도록 제한하는 것이다. 정책이 급격하게 변하면 학습이 불안정해지고 좋은 방향으로 수렴하기 어렵기 때문이다. 이를 위해 PPO는 '클리핑(Clipping)'이라는 독특한 방법을 사용한다.
PPO의 성공 비결은 클리핑(Clipping)에 있다고 해도 무관하다.
클리핑을 아주 간단하게 비유하자면 "자동차의 속도 제한 장치"와 같다.
클리핑(Clipping)이란?
정책(Policy)이 한 번에 너무 많이 변하지 않도록 강제로 "상한선"과 "하한선"을 설정하는 기술이다.
자동차의 속도 제한 장치가 시속 110km를 넘지 못하게 막는 것처럼, 클리핑은 정책 업데이트의 변화량을 특정 범위 $ [1 - \epsilon, 1 + \epsilon] $ 안에 가둬버린다.
- 정책 업데이트: AI가 경험을 통해 자신의 행동 지침(정책)을 수정하는 과정
- 변화량: 이전 정책 대비 새로운 정책이 얼마나 달라졌는지의 정도 ($r_t(\theta)$로 측정)
- 클리핑 범위 $ [1 - \epsilon, 1 + \epsilon] $: "정책을 바꾸더라도 이 범위를 벗어날 수는 없어!"라고 정해놓은 안전 구간. 보통 $\epsilon$은 0.1이나 0.2 같은 작은 값을 쓴다.
그래서 필자는 이게 왜 핵심인가 궁금했다.
클리핑이 없는 이전의 정책 경사 알고리즘들은 다음과 같은 큰 문제가 있다.
문제점: "대박" 한 번에 흥분해서 망하는 경우
AI가 어떤 행동을 우연히 했는데, 운 좋게 엄청나게 큰 보상(대박)을 받았다고 상상해 보자.
- 클리핑이 없다면? AI는 "이 행동이 최고다!"라고 과도하게 믿어버린다. 그래서 그 행동을 할 확률을 아주 아주 크게 높여버리게 된다. (정책이 급격하게 변함) 하지만 그건 그냥 운일 수 도 있다. 그 결과, 다른 좋은 행동들을 탐색할 기회를 잃고 오히려 전체 성능이 나락으로 떨어지는 학습 붕괴(catastrophic collapse)가 발생할 수 있다. 마치 주식 초보가 우연히 한 종목으로 대박을 치고 전 재산을 몰빵하는 것과 같다.
- 클리핑이 있다면? AI가 엄청난 보상을 받아도, 클리핑이 "워워, 진정해. 좋은 건 알겠는데 일단 조금만 바꿔보자."라며 제동을 건다. 정책의 변화량을 최대 $1+\epsilon$까지만 허용하기 때문에, AI는 흥분하지 않고 침착하게 학습을 이어나갈 수 있다. 반대로 아주 나쁜 결과를 얻었을 때도, ""까지만 변화를 제한하여 "이번 한 번의 실수로 이 행동을 완전히 포기하지는 말자"고 막아준다.
Schulman et al., (2017)에서는 다음과 같이 설명한다.
1. 클리핑의 목적: 보수적인 정책 업데이트 (Conservative Policy Iteration)
아래의 수식(논문 eq(6))은 TRPO와 같은 이전 알고리즘에서 사용하던 목적 함수 $L^{CPI}(\theta)$를 보여준다.
$$L^{CPI}(\theta) = \hat{\mathbb{E}}_t \left[ \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} \hat{A}_t \right] = \hat{\mathbb{E}}_t [r_t(\theta) \hat{A}_t]$$
여기서 문제는, 이 수식을 제한 없이 최대화하면 $r_t(\theta)$ (정책 변화량)가 너무 커져서 정책이 과도하게 업데이트되고 학습이 불안정해진다는 것이다. 논문에서는 이를 "excessively large policy update"라고 표현한다.
이 문제를 해결하기 위해 PPO는 수식 (7), 즉 클리핑된 목적 함수 $L^{CLIP}$ 을 제안한다.
$$L^{CLIP}(\theta) = \hat{\mathbb{E}}_t \left[ \min(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) \hat{A}_t) \right]$$
핵심은 $\min$ 함수와 $\text{clip}$ 함수의 조합이다. 이 조합이 바로 정책 업데이트에 '브레이크'를 거는 역할을 한다.
2. 클리핑의 작동 방식 (Figure 1)
Figure 1은 클리핑이 어떻게 작동하는지를 가장 직관적으로 보여준다.

- 왼쪽 그래프 (어드밴티지가 긍정적일 때, $A > 0$):
- 상황: 현재 한 행동이 평균보다 좋았으므로, 이 행동을 할 확률을 높여야 한다 ($r_t(\theta)$을 키워야 함).
- 클리핑: 하지만 $r_t(\theta)$가 $1+\epsilon$을 초과하는 순간, 목적 함수 $L^{CLIP}$의 값은 더 이상 증가하지 않고 수평선처럼 평평해진다. 즉, 보상이 아무리 좋아도 정책 업데이트의 이득(incentive)에 상한선(cap)을 둬서 과도한 업데이트를 막는다.
- 오른쪽 그래프 (어드밴티지가 부정적일 때, $A < 0$):
- 상황: 현재 한 행동이 평균보다 나빴으므로, 이 행동을 할 확률을 낮춰야 한다 ($r_t(\theta)$을 줄여야 함).
- 클리핑: $r_t(\theta)$가 $1-\epsilon$보다 작아져도 목적 함수는 더 이상 나빠지지 않는다. 이는 한 번의 큰 실수로 인해 특정 행동의 확률을 지나치게 많이 줄여버리는 비관적인 업데이트를 막는 하한선(floor) 역할을 한다.
결론적으로 $L^{CLIP}$은 기존의 목적 함수 $L^{CPI}$에서 이득을 취하되, 정책이 너무 멀리 벗어나려고 하면 그 이득을 잘라내어(clip) 버리는 **비관적인 경계(pessimistic bound) 또는 하한선(lower bound)**의 역할을 함.
3. 클리핑의 효과 (Figure 2)
Figure 2는 실제 학습 과정에서 클리핑의 효과를 보여준다.

- 가로축: 정책 업데이트 강도 (0은 업데이트 안 함, 1은 PPO가 한 번 업데이트한 상태)
- 세로축: 목적 함수의 값
그래프를 보면, 주황색 선($L^{CPI}$)은 업데이트 강도가 커짐에 따라 제한 없이 계속 올라간다. 하지만 초록색 선($L^{CLIP}$)은 어느 지점(KL 발산이 약 0.02가 되는 지점)에서 최대치를 찍고 더 이상 크게 증가하지 않는다.
이는 $L^{CLIP}$이 정책이 너무 많이 변하는 것을 막는 페널티로 작용하고 있음을 보여준다. PPO는 이 $L^{CLIP}$을 최적화하기 때문에, $L^{CPI}$를 직접 최적화할 때보다 훨씬 안정적으로 정책을 업데이트할 수 있는 것이다. 논문의 설명처럼 $L^{CLIP}$은 $L^{CPI}$의 **하한선(lower bound)**으로 작용하며, 너무 큰 정책 업데이트에 대한 페널티를 부과한다.
PPO의 핵심: 클리핑된 목적 함수 (Clipped Surrogate Objective Function)
PPO의 핵심은 바로 이 '클리핑된 목적 함수'에 있다. 수식은 복잡해 보일 수 있지만, 아이디어는 직관적이다.
$$L^{CLIP}(\theta) = \hat{\mathbb{E}}_t \left[ \min \left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) \hat{A}_t \right) \right]$$
여기서 각 항목의 의미는 다음과 같다.
$r_t(\theta)$: 확률 비율(Probability Ratio)로, 새로운 정책과 이전 정책이 특정 행동을 선택할 확률의 비율
$$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$$
- $r_t(\theta) > 1$ 이면, 새로운 정책이 해당 행동을 할 확률이 더 높다는 의미.
- $r_t(\theta) < 1$ 이면, 새로운 정책이 해당 행동을 할 확률이 더 낮다는 의미.
$\hat{A}_t$: 어드밴티지 함수(Advantage Function)로, 특정 상태에서 특정 행동을 하는 것이 평균적으로 얼마나 더 좋았는지를 나타내는 값임.
- $\hat{A}_t > 0$ 이면, 평균보다 좋은 행동.
- $\hat{A}_t < 0$ 이면, 평균보다 나쁜 행동.
$\epsilon$: 클리핑 하이퍼 파라미터. 0.1 또는 0.2 같은 작은 값을 사용한다고 함. 정책이 얼마나 변할 수 있는지를 제한하는 역할을 함.
이제 이 목적 함수가 어떻게 작동하는지에 대해서는 아래 두가지 경우로 나눌 수 있다.
1. 어드밴티지가 양수일 때 ($\hat{A}_t > 0$)
- 즉, 과거에 했던 행동이 평균보다 좋은 결과를 냈을 때.
- 따라서 우리는 이 행동을 할 확률($r_t(\theta)$)을 높이고 싶음.
- 하지만 PPO는 $r_t(\theta)$가 $1 + \epsilon$ 이상으로 너무 커지는 것을 막는다. 정책이 한 번에 너무 낙관적으로 변해서 학습이 불안정해지는 것을 방지한다.
- 목적 함수는 $r_t(\theta) \hat{A}_t$ 와 $(1 + \epsilon) \hat{A}_t$ 중 더 작은 값을 선택하게 된다.
2. 어드밴티지가 음수일 때 ($\hat{A}_t < 0$)
- 즉, 과거에 했던 행동이 평균보다 나쁜 결과를 냈을 때.
- 따라서 우리는 이 행동을 할 확률($r_t(\theta)$)을 낮추고 싶음.
- PPO는 $r_t(\theta)$가 $1 - \epsilon$ 이하로 너무 작아지는 것을 막는다. 좋은 행동을 찾을 기회를 완전히 잃어버리는 비관적인 업데이트를 막기 위함.
- 목적 함수는 $r_t(\theta) \hat{A}_t$ 와 $(1 - \epsilon) \hat{A}_t$ 중 더 큰 값을 선택하게 된다. (어드밴티지가 음수이므로, 전체 값은 더 큰 쪽이 덜 감소하게 됨.)
결론적으로, PPO의 클리핑 메커니즘은 정책 업데이트에 안전장치를 거는 것과 같다. 어드밴티지가 긍정적이든 부정적이든, 정책이 한 번에 너무 크게 변하는 것을 막아 안정적인 학습을 가능하게 한다.
PPO 알고리즘의 전체 구조
PPO는 보통 액터-크리틱(Actor-Critic) 구조를 기반으로 한다.
- 액터(Actor): 정책($\pi_\theta$)을 나타내며, 현재 상태를 보고 어떤 행동을 할지 결정함. PPO의 클리핑된 목적 함수를 통해 업데이트된다.
- 크리틱(Critic): 가치 함수($V_\phi$)를 나타내며, 현재 상태의 가치(얼마나 좋은 상태인지)를 평가한다. 이는 어드밴티지($\hat{A}_t$)를 계산하는 데 사용된다.
학습 과정은 다음과 같이 진행.
- 현재 정책($\pi_{\theta_{old}}$)을 사용하여 여러 에피소드를 실행하며 데이터(상태, 행동, 보상 등)를 수집.
- 수집된 데이터를 사용하여 각 타임스텝의 **어드밴티지($\hat{A}_t$)**를 계산.
- 클리핑된 목적 함수를 최대화하는 방향으로 정책(액터)의 파라미터 $\theta$를 여러 번 업데이트.
- 동시에 가치 함수(크리틱)의 예측 오차를 최소화하도록 파라미터 $\phi$를 업데이트.
- 1~4 과정을 반복.
PPO의 장점
- 구현의 단순함: TRPO와 달리 복잡한 2차 미분 계산이 필요 없어 코드로 구현하기가 훨씬 쉽다.
- 안정적인 성능: 다양한 환경에서 견고하고 안정적인 성능을 보여준다. 하이퍼파라미터 튜닝에 덜 민감한 편.
- 데이터 효율성: 수집한 데이터를 여러 번의 업데이트(multiple epochs)에 재사용하여 학습 효율을 높인다.
이러한 장점들 덕분에 PPO는 현재 강화학습 분야에서 가장 널리 사용되는 알고리즘 중 하나가 되었다. 복잡한 문제를 해결하기 위한 베이스라인(baseline) 알고리즘으로 자주 채택된다.
Reference
Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). *Proximal Policy Optimization Algorithms*. Retrieved from https://arxiv.org/abs/1707.06347
'논문 리뷰' 카테고리의 다른 글
| [논문 리뷰] 강화학습 기반예인선 제어방법에 의한선박 자율 접안 (0) | 2025.11.21 |
|---|---|
| [논문 리뷰] USV Formation Path Planning Based on Behavior Trees and Fast Marching Method (1) | 2025.06.05 |
