콘텐츠로 이동
Study Note강화학습

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 알고리즘의 생명줄이다.

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인데도 데이터를 조금은 아껴 쓸 수 있는 이유다.

롤아웃 수집 → GAE 어드밴티지 계산 → 정규화 → 클리핑 목표로 K 에폭 학습 → KL이 크면 조기 종료 후 다시 수집으로 도는 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 (이산)탐색이 죽으면 올린다

PPO는 데이터를 모으고 쓰고 버린다. 시뮬레이터가 있으면 괜찮지만, 실물 로봇이나 느린 시뮬에서는 그 낭비를 감당할 수 없다. SAC는 재생 버퍼를 쓰는 off-policy 알고리즘이라 경험을 여러 미니배치 갱신에 재사용한다.

SAC의 두 번째 아이디어는 목표 자체를 바꾼 것이다.

목표 = E[ Σ ( r + α · H(π(·|s)) ) ]
└── 엔트로피 ──┘

보상을 키우되, 정책은 가능한 한 무작위로 유지한다. “가장 여러 방식으로 잘하는 정책”을 찾는 셈이다.

이 항은 탐색을 유지하고 하나의 해법에 너무 일찍 수렴하는 것을 줄일 수 있다. 다중 모드와 교란 견고성에 도움이 될 가능성은 있지만, 실제 견고성은 별도 평가해야 한다.

부품하는 일
재생 버퍼off-policy 학습. 샘플 재사용 (4장)
쌍둥이 크리틱Q 둘 중 작은 값을 쓴다 — 과대추정 억제
소프트 타깃 갱신τ = 0.005로 조금씩 섞는다
재파라미터화확률적 행동에도 경사가 흐르게 한다
온도 α 자동 조절목표 엔트로피를 정해 두고 α를 학습으로 맞춘다

마지막 것은 온도 계수를 직접 고정하는 부담을 줄인다. 다만 목표 엔트로피는 여전히 설계 선택이고, 자동 조절이 튜닝을 없애 주는 것은 아니다.

같은 자리에 TD3도 있다. SAC와 형제 관계이고, 셋을 고쳤다.

처방무엇
쌍둥이 크리틱작은 Q를 쓴다 (SAC와 같다)
지연된 정책 갱신크리틱을 2번 고칠 때 액터는 1번
타깃 정책 평활화타깃 계산 시 행동에 잡음을 더해 뾰족한 Q를 뭉갠다
SACTD3
정책확률적결정적 + 탐색 잡음
탐색목적 함수에 내장사람이 잡음을 설계
튜닝엔트로피 목표·보상 스케일 등에 민감탐색 잡음·정책 지연 등에 민감
시작점강한 기준선함께 비교할 결정적 정책 대안
행동이 이산인지 연속인지, 샘플이 비싼지, 시뮬레이터로 대량 샘플을 뽑을 수 있는지로 PPO·DQN·SAC·오프라인 RL을 고르는 분기도
PPOSAC
방식on-policyoff-policy
샘플 효율상대적으로 낮다상대적으로 높다 — 환경·구현에 따라 차이가 큼
안정성매우 좋다좋다 (하이퍼파라미터에 조금 더 민감)
병렬화매우 잘 된다 — 환경 수천 개버퍼 병목이 있다
이산 행동된다변형이 필요하다
대표 자리로봇 시뮬 대량 학습데이터 수집이 비싼 연속 제어·느린 시뮬
알고리즘행동정책샘플오늘의 위치
DQN 계열이산off좋음이산 과제·트레이딩
A2C둘 다on나쁨PPO에 밀렸다
PPO둘 다on나쁨널리 쓰임 로봇 시뮬 등
DDPG연속off좋음TD3·SAC에 밀렸다
TD3연속off좋음SAC 대안
SAC연속off좋음널리 쓰임 연속 제어
CQL · IQL둘 다오프라인—7장
  • PPO는 확률 비율을 이용한 목적을 잘라 정책을 더 크게 바꿀 유인을 줄인다. 비율·KL을 강제 제한하지는 않는다
  • 그 덕에 모은 데이터를 여러 에폭 재사용할 수 있다 — on-policy의 낭비를 조금 줄인다
  • PPO는 구현 디테일이 재현을 좌우한다. 특히 관측 정규화 · 어드밴티지 정규화 · 보상 스케일
  • 새 환경에서 안 될 때는 검증된 구현체로 먼저 돌려 환경 문제인지 구현 문제인지 가른다
  • SAC는 재생 버퍼로 샘플을 아끼고, 목표에 엔트로피를 넣어 탐색을 내장한다
  • SAC의 부품 — 쌍둥이 크리틱 · 소프트 타깃 · 온도 자동 조절. 목표 엔트로피는 여전히 설계한다
  • TD3는 결정적 정책 쪽 대안이다. SAC와 함께 기준선으로 비교한다
  • 선택 출발점 — 대량 병렬 수집이면 PPO, 수집 비용이 크면 SAC, 새 수집이 불가능하면 오프라인 RL