다음 내용은, PPO 논문을 읽으면서 gemini 에게 질문한 내용을 qa set 으로 정리한 내용입니다. (복기용)
1. PPO의 기본 개념
Q. 논문에서 말하는 "Policy Gradient Methods"는 정확히 무엇을 업데이트하는 것인가?
말 그대로 PM 모델(Policy Model, 정책 신경망)을 직접 업데이트하는 방법론입니다.
- Value-based (DQN 등): 가치(Q)를 배워서 행동을 결정함.
- Policy-based (PPO 등): 보상을 최대화하는 방향으로 신경망 파라미터(θ)를 직접 미분(Gradient Ascent)하여 업데이트함.
Q. PPO는 기존 알고리즘(DQN, Vanilla PG, TRPO)과 무엇이 다른가?
PPO는 "안전하면서도(TRPO), 구현이 쉽고(Vanilla PG), 효율적인" 알고리즘입니다.
- DQN (Deep Q-Learning): 연속적인 행동(Continuous Action)을 처리하기 어려움.
- Vanilla PG (A3C 등): 구현은 쉽지만, 학습률(Step size)에 너무 민감함. 한 번 잘못 업데이트하면 모델이 영원히 망가질 수 있음(Destructive Update).
- TRPO (Trust Region): 수학적으로 매우 안전하지만, 2차 미분(Hessian)이 필요하여 계산이 너무 복잡하고 무거움.
- PPO: TRPO의 안정성을 1차 미분(Clipping)만으로 구현하여 가성비를 챙김.
2. PPO의 핵심: Clipping과 목적 함수
Q. 기존 PG의 목적 함수를 그대로 여러 번 학습(Epoch)시키면 안 되는 이유는?
기존 PG의 수식은 데이터를 수집한 정책(πold)과 학습 중인 정책(πnew)이 같다는 전제하에 작동합니다. 데이터를 재사용해서 여러 번 업데이트하면, 정책이 변하면서 이 전제가 깨지고 잘못된 방향으로 과도하게 업데이트(Collapse)되어 모델 성능이 박살 납니다.
Q. PPO의 L_CLIP (Clipped Surrogate Objective)은 이걸 어떻게 막는가?
LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
- rt(θ): 확률 비율 (πoldπnew). 1에서 멀어질수록 급격한 변화를 의미.
- Clipping: 비율이 일정 범위(1±0.2)를 벗어나면, 더 이상 보상(Gradient)을 주지 않고 무시해버림.
- 효과: "너 너무 급발진했어. 거기선 더 잘해도 점수 안 줘."라고 제동을 걸어버림. 덕분에 KL Divergence 같은 복잡한 계산 없이도 안전한 학습이 가능해짐.
Q. TRPO에 있던 KL Divergence 항은 어디로 갔나?
PPO의 L_CLIP 수식은 KL 패널티(−βKL)를 대체하기 위해 고안된 것입니다.
- TRPO: "KL이 δ 넘으면 무효!" (Hard Constraint, 계산 복잡)
- PPO: "비율이 ϵ 넘으면 무시!" (Clipping, 계산 단순)
즉, clip 함수가 KL 패널티의 역할을 대신하고 있으므로 수식에서 빠진 것입니다.
3. Advantage와 Adaptive KL
Q. 어드밴티지(A^t) 함수는 왜 θ로 미분하지 않는가? (Why constant?)
직관적으로는 정책(θ)이 변하면 보상(A)도 변해야 맞지만, 학습 시점에서는 "이미 일어난 일(History)"로 취급합니다.
1. 시점의 분리: 데이터 수집(Sampling) 단계에서 얻은 보상은 확정된 숫자(Scalar)입니다.
2. 구현의 편의: PyTorch 등에서 advantages.detach()를 통해 그래디언트 전파를 막습니다. 우리는 "과거의 경험(A)을 채점표로 삼아 현재의 행동(π)을 수정"하는 것이 목표이기 때문입니다.
Q. 논문에 나오는 'Adaptive KL Penalty'는 무엇인가?
PPO의 메인은 L_CLIP이지만, 비교를 위해 만든 또 다른 버전입니다.
- dtarget: 우리가 원하는 목표 KL 값 (예: 0.01). "이 속도로만 변해라"라는 제한 속도.
- Adaptive β:
- 너무 빨리 변하면(d>dtarget)? → 벌금(β)을 2배로 올림.
- 너무 느리면(d<dtarget)? → 벌금(β)을 절반으로 깎음.
- 결론: TRPO를 흉내 낸 방식이지만, 실험 결과 그냥 Clipping 쓰는 게 성능이 더 좋았습니다.
4. 최종 구현과 GAE (Generalized Advantage Estimation)
Q. PPO의 최종 손실 함수(Loss Function) 구성은?
Lt(θ)=LtCLIP(θ)−c1LtVF(θ)+c2S[πθ](st)
파라미터를 공유하는(Actor-Critic Shared) 네트워크를 한 번에 학습시키기 위해 세 가지를 합칩니다.
1. LCLIP (Actor): 보상 최대화 (Maximize).
2. LVF (Critic): 가치 예측 오차 최소화 (Minimize → 식에서는 뺌).
3. S (Entropy): 탐험(Exploration)을 위한 엔트로피 보너스 (Maximize).
Q. GAE 수식에서 감마(γ)와 람다(λ)의 차이는?
가장 헷갈리기 쉬운 부분인데, 둘 다 '미래를 줄이는' 역할을 하지만 목적이 다릅니다.
| 파라미터 | 이름 | 역할 (Concept) | 비유 |
|---|
| γ (Gamma) | 할인율 | 문제의 정의 (Goal) | "10년 뒤 1억은 현재의 5천만 원 가치다." (경제학적 가치 판단) |
| λ (Lambda) | GAE 파라미터 | 추정의 기술 (Technique) | "10년 뒤 데이터는 운빨(Variance)이 심하니 덜 믿겠다." (통계적 신뢰도 조절) |
- γ: 미래 보상의 가치 자체를 깎는 것.
- λ: 먼 미래 데이터의 신뢰도(Variance reduction)를 위해 가중치를 깎는 것.
- 이 둘을 조합하여 (γλ)로 감쇠시키면, 편향(Bias)과 분산(Variance) 사이의 적절한 균형을 찾을 수 있습니다.