Back to Basics: Revisiting REINFORCE Style Optimization for Learning from Human Feedback in LLMs

김태원·2026년 2월 10일

논문

목록 보기
6/6

다음 내용은 논문을 읽으면서 claude 에게 질문한 내용들을 토대로, 복기를 위해서 정리된 QA set 입니다.


Q1. 논문의 핵심 주장은 무엇인가?

RLHF에서 표준처럼 사용되는 PPO가 불필요하게 복잡하며, 더 단순한 REINFORCE 스타일 최적화(특히 RLOO)가 PPO와 DPO를 능가한다는 것을 보인다.

PPO는 TRPO보다 단순하지만, REINFORCE와 비교하면 여전히 복잡하다. 이 논문은 PPO를 TRPO가 아닌 REINFORCE와 비교한다.


Q2. RLHF에서 PPO가 왜 복잡한가?

PPO를 LLM RLHF에 적용하면 다음 요소들이 필요하다:

모델이 4개 필요

모델역할
Policy Model (π_θ)학습 대상
Reference Model (π_ref)KL 페널티 계산용 (frozen)
Reward Model (r_φ)생성된 응답 점수 매기기
Value Model (V_ψ)PPO의 Critic, 각 상태 가치 추정

토큰 레벨 모델링

각 토큰을 하나의 action, 각 부분 시퀀스를 state로 모델링해야 하며, 매 토큰마다 Value function 추정과 advantage 계산이 필요하다.

추가 메커니즘

Clipping, 같은 배치에 대한 multiple epoch 업데이트, GAE의 λ 파라미터 튜닝 등이 포함된다.


Q3. PPO의 토큰 레벨 state-action 모델링은 어떻게 작동하는가?

예시

Prompt: "서울 맛집 추천해줘"

시점   state (s_t)                        action (a_t)    
─────────────────────────────────────────────────────────
t=0    "서울 맛집 추천해줘"                  → "강남"
t=1    "서울 맛집 추천해줘 강남"              → "에"
t=2    "서울 맛집 추천해줘 강남에"            → "있는"
t=3    "서울 맛집 추천해줘 강남에 있는"       → "스시"
t=4    "서울 맛집 추천해줘 강남에 있는 스시"   → "오마카세"
t=5    "... 스시 오마카세"                    → "를"
t=6    "... 오마카세를"                       → "추천합니다"

문제: Reward Model은 전체 시퀀스 완성 후에만 점수를 준다:

r_0 = 0,  r_1 = 0,  r_2 = 0, ... , r_6 = R(전체 시퀀스)

중간 토큰에 진짜 reward가 없는데, Value function으로 중간 상태의 advantage를 억지로 추정하는 셈이다.


Q4. PPO RLHF에서 4개 모델의 상호작용 흐름

Step 1: Prompt 샘플링

데이터셋에서 prompt x를 뽑는다.

Step 2: Policy Model이 응답 생성

π_θ가 응답 y를 생성하면서 각 토큰의 log-probability를 저장한다.

Step 3: Reference Model이 같은 시퀀스 평가

π_ref(frozen SFT 모델)가 같은 생성 결과에 대한 log-probability를 계산하여 KL 페널티를 구한다:

KLt=logπθ(atst)logπref(atst)KL_t = \log \pi_\theta(a_t|s_t) - \log \pi_{ref}(a_t|s_t)

Step 4: Reward Model이 점수 매김

전체 시퀀스에 대해 한 번 평가한 후, KL 페널티와 결합하여 KL-shaped reward를 만든다:

중간 토큰: r̃_t = 0 - β·KL_t       (RM reward 없음, KL 페널티만)
마지막 토큰: r̃_T = r_φ(x,y) - β·KL_T  (RM reward + KL 페널티)

Step 5: Value Model이 각 상태 가치 추정

별도의 신경망이 각 중간 상태에서 앞으로 받을 reward의 기대값을 추정한다.

Step 6: GAE로 Advantage 계산

δt=r~t+γVψ(st+1)Vψ(st)\delta_t = \tilde{r}_t + \gamma \cdot V_\psi(s_{t+1}) - V_\psi(s_t)

At=δt+(γλ)δt+1+(γλ)2δt+2+A_t = \delta_t + (\gamma\lambda)\delta_{t+1} + (\gamma\lambda)^2\delta_{t+2} + \cdots

Step 7: PPO Clipped Loss로 Policy 업데이트

Lclip=min(rt(θ)At,  clip(rt(θ),1ϵ,1+ϵ)At)L_{clip} = \min\left(r_t(\theta) \cdot A_t, \; \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \cdot A_t\right)

