엔트로피 붕괴: 너무 좁히면 드문 정답을 잃는다
“한 번에 맞히는 비율(pass@1)은 올라가는데, 아주 많이 뽑아 보면 오히려 베이스 모델이 더 많은 문제를 푼다. 하나의 답을 잘 내는 모델이 왜 여러 번 시도할 기회를 주면 베이스보다 못하게 되는가?”
비유
라디오 다이얼을 너무 좁히면 — 하나의 주파수에 완벽하게 맞췄다. 수신 품질은 최고다. 그런데 다른 채널이 잡히던 자리가 조용해졌다. 전에는 스캔을 오래 돌리면 가끔 잡히던 먼 방송이 이제는 아무리 돌려도 안 잡힌다.
원인 — 정책경사의 엔트로피 동역학
Cui 외(2025)는 추론 언어모델의 강화학습에서 이 현상을 정리했다. 정책 엔트로피는 훈련 초반에 급격히 떨어지고, 그 뒤의 성능은 떨어진 엔트로피로 거의 결정된다(경험식 R = −a·eH + b. R 은 검증 문제에서 잰 성능(수학·코드 문제의 정답률), H 는 정책 엔트로피, a·b 는 실험마다 맞춘 상수다. 엔트로피가 0 까지 떨어지면 성능은 −a + b 에서 멈춘다). 엔트로피가 왜 떨어지는지도 식으로 보였다. 정책경사는 보상의 기댓값이 커지는 쪽으로 정책의 파라미터를 기울기를 따라 옮기는 방법이고, 자연 정책경사는 그 걸음을 피셔 정보로 보정해 출력 분포가 달라지는 정도로 걸음 크기를 재는 방법이다. 답마다 로짓 하나를 두는 소프트맥스 정책을 자연 정책경사로 한 스텝 옮기면
이미 확률이 높은 답이 보상도 높으면 공분산이 양수이고, 엔트로피가 준다. 숫자로 보자. 답 셋에 π = (0.6, 0.3, 0.1) 을 주는 정책에서 가장 흔한 답 0 만 정답(보상 1)이면, 평균 보상이 0.6 이라 어드밴티지는 A = (0.4, −0.6, −0.6) 이고 공분산은 0.232 로 양수다. 이런 정책에서 자연 정책경사 한 스텝은 로짓을 lr·A 만큼 옮긴다. lr = 0.1 로 한 스텝 가면 엔트로피는 0.898 에서 0.874 로 준다. 위 식의 어림(−0.1 × 0.232 = −0.023)과 실제 변화(−0.024)가 거의 같다. 강화학습에서는 대개 이런 쪽이다. 모형이 잘하는 답을 더 자주 내니까. 주목할 점은 이 논문의 실험이 KL 계수를 0으로 두었다는 것이다. KL 벌칙이 없어도 엔트로피는 무너진다. 그러니 "reverse KL(모형 쪽에 무게를 둔 KL(π‖πref))이 봉우리를 눌러서"는 원인 설명으로 맞지 않다. KL(π‖πref) 는 오히려 π 를 넓은 참조 쪽으로 붙잡아 두는 항이다. 붕괴를 미는 힘은 보상 쪽에 있다.
기울이기 절의 닫힌꼴 π* ∝ πref·er/β 로도 같은 것이 보인다. β를 줄일수록 π* 는 e-측지선을 따라 참조에서 멀어지고, 엔트로피는 정답 집합의 조건부 엔트로피까지 내려간다. KL 항을 빼는 것은 β = 0, 그 끝으로 곧장 가는 것이다.
코드 모델을 어떻게 채점할까
pass@k 라는 지표는 코드를 짜는 언어모델을 채점하려던 고민에서 나왔다. 기계 번역처럼 정답 코드와 글자가 얼마나 겹치는지(BLEU 점수)로 재면, 글자는 달라도 똑같이 동작하는 코드를 틀렸다고 보게 된다. 같은 일을 하는 프로그램은 셀 수 없이 많기 때문이다. 그래서 코드 생성 연구들은 코드가 미리 써 둔 시험(단위 테스트)을 통과하는지로 채점하기 시작했다. 사람 개발자가 코드를 받아들이는 방식도 그렇다. 쿨랄(Kulal) 외(2019)는 문제마다 코드를 k 개 뽑아 하나라도 테스트를 통과하면 그 문제를 푼 것으로 쳤고, 이것이 pass@k 다. 「k 번 안에 통과(pass at k)」라고 읽는 한 덩어리 이름이다. 깃허브 코드로 학습한 Codex 를 내놓은 첸(Chen) 외(2021)는 문제 164개를 손으로 새로 써서 같은 방식으로 쟀다. 그런데 문제마다 꼭 k 개만 뽑아 세면 결과가 크게 흔들려서, 200개를 뽑아 그 가운데 통과한 개수로 pass@k 를 셈하는 식을 따로 마련했다. 아래 식의 두 번째 줄이 그것이다.
pass@k — 정확히 무엇을 재는가
문제 하나에서 모형의 정답 확률이 s 라고 하자. k번 독립으로 뽑아 하나라도 맞으면 성공이다.
같은 모형에서 pass@k 는 k가 커질수록 줄어들 수 없다. 늘 pass@1 이상이다. 그러니 "한 모형의 pass@1 곡선과 pass@k 곡선이 교차한다"는 일은 일어나지 않는다. 교차하는 것은 두 모형의 pass@k 곡선이다.
Yue 외(2025)의 관찰이 그것이다. “RLVR로 학습한 모형은 작은 k(예: k = 1)에서 베이스 모형을 이기지만, k가 클 때는 베이스 모형이 더 높은 pass@k 를 얻는다.” 강화학습이 베이스가 가끔 풀던 문제의 정답 확률을 0 가까이 눌러 버렸기 때문이다. 기울이기 절의 조건부화 그림 그대로다(이진 보상에서 β → 0 이면 π* 는 참조를 정답 집합으로 조건부화한 분포가 된다). 참조에 없던 정답은 생기지 않고, 참조에 드물던 정답은 더 드물어질 수 있다.
두 가지를 구분해 두자. pass@k 는 "k번 기회를 주면 풀 수 있는 문제의 비율"이다. 답변의 다양성 자체를 재는 지표가 아니다. 다양성이 줄면 큰 k의 pass@k 가 떨어지기 쉽다는 관계가 있을 뿐이다. 그리고 이것은 catastrophic forgetting(새 과제를 배우며 옛 과제 성능을 잃는 것)과도 다르다. 같은 과제 안에서 드문 정답이 더 드물어지는 일이다.
불러오는 중…
Best-of-N과의 연결
Best-of-N 샘플링은 “N번 생성해서 가장 좋은 것을 고른다.” N번 생성 = OR (다양한 가능성을 열어둠). 가장 좋은 것을 선택 = AND (조건을 충족하는 것만). 정답 검사기가 있으면 Best-of-N의 성공률이 곧 pass@N 이다. 그래서 강화학습 뒤에 Best-of-N을 붙이려면, 강화학습이 드문 정답을 지우지 않았는지가 중요해진다.
파이썬
import numpy as np
from math import comb
# 불편추정량 1 − C(n−c,k)/C(n,k) 와 순진한 추정량 1 − (1 − c/n)^k 비교
n, k, s = 16, 4, 0.2
rng = np.random.default_rng(0)
c = rng.binomial(n, s, size=20000)
unbiased = np.mean([1 - comb(n - ci, k) / comb(n, k) for ci in c])
naive = np.mean(1 - (1 - c / n)**k)
print(f"참값 {1 - (1 - s)**k:.4f} 불편추정량 {unbiased:.4f} 순진한 추정량 {naive:.4f}")
# 참값 0.5904 불편추정량 0.5924 순진한 추정량 0.5548
# 두 모형의 pass@k: 베이스와, 정답 확률의 로짓을 0.1 기준으로 두 배 벌린 "RL 모형"
lg = lambda x: np.log(x) - np.log1p(-x)
from scipy.stats import beta as Beta
s_base = Beta.ppf((np.arange(50) + 0.5) / 50, 0.4, 1.2) # 문제 50개의 정답 확률
s_rl = 1 / (1 + np.exp(-(2 * (lg(s_base) - lg(0.1)) + lg(0.1))))
for kk in [1, 4, 8, 16, 64, 256]:
print(f"k={kk:<3} 베이스 {np.mean(1 - (1 - s_base)**kk):.3f} RL {np.mean(1 - (1 - s_rl)**kk):.3f}")
# k=1 베이스 0.250 RL 0.381
# k=4 베이스 0.485 RL 0.529
# k=8 베이스 0.594 RL 0.587
# k=16 베이스 0.686 RL 0.638
# k=64 베이스 0.817 RL 0.722
# k=256 베이스 0.894 RL 0.788
순진한 추정량은 참값보다 작게 나온다. 왜 그런지는 아래 문제에서 따진다. 장난감 RL 모형은 k = 1 에서 베이스를 크게 앞서지만, k = 8 근처에서 역전된다.
호기심 상자 — 병합: OR의 질이 AND의 가능성을 결정한다
“왜 어떤 미세조정은 병합이 잘 되고 어떤 미세조정은 병합이 안 되는가?”
강화학습은 베이스가 이미 가진 정답을 추려낼 뿐이었다. 그렇다면 프리트레인(OR)이 깔아 둔 풍경의 질은 다른 좁히기에도 영향을 줄까? 모델 병합이 좋은 시험대다. 두 모델의 가중치 "중간"을 취하면 두 능력이 합쳐지는 경우가 있고, 갑자기 무너지는 경우가 있다. "잘 되는 병합"과 "안 되는 병합"의 차이는 어디에 있는가?
보고된 발견
Rahamim 외(2026)는 LoRA(가중치 변화를 작은 행렬 둘의 곱으로 제한하는 미세조정) 업데이트들을 대상으로 한 실험에서 "베이스 모델이 과제나 미세조정 데이터를 더 잘 알수록 병합 가능성이 높다"고 보고했다. 그리고 병합 가능성은 무엇과 함께 병합하느냐보다 LoRA 업데이트 자체의 성질에 주로 달려 있다고 했다. Yadav 외(2024)도 따로 학습시키지 않고 바로 시킨 성능(제로샷 성능)이 좋은 강한 베이스 모델에서 만든 전문가 모델일수록 병합이 잘 된다고 보고했다. 반론도 있다. 병합 가능성이 병합 방법과 함께 묶는 과제에 따라 달라진다는 연구도 나왔다. 아직 정리된 법칙이라기보다 경향이다.
교재의 도구로 읽기
프리트레인(OR)이 해당 영역의 봉우리를 이미 품고 있으면, 미세조정은 그 봉우리 근처에서 좁히는 것이다. 파라미터 변화가 작고, 출력 분포의 변화도 작다. 피셔 계량(파라미터를 바꿀 때 출력 분포가 얼마나 달라지는지로 재는 자)으로 재면 “가까운” 거리.
가중치끼리 평균하는 것은 파라미터 공간의 직선 보간이다. 이것을 m-측지선(분포의 혼합)과 헷갈리지 말자. 가중치끼리의 평균이 만드는 분포는 두 분포의 혼합이 아니다. 신경망의 가중치는 θ 좌표도 η 좌표도 아니어서, 가중치 직선은 e-측지선도 m-측지선도 아니다.
두 미세조정이 모두 베이스 근처에 있으면, 어느 직선을 따라가든 분포 공간에서 크게 벗어나지 않는다. 짧은 구간에서는 곡선과 직선의 차이가 작기 때문이다. 반대로 베이스 모델이 모르는 과제는 파라미터를 멀리 끌고 가야 하고, 먼 두 점을 잇는 가중치 직선의 중간은 분포 공간에서 엉뚱한 곳에 착지할 수 있다.
피셔로 가중한 병합
피셔 계량을 병합에 직접 쓰는 방법도 있다. Matena와 Raffel(2022)의 피셔 가중 평균이다. 각 모형의 가중치를 그 모형의 (대각) 피셔 정보에 비례한 비중으로 평균한다.
어떤 가중치가 모형 A의 출력 분포에 민감하면(피셔가 크면) 병합에서 A의 값을 더 따른다. 각 모형의 사후분포를 피셔로 만든 가우시안으로 근사하고, 그 곱을 최대화한 결과라는 해석이 붙는다. 가우시안의 곱 — 여기서도 곱셈이다.
수확
“엔트로피 붕괴를 미는 힘은 보상을 올리는 정책경사다. KL 없이도 일어난다. pass@k 는 k가 커질수록 줄지 않는다. 교차하는 것은 두 모형의 곡선이다. 강화학습은 참조가 가진 정답을 추려낼 뿐, 드문 정답은 오히려 잃을 수 있다.”
“프리트레인의 OR이 깔아놓은 풍경의 질이 이후 AND의 가능성에 영향을 준다. 베이스가 이미 아는 곳의 미세조정은 짧은 걸음이라 병합이 쉽다는 보고가 있다. 가중치끼리의 평균은 m-측지선이 아니다. 피셔로 가중하면 분포 공간의 자를 병합에 들일 수 있다.”
문제 10. 슛 테스트의 기회 횟수
농구 동아리 입단 시험은 두 자리에서 슛을 던진다. 자리마다 k 번 던져 한 번이라도 넣으면 그 자리는 통과다. 지원자 A 는 자유투 자리에서 90%, 하프라인에서 1% 를 넣고, 지원자 B 는 자유투 자리에서 60%, 하프라인에서 15% 를 넣는다. (가) k = 1 일 때 두 사람이 통과하는 자리의 평균 비율을 구하라. (나) k = 2 와 k = 5 이면 어떤가? (다) 기회가 늘 때 누가 더 이득을 보며, 그 까닭은 무엇인가?
함께 풀기

