SAC(Soft Actor-Critic)는 MuJoCo 연속 제어의 표준이 됐다. 그런데 SAC의 각 부품 — twin critics, stochastic actor, auto-α — 은 왜 존재하는가? 이 질문을 따라가면 하나의 출발점으로 수렴한다. Maximum Entropy RL이라는 프레임워크다. SAC의 모든 설계 결정은 이 프레임워크의 직접적 귀결이다.
Maximum Entropy RL의 출발점
Standard RL의 목적함수는 기댓값 누적 보상이다.
Jstd(π)=E[t∑γtr(st,at)]
이 목적함수의 최적 정책은 종종 결정론적(deterministic)이고 brittle하다. 하나의 최적 행동만 반복하므로 환경이 조금만 바뀌어도 실패하고, 학습 중 다른 전략을 시도하지 않는다.
MaxEnt RL은 목적함수 자체를 바꾼다.
Jmaxent(π)=E[t∑γt(r(st,at)+αH(π(⋅∣st)))]
엔트로피 보너스 αH(π)가 추가됐다. α는 temperature — 보상과 엔트로피의 균형을 결정한다. α→0이면 standard RL로 돌아가고, α→∞이면 uniform policy가 된다.
이 목적함수의 최적 정책이 Boltzmann form임을 라그랑지안으로 유도할 수 있다. 주어진 상태 s에서 ∑aπ(a)=1 제약 아래 ∑aπ(a)Q(s,a)−α∑aπ(a)logπ(a)를 최대화하면 정류 조건이
π∗(a∣s)∝exp(Qsoft∗(s,a)/α)
를 준다.
Soft Bellman — 엔트로피를 Bellman에 통합하는 방법
문제가 하나 있다. 보강 보상 r~=r+αH(π(⋅∣s))는 정책에 의존한다. 이걸 표준 Bellman에 직접 대입하면 Q가 행동 a 외에 정책의 엔트로피까지 의존하는 이상한 양이 된다.
target distribution exp(Q/α)/Z에 가장 가까운 representable 분포를 선택한다. 분배함수 Z(s)가 π′와 무관하므로 KL은 다음 샘플 기반 손실로 단순화된다.
Jπ(ψ)=Es,a∼πψ[αlogπψ(a∣s)−Qϕ(s,a)]
연속 행동공간에서 a=tanh(μψ(s)+σψ(s)⋅ϵ), ϵ∼N(0,I)로 reparameterize하면 이 손실을 역전파할 수 있다. REINFORCE의 score function estimator 대비 분산이 10–100배 낮아 학습이 안정된다.
KL projection이 정확하면(target distribution이 representable family 안에 있으면) soft Q-value의 pointwise 단조 증가가 보장된다. NN 근사에서는 이 보장이 약화되지만, 실전에서 학습 곡선은 대체로 단조 상승한다.
SAC의 조립 — 이론의 귀결로서의 알고리즘
SAC의 각 구성 요소가 어디서 왔는지 이제 명확하다.
구성 요소
출처
Stochastic actor
MaxEnt: 엔트로피 항이 확률적 정책을 요구
Replay buffer
Off-policy MaxEnt: 표준 Q 형태 유지 덕분에 IS ratio 불필요
Reparameterization
KL projection의 연속 행동 근사
Twin critics
TD3에서 차용 — Q 과대추정 방지
Target networks
DDPG에서 차용 — 학습 안정성
critic의 target은 soft V의 샘플 기반 추정이다.
y=r+γEa′∼π[i=1,2minQϕi−(s′,a′)−αlogπ(a′∣s′)]
−αlogπ항이 엔트로피를 target에 내장한다. 표준 Q-learning의 max 대신 stochastic policy에서 기댓값을 취한다는 점이 유일한 차이다.
✎ 트레이드오프
SAC는 PPO 대비 샘플 효율이 ~5배 높다(HalfCheetah 기준 1M step에서 동등 성능). 그러나 replay buffer + twin critics + reparameterization의 구현 복잡도가 높고, discrete 행동공간에는 별도 변형(SAC-Discrete)이 필요하다. LLM RLHF에서 PPO가 표준으로 남은 이유다 — token이 discrete이고 long-context sequence 처리에 PPO의 단순한 배치 구조가 적합하다.
Auto-α — 마지막 하이퍼파라미터의 제거
SAC 2018의 한계는 α가 환경마다 달라야 한다는 것이었다. HalfCheetah에선 0.1, Humanoid에선 0.05가 적절하다. SAC 2019는 이를 제약 조건 문제로 바꿨다.
πmaxE[t∑γtrt]s.t.E[−logπ(a∣s)]≥Hˉ
“엔트로피가 최소 Hˉ 이상”이라는 제약만 부과하고, α는 이 제약의 라그랑주 승수로서 자동 조정된다. 이중 경사 하강(dual gradient descent)을 적용하면 업데이트 규칙이 나온다.
α←α−ηα(E[−logπ]−Hˉ)
직관: 실제 엔트로피가 Hˉ보다 낮으면 α를 키워 정책을 더 확률적으로 만들고, 높으면 α를 줄여 보상을 우선한다. 평형은 H(π∗)=Hˉ다.
auto-α가 SAC의 가장 영향력 있는 기여라는 평가가 많다. 알고리즘 아이디어가 아무리 우수해도 하이퍼파라미터 민감도가 높으면 연구자만 쓴다. auto-α 이후 SAC는 default 설정으로 대부분 환경에서 reasonable하게 동작하는 production-ready 알고리즘이 됐다.