정렬 개요와 RLHF 파이프라인: SFT · 보상 모델 · PPO · KL 페널티
RLHF 세 단계와 보상 모델 손실 · KL 페널티 · 과최적화를 숫자로 익히는 정렬 입문 수업
먼저 알아야 할 것
다루는 내용
정렬의 목표(도움 · 정직 · 무해)와 RLHF 파이프라인(SFT → 보상 모델 → PPO)을 다룹니다. 브래들리-테리 비교 손실과 토큰별 KL 페널티를 작은 숫자로 계산하고, InstructGPT가 보고한 데이터 규모 · 계수 · 결과를 정리합니다. 보상 해킹과 보상 과최적화(굿하트의 법칙)도 설명합니다.
해설
정렬 개요와 RLHF 파이프라인: SFT · 보상 모델 · PPO · KL 페널티
사전학습만 마친 언어 모델은 "인터넷 글의 다음 토큰"을 잘 맞힐 뿐, 사용자가 원하는 일을 해 주도록 배우지는 않았습니다. 정렬(alignment) 은 모델의 행동을 사람의 의도에 맞추는 작업이고, 그 대표 방법이 사람 피드백 강화학습(RLHF) 입니다. 이 수업에서는 RLHF의 세 단계(SFT → 보상 모델 → PPO)를 순서대로 보고, 보상 모델의 손실과 KL 페널티를 작은 숫자로 직접 계산합니다. 마지막으로 보상 모델을 너무 세게 최적화하면 생기는 '과최적화'를 다룹니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | Hugging Face 블로그 「Illustrating RLHF」 · InstructGPT(arXiv 2203.02155) · 사람 선호로 하는 딥 강화학습(arXiv 1706.03741) · 보상 모델 과최적화의 스케일링 법칙(arXiv 2210.10760) |
| 트랙 · 수준 | 정렬 · 중급 |
| 이 수업이 다루는 범위 | 정렬의 뜻(도움 · 정직 · 무해), SFT, 비교 데이터와 브래들리-테리 보상 모델, PPO 목적식과 KL 페널티, 사전학습 혼합(PPO-ptx), 보상 해킹 · 과최적화 |
들어가기 전에
- 언어 모델의 기본: 다음 토큰 예측 · 퍼플렉서티 · 샘플링 — 문장 확률이 토큰 확률의 곱(로그면 합)이라는 것.
- 정보 이론 최소한: 엔트로피 · 교차 엔트로피 · KL 발산 — KL 발산이 '두 분포가 얼마나 다른가'를 잰다는 것.
- 근접 정책 최적화 (PPO) — 정책을 조금씩만 바꾸는 강화학습 알고리즘. 이름과 역할만 알아도 됩니다.
- 미세조정: 전체 미세조정 · 지시 미세조정(SFT) · LoRA · QLoRA — 1단계 SFT의 자세한 내용.
한눈에 보기
- 정렬이 무엇을 목표로 하는지(도움 · 정직 · 무해)와 왜 사전학습만으로는 부족한지 압니다.
- RLHF 세 단계에서 각각 무엇을 학습하고 어떤 데이터가 필요한지 말할 수 있습니다.
- 보상 모델의 비교 손실 을 직접 계산합니다.
- PPO 단계의 목적식에서 KL 페널티가 왜 들어가는지 숫자로 확인합니다.
- 보상 모델은 '대리 지표'라서 너무 최적화하면 오히려 품질이 떨어진다는 점(굿하트의 법칙)을 이해합니다.
1. 정렬이란 무엇인가
직관(해설용 비유). 사전학습 모델은 도서관 책을 전부 읽은 신입 사원과 비슷합니다. 아는 것은 많지만 "이 메일 세 줄로 요약해 줘"라는 부탁에 요약 대신 메일을 이어 쓰거나, 그럴듯한 거짓을 말하거나, 위험한 부탁도 그대로 들어줄 수 있습니다. 정렬은 이 사원에게 일하는 방식 을 가르치는 과정입니다.
목표. InstructGPT 논문은 "사용자의 의도에 맞게 행동하는 모델"을 목표로 두고, Askell 외(2021)를 따라 모델이 도움이 되고(helpful), 정직하고(honest), 무해할(harmless) 때 정렬되었다고 봅니다. 흔히 HHH라고 줄여 부릅니다.
왜 어려운가. "좋은 답"은 손실 함수로 적기 어렵습니다. 요약이 좋은지, 말투가 적절한지, 거절이 지나친지는 사람이 보면 판단할 수 있지만 수식으로 정의하기는 어렵습니다. RLHF의 아이디어는 사람의 판단을 데이터로 모아 그것을 흉내 내는 '점수 모델'을 만들고, 그 점수를 높이도록 언어 모델을 학습 하는 것입니다.
2. RLHF 세 단계 한눈에
flowchart LR
P[사전학습 모델] --> S1[1단계 SFT<br/>사람이 쓴 모범 답 따라 하기]
S1 --> G[SFT 모델로 답 여러 개 생성]
G --> H[사람이 답 순위 매기기]
H --> S2[2단계 보상 모델 학습<br/>순위 → 점수]
S1 --> S3[3단계 PPO<br/>보상 ↑ · SFT에서 너무 멀어지지 않게]
S2 --> S3
S3 --> F[정렬된 모델]InstructGPT가 공개한 데이터 규모를 보면 감이 옵니다. SFT용 프롬프트 약 1만 3천 개, 보상 모델용 약 3만 3천 개, PPO용 약 3만 1천 개였고, 라벨러는 약 40명이었습니다. 사전학습 데이터(수천억 토큰)에 비하면 아주 작은 양으로 행동을 크게 바꾼다는 점이 핵심입니다.
3. 1단계: 지도 미세조정(SFT)
무엇을 하나. 프롬프트와 사람이 직접 쓴 모범 답 쌍으로, 평범한 다음 토큰 예측 학습을 합니다. 모델이 "질문을 받으면 답한다"는 형식을 익힙니다. InstructGPT는 SFT를 16에폭 학습했습니다.
왜 SFT만으로 끝내지 않나. 모범 답을 쓰는 것은 비쌉니다. 그리고 사람은 좋은 답을 직접 쓰기보다 두 답 중 어느 쪽이 나은지 고르는 것 을 훨씬 쉽고 일관되게 합니다. 비교 판단을 쓰면 같은 비용으로 더 많은 신호를 모을 수 있습니다.
4. 2단계: 보상 모델 학습
직관. 심사위원의 취향을 흉내 내는 '채점기'를 만듭니다. 사람이 "A가 B보다 낫다"고 고른 쌍을 잔뜩 보여 주고, 채점기가 A에 더 높은 점수를 주도록 학습합니다.
구조. InstructGPT는 SFT 모델에서 마지막 어휘 출력층을 떼고, 프롬프트 + 답을 넣으면 숫자 하나(보상) 를 내도록 바꿨습니다. 보상 모델은 6B 크기만 썼는데, 175B 보상 모델 학습이 불안정할 수 있었다고 밝혔습니다.
손실(브래들리-테리 모델). 두 답의 점수 차이를 "사람이 이긴 쪽을 고를 로그 오즈"로 해석합니다.
| 기호 | 뜻 |
|---|---|
| 프롬프트 | |
| 사람이 더 낫다고 고른 답(win) · 덜 좋다고 본 답(lose) | |
| 보상 모델이 매긴 점수(숫자 하나) | |
| 시그모이드. 점수 차이를 0~1 확률로 바꿉니다 |
InstructGPT 식에는 앞에 가 붙습니다. 라벨러가 한 프롬프트에 답 개(~)를 순위로 매기면 비교 쌍이 개(4개면 6쌍, 9개면 36쌍) 나오는데, 이를 따로 섞으면 과적합이 생겨 한 프롬프트의 모든 쌍을 한 묶음 으로 학습했기 때문입니다.
숫자로 해 보기(해설용).
| 차이 | (맞힐 확률) | 손실 | ||
|---|---|---|---|---|
| 2.0 | 0.5 | 1.5 | 0.818 | 0.201 |
| 1.0 | 1.0 | 0 | 0.500 | 0.693 |
| 0.5 | 2.0 | −1.5 | 0.182 | 1.701 |
| 11.0 | 10.5 | 0.5 | 0.622 | 0.474 |
- 순서를 맞게 매길수록 손실이 작고, 거꾸로 매기면 크게 벌을 받습니다.
- 첫 줄과 넷째 줄을 보면 점수의 절대 크기는 상관없고 차이만 중요합니다. 그래서 InstructGPT는 RL 전에 사람 모범 답의 평균 점수가 0이 되도록 보상에 편향을 더해 정규화했습니다.
- 에 대한 기울기는 입니다. 첫 줄은 , 셋째 줄은 로, 틀리게 매긴 쌍일수록 크게 고칩니다(경사하강법이 를 올리는 방향).
5. 3단계: PPO로 보상 최대화하기
환경 설정. InstructGPT는 이 단계를 '밴딧 환경'으로 봅니다. 프롬프트 하나를 주면 모델(정책)이 답을 쓰고, 보상 모델이 점수를 매기면 에피소드가 끝납니다. 이 점수를 높이도록 PPO로 정책을 업데이트합니다.
문제: 채점기 속이기. 보상 모델은 사람의 '흉내'일 뿐이라 허점이 있습니다. 정책이 점수만 쫓으면 사람이 보기엔 이상하지만 채점기는 좋아하는 답(예: 특정 표현 반복, 지나치게 긴 답)을 찾아낼 수 있습니다. 이를 보상 해킹(reward hacking) 이라 부릅니다.
해결: KL 페널티. 정책이 출발점(SFT 모델)에서 너무 멀어지지 않게 벌점을 줍니다. InstructGPT의 목적식(사전학습 항을 뺀 부분)은 다음과 같습니다.
| 기호 | 뜻 |
|---|---|
| 지금 학습 중인 정책(언어 모델) | |
| 기준 모델(1단계 결과, 고정) | |
| 두 모델이 이 답을 얼마나 다르게 보는지. 기댓값이 KL 발산입니다 | |
| KL 벌점 세기. InstructGPT는 를 썼습니다 |
InstructGPT는 이 벌점을 토큰마다 더했다고 밝힙니다. 가치 함수(value function)는 보상 모델로 초기화했습니다.
숫자로 해 보기(해설용). 답이 토큰 3개이고, 각 토큰 확률이 RL 모델 , SFT 모델 라 합시다.
- 토큰별 로그 비: , , → 합
- 보상 모델 점수가 이면 벌점 뒤 보상은 에서 , 에서 , 이면
- 둘째 토큰처럼 SFT가 잘 안 쓰던 표현을 RL 모델이 두 배로 좋아하게 되면 벌점이 붙습니다. 가 크면 거의 움직이지 못하고, 작으면 채점기 쪽으로 멀리 갑니다.
PPO-ptx: 사전학습 혼합. RLHF 뒤 공개 NLP 벤치마크 성능이 떨어지는 '정렬 세금(alignment tax)'이 관찰되었습니다. InstructGPT는 PPO 기울기에 사전학습 데이터의 로그우도 기울기를 섞는 PPO-ptx로 이를 줄였고(계수 ), KL 계수를 키우는 것보다 이 방법이 더 나았다고 보고합니다. 논문에서 'InstructGPT'라 하면 기본적으로 PPO-ptx 모델입니다.
결과(논문이 보고한 것). 라벨러 평가에서 1.3B InstructGPT의 출력이 175B GPT-3보다 선호되었습니다(파라미터가 100배 적음). 175B끼리는 InstructGPT가 GPT-3보다 85 ± 3%, 퓨샷 프롬프트를 쓴 GPT-3보다 71 ± 4% 선호되었습니다.
6. 보상 과최적화: 굿하트의 법칙
직관. "측정치가 목표가 되면 더는 좋은 측정치가 아니다"(굿하트의 법칙). 시험 점수만 올리라고 하면 문제 풀이 요령만 늘고 실력은 그대로일 수 있는 것과 같습니다.
측정해 본 연구. Gao 외(2022)는 사람 대신 큰 '정답(gold) 보상 모델'을 두고, 그 라벨로 학습한 '대리(proxy) 보상 모델'을 최적화하면서 정답 점수가 어떻게 변하는지 쟀습니다. 최적화 방법은 RL과 best-of-(답 개를 뽑아 대리 점수가 가장 높은 것을 고름) 두 가지였습니다.
- 정답 점수는 최적화 초기에 오르다가 어느 지점을 지나면 떨어집니다.
- 출발 정책에서 얼마나 멀어졌는지를 로 두면, best-of- 은 , RL은 꼴로 잘 맞았습니다. 계수는 보상 모델 크기에 따라 매끄럽게 변했습니다.
- best-of- 의 KL은 으로 계산됩니다. 면 , 이면 , 면 입니다(직접 계산).
실무 교훈. 보상 점수가 계속 오른다고 좋아지는 것이 아닙니다. 사람 평가나 별도 검증 세트로 실제 품질 을 함께 봐야 하고, KL 크기를 모니터링하며 멈출 지점을 정해야 합니다.
7. RLHF의 한계와 이후 흐름
- 비용과 복잡도: 모델이 넷(정책 · 기준 · 보상 · 가치)이고 PPO 튜닝이 까다롭습니다 → 보상 모델과 RL을 없앤 DPO가 나왔습니다.
- 사람 라벨의 한계: 라벨러 약 40명의 판단이 '모든 사용자'의 선호를 대표하지 않으며, 라벨러가 프롬프트를 쓴 사용자 본인이 아니라는 점을 InstructGPT도 한계로 적었습니다 → AI가 피드백을 주는 헌법적 AI · RLAIF.
- 정답이 있는 문제: 수학 · 코드처럼 자동으로 채점되는 문제는 학습된 보상 모델 대신 검증기를 쓸 수 있습니다 → GRPO · 검증 가능한 보상.
연습 문제
- , 일 때 보상 모델 손실은? ()
- 풀이: 입니다. 순서를 거꾸로 매겨 손실이 큽니다.
- 라벨러가 답 5개를 순위로 매기면 비교 쌍은 몇 개?
- 풀이: 쌍입니다.
- 5절 예에서 RL 모델 확률이 SFT와 완전히 같다면 벌점 뒤 보상은?
- 풀이: 로그 비가 모두 0이라 벌점이 0이고, 보상은 그대로 2.0입니다.
- 보상 모델 점수에 모두 +10을 더하면 손실은 어떻게 되나요?
- 풀이: 차이 이 그대로라 손실은 변하지 않습니다. 그래서 점수의 기준점을 따로 정규화합니다.
스스로 점검
- 사람에게 모범 답을 쓰게 하는 대신 비교를 시키는 이유는?
- 답: 둘 중 나은 것을 고르는 판단이 직접 쓰는 것보다 싸고 일관되어, 같은 비용으로 더 많은 학습 신호를 얻을 수 있기 때문입니다.
- KL 페널티가 없으면 PPO 단계에서 어떤 일이 생길 수 있나요?
- 답: 정책이 보상 모델의 허점을 파고들어(보상 해킹) 채점 점수는 높지만 사람이 보기엔 이상한 답을 내게 됩니다. 언어 능력도 SFT에서 멀어지며 망가질 수 있습니다.
- 보상 점수가 계속 올라가는데 실제 품질이 떨어지는 현상을 무엇이라 하나요?
- 답: 보상 과최적화(굿하트의 법칙)입니다. 대리 지표인 보상 모델이 진짜 목표와 어긋나는 영역까지 최적화했기 때문입니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 정렬(alignment) | 모델 행동을 사람의 의도 · 가치에 맞추는 일 |
| HHH | 도움이 되고 · 정직하고 · 무해한(helpful · honest · harmless) |
| RLHF | 사람 비교 판단으로 보상 모델을 만들고, 강화학습으로 그 보상을 높이는 방법 |
| SFT(지도 미세조정) | 모범 답을 따라 쓰도록 하는 미세조정 |
| 보상 모델(RM) | 프롬프트와 답을 받아 점수 하나를 내는 채점 모델 |
| 브래들리-테리 모델 | 점수 차이로 '어느 쪽이 이길 확률'을 표현하는 모델 |
| KL 페널티 | 정책이 기준 모델에서 너무 멀어지지 않게 하는 벌점 |
| 보상 해킹 | 채점기의 허점을 파고들어 점수만 올리는 현상 |
| 정렬 세금 | 정렬 뒤 다른 능력(벤치마크 성능)이 떨어지는 비용 |
| best-of- | 답을 개 뽑아 보상이 가장 높은 것을 고르는 방법 |
더 깊이 보려면
- 사람 선호로 하는 딥 강화학습 (RLHF의 시작) — 비교 피드백으로 보상을 학습하는 아이디어의 원조
- 사람 피드백으로 지시를 따르게 학습하기 (InstructGPT) — 오늘 본 세 단계의 원 논문
- Gao 외, 보상 모델 과최적화의 스케일링 법칙: arxiv.org/abs/2210.10760
다음에 볼 것
- 사람 선호로 하는 딥 강화학습 (RLHF의 시작) — 브래들리-테리 보상 학습이 처음 쓰인 맥락
- 사람 피드백으로 지시를 따르게 학습하기 (InstructGPT) — 세 단계를 대형 언어 모델에 적용한 결과 전체
라이선스
본문은 KAITABASE 자체 해설입니다. 숫자 예는 이 수업을 위해 만든 해설용 예이며 파이썬으로 검산했습니다. 논문 수치(데이터 규모, , , 선호율 등)는 각 원문에서 확인한 것만 옮겼습니다.
출처
- Ouyang 외, Training language models to follow instructions with human feedback (InstructGPT, 2022): arxiv.org/abs/2203.02155
- Christiano 외, Deep reinforcement learning from human preferences (2017): arxiv.org/abs/1706.03741
- Gao · Schulman · Hilton, Scaling Laws for Reward Model Overoptimization (2022): arxiv.org/abs/2210.10760
- Schulman 외, Proximal Policy Optimization Algorithms (2017): arxiv.org/abs/1707.06347
- Hugging Face, Illustrating Reinforcement Learning from Human Feedback (RLHF): huggingface.co/blog/rlhf
AI 원리부터 이해하기 · 정렬 모듈
정렬 모듈 학습
이 글은 정렬 모듈의 학습 자료입니다. 전체 10개 자료 중 1번째입니다.
출처·원문
원문 보기요약만