k = 1 이면 A 가 (0.9 + 0.01)/2 = 0.455, B 가 (0.6 + 0.15)/2 = 0.375 예요. A 가 더 잘 쏘는 사람이니까 기회를 늘려도 A 가 계속 앞서겠죠.

k = 5 로 계산해 봐요.

A 는 자유투가 1 − 0.1⁵ = 0.99999, 하프라인이 1 − 0.99⁵ = 0.049 라서 평균 0.525. B 는 1 − 0.4⁵ = 0.990, 1 − 0.85⁵ = 0.556 이라서 평균 0.773 이요.

뒤집혔네요. k = 2 만 돼도 A 0.505, B 0.559 로 벌써 B 가 앞서요.

A 는 자유투를 이미 거의 다 넣으니까 기회가 늘어도 더 얻을 게 없고, 하프라인은 1% 라 다섯 번 던져도 5% 남짓이야. B 는 15% 짜리를 다섯 번 던지면 절반을 넘어.

그러면 기회가 많을 때 점수를 정하는 건 무엇이죠?

확률이 작아도 0 은 아닌 자리를 얼마나 가졌느냐요. 한 번에 잘하는 것과 여러 번 기회가 있을 때 잘하는 것은 다른 능력이네요.
문제 11. pass@k 를 어떻게 셈할까
(가) 한 모형에서 pass@k 가 k에 대해 줄지 않음을 보여라. (나) n = 20개 중 c = 3개가 맞았을 때 pass@5 를 추정하라. 1 − (1 − c/n)k 를 쓰면 왜 안 되는가?
함께 풀기

