5. PPO와 RLHF — 멀리 가지 않게 묶다

자주 하는 실수와 요약

자주 하는 실수
실수 나온 문제 바로잡는 법
표본에 한 번도 안 나온 쪽도 가중치를 크게 주면 되살릴 수 있다고 봄 1 곱할 샘플이 없고 비율도 「÷ 0」이다. 가중치 보정은 πold(y)>0\textcolor{#6f6f78}{\pi_\text{old}}(\textcolor{#1c9c60}{y}) > 0 인 곳에서만 된다
드문 샘플이 나오면 추정이 좋아진다고만 봄 2 드문 샘플은 큰 가중치로 추정을 혼자 흔든다. 일곱 번 가운데 한 번의 6이 추정의 41%를 정한다
방금 생성한 배치라서 PPO의 모든 에폭이 온폴리시라고 봄 3 첫 업데이트 뒤로는 πθ≠πold\textcolor{#1565c0}{\pi_\theta} \ne \textcolor{#6f6f78}{\pi_\text{old}} — "살짝 오프폴리시"이고, 비율 rt\textcolor{#c2185b}{r_t}로 보정한다
값이 0이 아니면 더 밀 때도 늘어난다(그래디언트가 있다)고 봄 4 한도에 닿은 적립금, 잘린 항 (1+ϵ)A^(1+\textcolor{#1f6d7a}{\epsilon})\textcolor{#8e44ad}{\hat A} 는 상수 — 기울기는 0
클리핑이 있으면 비율이 1+ϵ1+\textcolor{#1f6d7a}{\epsilon} 을 넘을 수 없다고 봄 5 클리핑은 선을 넘은 샘플을 더 밀지 않을 뿐이다. 파라미터를 함께 쓰는 다른 토큰의 업데이트와 큰 걸음이 비율을 넘긴다
비율이 [1−ϵ,1+ϵ][1-\textcolor{#1f6d7a}{\epsilon}, 1+\textcolor{#1f6d7a}{\epsilon}] 밖이면 늘 잘린다고 봄 6 min⁡\min 은 손해 방향으로 벗어난 샘플을 자르지 않고 끝까지 교정한다
이긴 비율을 그대로 점수로 씀 7 이길 확률 = σ(점수 차)이므로 점수 차는 ln⁡(p/(1−p))\ln(p/(1-p)) 다. 점수의 절댓값은 정해지지 않고 차이만 뜻이 있다
보상에 상수를 더해도 샘플 추정까지 무해하다고 봄 8 기대값은 그대로지만 분산이 커진다. 베이스라인(비평가)이나 보상 정규화로 흡수한다
ϵ=0.2\textcolor{#1f6d7a}{\epsilon} = 0.2 클리핑이면 SFT 모델에서 20% 이상 못 멀어진다고 봄 9 기준 πold\textcolor{#6f6f78}{\pi_\text{old}} 가 매 반복 바뀐다. 1.210≈6.191.2^{10} \approx 6.19, 1.250≈91001.2^{50} \approx 9100
KL 페널티도 한 걸음씩만 제한한다고 봄 9 기준 πref\textcolor{#6f6f78}{\pi_\text{ref}} 는 고정 — 출발점에서의 누적 거리에 벌점을 준다
요약

생성이 비싸므로 한 배치를 여러 번 쓰고 싶지만, 첫 업데이트부터 데이터는 옛 정책의 것이 된다. 임포턴스 샘플링은 비율 πθ/πold\textcolor{#1565c0}{\pi_\theta}/\textcolor{#6f6f78}{\pi_\text{old}} 로 이 간극을 보정하되, 옛 정책이 뽑을 수 없는 곳은 보정할 수 없고 드문 샘플은 추정을 크게 흔든다. 언어모델에서는 응답 단위 비율이 폭발하므로 토큰 단위 비율 rt(θ)\textcolor{#c2185b}{r_t(\theta)} 만 쓴다. 이 근사는 옛 정책 근처에서만 믿을 수 있어, TRPO는 KL 제약으로, PPO는 이득 방향으로 선을 넘은 비율의 그래디언트를 끊는 방식으로 한 반복의 보폭을 묶는다. 끊는 것은 그 샘플의 그래디언트일 뿐이라 비율 자체는 선을 넘을 수 있다. 점수가 없는 곳에서는 사람의 쌍비교로 Bradley-Terry 보상 모델을 학습하고, 그 점수를 PPO로 올리되 고정된 레퍼런스와의 KL 페널티로 목줄을 채운다. 보상 모델은 빈틈이 있어 너무 밀면 점수만 오르고 실제 품질은 떨어지기 때문이다. 클리핑은 움직이는 기준 πold\textcolor{#6f6f78}{\pi_\text{old}}, KL은 고정된 기준 πref\textcolor{#6f6f78}{\pi_\text{ref}} 에 대한 제한이라 둘 다 필요하고, 그 대가로 메모리에 모델 넷이 올라간다.

이 장에서 데이터를 가른 두 축 — 데이터를 뽑은 정책이 지금 정책과 같은가(온폴리시·오프폴리시), 학습 도중 데이터를 새로 만드는가(온라인·오프라인) — 에 방법들을 놓으면 이렇다.

방법 온라인/오프라인 온폴리시/오프폴리시
REINFORCE, Actor-Critic 온라인 온폴리시 — 뽑자마자 한 번 쓰고 버림
PPO (이 장) 온라인 살짝 오프폴리시 — 한 배치를 여러 번 재사용
Q-러닝(행동마다 앞으로 받을 점수를 배우는 방법) + 리플레이 버퍼(지난 경험을 모아 두고 다시 꺼내 쓰는 저장소) 온라인 오프폴리시 — 오래된 경험도 재활용
DPO 오프라인 오프폴리시 — 남이 만든 고정 데이터셋