14. 온라인과 오프라인 — 이상과 현실 사이에서

온폴리시 증류: 상태는 학생이, 채점은 교사가

온라인 학습이 비싼 이유 중 하나는 채점이었다. 매 배치 사람이나 보상 모델이 응답 전체에 점수 하나를 매겨야 했고, 그 채점자의 구멍이 해킹의 입구가 됐다. 그런데 이미 그 일을 잘하는 큰 모델이 곁에 있다면 어떨까? 이 절 내내 쓸 예를 하나 정하자. 한국어 의학 문서로 배운 작은 모델에게 일본어로 의학 질문에 답하게 하고 싶고, 곁에는 일본어로 의학을 말할 줄 아는 큰 모델이 있다. 작은 모델에게 큰 모델의 실력을 옮기는 가장 쉬운 길은 큰 모델이 쓴 답을 모아 그대로 따라 쓰게 하는 것이다. 이 방식은 오프라인이다. 그런데 작은 모델이 실제로 답을 쓰다 미끄러지는 자리 — 일본어로 답하다가 문장 한가운데 한국어 의학 용어가 튀어나오는 그 순간 — 는 교사가 쓴 모범 답안 안에 한 번도 나오지 않는다. 그런 순간은 학생이 일본어로 답할 때마다 생기는데, 모범 답안만 읽는 학습은 그 순간을 만날 일이 없다. 학생이 넘어지는 곳에서 바로 교사의 손을 빌릴 수는 없을까?

역사: 힌턴의 증류에서 온폴리시 증류까지

2015년 제프리 힌턴(Geoffrey Hinton), 오리올 비냘스(Oriol Vinyals), 제프 딘(Jeff Dean)은 「Distilling the Knowledge in a Neural Network」에서 여러 모델의 앙상블(같은 데이터로 따로 학습한 모델 여럿의 예측을 평균 내는 묶음)이 아는 것을 모델 하나로 옮기는 방법을 증류(distillation)라고 불렀다. 앙상블은 정확하지만 많은 사용자에게 서비스하기엔 너무 무거웠다. 큰 모델(교사)이 내놓는 출력 분포 전체를 작은 모델(학생)이 따라 하도록 학습시키는 것이다. 정답 하나만 보여 주는 것보다 "이 답은 90%, 저 답도 9%쯤 그럴듯하다"는 교사의 확률표가 더 많은 것을 가르친다는 발상이었다. 논문이 든 예가 이 생각을 잘 보여 준다. BMW 사진을 쓰레기차로 잘못 볼 확률은 아주 작지만, 당근으로 잘못 볼 확률보다는 몇 배나 크다. 정답 라벨에는 “BMW” 하나만 적혀 있지만, 교사의 확률표에는 "쓰레기차는 그나마 닮았고 당근은 전혀 아니다"라는 지식까지 들어 있다.