(가)는 쉬워요. 한 번에 맞힐 확률이 s 면 기회가 k 번이니까 k·s, k에 비례해서 늘어요.

s = 0.2, k = 10 이면요?

2요… 확률이 1을 넘네요. 두 번 이상 맞은 경우를 겹쳐 셌어요. 하나라도 맞을 확률은 전부 틀릴 확률을 빼서 1 − (1−s)k 이고, 0 ≤ 1−s ≤ 1 이니까 (1−s)k 가 k에 대해 줄어요. 문제마다 그러니 평균을 내도 그대로고요.

(나)는 c/n = 3/20 을 넣으면 1 − (17/20)⁵ = 0.556 이요.

그 추정량을 여러 번 뽑아서 평균 내면 참값이 나와요?

시뮬레이션해 봤어요. s = 0.2, n = 20, k = 5 로 2만 번. 참값 0.672 인데 제 방식은 평균 0.634 요. 계속 낮게 나와요.

c/n 은 치우침이 없는데 왜 그걸 넣은 결과는 치우치죠?

1 − (1−x)k 가 x 에 대해 오목하니까. 젠센 부등식으로 E[f(c/n)] ≤ f(E[c/n]) 이야. 치우침 없는 걸 비선형 함수에 넣으면 치우침이 생겨.