Step 8: Value Model도 함께 업데이트

전체 흐름도

                    Prompt x
                       │
                       ▼
              ┌─────────────────┐
              │  π_θ (Policy)   │──→ 응답 y 생성 + log prob 저장
              └─────────────────┘
                       │
            ┌──────────┼──────────┐
            ▼          ▼          ▼
     ┌────────────┐ ┌──────────┐ ┌──────────────┐
     │ π_ref      │ │ r_φ (RM) │ │ V_ψ (Critic) │
     │ (frozen)   │ │          │ │              │
     │ KL 페널티  │ │ 시퀀스    │ │ 각 토큰별    │
     │ 계산       │ │ 전체 점수 │ │ 가치 추정    │
     └────────────┘ └──────────┘ └──────────────┘
            │          │                │
            └──────────┼────────────────┘
                       ▼
              KL-shaped reward → GAE → Advantage
                       │
              ┌────────┴────────┐
              ▼                 ▼
        π_θ 업데이트       V_ψ 업데이트

Q5. DPO와 IPO는 무엇이고, 왜 "RL-free"인가?

DPO (Direct Preference Optimization)

RLHF의 목적함수의 최적해를 닫힌 형태(closed-form)로 유도하면, reward를 policy로 표현할 수 있다:

r(x,y)=βlogπθ(yx)πref(yx)+constr(x, y) = \beta \cdot \log\frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)} + \text{const}

이를 Bradley-Terry 선호 모델에 대입하면 직접 loss를 만들 수 있다:

LDPO=logσ(β[logπθ(ywx)πref(ywx)logπθ(ylx)πref(ylx)])L_{DPO} = -\log \sigma\left(\beta \left[\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right]\right)

RM 훈련 없이, RL loop 없이, 선호 데이터 (y_w, y_l)로 supervised learning처럼 바로 학습.

IPO (Identity Preference Optimization)

DPO의 Bradley-Terry 가정을 제거하고, log-ratio 차이를 정규화된 목표값에 regression하는 형태:

LIPO=(logπθ(ywx)πref(ywx)logπθ(ylx)πref(ylx)12β)2L_{IPO} = \left(\log\frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \log\frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)} - \frac{1}{2\beta}\right)^2

→ DPO의 overfitting 문제에 더 강건.

"RL-free"인 이유

비교 항목기존 RLHF (RL 있음)DPO/IPO (RL-free)
데이터Policy가 응답을 online sampling고정된 선호 데이터셋 사용
Reward Model별도 훈련 필요필요 없음
업데이트 방식Policy gradientSupervised loss
학습 루프Online iterative loop일반 fine-tuning처럼 한 번 학습

RL의 핵심 특징인 "자기가 생성한 데이터로부터 학습하는 online loop"가 없으므로 "RL-free"라 불린다.


Q6. DPO/IPO의 진짜 문제점은?

데이터 비용이 아니라 distribution mismatch 문제이다.

Offline vs Online의 차이

  • Online RL (PPO, REINFORCE, RLOO): 매 스텝마다 현재 Policy가 새 응답을 생성하고, 그 응답에 대해 피드백을 받음. Policy의 현재 약점을 직접 교정 가능.
  • Offline (DPO/IPO): 고정된 선호 데이터로만 학습. Policy가 업데이트되어도 학습 데이터는 그대로.

예시

학습 중 Policy가 "강남 맛집"만 추천하는 편향이 생겼다면:

Online RL: Policy가 "강남 맛집"을 생성 → RM이 낮은 점수 → 교정 가능
DPO:       학습 데이터에 이 패턴 관련 쌍이 없으면 → 발견 자체가 불가능

Policy가 변하면서 생기는 새로운 종류의 실수에 대한 피드백을 받을 수 없다.


Q7. 논문에서 비교하는 방법들의 분류

Online (학습 중 생성)Offline (고정 데이터)
RL 사용PPO, REINFORCE, RLOO
RL 미사용DPO, IPO

논문의 핵심 포지션: DPO/IPO는 RL을 버리면서 online의 장점까지 잃었고, PPO는 online이지만 불필요하게 복잡하다. REINFORCE/RLOO는 online RL의 장점을 유지하면서 PPO보다 훨씬 단순한 "sweet spot"이다.


Q8. "Online sample"이란?

현재 학습 중인 Policy 모델(π_θ)이 생성한 응답을 말한다. RM이 생성한 것이 아니다.

