정책 최적화 실전: A2C · 신뢰 영역 · PPO 클리핑 · GAE 손계산
A2C 루프 · 확률비 · PPO-Clip 다섯 경우 · GAE를 손계산하고 실전 기본값까지 정리하는 수업
먼저 알아야 할 것
다루는 내용
액터-크리틱을 A2C 학습 루프로 조립하고, 정책 걸음 크기 문제를 확률비 · 신뢰 영역 · PPO 클리핑으로 풀어 봅니다. PPO-Clip 목표의 다섯 경우와 GAE(λ=0 · 0.95 · 1)를 손으로 계산합니다. PPO 논문 · Spinning Up의 기본 하이퍼파라미터와 근사 KL · 클립 비율 · 조기 종료 같은 점검 지표를 정리합니다.
해설
정책 최적화 실전: A2C · 신뢰 영역 · PPO 클리핑 · GAE 손계산
정책 경사 식을 유도했다면, 다음 질문은 "실제로는 어떻게 돌리나"입니다. 이 수업은 액터-크리틱을 한 번의 학습 루프로 조립하고(A2C), 한 걸음을 얼마나 크게 밟아도 되는지라는 핵심 문제를 신뢰 영역(TRPO)과 PPO 클리핑으로 풀어 봅니다. PPO 목표 함수의 다섯 가지 경우와 GAE 어드밴티지를 손으로 계산하고, 논문 · 공개 구현의 기본 하이퍼파라미터와 학습 중 봐야 할 지표까지 정리합니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | Schulman 외 「Proximal Policy Optimization Algorithms」(arXiv 1707.06347), Schulman 외 「High-Dimensional Continuous Control Using GAE」(arXiv 1506.02438), Mnih 외 「Asynchronous Methods for Deep RL」(arXiv 1602.01783), OpenAI Spinning Up PPO 문서 · 공개 코드 |
| 트랙 · 수준 | 강화학습 · 중급 |
| 이 수업이 다루는 범위 | A2C 학습 루프 · n-걸음 어드밴티지 · 엔트로피 보너스, 걸음 크기 문제와 확률비, 신뢰 영역 직관, PPO-Clip 다섯 경우 손계산, 합친 손실(값 · 엔트로피 항), GAE 손계산, 기본 하이퍼파라미터 표, 근사 KL · 클립 비율 · 조기 종료 |
들어가기 전에
- OpenAI Spinning Up: 딥 강화학습 입문 — 로그 미분 트릭, reward-to-go, 기준값과 어드밴티지, 액터-크리틱 구조. 이 수업은 그 위에서 시작합니다.
- 함수 근사: 표에서 신경망으로 — 크리틱 는 바로 함수 근사로 배운 가치 함수입니다.
- KL 발산의 뜻(→ 정보 이론 최소한).
한눈에 보기
- A2C 한 번의 반복(수집 → 어드밴티지 → 액터 · 크리틱 갱신)을 순서대로 말할 수 있습니다.
- 정책 경사에서 "걸음이 너무 크면 무너진다"는 문제를 확률비 로 설명합니다.
- PPO-Clip 목표를 다섯 가지 숫자 경우로 직접 계산하고, 언제 기울기가 0이 되는지 압니다.
- GAE를 세 걸음 궤적에서 로 계산해 편향-분산 손잡이를 체감합니다.
- 실전에서 쓰는 기본값과 근사 KL · 클립 비율 같은 점검 지표를 압니다.
1. A2C: 액터-크리틱을 한 루프로
직관(해설용 비유). 배우(액터)가 무대에서 몇 장면을 연기하면, 평론가(크리틱)가 "평소 기대보다 잘했다/못했다"를 매기고, 배우는 잘한 장면을 더 하도록 · 평론가는 자기 기대치를 실제에 맞추도록 함께 고칩니다.
A3C와 A2C. Mnih 외(2016)의 A3C는 여러 일꾼(스레드)이 각자 환경을 돌리며 비동기로 가중치를 고칩니다. PPO 논문은 A2C를 "A3C의 동기식 버전"이라 부르며, 실험에서 비동기 버전과 같거나 더 나은 성능을 보였다고 적습니다. 동기식은 여러 환경의 경험을 한꺼번에 모아 한 번에 갱신하므로 GPU에서 다루기 쉽습니다.
한 번의 반복.
- 개 환경에서 지금 정책으로 각각 걸음씩 진행합니다(짧은 조각).
- 조각 끝 상태의 크리틱 값으로 n-걸음 반환을 만들어 어드밴티지를 추정합니다.
- 액터: 로 정책을 올립니다.
- 크리틱: 를 줄입니다.
- 엔트로피 보너스 를 더해 정책이 너무 빨리 한 행동으로 굳지 않게 합니다. A3C 논문은 아타리 · TORCS 실험에 을 썼습니다.
숫자로 해 보기(해설용). 두 걸음 보상이 1, 1이고 그 뒤 상태의 크리틱 값이 5, . n-걸음 반환은 . 지금 상태의 면 어드밴티지는 입니다. 이 행동은 "평소보다 약간 나았다"이므로 확률을 조금 올립니다.
엔트로피 감각: 행동 둘인 정책이 면 엔트로피 , 이면 입니다. 보너스는 앞쪽(고르게 섞인 정책)을 조금 더 좋게 쳐 줍니다.
2. 걸음 크기 문제와 확률비
정책 경사는 "지금 정책 근처에서"만 맞는 방향입니다. 한 번에 너무 멀리 가면 새 정책에서는 그 방향이 틀린 방향이 될 수 있고, 무너진 정책이 모으는 나쁜 데이터로 다음 갱신까지 망가집니다. 지도 학습과 달리 데이터가 정책에 따라 바뀌기 때문에 생기는 강화학습 특유의 문제입니다.
옛 정책으로 모은 데이터를 새 정책 평가에 다시 쓰려면 확률비(probability ratio)로 무게를 고칩니다.
| 기호 | 뜻 |
|---|---|
| 데이터를 모을 때 쓴 정책 | |
| 새 정책이 같은 행동을 고를 확률이 옛 정책의 몇 배인지. 면 1 | |
| 어드밴티지 추정 | |
| 대리 목표(surrogate objective). 이름은 보수적 정책 반복(conservative policy iteration)에서 옴 |
숫자로 해 보기(해설용). 옛 정책이 행동 를 0.4로, 새 정책이 0.6으로 고르면 . 어드밴티지가 양수면 는 을 끝없이 키울수록 커집니다. 제약이 없으면 이 목표를 최대화하는 과정이 정책을 지나치게 많이 바꿔 버립니다 — PPO 논문이 지적하는 문제입니다.
신뢰 영역(TRPO)의 해법. "평균 KL 발산 " 라는 울타리 안에서만 를 최대화합니다. TRPO 논문 은 모든 실험에 을 썼고, 2차 근사 · 켤레 기울기 · 선 탐색으로 이 제약 문제를 풉니다. 효과는 좋지만 구현이 복잡하고, 정책과 가치 함수가 파라미터를 공유하는 구조나 드롭아웃 같은 잡음이 들어간 구조와 잘 맞지 않는다는 점이 PPO의 출발점입니다.
3. PPO-Clip: 확률비를 울타리 안으로
PPO 논문의 주 목표(식 7)는 다음과 같습니다.
| 기호 | 뜻 |
|---|---|
| 을 로 잘라 냄 | |
| 울타리 폭. 논문은 "예를 들어 0.2"라고 제시 | |
| 잘린 값과 안 잘린 값 중 작은(비관적인) 쪽을 택함 |
직관. 좋은 행동()은 확률을 올리되 배까지만 보상해 주고, 나쁜 행동()은 확률을 내리되 배까지만 보상해 줍니다. 울타리 밖으로 더 가 봐야 목표가 늘지 않으니(기울기 0) 그쪽으로 갈 동기가 사라집니다. 반대로 잘못된 쪽으로 간 경우(좋은 행동인데 확률이 줄었거나, 나쁜 행동인데 확률이 늘었을 때)는 min 이 안 잘린 값을 골라 벌을 그대로 받게 합니다.
숫자로 해 보기(python으로 검산, ).
| 경우 | clip 쪽 | min 결과 | 기울기 | |||
|---|---|---|---|---|---|---|
| ① 좋은 행동, 울타리 안 | +2 | 1.1 | 2.2 | 2.2 | 2.2 | 흐름 |
| ② 좋은 행동, 너무 올림 | +2 | 1.5 | 3.0 | 2.4 | 2.4 (잘림) | 0 |
| ③ 좋은 행동인데 확률이 줄어듦 | +2 | 0.5 | 1.0 | 1.6 | 1.0 (안 잘림) | 흐름 → 다시 올림 |
| ④ 나쁜 행동, 너무 내림 | −2 | 0.5 | −1.0 | −1.6 | −1.6 (잘림) | 0 |
| ⑤ 나쁜 행동인데 확률이 늘어남 | −2 | 1.5 | −3.0 | −2.4 | −3.0 (안 잘림) | 흐름 → 다시 내림 |
②와 ④에서 더 밀어붙일 이유가 없어지고, ③과 ⑤에서는 실수를 바로잡는 힘이 남습니다. 논문 표현대로 은 안 잘린 목표의 하한(비관적 경계) 입니다. Spinning Up 문서는 같은 식을 이면 , 아니면 와 비교하는 간단한 꼴로 다시 씁니다.
왜 이렇게 했나. 같은 데이터로 미니배치 SGD를 여러 에포크 돌려도 정책이 크게 벗어나지 않으므로, TRPO의 2차 최적화 없이 일반적인 1차 최적화기(Adam)만으로 신뢰 영역 비슷한 효과를 냅니다. 논문의 연속 제어 비교(7개 환경 · 씨앗 3개 정규화 평균)에서 클리핑 없이 대리 목표만 쓰면 −0.39, 은 각각 0.76/0.82/0.70, 적응형 KL 벌점은 0.68~0.74였습니다.
합친 손실. 정책과 가치 함수가 파라미터를 공유하면 값 오차와 엔트로피를 함께 넣습니다(식 9).
은 값 손실 계수, 는 엔트로피 보너스 계수입니다. 논문의 아타리 실험은 , 을 썼고, MuJoCo 실험은 파라미터를 공유하지 않고 엔트로피 보너스도 쓰지 않았습니다.
4. GAE: 어드밴티지를 얼마나 멀리 보고 추정하나
GAE 논문 의 정의는 TD 오차를 지수 가중으로 더하는 것입니다.
- : (한 걸음 TD) — 분산은 작지만 가 부정확하면 편향.
- : (몬테카를로 반환 − 기준값) — 편향은 없지만 분산이 큼.
실제 구현은 조각 끝에서 거꾸로 을 반복합니다.
숫자로 해 보기(python으로 검산, 해설용 숫자). 세 걸음에서 끝나는 판, 보상 , 크리틱 값 , 끝 상태 값 0, .
- TD 오차: , , .
- 로 거꾸로: , , .
| 0 | 0.896 | 0.194 | 0.400 |
| 0.95 | 1.432 | 0.570 | 0.400 |
| 1 | 1.480 | 0.590 | 0.400 |
줄은 실제 반환에서 를 뺀 값( 등)과 정확히 같습니다. 가 '얼마나 실제 보상을 믿고, 얼마나 크리틱을 믿을지'를 정하는 손잡이입니다.
flowchart LR
A[N개 환경 × T걸음<br/>옛 정책 π_old로 수집] --> B[크리틱 V로 δ_t 계산]
B --> C[GAE: 거꾸로 Â_t = δ_t + γλÂ_t+1]
C --> D[어드밴티지 정규화]
D --> E[K 에포크 × 미니배치:<br/>L_CLIP − c1·L_VF + c2·S 최대화]
E --> F{근사 KL이<br/>너무 커졌나?}
F -- 예 --> G[정책 갱신 조기 종료]
F -- 아니오 --> E
G --> A5. 실전 설정과 점검 지표
논문 · 공개 구현의 기본값.
| 항목 | PPO 논문 MuJoCo(표 3) | PPO 논문 아타리(표 5) | Spinning Up ppo() 기본값 |
|---|---|---|---|
| 조각 길이 · 걸음 수 | , 환경 8개 | 에포크당 4,000걸음 | |
| 학습률 | (Adam) | 정책 , 가치 | |
| 에포크 · 미니배치 | 10 · 64 | 3 · | 에포크마다 정책 최대 80 · 가치 80 경사 걸음 |
| · | 0.99 · 0.95 | 0.99 · 0.95 | 0.99 · 0.97 |
| 클리핑 | 탐색 대상(0.2 최고) | 0.2 | |
| 기타 | — | , , 는 1→0 선형 감소 | target_kl 0.01 |
학습 중 봐야 할 지표(Spinning Up 구현 기준).
- 근사 KL: 옛 · 새 로그 확률 차이의 평균
(logp_old - logp).mean(). Spinning Up은 이것이1.5 × target_kl을 넘으면 그 에포크의 정책 갱신을 멈춥니다(조기 종료). 클리핑만으로는 정책이 울타리 밖으로 나가는 것을 완전히 막지 못하기 때문입니다. - 클립 비율(ClipFrac): 확률비가 밖으로 나간 표본의 비율. 너무 높으면 걸음이 큰 것입니다.
- 엔트로피: 너무 빨리 0에 가까워지면 탐험이 사라진 신호입니다.
- 평균 반환: 성능은 이것으로 봅니다. 정책 '손실' 값은 성능 지표가 아니라는 점(83번 수업)을 다시 기억해 둡니다.
- 어드밴티지 정규화: Spinning Up 버퍼는 어드밴티지를 평균 0 · 표준편차 1로 맞춘 뒤 씁니다. 보상 크기가 달라도 걸음 크기가 비슷하게 유지됩니다.
어디로 이어지나. PPO는 사람 선호로 하는 딥 강화학습 (RLHF의 시작) 과 InstructGPT 에서 언어 모델을 사람 선호에 맞추는 데 쓰였고, DeepSeekMath의 GRPO 는 크리틱 대신 같은 질문에 대한 여러 답의 평균 보상을 기준값으로 쓰는 변형입니다.
연습 문제
- , , 일 때 값과 기울기 여부는?
- 풀이: , clip 쪽 , min 은 (잘림) — 기울기 0입니다.
- , , 이면?
- 풀이: , clip 쪽 , min 은 (안 잘림) — 기울기가 흘러 확률을 다시 내립니다.
- 4절 예에서 면 은?
- 풀이: , 입니다.
- A2C 예에서 크리틱 값이 5가 아니라 6이었다면 어드밴티지는? (지금 상태 그대로)
- 풀이: 반환 , 어드밴티지 입니다. 크리틱이 미래를 낙관할수록 지금 행동이 좋아 보입니다(부트스트래핑의 편향 경로).
- PPO가 TRPO보다 구현이 쉬운 이유를 한 문장으로?
- 풀이: KL 제약을 2차 근사 · 켤레 기울기로 푸는 대신, 확률비를 잘라 낸 목표를 일반 1차 최적화기로 여러 번 최적화하기만 하면 되기 때문입니다.
스스로 점검
- PPO 목표에서 min 을 쓰는 이유는?
- 답: 잘린 목표와 안 잘린 목표 중 비관적인 쪽을 택해, 정책을 크게 바꿔 얻는 '가짜 이득'은 무시하고 잘못된 방향으로 간 손해는 그대로 반영하기 위해서입니다.
- GAE의 를 1에 가깝게 하면 무엇이 좋아지고 무엇이 나빠지나요?
- 답: 크리틱 오차에 의한 편향은 줄지만, 긴 보상 합을 쓰므로 분산이 커집니다.
- 클리핑이 있는데도 근사 KL로 조기 종료를 하는 이유는?
- 답: 클리핑은 울타리 밖으로 갈 동기만 없앨 뿐, 여러 에포크의 미니배치 갱신이 누적되면 정책이 실제로 울타리 밖으로 나갈 수 있기 때문입니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| A2C(advantage actor-critic) | 여러 환경의 경험을 모아 동기식으로 갱신하는 액터-크리틱 |
| A3C | 여러 일꾼이 비동기로 갱신하는 원조 버전 |
| 엔트로피 보너스 | 정책이 고르게 섞여 있을수록 점수를 더 주는 항 — 탐험 유지 |
| 확률비(probability ratio) | 새 정책 확률 ÷ 옛 정책 확률 |
| 대리 목표(surrogate objective) | 옛 데이터로 새 정책의 개선 정도를 근사한 목표 |
| 신뢰 영역(trust region) | 정책을 바꿔도 되는 범위(KL ≤ δ) |
| PPO-Clip | 확률비를 로 잘라 비관적 하한을 최대화하는 방법 |
| GAE | TD 오차를 로 가중합한 어드밴티지 추정 |
| 근사 KL(approx KL) | 표본으로 계산한 옛 · 새 정책의 차이 추정 |
| 조기 종료(early stopping) | 정책이 너무 멀리 가면 그 반복의 갱신을 멈추는 것 |
더 깊이 보려면
- 근접 정책 최적화 (PPO) — 논문 전체 해설(적응형 KL 벌점, 아타리 비교).
- 신뢰 영역 정책 최적화 (TRPO) — 단조 개선 이론과 켤레 기울기 풀이.
- 일반화 어드밴티지 추정 (GAE) — 가 편향과 분산을 어떻게 바꾸는지의 이론과 실험.
- 비동기 딥 강화학습 (A3C) — 비동기 일꾼과 n-걸음 반환.
다음에 볼 것
- 모델 기반 강화학습과 계획 — 환경 모형을 배우거나 써서 '머릿속으로' 미리 두어 보는 방법.
- 근접 정책 최적화 (PPO) — 오늘 계산한 목표 함수의 원 논문.
라이선스
본문은 KAITABASE 자체 해설입니다. 참고한 논문은 arXiv에 공개된 것이고, Spinning Up 코드는 MIT 라이선스입니다. 식과 하이퍼파라미터는 원문 표기 · 표를 따랐고 문장은 옮기지 않았습니다. 손계산 숫자는 해설용이며 python으로 검산했습니다.
출처
- Schulman 외 (2017), Proximal Policy Optimization Algorithms: arxiv.org/abs/1707.06347
- Schulman 외 (2015), High-Dimensional Continuous Control Using Generalized Advantage Estimation: arxiv.org/abs/1506.02438
- Mnih 외 (2016), Asynchronous Methods for Deep Reinforcement Learning: arxiv.org/abs/1602.01783
- OpenAI Spinning Up, Proximal Policy Optimization: spinningup.openai.com/en/latest/algorithm…
- Spinning Up PPO 코드(PyTorch): github.com/openai/spinningup/blob/master/…
AI 원리부터 이해하기 · 강화학습 모듈
강화학습 모듈 학습
이 글은 강화학습 모듈의 학습 자료입니다. 전체 31개 자료 중 7번째입니다.
출처·원문
원문 보기요약만