그래서 Chen 외(2021)는 20개 중 5개를, 한 번 고른 것은 다시 고르지 않고(비복원) 고를 때 전부 틀릴 확률을 정확히 셌어요. C(17, 5)/C(20, 5).

6188/15504 = 0.399 니까 pass@5 추정값은 0.601 이요. 시뮬레이션에서도 이 방식은 평균 0.674 로 참값에 붙어요.

뽑은 20개를 "모집단"으로 보고 거기서 5개를 뽑는 거네요. 조교가 채점할 때 제출물 전부에서 다섯 개를 무작위로 골라 검사하는 것처럼.
문제 12. 드문 정답에 보상을 주면
답 셋에 π = (0.7, 0.2, 0.1) 을 주는 정책이 있다. 정답은 가장 드문 답 2 하나다(보상 1, 나머지 0). (가) 어드밴티지 A 와 Cov(log π, A) 를 구하라. (나) lr = 0.1 인 자연 정책경사 한 스텝(로짓에 lr·A 를 더함) 뒤 엔트로피는 늘어나는가, 줄어드는가? (다) 정답이 가장 흔한 답 0 이었다면 어떻게 되는가?
함께 풀기

정답에 보상을 주면 정책이 정답 쪽으로 좁아지니까 엔트로피는 당연히 줄죠. 강화학습은 엔트로피를 깎는 거잖아요.

