반복 DPO: 온라인과 오프라인 사이의 다이얼
온라인은 비싸고 위험하고, 오프라인은 분포가 이동한다. 데이터가 얼마나 낡는지를 정규분포 장난감으로 재 보았을 때, 학습 도중에 데이터를 새로 만드는 횟수(라운드 수)를 1에서 걸음 수까지 올리면 오프라인에서 온라인까지가 연속적인 다이얼처럼 이어졌다. 그렇다면 그 중간 어딘가에 온라인의 성능과 오프라인의 편의성을 함께 잡는 자리가 있지 않을까? 세 방식의 구조를 나란히 놓으면 다음과 같다.
graph TB
subgraph offline["오프라인 DPO"]
direction TB
D1["📦 데이터셋<br/>(y_w, y_l) 쌍<br/>한 번 구축"] --> T1["🔧 학습<br/>일반 미세조정과 동일"]
T1 --> M1["✅ 사람 선호에 맞춘 모델"]
end
subgraph online["온라인 RL"]
direction TB
G["🎲 현재 모델로<br/>응답 생성"] --> E["⚖️ 실시간 평가<br/>(인간/보상모델/검증기)"]
E --> U["🔧 모델 업데이트"]
U -->|"매 배치 반복"| G
end
subgraph iterative["Iterative DPO (절충안)"]
direction TB
R1["Round 1<br/>데이터 생성 → DPO"] --> R2["Round 2<br/>갱신된 모델로<br/>새 데이터 → DPO"]
R2 --> R3["Round 3<br/>...반복"]
end
class offline m-blue
class online m-orange
class iterative m-green
역사: Llama의 반복 학습과 여러 절충안
한 번 만든 데이터가 낡는다면 가장 쉬운 처방은 학습을 몇 토막으로 나누고 토막마다 데이터를 새로 만드는 것이다. 메타의 Llama 2(2023)가 이 길을 갔다. 그때까지 가장 나은 모델로 응답을 새로 뽑아 다시 학습하는 일을 다섯 번 되풀이했고, 판마다 RLHF-V1부터 V5까지 이름을 붙였다. 넷째 판까지는 거절 샘플링(여러 응답을 뽑아 보상 모델 점수가 가장 좋은 것만 남겨 따라 쓰게 하기)만 썼고, 그 뒤에야 거절 샘플링 위에 PPO를 얹었다.
Llama 3(2024)는 같은 반복 구조를 여섯 라운드로 돌리되 PPO 자리에 DPO를 넣었다. 한 라운드는 거절 샘플링 + SFT(좋은 응답을 그대로 따라 쓰게 하는 지도 학습) + DPO였다. DPO에는 앞 라운드에서 가장 나았던 모델들로 새로 모은 선호 데이터를 주로 썼는데, 논문은 그 까닭을 학습 데이터가 각 라운드에서 최적화되는 정책의 분포에 더 가까워지기 때문이라고 적었다. 반쯤 온라인인 셈이다. 데이터는 라운드마다 정책을 따라가고, 라운드 안에서는 오프라인의 안정성을 누린다. PPO 같은 온폴리시 알고리즘도 시도했지만, 큰 모델에서는 DPO가 연산을 덜 쓰고 지시 따르기 평가(IFEval)에서 더 나았다고 한다. 라운드 사이에 모델을 검수하고 방향을 고칠 수 있다는 것도 실무적 이점이다. JoyCaption도 이 방식을 써서, 2라운드 반복으로 결함률(엉터리 출력 비율)을 9.6%에서 1.5%로 낮췄다.
라운드를 끝까지 잘게 나누면 걸음마다 데이터를 새로 만드는 Online DPO가 된다. 구글 딥마인드의 궈(Shangmin Guo)와 동료들(2024)은 학습 걸음마다 지금 모델로 응답 두 개를 뽑고, 언어모델 심사자가 그 자리에서 어느 쪽이 나은지 판정하게 했다(온라인 AI 피드백, OAIF). 온폴리시 데이터와 실시간 평가로 분포 이동은 없어졌고, 사람 평가자들은 이렇게 온라인으로 학습한 모델을 같은 방법의 오프라인판보다 평균 약 66%의 비율로 더 낫다고 골랐다. 하지만 온라인 학습의 세 가지 짐(모델을 계속 갱신하는 비용, 데이터셋을 계속 만들어 내는 어려움, 드리프트 위험)을 모두 감수한다.
온라인으로 가면서 되살아난 드리프트를 겨냥한 시도도 나왔다. 바이(Chenjia Bai)와 동료들의 COPO(2025, 카운트 기반 온라인 선호 최적화)는 지금까지 모은 데이터에서 드물게 나온 응답일수록 탐색 보너스를 얹는다. 데이터가 모델이 이미 잘 내는 응답으로만 채워지지 않고 처음 데이터셋 밖까지 나가 보게 해서, 온라인 학습의 자기 붕괴형 드리프트에 직접 대응한다.
판정하는 쪽을 아예 없앤 길도 있다. 천(Zixiang Chen)과 동료들의 SPIN(2024, 자기 대국 미세조정)은 사람이 쓴 SFT 답을 좋은 응답으로, 앞 라운드의 자기 모델이 쓴 답을 나쁜 응답으로 짝지어, 자기 자신과 대국하듯 데이터를 자동으로 만든다. 데이터셋을 계속 만들어 내는 비용 문제는 해결된다. 다만 맞수가 언제나 "사람이 쓴 답 대 지난번의 내 답"이라, 내 답이 사람이 쓴 답과 구별되지 않게 되면 거기서 멈춘다. 논문은 그 지점이 학습 목표의 최적점임을 보였다.
ML에서: 실제로 쓰인 조합
검증할 정답이 없는 영역에서 실제로 쓰인 조합 하나를 보자. 멍(Yu Meng)과 동료들의 SimPO(2024)는 레퍼런스 모델 없이 문장 로그확률의 길이 평균을 보상처럼 쓰는 선호 최적화다. 이 논문의 한 실험은 데이터도 지금 모델로 만들었다. 프롬프트마다 SFT 모델로 응답 다섯 개를 뽑고(샘플링 온도 0.8), 보상 모델로 채점해 가장 높은 것을
또는 반복(Iterative) 접근을 쓴다. 경험적으로 라운드를 몇 번 늘리면 좋아지지만, 많이 늘린다고 계속 좋아지지는 않는다(아래 문제 6). 수학 문장제 모음 GSM8K에서 반복 DPO를 돌린 팡(Richard Yuanzhe Pang)과 동료들(2024, Iterative RPO)의 정확도는 라운드마다 73.1% → 78.0% → 81.1% → 81.6% 였다. 오르는 폭이 4.9, 3.1, 0.5%p로 줄었고, 연구진은 성능이 포화된 넷째 라운드에서 멈췄다.
문제 6 — (킬러) 라운드를 늘리면 무조건 좋은가
데이터가 얼마나 낡는지 재는 정규분포 장난감의 위젯에서 라운드 수를 늘리면 유효 표본 비율이 계속 좋아지고, 라운드 수가 걸음 수와 같아지면 온라인이 된다(위젯의 「문제 6의 값」 단추는 10라운드를 불러온다). 그렇다면 라운드를 "많이 늘린다고 계속 좋아지지는 않는다"는 본문의 말은 틀린 것인가? 위젯이 재지 않는 것 두 가지를 찾으시오. (힌트: 채점하는 쪽은 라운드마다 바뀌는가? 레퍼런스는?)














정리 위젯이 재는 것은 데이터의 신선도뿐이다. 재지 않는 것: (1) 채점자(보상 모델·심사 모델)는 고정이라, 라운드가 늘수록 정책이 그 구멍을 찾을 기회도 늘어난다(과최적화). 라운드가 많아지면 리워드 해킹 위험이 누적된다. (2) 레퍼런스를 라운드마다 갱신하면 목줄의 말뚝이 옮겨져, 처음 모델에서의 총 이탈은 라운드 수만큼 누적될 수 있다. 그래서 적정 라운드 수가 존재하고, 그 수는 태스크와 보상 모델의 품질에 따라 다르다.