정답 라벨 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)는 두 역할을 나눈다. 문장은 학생 πθ\textcolor{#1565c0}{\pi_\theta} 가 쓴다 — 지금까지 쓴 토큰, 곧 상태(프롬프트 + 지금까지 쓴 토큰)를 학생이 만든다. 교사 πT\textcolor{#2e7d32}{\pi_\text{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 뜻이 흐릿한 일본어 일상어. 교사는 학생이 이 자리에서 고른 토큰을 보고, 자기 확률과 학생 확률의 로그 비를 토큰 보상으로 돌려준다.

토큰 학생 πθ\textcolor{#1565c0}{\pi_\theta} 교사 πT\textcolor{#2e7d32}{\pi_\text{T}} 토큰 보상 r\textcolor{#d9670b}{r}
A 일본어 의학 용어 0.30 0.90 log⁡(0.90/0.30)=+1.10\log(0.90/0.30) = +1.10
B 한국어 의학 용어 0.60 0.01 log⁡(0.01/0.60)=−4.09\log(0.01/0.60) = -4.09
C 흐릿한 일본어 일상어 0.10 0.09 log⁡(0.09/0.10)=−0.105\log(0.09/0.10) = -0.105

학생이 B를 뽑으면 그 자리에서 −4.09-4.09 라는 큰 벌점이 온다. 교사는 이 문장을 한 번도 생성하지 않았다. 학생이 쓴 문장을 한 번 읽었을 뿐이다. 이 계산을 식으로 적으면 다음과 같다.

rt=log⁡πT(yt∣st)−log⁡πθ(yt∣st),∇θ DKL(πθ ∥ πT)=− Eyt∼πθ[rt ∇θlog⁡πθ(yt∣st)]\textcolor{#d9670b}{r_t} = \log \textcolor{#2e7d32}{\pi_\text{T}}(\textcolor{#1c9c60}{y_t} \mid \textcolor{#0093b8}{s_t}) - \log \textcolor{#1565c0}{\pi_\theta}(\textcolor{#1c9c60}{y_t} \mid \textcolor{#0093b8}{s_t}), \qquad \nabla_\theta\, \textcolor{#8c564b}{D_\text{KL}}(\textcolor{#1565c0}{\pi_\theta} \,\|\, \textcolor{#2e7d32}{\pi_\text{T}}) = -\,\mathbb{E}_{\textcolor{#1c9c60}{y_t} \sim \textcolor{#1565c0}{\pi_\theta}}\big[\textcolor{#d9670b}{r_t}\, \nabla_\theta \log \textcolor{#1565c0}{\pi_\theta}(\textcolor{#1c9c60}{y_t} \mid \textcolor{#0093b8}{s_t})\big]
rt토큰 보상: 교사와 학생의 로그확률 차이πθ학생 (학습 중인 작은 모델) — 문장을 쓴다πT교사 (고정된 큰 모델) — 학생이 따라갈 목표 분포, 채점만 한다st상태: 프롬프트 + 학생이 지금까지 쓴 토큰yt학생이 이번에 고른 토큰DKL(πθ ∥ πT)역방향 KL: 학생이 뽑은 토큰 위에서 잰 거리 \small\begin{array}{ll} \textcolor{#d9670b}{r_t} & \text{토큰 보상: 교사와 학생의 로그확률 차이} \\ \textcolor{#1565c0}{\pi_\theta} & \text{학생 (학습 중인 작은 모델) — 문장을 쓴다} \\ \textcolor{#2e7d32}{\pi_\text{T}} & \text{교사 (고정된 큰 모델) — 학생이 따라갈 목표 분포, 채점만 한다} \\ \textcolor{#0093b8}{s_t} & \text{상태: 프롬프트 + 학생이 지금까지 쓴 토큰} \\ \textcolor{#1c9c60}{y_t} & \text{학생이 이번에 고른 토큰} \\ \textcolor{#8c564b}{D_\text{KL}}(\textcolor{#1565c0}{\pi_\theta} \,\|\, \textcolor{#2e7d32}{\pi_\text{T}}) & \text{역방향 KL: 학생이 뽑은 토큰 위에서 잰 거리} \end{array}

역방향 KL은 정의상 Eyt∼πθ[−rt]\mathbb{E}_{\textcolor{#1c9c60}{y_t}\sim\textcolor{#1565c0}{\pi_\theta}}[-\textcolor{#d9670b}{r_t}] 이다. 위 표의 자리에서는 ∑πθlog⁡(πθ/πT)=2.14\sum \textcolor{#1565c0}{\pi_\theta}\log(\textcolor{#1565c0}{\pi_\theta}/\textcolor{#2e7d32}{\pi_\text{T}}) = 2.14 다. 이것을 미분하면 로그 미분 트릭에서 ∇log⁡πθ\nabla\log\textcolor{#1565c0}{\pi_\theta} 의 평균이 0이라 한 항이 사라지고 위의 식만 남는다. 모양이 바로 REINFORCE(보상 × ∇log⁡π\nabla\log\pi 를 뽑은 샘플 위에서 평균 내는 정책 그래디언트)다. 다른 점은 보상이 문장 끝에 한 번 오는 점수 하나가 아니라 토큰마다 온다는 것, 그리고 그 채점자가 사람이 만든 보상 모델이 아니라 교사의 확률표라는 것이다. 학생이 교사와 똑같이 행동하면 모든 rt\textcolor{#d9670b}{r_t} 가 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)\textcolor{#1565c0}{\pi_\theta} = (0.20,\ 0.65,\ 0.15) 를 두고 있다(교사는 그대로 πT=(0.90, 0.01, 0.09)\textcolor{#2e7d32}{\pi_\text{T}} = (0.90,\ 0.01,\ 0.09)). (가) 학생이 A, B, C를 각각 뽑았을 때의 토큰 보상과 이 위치의 역방향 KL을 구하시오. (나) 역방향 KL을 줄이는 한 걸음에서 A, B, C의 로짓(소프트맥스에 들어가기 전의 값)은 각각 오르는가, 내리는가? (한 위치의 역방향 KL을 로짓 zjz_j 로 미분하면 πθ(j)[log⁡πθ(j)πT(j)−DKL]\textcolor{#1565c0}{\pi_\theta}(j)\big[\log\frac{\textcolor{#1565c0}{\pi_\theta}(j)}{\textcolor{#2e7d32}{\pi_\text{T}}(j)} - \textcolor{#8c564b}{D_\text{KL}}\big] 이다.) (다) C는 보상이 음수이고, 학생이 교사보다 확률을 더 많이 주고 있다. 그래도 C가 오른다면 그 이유는 무엇인가?

김민준 (평상)
김민준
돌려 봤어요. rA=+1.50\textcolor{#d9670b}{r}_A = +1.50, rB=−4.17\textcolor{#d9670b}{r}_B = -4.17, rC=−0.511\textcolor{#d9670b}{r}_C = -0.511, 역방향 KL은 2.49. 보상이 양수인 A만 오르고 음수인 B, C는 내려가요.
이서연 (평상)
이서연
C는 나도 내려간다고 봐. 다만 이유는 달라. 학생이 C에 0.15, 교사가 0.09니까 학생이 과하게 주고 있잖아. 역방향 KL은 학생이 과하게 준 칸을 깎는 거고.
선생님 (질문)
선생님
민준 학생, 이 위치에서 학생이 받는 보상의 평균은 얼마죠? 그 평균에 비하면 C의 −0.511은 나쁜 점수인가요?
김민준 (생각)
김민준
평균은 ∑πθ r=−DKL=−2.49\sum \textcolor{#1565c0}{\pi_\theta}\, \textcolor{#d9670b}{r} = -\textcolor{#8c564b}{D_\text{KL}} = -2.49 요. C의 −0.511은 평균보다 훨씬 높네요.
김민준 (아하)
김민준
문제에 준 식으로 C를 계산하면 0.15×(0.511−2.489)=−0.2970.15 \times (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\textcolor{#d9670b}{r}_A = +1.50, rB=−4.17\textcolor{#d9670b}{r}_B = -4.17, rC=−0.511\textcolor{#d9670b}{r}_C = -0.511, 역방향 KL =2.49= 2.49. (나) 로짓 그래디언트 A −0.799-0.799, B +1.095+1.095, C −0.297-0.297 → 줄이는 방향으로 한 걸음 가면 A는 크게 오르고, B는 크게 내리고, C는 조금 오른다. (다) 보상의 평균이 −DKL=−2.49-\textcolor{#8c564b}{D_\text{KL}} = -2.49 라 C의 −0.511-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)\textcolor{#2e7d32}{\pi_\text{T}} = (0.90,\ 0.01,\ 0.09) 가 생겼다. 그런데 초벌 학습 없이 바로 온폴리시 증류를 했고, 학생은 A에 10−610^{-6} 만 두고 있다: πθ=(10−6, 0.90, 0.10)\textcolor{#1565c0}{\pi_\theta} = (10^{-6},\ 0.90,\ 0.10). 문제 7의 로짓 그래디언트 식으로 A의 값을 구하고, 순방향 KL의 로짓 그래디언트 πθ(j)−πT(j)\textcolor{#1565c0}{\pi_\theta}(j) - \textcolor{#2e7d32}{\pi_\text{T}}(j) 와 비교하시오. B에서 빠진 확률은 어디로 가는가? (다) 초벌 학습 뒤 온폴리시 증류가 잘 끝났다. 이 모델의 의학 정확도의 상한은 무엇이 정하는가?

선생님 (질문)
선생님
(가)부터요. 일본어 × 의학 문장은 데이터에 한 줄도 없어요. 그 빈칸에 확률을 조금이라도 남기는 건 어느 쪽이죠?
김민준 (자신만만)
김민준
역방향이요. 역방향이 자기 문장 위에서 실수를 콕 집어 누르니까, 틀리지 않게 말하는 데는 역방향이 맞죠.
선생님 (평상)
선생님
민준 학생, 역방향 KL은 목표 분포가 0에 가까운 곳에 모델이 확률을 두면 어떻게 되죠? 지금 목표는 두 코퍼스이고, 빈칸의 확률은 얼마예요?
김민준 (난처함)
김민준
빈칸은 데이터에 없으니 거의 0이요. 거기 확률을 두면 log⁡(πθ/p)\log(\textcolor{#1565c0}{\pi_\theta}/p) 가 폭발하니까… 역방향으로 조일수록 빈칸에서 도망가서, 일본어 잡담이나 한국어 의학, 안전한 두 칸 중 하나로 가겠네요.
이서연 (평상)
이서연
그럼 통로는 순방향이야. 두 코퍼스를 다 덮으려고 넓게 퍼지니까 빈칸 근처에도 확률이 좀 남아. 그걸로 일본어 의학 문장이 나오긴 하겠지.
선생님 (질문)
선생님
서연 학생, 그렇게 나온 문장이 맞는지는 무엇이 알려 주죠?
이서연 (생각)
이서연
데이터에는 일본어 의학 문장이 없으니… 아무것도요. 일본어로는 매끄러운데 의학적으로 틀린 문장이어도 벌점을 줄 칸이 없어요.
이서연 (깨달음)
이서연
순방향은 빈칸으로 가는 통로일 뿐 정답 신호가 아니네요. 교사가 없으면 "유창하게 틀리기"를 막을 방법이 원리적으로 없어요.
선생님 (평상)
선생님
그래요. 이제 (나), 교사가 생겼어요.
김민준 (평상)
김민준
계산했어요. 역방향 로짓 그래디언트는 A가 −1.8×10−5-1.8 \times 10^{-5}, B가 +0.396+0.396, C가 −0.395-0.395. 순방향은 A가 10−6−0.90≈−0.9010^{-6} - 0.90 \approx -0.90 이고요.
김민준 (놀람)
김민준
역방향에서 B에서 빠진 확률이 A가 아니라 거의 다 C로 가요. A 쪽 힘은 순방향의 5만분의 1이에요.
이서연 (평상)
이서연
식을 보면 당연하네. 그래디언트 앞에 πθ(A)=10−6\textcolor{#1565c0}{\pi_\theta}(A) = 10^{-6} 이 곱해져 있으니까. 샘플로 돌리면 A는 백만 번에 한 번 뽑히고, 안 뽑히면 채점도 못 받고.
선생님 (평상)
선생님
교사가 정답을 알아도, 학생이 그 답을 말할 생각조차 안 하면 채점할 문장이 없어요. 그래서 순서가 어떻게 되죠?
김민준 (평상)
김민준
먼저 일본어 코퍼스와 한국어 의학 코퍼스로 초벌 학습(순방향)을 해서 A에 확률을 깔고, 그다음 온폴리시 증류(역방향)로 B와 C를 잘라 내요. 교사가 없을 땐 넓게 덮기가 유일한 통로였는데, 교사가 생기니까 좁히기가 손해가 아니라 이득이 되네요.
김민준 (평상)
김민준
조별 과제 초안을 아예 안 쓰고 조교님께 첨삭을 받으러 가면 고칠 게 없는 거랑 같아요. 뭐라도 써 가야 빨간 펜이 들어가죠.
선생님 (질문)
선생님
마지막 (다). 증류가 잘 끝나면 이 모델의 의학 정확도는 어디까지 오를 수 있나요?
이서연 (평상)
이서연
역방향 KL이 0이 되는 곳은 학생이 교사와 같아지는 곳이에요. 그러니까 교사가 틀리는 병명은 학생도 똑같이 틀려요. 상한은 교사의 정확도예요.
이서연 (평상)
이서연
수열이 수렴해도 극한이 그 수열의 목표를 넘지는 못하는 거죠. 교사가 극한이에요.

정리 (가) 교사 없이 역방향으로 조이면 모델은 데이터가 없는 빈칸에서 도망가 안전한 두 칸으로 간다. 넓게 덮는 순방향만이 빈칸 근처에 확률을 남기는 통로지만, 빈칸에는 정답 신호가 없으므로 "틀리지 않게"는 보장되지 않는다(유창하게 틀리기). (나) A의 역방향 로짓 그래디언트는 −1.8×10−5-1.8 \times 10^{-5} 로 순방향(−0.90-0.90)의 약 5만분의 1이다. B에서 빠진 확률은 거의 전부 C로 간다. 역방향은 학생의 서포트 밖으로 나가지 못하므로 초벌 SFT로 확률을 먼저 깔고 온폴리시 증류로 다듬는다. (다) 상한은 교사의 정확도다. 학생은 교사와 같아질 때 멈춘다.