식에 넣어 봐요. 어드밴티지부터요.

평균 보상이 0.1 이니까 A = (−0.1, −0.1, 0.9) 예요. Σ πA = 0 이라 공분산은 Σ π log π·A 만 남아요. 0.7·log 0.7·(−0.1) + 0.2·log 0.2·(−0.1) + 0.1·log 0.1·0.9 = 0.025 + 0.032 − 0.207 = −0.150.

음수예요. 그럼 ΔH ≈ −0.1 × (−0.150) = +0.015 로 엔트로피가 늘어요? 실제로 한 스텝 가 보니 0.802 에서 0.817 로 늘었어요.

확률이 낮은 답이 보상이 높으면 log π 와 A 가 반대로 움직이니까 공분산이 음수야. 한쪽에 쏠려 있던 정책을 드문 정답 쪽으로 펴 주니까 오히려 고르게 되는 거지.

(다)는요?

A = (0.3, −0.7, −0.7) 이고 공분산은 0.312 로 양수예요. 엔트로피는 0.802 에서 0.770 으로 줄어요.

그럼 엔트로피가 무너지느냐는 보상을 주느냐가 아니라, 보상이 이미 흔한 답에 가느냐 드문 답에 가느냐에 달렸네요. 모형이 잘하는 답일수록 보상을 받기 쉬우니 실제 학습에서는 대개 양수 쪽이고요. 아까 슛 테스트의 A 처럼, 이미 잘 넣는 자리만 더 연습하는 셈이에요.

조교가 이미 잘한 과제에만 칭찬을 몰아주면 다들 그 과제 스타일만 따라 하게 되는 거랑 같네요.