Skip to content

26장. 정책이라는 이름의 습관 — 정책 경사와 PPO

이 장의 질문: 가치를 거치지 않고 정책 자체를 보상의 기울기로 다듬을 수 있는가? 정책 경사의 원리, 분산을 줄이는 기준선과 액터-크리틱, 그리고 현대 RL과 RLHF의 표준인 PPO를 이해한다.

전제: 3장(기대값, 기울기), 5장(확률 출력), 25장(MDP, 가치, 탐색).

가치 기반의 두 구멍

25장의 방법은 Q를 배우고 argmaxaQ로 행동했다. 두 상황에서 막힌다.

연속 행동. 로봇 관절에 줄 힘이 1.0에서 +1.0 사이의 실수라면, 행동이 무한히 많아 "Q가 최대인 행동"을 고르는 것 자체가 최적화 문제가 된다.

확률적 정책이 필요한 경우. 가위바위보에서 최선의 정책은 "항상 바위"가 아니라 "각 1/3"이다. 결정적 정책(argmax)은 이런 문제를 표현조차 못 한다.

발상을 바꾸자. 가치를 거치지 말고 정책을 직접 파라미터화하라 — 신경망 πθ(a|s)가 상태를 받아 행동의 확률 분포(이산이면 소프트맥스, 연속이면 정규분포의 평균과 폭)를 출력한다(5장의 확률 출력이 여기서 재활용된다). 그리고 목표 — 기대 리턴 — 의 θ에 대한 기울기를 구해 올라간다. 2장의 뼈대 그대로다. 문제는 하나: 기대 리턴은 환경이라는 블랙박스를 거치므로 손실처럼 미분할 수 없다. 환경 안을 미분할 수 없으니 다른 길이 필요하다.

정책 경사: 미분할 수 없는 것을 미분하기

핵심 트릭은 이렇다. 기대값의 미분을 직접 못 구하더라도, 표본으로 추정할 수는 있다. 정책으로 에피소드를 여러 번 굴려 (상태, 행동, 그 이후의 리턴) 데이터를 모으면, 기대 리턴의 기울기는 다음과 같이 추정된다:

θJ1Nθlogπθ(atst)Gt

읽는 법: 각 시점에서, "그 행동을 택할 로그확률의 기울기"에 "그 뒤 실제로 얻은 리턴"을 곱해 평균낸다. 말로 풀면 직관적이다 — 결과가 좋았던 행동은 확률을 높이고, 나빴던 행동은 확률을 낮춰라. 그 정도는 결과의 크기에 비례해서. (로그확률의 기울기는 "이 행동의 확률을 높이는 방향"이고, 리턴은 그 방향으로 얼마나 밀지의 가중치다.) 환경을 미분하지 않고도, 환경이 준 점수를 가중치로 삼아 정책을 미분한 것이다. 이것이 정책 경사 정리이며, 그대로 구현한 것이 REINFORCE 알고리즘이다.

원리는 아름답지만 그대로는 쓰기 어렵다 — 분산이 크다. 리턴은 무작위 전이와 탐색의 우연이 잔뜩 섞인 수라, 같은 행동이 어떤 판에서는 +50, 다른 판에서는 −30을 받는다. 기울기 추정이 요동쳐서 학습이 느리고 불안정하다. 이후의 모든 발전은 이 분산을 줄이는 이야기다.

기준선. 리턴 Gt 대신 "평균보다 얼마나 좋았나"를 쓰자 — Gtb(st). 절대 점수가 아니라 상대 점수로 밀면, 모든 행동이 +50을 받는 상황에서 전부 밀어 올리는 낭비가 사라지고 분산이 극적으로 준다(수학적으로 기대값은 변하지 않는다는 것이 증명된다 — 편향 없는 분산 감소). 기준선으로 가장 자연스러운 것은 상태 가치 V(s) — "이 상태에서 평균적으로 기대되는 리턴". 그러면 GtV(st)는 "이 행동이 평균보다 얼마나 나았나", 즉 이점(advantage)이 된다.

액터-크리틱. V(s)를 또 하나의 신경망(크리틱)으로 학습시켜 기준선으로 쓴다. 정책(액터)은 이점 방향으로 갱신되고, 크리틱은 실제 리턴에 회귀한다. 25장의 가치 학습과 이 장의 정책 학습이 한 몸이 된 구조다. 여기에 이점을 "몇 걸음은 실제 보상, 그 뒤는 크리틱의 추정"으로 섞어 편향-분산을 절충하는 기법(GAE — λ라는 다이얼 하나로 조절)이 표준으로 얹힌다. 4장의 편향-분산 줄다리기가 강화학습에서는 이점 추정의 형태로 나타난다.

PPO: 한 번에 너무 멀리 가지 않기

분산을 줄여도 마지막 문제가 남는다. 정책 경사 한 걸음이 너무 크면 정책이 급변해 성능이 붕괴하고, 붕괴한 정책이 모은 나쁜 데이터로 다음 걸음을 배우는 악순환에 빠진다. 지도학습에서 학습률이 크면 발산하는 것(2장)과 같지만, 여기서는 데이터 자체를 정책이 만들기 때문에 회복이 훨씬 어렵다.