매 학습 스텝마다:
  1. 현재 Policy (π_θ)가 prompt에 대해 응답 y를 생성  ← online sample
  2. RM이 그 응답에 점수를 매김                        ← RM은 평가만 함
  3. 그 점수로 Policy를 업데이트
  4. 업데이트된 Policy가 다시 새로운 응답 생성
  ... 반복

각 모델의 역할:

  • Policy (π_θ): 응답을 생성하는 주체 (online sample의 출처)
  • RM (r_φ): 생성된 응답을 평가하는 채점자 (sample을 만들지 않음)

Q9. Deep RL Setting이란 무엇이고, RLHF와 왜 다른가?

Deep RL Setting

PPO가 원래 설계된 환경 (Atari, MuJoCo 로봇 등):

  • Policy가 랜덤에 가까운 상태에서 시작
  • 작은 업데이트도 행동을 크게 바꿀 수 있음
  • Off-policy gradient가 커서 학습이 발산할 위험 → PPO의 clipping이 이를 방지

RLHF Setting

  • 이미 잘 훈련된 SFT 모델에서 시작 (warm-start)
  • gradient가 상대적으로 작고 안정적
  • 학습 발산 가능성이 낮음
  • PPO의 안정화 메커니즘이 해결하려는 문제가 거의 발생하지 않음

→ 따라서 PPO의 비용만 지불하고 실질적 이점은 적다.


Q10. REINFORCE의 수식과 baseline

기본 REINFORCE (Eq. 6)

ExD,  yπθ(x)[R(y,x)θlogπθ(yx)]\mathbb{E}_{x \sim D,\; y \sim \pi_\theta(\cdot|x)}\left[R(y, x) \cdot \nabla_\theta \log \pi_\theta(y|x)\right]

  • R(y,x): 이 응답이 얼마나 좋았는가 (스칼라)
  • ∇θ log πθ(y|x): 이 응답의 확률을 높이는 방향
  • 좋은 응답의 확률은 올리고, 나쁜 응답의 확률은 내린다

문제: 분산이 큼

reward가 항상 양수이면, 나쁜 응답의 확률도 올라가는 등 매 스텝의 gradient가 들쭉날쭉.

Baseline으로 분산 줄이기 (Eq. 7)

ExD,  yπθ(x)[(R(y,x)b)θlogπθ(yx)]\mathbb{E}_{x \sim D,\; y \sim \pi_\theta(\cdot|x)}\left[(R(y, x) - b) \cdot \nabla_\theta \log \pi_\theta(y|x)\right]

b를 빼면 평균보다 좋은 응답은 올리고, 평균보다 나쁜 응답은 내린다.
b를 빼도 gradient의 기대값은 변하지 않는다 (unbiased).

Moving Average Baseline (Eq. 8)

bMA=1SsR(xs,ys)b_{MA} = \frac{1}{S} \sum_{s} R(x_s, y_s)

학습 전체에 걸친 reward의 평균. 별도의 파라미터나 신경망이 불필요 ("parameter-free").


Q11. RLOO (REINFORCE Leave-One-Out)는 무엇인가?

같은 prompt에 대해 k개의 응답을 생성하고, 각 샘플의 baseline으로 나머지 샘플들의 reward 평균을 사용한다.

예시 (k=4)

Prompt: "서울 맛집 추천해줘"

y₁ → R₁ = 0.9,  baseline₁ = (0.6+0.1+0.7)/3 = 0.467,  advantage = +0.433
y₂ → R₂ = 0.6,  baseline₂ = (0.9+0.1+0.7)/3 = 0.567,  advantage = +0.033
y₃ → R₃ = 0.1,  baseline₃ = (0.9+0.6+0.7)/3 = 0.733,  advantage = -0.633
y₄ → R₄ = 0.7,  baseline₄ = (0.9+0.6+0.1)/3 = 0.533,  advantage = +0.167

자기 자신을 baseline 계산에서 빼놓는다(leave one out) → 이름의 유래. 자기를 포함하면 bias가 생기기 때문.

REINFORCE vs RLOO

REINFORCERLOO
prompt당 샘플1개k개
baseline전체 moving average같은 prompt의 다른 샘플들
gradient 정밀도노이즈 큼평균으로 노이즈 감소
추가 비용거의 없음k배 생성 비용 (but Value network보다 쌈)
편향unbiasedunbiased

파라미터 업데이트

k개 전부의 gradient를 평균내서 한 번 업데이트한다 (하나만 고르지 않음):

θ=1ki=1k(Ribi)θlogπθ(yix)\nabla_\theta = \frac{1}{k} \sum_{i=1}^{k} (R_i - b_{-i}) \cdot \nabla_\theta \log \pi_\theta(y_i|x)

