6. PPO와 SAC — 오늘 실제로 쓰는 것
알고리즘 선택의 첫 질문은 “데이터를 얼마나 싸게 새로 모을 수 있는가” 다
이 장에서 처음 나오는 말6개
PPOProximal Policy Optimization · 근접 정책 최적화- 정책이 한 번에 크게 변할 유인을 줄이는 on-policy 알고리즘. 로봇 시뮬레이션 등에서 널리 쓰인다.
클리핑Clipping- 새 정책과 옛 정책의 확률 비율이 범위를 넘으면 그 표본에서 추가 이득이 생기지 않게 목적 함수를 자르는 것.
SACSoft Actor-Critic- 보상뿐 아니라 정책의 무작위성(엔트로피)까지 같이 키우는 off-policy 알고리즘. 연속 제어의 샘플 효율 챔피언.
최대 엔트로피 RLMaximum Entropy RL- "보상을 키우되 가능한 한 여러 방식으로"를 목표로 삼는 틀. 탐색이 목적 함수에 들어간다.
쌍둥이 크리틱Twin Critics · Clipped Double Q- 크리틱을 둘 두고 작은 값을 쓴다. 과대추정을 누르는 표준 처방.
벡터 환경Vectorized Environment- 환경 수백~수천 개를 동시에 돌려 배치를 만드는 것. on-policy 알고리즘의 생명줄이다.
PPO — 한 걸음을 잘라 낸다
섹션 제목: “PPO — 한 걸음을 잘라 낸다”5장이 남긴 문제는 “정책을 얼마나 밀어야 하나”였다. PPO의 답은 놀랍도록 단순하다. 너무 많이 밀었으면, 거기서 더 밀어 봐야 이득이 없게 만든다.
ratio = π_new(a|s) / π_old(a|s) 정책이 얼마나 변했나 (1이면 그대로)
목표 = min( ratio · A , clip(ratio, 1−ε, 1+ε) · A ) ε = 0.2 정도확률 비율이
0.8~1.2밖으로 나가면 그 표본에서 더 밀어도 대리 목적이 좋아지지 않는다. 다만 비율 자체를 강제로 이 범위에 가두거나 KL 상한을 보장하는 것은 아니다.
이 하나로 얻는 것이 크다 — 모은 데이터를 여러 번(에폭 4~10회) 재사용할 수 있게 된다. on-policy인데도 데이터를 조금은 아껴 쓸 수 있는 이유다.
PPO의 한 사이클
섹션 제목: “PPO의 한 사이클”데이터를 모으고 → 여러 번 재사용해 학습하고 → 버리고 다시 모은다. 이 사이클이 PPO의 전부다.
구현 디테일이 재현을 좌우한다
섹션 제목: “구현 디테일이 재현을 좌우한다”PPO는 논문의 핵심 식만 구현해도 참고 구현과 결과가 크게 다를 수 있다. 아래 항목들이 재현에 중요하다는 것이 구현 분석들의 공통 결론이다.
| 디테일 | 안 하면 | 비고 |
|---|---|---|
| 어드밴티지 정규화 | 스케일에 따라 학습률이 사실상 달라진다 | 미니배치마다 |
| 관측 정규화 (러닝 평균·분산) | 스케일이 큰 관측 하나가 학습을 지배한다 | 실전에서 가장 자주 빠뜨린다 |
| 보상 스케일링 | 가치 손실이 폭주한다 | 리턴의 표준편차로 나눈다 |
| 직교 초기화 + 작은 마지막 층 | 초반 정책이 극단으로 쏠린다 | 마지막 층 가중치를 100배 작게 |
| 경사 클리핑 (norm 0.5) | 가끔 한 배치가 정책을 망가뜨린다 | 사실상 필수 |
truncated 처리 | 시간 제한을 실패로 배운다 (2장) | 잘린 시점의 가치를 이어 붙인다 |
| 학습률 선형 감쇠 | 후반에 흔들린다 | 흔한 기본 |
흔히 쓰는 하이퍼파라미터
섹션 제목: “흔히 쓰는 하이퍼파라미터”환경마다 다르다. 아래는 연속 제어(MuJoCo류) 기준의 출발점이지 정답이 아니다.
| 값 | 흔한 출발점 | 감각 |
|---|---|---|
γ (할인율) | 0.99 | 문제 정의의 일부 |
λ (GAE) | 0.95 | 편향-분산 손잡이 |
ε (클립) | 0.2 | 크면 빠르고 불안정 |
| 에폭 | 10 | 크면 옛 데이터에 과적합 |
| 병렬 환경 | 8~64 (시뮬 규모에 따라 수천) | 많을수록 배치가 안정 |
| 롤아웃 길이 | 2048 / 환경 | 병렬 수 × 길이 = 배치 |
| 학습률 | 3e-4 | 대개 여기서 시작 |
| 엔트로피 계수 | 0.0 (연속) / 0.01 (이산) | 탐색이 죽으면 올린다 |
SAC — 샘플을 아껴야 할 때
섹션 제목: “SAC — 샘플을 아껴야 할 때”PPO는 데이터를 모으고 쓰고 버린다. 시뮬레이터가 있으면 괜찮지만, 실물 로봇이나 느린 시뮬에서는 그 낭비를 감당할 수 없다. SAC는 재생 버퍼를 쓰는 off-policy 알고리즘이라 경험을 여러 미니배치 갱신에 재사용한다.
SAC의 두 번째 아이디어는 목표 자체를 바꾼 것이다.
목표 = E[ Σ ( r + α · H(π(·|s)) ) ] └── 엔트로피 ──┘보상을 키우되, 정책은 가능한 한 무작위로 유지한다. “가장 여러 방식으로 잘하는 정책”을 찾는 셈이다.
이 항은 탐색을 유지하고 하나의 해법에 너무 일찍 수렴하는 것을 줄일 수 있다. 다중 모드와 교란 견고성에 도움이 될 가능성은 있지만, 실제 견고성은 별도 평가해야 한다.
SAC를 이루는 부품
섹션 제목: “SAC를 이루는 부품”| 부품 | 하는 일 |
|---|---|
| 재생 버퍼 | off-policy 학습. 샘플 재사용 (4장) |
| 쌍둥이 크리틱 | Q 둘 중 작은 값을 쓴다 — 과대추정 억제 |
| 소프트 타깃 갱신 | τ = 0.005로 조금씩 섞는다 |
| 재파라미터화 | 확률적 행동에도 경사가 흐르게 한다 |
온도 α 자동 조절 | 목표 엔트로피를 정해 두고 α를 학습으로 맞춘다 |
마지막 것은 온도 계수를 직접 고정하는 부담을 줄인다. 다만 목표 엔트로피는 여전히 설계 선택이고, 자동 조절이 튜닝을 없애 주는 것은 아니다.
TD3 — 결정적 정책 쪽의 대안
섹션 제목: “TD3 — 결정적 정책 쪽의 대안”같은 자리에 TD3도 있다. SAC와 형제 관계이고, 셋을 고쳤다.
| 처방 | 무엇 |
|---|---|
| 쌍둥이 크리틱 | 작은 Q를 쓴다 (SAC와 같다) |
| 지연된 정책 갱신 | 크리틱을 2번 고칠 때 액터는 1번 |
| 타깃 정책 평활화 | 타깃 계산 시 행동에 잡음을 더해 뾰족한 Q를 뭉갠다 |
| SAC | TD3 | |
|---|---|---|
| 정책 | 확률적 | 결정적 + 탐색 잡음 |
| 탐색 | 목적 함수에 내장 | 사람이 잡음을 설계 |
| 튜닝 | 엔트로피 목표·보상 스케일 등에 민감 | 탐색 잡음·정책 지연 등에 민감 |
| 시작점 | 강한 기준선 | 함께 비교할 결정적 정책 대안 |
무엇을 고르나
섹션 제목: “무엇을 고르나”| PPO | SAC | |
|---|---|---|
| 방식 | on-policy | off-policy |
| 샘플 효율 | 상대적으로 낮다 | 상대적으로 높다 — 환경·구현에 따라 차이가 큼 |
| 안정성 | 매우 좋다 | 좋다 (하이퍼파라미터에 조금 더 민감) |
| 병렬화 | 매우 잘 된다 — 환경 수천 개 | 버퍼 병목이 있다 |
| 이산 행동 | 된다 | 변형이 필요하다 |
| 대표 자리 | 로봇 시뮬 대량 학습 | 데이터 수집이 비싼 연속 제어·느린 시뮬 |
알고리즘 지도 정리
섹션 제목: “알고리즘 지도 정리”| 알고리즘 | 행동 | 정책 | 샘플 | 오늘의 위치 |
|---|---|---|---|---|
| DQN 계열 | 이산 | off | 좋음 | 이산 과제·트레이딩 |
| A2C | 둘 다 | on | 나쁨 | PPO에 밀렸다 |
| PPO | 둘 다 | on | 나쁨 | 널리 쓰임 로봇 시뮬 등 |
| DDPG | 연속 | off | 좋음 | TD3·SAC에 밀렸다 |
| TD3 | 연속 | off | 좋음 | SAC 대안 |
| SAC | 연속 | off | 좋음 | 널리 쓰임 연속 제어 |
| CQL · IQL | 둘 다 | 오프라인 | — | 7장 |
참고 자료
섹션 제목: “참고 자료”- Proximal Policy Optimization Algorithms — PPO 원 논문
- Truly Proximal Policy Optimization — PPO 클리핑이 비율·KL 제약을 보장하지 않는다는 분석
- The 37 Implementation Details of Proximal Policy Optimization — 재현에 중요한 구현 세부 사항
- Soft Actor-Critic — 최대 엔트로피 SAC 원 논문
6장 요약
섹션 제목: “6장 요약”- PPO는 확률 비율을 이용한 목적을 잘라 정책을 더 크게 바꿀 유인을 줄인다. 비율·KL을 강제 제한하지는 않는다
- 그 덕에 모은 데이터를 여러 에폭 재사용할 수 있다 — on-policy의 낭비를 조금 줄인다
- PPO는 구현 디테일이 재현을 좌우한다. 특히 관측 정규화 · 어드밴티지 정규화 · 보상 스케일
- 새 환경에서 안 될 때는 검증된 구현체로 먼저 돌려 환경 문제인지 구현 문제인지 가른다
- SAC는 재생 버퍼로 샘플을 아끼고, 목표에 엔트로피를 넣어 탐색을 내장한다
- SAC의 부품 — 쌍둥이 크리틱 · 소프트 타깃 · 온도 자동 조절. 목표 엔트로피는 여전히 설계한다
- TD3는 결정적 정책 쪽 대안이다. SAC와 함께 기준선으로 비교한다
- 선택 출발점 — 대량 병렬 수집이면 PPO, 수집 비용이 크면 SAC, 새 수집이 불가능하면 오프라인 RL