게다가 효율 문제가 있다. 정책 경사는 "지금 정책"으로 모은 데이터로만 정확하다(온폴리시). 한 번 갱신하면 데이터가 낡아 버려 다시 모아야 한다 — 비싼 시행착오를 한 번 쓰고 버리는 셈이다.

PPO(근접 정책 최적화)는 두 문제를 하나의 장치로 푼다. 새 정책과 옛 정책의 확률 비율 ρ=πnew(a|s)/πold(a|s)을 계산하고, 목적을 이렇게 세운다:

L=min(ρA,clip(ρ, 1ϵ, 1+ϵ)A)

읽는 법: 이점 A 방향으로 정책을 밀되, 비율이 [1ϵ,1+ϵ](보통 ϵ=0.2) 범위를 벗어나는 데서 오는 이득은 잘라 버린다(clip). 이점이 양수면 확률을 20% 넘게 키워도 추가 보상이 없고, 음수면 20% 넘게 줄여도 마찬가지다 — "좋은 방향으로도 한 번에 조금만." 이 보수성 덕분에 같은 데이터로 여러 번(예: 10에포크) 갱신해도 정책이 안전 범위 안에 머물러, 데이터 재사용이 가능해진다. 구현이 단순하고 튜닝에 관대해 PPO는 로봇 제어부터 게임까지 현대 강화학습의 기본기가 되었다.

코드랩 17에서 액터-크리틱, GAE, 클리핑을 전부 밑바닥부터 구현한다. 클리핑을 빼고 10에포크 재학습을 시도하면 붕괴가 눈앞에서 재현된다.

빚을 갚다: RLHF는 정확히 이것이었다

22장에서 미뤄 둔 설명을 이제 완성할 수 있다. RLHF의 강화학습 단계를 이 장의 언어로 번역하면:

RL 개념RLHF에서의 실체
상태 s프롬프트 + 지금까지 생성한 토큰
행동 a다음 토큰 (어휘 크기의 이산 행동)
정책 πθLLM 자체 (다음 토큰 분포 = 정책의 확률 출력!)
에피소드답변 하나를 끝까지 생성하는 것
보상답변 완성 시 보상 모델의 점수 − 참조 모델과의 KL 벌점
크리틱LLM에 붙인 가치 예측 헤드
알고리즘PPO

18장의 GPT가 "다음 토큰의 확률 분포"를 내놓는 모델이라는 정의를 기억하라 — 그것은 곧 정책이다. LLM은 태생부터 정책 경사에 맞는 형태였고, RLHF는 그 정책을 사람 취향의 보상으로 다듬는 PPO다. 22장의 DPO가 이 과정을 지도학습형 손실로 압축한 지름길이라는 것도, PPO의 목적과 KL 벌점의 최적해를 대수적으로 정리한 결과였다. 그리고 최근의 "추론 모델"들 — 수학·코딩 문제의 정답 여부를 보상 삼아 긴 추론 과정을 강화학습으로 기르는 — 도 같은 문법 위에 있다. 8부의 수학은 게임의 수학이 아니라, 지금 이 순간 LLM을 만들고 있는 수학이다.

핵심 요약

  • 가치 기반은 연속 행동과 확률적 정책에서 막힌다. 정책 경사는 정책을 직접 파라미터화하고, "결과가 좋았던 행동의 확률을 결과에 비례해 높인다"는 표본 추정으로 환경을 미분하지 않고 정책을 개선한다.
  • 순진한 추정은 분산이 크다. 기준선(상태 가치) 으로 상대 점수(이점)를 쓰고, 가치를 배우는 크리틱을 붙이며(액터-크리틱), GAE로 이점 추정의 편향-분산을 절충한다.
  • PPO: 새/옛 정책의 확률 비율을 클리핑해 "한 번에 조금만" 움직이게 한다 → 붕괴 방지 + 데이터 재사용. 현대 RL의 기본기.
  • RLHF = LLM(정책) + 보상 모델(보상) + KL 벌점 + PPO. 다음 토큰 분포는 곧 정책이며, 8부의 수학이 LLM을 길들인다.

스스로 점검

  1. "결과가 좋았던 행동의 확률을 높인다"는 규칙이 왜 "환경을 미분"하지 않고도 정책을 개선하는지 설명해 보라.
  2. 모든 행동이 +100의 리턴을 받는 환경에서, 기준선 없는 정책 경사와 기준선 있는 정책 경사의 갱신이 어떻게 다른지 비교해 보라.
  3. PPO의 클리핑에서 이점이 양수일 때 비율이 1+ϵ을 넘으면 기울기가 0이 되는 이유를 minclip의 동작으로 설명해 보라.
  4. RLHF 표에서 "행동 = 다음 토큰"일 때 에피소드 길이는 무엇에 해당하며, 보상이 마지막에만 주어지는 것이 왜 25장의 "지연된 보상" 문제와 같은지 말해 보라.

다음 장에서

8부가 끝났다 — 8부 복습 퀴즈로 점검하라. 이제 마지막 부다. 노트북에서 돌아가는 모델과 수만 명이 쓰는 서비스 사이에는 또 하나의 강이 있다. 서빙, 모니터링, 그리고 모델이 세월에 늙는 문제 — 만든 것을 세상에 내보내고 살아 있게 유지하는 기술이다.

27장. 연구실에서 세상으로 →