Overfitting 우려가 적은 이유

  1. 같은 데이터를 반복 학습하지 않음 (PPO는 multiple epochs)
  2. Online이므로 매번 새로운 데이터 생성
  3. KL 페널티가 자연스러운 정규화 역할

Q12. PPO의 Variance-Bias Tradeoff와 RLHF에서의 불필요성

PPO (Actor-Critic)

Value function으로 bootstrapping하여 분산을 줄인다:

실제 return:   R = r₁ + r₂ + r₃ + ... + r_T  (끝까지 다 봐야 함)
Bootstrapping: R ≈ r₁ + V(s₂)                 (중간에서 Value function으로 추정)

→ 분산은 줄지만, V(s₂)가 부정확하면 bias 발생.

REINFORCE

Monte-Carlo 추정으로 실제 return을 그대로 사용 → unbiased, 하지만 분산이 클 수 있음.

기존 연구들의 주장

REINFORCE는 큰 action space(NLP vocab: 수만 개)에서 분산이 너무 커서 실패한다.

논문의 반론

기존 연구들은 랜덤/약한 초기화에서 시작했다. RLHF는 강력한 pre-trained 모델에서 warm-start하므로 분산이 자연스럽게 낮다:

랜덤 초기화: P("강남")=0.00003, P("ㅋㅋ")=0.00004 → 분산 극대
SFT 모델:   P("강남")=0.15,    P("홍대")=0.12     → 분산 작음

Q13. GAE의 λ와 Vanilla PG vs REINFORCE의 차이

GAE에서 λ의 역할

λ → 0:  bias 높음, variance 낮음 (Value function에 크게 의존)
λ → 1:  bias 낮음, variance 높음 (Monte-Carlo에 가까움)

RLHF처럼 안정적인 환경에서는 λ=1이 최적 (논문 Figure 1에서 확인).

λ=1이면 → Vanilla PG가 된다

At=i=tTγTi1Rt(x,yt)bϕ(st)A_t = \sum_{i=t}^{T} \gamma^{T-i-1} R_t(x, y_t) - b_\phi(s_t)

Vanilla PG vs REINFORCE (이 논문)의 핵심 차이: 적용 단위

Vanilla PG (λ=1)REINFORCE (이 논문)
적용 단위토큰 레벨시퀀스 레벨
State매 토큰의 부분 시퀀스prompt 전체 (한 번)
Action각 토큰전체 생성 시퀀스
Baselineb_φ(s_t) — 학습된 네트워크moving average (숫자 하나)
부분 시퀀스 모델링필요불필요
Value network필요불필요

전체 비교 표

PPO (λ<1)Vanilla PG (λ=1)REINFORCERLOO
적용 단위토큰토큰시퀀스시퀀스
BootstrappingOXXX
BiasOXXX
Value network필요필요불필요불필요
ClippingOXXX
OnlineOOOO

논문 Section 5.1 실험 결과: REINFORCE가 Vanilla PG와 같거나 더 좋음 → 부분 시퀀스 모델링은 RLHF에서 불필요한 복잡성.


Q14. 목적함수의 동치 관계

원래 목적함수

maxπθExD,  yπθ(x)[rϕ(x,y)βDKL(πθ(x)πref(x))]\max_{\pi_\theta} \mathbb{E}_{x \sim D,\; y \sim \pi_\theta(\cdot|x)}\left[r_\phi(x, y) - \beta \cdot D_{KL}\big(\pi_\theta(\cdot|x) \| \pi_{ref}(\cdot|x)\big)\right]

KL divergence 정의를 대입하면

DKL=Eyπθ[logπθ(yx)πref(yx)]D_{KL} = \mathbb{E}_{y \sim \pi_\theta}\left[\log \frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)}\right]

바깥 기대값과 같은 분포이므로 합쳐서:

=maxπθExD,  yπθ(x)[rϕ(x,y)βlogπθ(yx)πref(yx)]= \max_{\pi_\theta} \mathbb{E}_{x \sim D,\; y \sim \pi_\theta(\cdot|x)}\left[r_\phi(x, y) - \beta \log \frac{\pi_\theta(y|x)}{\pi_{ref}(y|x)}\right]

=maxπθExD,  yπθ(x)[R(x,y)]= \max_{\pi_\theta} \mathbb{E}_{x \sim D,\; y \sim \pi_\theta(\cdot|x)}\left[R(x, y)\right]

단순한 정의 치환으로, 수학적으로 완전히 동일한 식이다.

0개의 댓글