온라인 학습이 비싼 이유 중 하나는 채점이었다. 매 배치 사람이나 보상 모델이 응답 전체에 점수 하나를 매겨야 했고, 그 채점자의 구멍이 해킹의 입구가 됐다. 그런데 이미 그 일을 잘하는 큰 모델이 곁에 있다면 어떨까? 이 절 내내 쓸 예를 하나 정하자. 한국어 의학 문서로 배운 작은 모델에게 일본어로 의학 질문에 답하게 하고 싶고, 곁에는 일본어로 의학을 말할 줄 아는 큰 모델이 있다. 작은 모델에게 큰 모델의 실력을 옮기는 가장 쉬운 길은 큰 모델이 쓴 답을 모아 그대로 따라 쓰게 하는 것이다. 이 방식은 오프라인이다. 그런데 작은 모델이 실제로 답을 쓰다 미끄러지는 자리 — 일본어로 답하다가 문장 한가운데 한국어 의학 용어가 튀어나오는 그 순간 — 는 교사가 쓴 모범 답안 안에 한 번도 나오지 않는다. 그런 순간은 학생이 일본어로 답할 때마다 생기는데, 모범 답안만 읽는 학습은 그 순간을 만날 일이 없다. 학생이 넘어지는 곳에서 바로 교사의 손을 빌릴 수는 없을까?
역사: 힌턴의 증류에서 온폴리시 증류까지
2015년 제프리 힌턴(Geoffrey Hinton), 오리올 비냘스(Oriol Vinyals), 제프 딘(Jeff Dean)은 「Distilling the Knowledge in a Neural Network」에서 여러 모델의 앙상블(같은 데이터로 따로 학습한 모델 여럿의 예측을 평균 내는 묶음)이 아는 것을 모델 하나로 옮기는 방법을 증류(distillation)라고 불렀다. 앙상블은 정확하지만 많은 사용자에게 서비스하기엔 너무 무거웠다. 큰 모델(교사)이 내놓는 출력 분포 전체를 작은 모델(학생)이 따라 하도록 학습시키는 것이다. 정답 하나만 보여 주는 것보다 "이 답은 90%, 저 답도 9%쯤 그럴듯하다"는 교사의 확률표가 더 많은 것을 가르친다는 발상이었다. 논문이 든 예가 이 생각을 잘 보여 준다. BMW 사진을 쓰레기차로 잘못 볼 확률은 아주 작지만, 당근으로 잘못 볼 확률보다는 몇 배나 크다. 정답 라벨에는 “BMW” 하나만 적혀 있지만, 교사의 확률표에는 "쓰레기차는 그나마 닮았고 당근은 전혀 아니다"라는 지식까지 들어 있다.
언어모델에서는 교사가 쓴 문장 위에서 이 확률표를 맞추는 것이 기본형이었다. 2023년 6월 두 팀이 거의 동시에 방향을 바꿨다. 구글의 리샤브 아가르왈(Rishabh Agarwal) 등은 「On-Policy Distillation of Language Models: Learning from Self-Generated Mistakes」(GKD)에서 학생이 스스로 쓴 문장 위에서 교사의 피드백을 받게 했고, 마이크로소프트·칭화대의 구위셴(Yuxian Gu) 등은 「MiniLLM」에서 증류의 목표를 순방향 KL(forward — 교사 분포 쪽에서 잰 거리)에서 역방향 KL(reverse — 학생 분포 쪽에서 잰 거리)로 바꾸고, 그것을 학생이 생성한 문장 위에서 최적화했다. 학생이 교사의 확률이 낮은 영역까지 과하게 퍼지는 것을 막기 위해서였다.
교사는 채점만 한다
온폴리시 증류(학생이 쓴 문장 위에서 받는 증류 / On-Policy Distillation)는 두 역할을 나눈다. 문장은 학생 πθ 가 쓴다 — 지금까지 쓴 토큰, 곧 상태(프롬프트 + 지금까지 쓴 토큰)를 학생이 만든다. 교사 πT 는 문장을 쓰지 않고, 학생이 쓴 문장을 한 번 읽으며 토큰마다 "나라면 이 토큰을 얼마의 확률로 골랐을까"만 알려 준다. 목표는 학생 쪽에서 잰 역방향 KL을 줄이는 것이다.
graph LR
subgraph off["오프라인 증류"]
direction LR
T1["교사가 문장을 쓴다"] --> S1["학생이 그 문장의<br/>토큰을 따라 쓴다"]
end
subgraph on["온폴리시 증류"]
direction LR
S2["학생이 문장을 쓴다<br/>(자기가 미끄러지는 자리 포함)"] --> T2["교사가 토큰마다<br/>확률만 매긴다"]
T2 -->|"토큰 보상 r_t"| S2
end
class off m-blue
class on m-green
숫자로 먼저 보자. 학생이 일본어로 의학 문장을 쓰다가 병명 자리에 왔다. 후보 토큰은 셋이다 — A 일본어 의학 용어, B 한국어 의학 용어, C 뜻이 흐릿한 일본어 일상어. 교사는 학생이 이 자리에서 고른 토큰을 보고, 자기 확률과 학생 확률의 로그 비를 토큰 보상으로 돌려준다.
토큰
학생 πθ
교사 πT
토큰 보상 r
A 일본어 의학 용어
0.30
0.90
log(0.90/0.30)=+1.10
B 한국어 의학 용어
0.60
0.01
log(0.01/0.60)=−4.09
C 흐릿한 일본어 일상어
0.10
0.09
log(0.09/0.10)=−0.105
학생이 B를 뽑으면 그 자리에서 −4.09 라는 큰 벌점이 온다. 교사는 이 문장을 한 번도 생성하지 않았다. 학생이 쓴 문장을 한 번 읽었을 뿐이다. 이 계산을 식으로 적으면 다음과 같다.
역방향 KL은 정의상 Eyt∼πθ[−rt] 이다. 위 표의 자리에서는 ∑πθlog(πθ/πT)=2.14 다. 이것을 미분하면 로그 미분 트릭에서 ∇logπθ 의 평균이 0이라 한 항이 사라지고 위의 식만 남는다. 모양이 바로 REINFORCE(보상 × ∇logπ 를 뽑은 샘플 위에서 평균 내는 정책 그래디언트)다. 다른 점은 보상이 문장 끝에 한 번 오는 점수 하나가 아니라 토큰마다 온다는 것, 그리고 그 채점자가 사람이 만든 보상 모델이 아니라 교사의 확률표라는 것이다. 학생이 교사와 똑같이 행동하면 모든 rt 가 0이 되므로, 보상 모델처럼 점수만 올리고 행동은 엉뚱한 빈틈이 없다.
ML에서: 먼저 따라 쓰고, 그다음 채점받는다
Thinking Machines의 케빈 루(Kevin Lu) 등은 2025년 10월 블로그 글 「On-Policy Distillation」에서 이 방식을 수학 추론에 썼다. 학생은 지시 따르기 학습을 하기 전의 베이스 모델 Qwen3-8B-Base다. 먼저 교사급 모델이 쓴 풀이 40만 개로 SFT(좋은 응답을 그대로 따라 쓰게 하는 지도 학습), 곧 오프라인 증류를 해서 AIME’24(수학 경시 문제 모음) 60%에 올렸다. 여기서 70%로 올리는 데 오프라인 증류를 계속하면 풀이가 약 200만 개 필요하리라고 추세선으로 어림했고, 온폴리시 증류는 약 150스텝(프롬프트 약 7만 7천 개)으로 70%에 닿았다. 연산량(FLOPs)으로 약 9배, 교사가 모범 답안을 쓰는 비용까지 치면 약 30배 싸다고 보고했다.
이 순서 — 먼저 따라 쓰고(순방향), 그다음 채점받는다(역방향) — 에는 이유가 있다. 온폴리시 증류는 학생이 쓴 문장 위에서만 배운다. 학생이 어떤 토큰에 확률을 거의 0으로 두면 그 토큰은 뽑히지 않고, 뽑히지 않은 토큰은 채점받을 기회가 없다. 역방향 KL은 학생의 서포트(확률이 0이 아닌 영역) 밖으로 나가지 못한다. 그래서 학생이 교사의 형식이나 어휘를 아예 모르면 먼저 SFT로 그 자리에 확률을 깔아 둔다.
두 방향의 차이는 봉우리가 둘인 목표에 봉우리 하나짜리 모델을 맞춰 보면 한눈에 보인다. 아래 위젯에서 순방향(SFT식)과 역방향(RL식)으로 맞춘 결과를 견주어 보라. 목표가 거의 0인 골짜기에 각 방향이 확률을 얼마나 남기는지가 보인다.
같은 글에는 망각(새것을 배우다 이미 하던 것을 잃는 일)을 되돌리는 사례도 있다. 이미 지시를 잘 따르던 Qwen3-8B에 사내 문서를 학습시키자 문서 지식 점수는 18%에서 36%로 올랐지만 지시 따르기(IF-eval)는 85%에서 79%로 떨어졌다. 여기서 학습 전의 자기 자신을 교사로 두고 온폴리시 증류를 하자 지시 따르기는 83%로 돌아오고 문서 지식은 41%가 됐다.
한계도 분명하다. 학생은 교사를 따라가므로 교사가 천장이다. 교사가 틀리는 곳은 학생도 틀린다. 그리고 교사는 자기가 쓰지 않은 어설픈 문장 — 한국어 용어가 섞이고 어순이 어긋난 중간물 — 에도 쓸 만한 확률표를 줘야 한다. 학생의 문장이 교사가 보던 문장에서 너무 멀면 채점이 잡음이 된다. SFT로 학생을 교사 근처에 먼저 데려다 놓는 이유가 여기에도 있다.
문제 7 — 음수 보상인데 오른다
위 표와 같은 병명 자리에서, 이번에는 학생이 πθ=(0.20,0.65,0.15) 를 두고 있다(교사는 그대로 πT=(0.90,0.01,0.09)). (가) 학생이 A, B, C를 각각 뽑았을 때의 토큰 보상과 이 위치의 역방향 KL을 구하시오. (나) 역방향 KL을 줄이는 한 걸음에서 A, B, C의 로짓(소프트맥스에 들어가기 전의 값)은 각각 오르는가, 내리는가? (한 위치의 역방향 KL을 로짓 zj 로 미분하면 πθ(j)[logπT(j)πθ(j)−DKL] 이다.) (다) C는 보상이 음수이고, 학생이 교사보다 확률을 더 많이 주고 있다. 그래도 C가 오른다면 그 이유는 무엇인가?
C는 나도 내려간다고 봐. 다만 이유는 달라. 학생이 C에 0.15, 교사가 0.09니까 학생이 과하게 주고 있잖아. 역방향 KL은 학생이 과하게 준 칸을 깎는 거고.
선생님
민준 학생, 이 위치에서 학생이 받는 보상의 평균은 얼마죠? 그 평균에 비하면 C의 −0.511은 나쁜 점수인가요?
김민준
평균은 ∑πθr=−DKL=−2.49 요. C의 −0.511은 평균보다 훨씬 높네요.
김민준
문제에 준 식으로 C를 계산하면 0.15×(0.511−2.489)=−0.297. 그래디언트가 음수니까 내려가는 방향으로 한 걸음 가면 C의 로짓은 0.297 올라요. A는 +0.799, B는 −1.095고요. 보상의 부호가 아니라 평균보다 나은지가 방향을 정했어요.
김민준
상대평가 시험이랑 같네요. 반 평균이 −2.5점인 시험에서 −0.5점이면 사실 잘 본 거잖아요. 조교님이 점수표를 평균 기준으로 다시 매기면 제 점수는 오히려 위쪽이고요.
선생님
서연 학생은요? 0.15가 0.09보다 크니 깎여야 한다는 건 어디가 걸리죠?
이서연
B가 0.65에서 크게 빠지면, 빠진 확률이 어딘가로 가야 해요. 합이 1이니까 대부분 A로, 일부는 C로요.
이서연
칸 하나씩 교사와 비교하면 안 되고, 합이 1이라는 제약 아래 전체를 함께 봐야 하네요. 한 걸음씩 계속 가 보면 C는 처음에 약 0.20까지 오르다가 B가 거의 비워진 뒤에야 0.09로 돌아와요.
이서연
라그랑주 승수 배울 때 제약이 있으면 변수 하나만 따로 미분해서 0으로 두면 안 된다고 했던 거랑 같아요.
정리 (가) rA=+1.50, rB=−4.17, rC=−0.511, 역방향 KL =2.49. (나) 로짓 그래디언트 A −0.799, B +1.095, C −0.297 → 줄이는 방향으로 한 걸음 가면 A는 크게 오르고, B는 크게 내리고, C는 조금 오른다. (다) 보상의 평균이 −DKL=−2.49 라 C의 −0.511 은 평균보다 좋은 점수다. 그리고 확률의 합이 1이라 B에서 빠진 확률이 A와 C로 나뉜다. C는 B가 비워지는 동안 잠시 오르다가(최고 약 0.20) 목표 0.09로 돌아온다.
문제 8 — (킬러) 일본어로 의학을 틀리지 않게
한국어만 할 줄 아는 모델이 있다. 가진 데이터는 일본어 일반 코퍼스와 한국어 의학 코퍼스 둘뿐이고, 목표는 일본어로 의학을 틀리지 않게 말하는 것이다. 위 표의 세 토큰(A 일본어 의학 용어, B 한국어 의학 용어, C 흐릿한 일본어 일상어)으로 생각하시오.
(가) 교사 없이 두 코퍼스만으로 학습한다. 순방향 KL(따라 쓰기)과 역방향 KL(자기 문장 위에서 조이기) 중 “일본어 × 의학” 빈칸으로 갈 통로가 되는 것은 어느 쪽이며, 그것으로 "틀리지 않게"가 보장되는가?
(나) 일본어로 의학을 말하는 교사 πT=(0.90,0.01,0.09) 가 생겼다. 그런데 초벌 학습 없이 바로 온폴리시 증류를 했고, 학생은 A에 10−6 만 두고 있다: πθ=(10−6,0.90,0.10). 문제 7의 로짓 그래디언트 식으로 A의 값을 구하고, 순방향 KL의 로짓 그래디언트 πθ(j)−πT(j) 와 비교하시오. B에서 빠진 확률은 어디로 가는가?
(다) 초벌 학습 뒤 온폴리시 증류가 잘 끝났다. 이 모델의 의학 정확도의 상한은 무엇이 정하는가?
선생님
(가)부터요. 일본어 × 의학 문장은 데이터에 한 줄도 없어요. 그 빈칸에 확률을 조금이라도 남기는 건 어느 쪽이죠?
김민준
역방향이요. 역방향이 자기 문장 위에서 실수를 콕 집어 누르니까, 틀리지 않게 말하는 데는 역방향이 맞죠.
선생님
민준 학생, 역방향 KL은 목표 분포가 0에 가까운 곳에 모델이 확률을 두면 어떻게 되죠? 지금 목표는 두 코퍼스이고, 빈칸의 확률은 얼마예요?
김민준
빈칸은 데이터에 없으니 거의 0이요. 거기 확률을 두면 log(πθ/p) 가 폭발하니까… 역방향으로 조일수록 빈칸에서 도망가서, 일본어 잡담이나 한국어 의학, 안전한 두 칸 중 하나로 가겠네요.
이서연
그럼 통로는 순방향이야. 두 코퍼스를 다 덮으려고 넓게 퍼지니까 빈칸 근처에도 확률이 좀 남아. 그걸로 일본어 의학 문장이 나오긴 하겠지.
선생님
서연 학생, 그렇게 나온 문장이 맞는지는 무엇이 알려 주죠?
이서연
데이터에는 일본어 의학 문장이 없으니… 아무것도요. 일본어로는 매끄러운데 의학적으로 틀린 문장이어도 벌점을 줄 칸이 없어요.
이서연
순방향은 빈칸으로 가는 통로일 뿐 정답 신호가 아니네요. 교사가 없으면 "유창하게 틀리기"를 막을 방법이 원리적으로 없어요.
역방향에서 B에서 빠진 확률이 A가 아니라 거의 다 C로 가요. A 쪽 힘은 순방향의 5만분의 1이에요.
이서연
식을 보면 당연하네. 그래디언트 앞에 πθ(A)=10−6 이 곱해져 있으니까. 샘플로 돌리면 A는 백만 번에 한 번 뽑히고, 안 뽑히면 채점도 못 받고.
선생님
교사가 정답을 알아도, 학생이 그 답을 말할 생각조차 안 하면 채점할 문장이 없어요. 그래서 순서가 어떻게 되죠?
김민준
먼저 일본어 코퍼스와 한국어 의학 코퍼스로 초벌 학습(순방향)을 해서 A에 확률을 깔고, 그다음 온폴리시 증류(역방향)로 B와 C를 잘라 내요. 교사가 없을 땐 넓게 덮기가 유일한 통로였는데, 교사가 생기니까 좁히기가 손해가 아니라 이득이 되네요.
김민준
조별 과제 초안을 아예 안 쓰고 조교님께 첨삭을 받으러 가면 고칠 게 없는 거랑 같아요. 뭐라도 써 가야 빨간 펜이 들어가죠.
선생님
마지막 (다). 증류가 잘 끝나면 이 모델의 의학 정확도는 어디까지 오를 수 있나요?
이서연
역방향 KL이 0이 되는 곳은 학생이 교사와 같아지는 곳이에요. 그러니까 교사가 틀리는 병명은 학생도 똑같이 틀려요. 상한은 교사의 정확도예요.
이서연
수열이 수렴해도 극한이 그 수열의 목표를 넘지는 못하는 거죠. 교사가 극한이에요.
정리 (가) 교사 없이 역방향으로 조이면 모델은 데이터가 없는 빈칸에서 도망가 안전한 두 칸으로 간다. 넓게 덮는 순방향만이 빈칸 근처에 확률을 남기는 통로지만, 빈칸에는 정답 신호가 없으므로 "틀리지 않게"는 보장되지 않는다(유창하게 틀리기). (나) A의 역방향 로짓 그래디언트는 −1.8×10−5 로 순방향(−0.90)의 약 5만분의 1이다. B에서 빠진 확률은 거의 전부 C로 간다. 역방향은 학생의 서포트 밖으로 나가지 못하므로 초벌 SFT로 확률을 먼저 깔고 온폴리시 증류로 다듬는다. (다) 상한은 교사의 정확도다. 학생은 교사와 같아질 때 멈춘다.