최악의 프롬프트 변형을 수정했더니 성능이 좋아졌습니다. 그렇다고 해서 그 수정이 효과가 있었다는 뜻은 아닙니다.
요약
LLM 평가 과정에서 발생하는 '평균 회귀' 현상의 위험성을 경고합니다. 성능이 낮은 프롬프트를 수정했을 때 나타나는 개선이 실제 효과인지, 아니면 통계적 노이즈에 의한 자연스러운 반등인지 구분하기 위해 대조군(control group) 설정이 필수적임을 강조합니다.
핵심 포인트
- 낮은 점수를 받은 변형은 통계적으로 평균 회귀 현상을 겪을 확률이 높음
- 프롬프트 수정 효과를 검증하려면 수정하지 않은 대조군 유지가 필수적임
- 작은 평가 세트와 노이즈가 있는 판정 점수는 잘못된 귀인을 유발함
- 개선이 신호(signal)인지 회귀(reversion)인지 구분하는 것이 핵심
제가 한 곳 이상의 팀에서 목격한 패턴이 있습니다. 매주 평가 (eval) 실행이 끝나면, 누군가 리더보드를 정렬하고 성능이 가장 낮은 프롬프트 변형 (prompt variant)이나 모델 체크포인트 (model checkpoint)를 주의 깊게 살펴봅니다. 누군가 시스템 프롬프트 (system prompt)를 수정하거나, 다른 퓨샷 예시 (few-shot example)를 넣거나, 때로는 단순히 지시 사항의 문구를 바꿉니다. 다음 주 평가 실행 결과 해당 변형의 성능이 개선된 것으로 나타납니다. 팀은 그 수정 덕분이라고 믿습니다.
때로는 그 수정이 실제로 효과가 있는 경우도 있습니다. 하지만 많은 경우, 아무런 변화를 주지 않았더라도 '최악의 성능자'가 선택되는 방식 때문에 그 개선 사항의 일부 또는 전부가 어차피 발생했을 것입니다.
메커니즘 (The mechanism)
만약 평가 세트 (eval set)가 작거나 (수백 개의 예시, 때로는 그보다 적음), 판정 점수 (judge scoring)에 노이즈 (noise)가 있다면 (LLM-judge 분산, 인간 평가자의 불일치, 혹은 둘 다), 특정 주에 측정된 어떤 변형의 점수는 해당 변형의 실제 잠재적 품질에 무작위 노이즈가 더해진 값입니다. 대부분의 주에는 이 노이즈가 대략적으로 상쇄됩니다. 하지만 여러분이 "이번 주 최악"으로 선택한 변형은 무작위로 선택된 것이 아닙니다. 낮은 점수를 받았기 때문에 선택된 것이며, 낮은 점수는 중간 정도의 실제 품질을 가지면서 그 주에 운이 없었던 변형에 속할 확률이 불균형적으로 높습니다.
다음에 이를 다시 측정할 때, "운이 없었던" 부분은 반드시 반복된다는 보장이 없습니다. 평균적으로는 그렇지 않습니다. 따라서 프롬프트를 건드렸는지 여부와 상관없이, 점수는 해당 변형의 실제 평균을 향해 다시 떠오르는 경향이 있습니다. 이것이 평균 회귀 (regression to the mean)이며, 이는 가장 오래된 기록된 통계적 현상 중 하나입니다 (Galton은 프롬프트를 평가하기 훨씬 전인 1880년대에 부모와 자녀의 키를 연구하며 이를 설명했습니다). 그리고 이는 극단적인 관측치를 선택한 후 다시 측정하는 모든 곳에서 나타납니다.
평가(eval) 버전의 함정: 당신은 단순히 최악의 변형(variant)을 측정한 것에 그치지 않고, 그것을 측정하고, 수정하고, 다시 측정한 뒤 그 모든 변화를 수정의 결과로 돌려버렸습니다. 만약 실제로 손대지 않은 변형이 스스로 유사한 형태의 반등(bounce)을 보였을 수도 있다면, 당신의 귀인은 틀렸거나 적어도 부분적으로 틀린 것입니다. 비교 대상(comparison point)이 없다면, 그 "개선"이 신호(signal)인지 아니면 회귀(reversion)인지 구분할 방법이 없습니다.
비교 대상은 어떤 모습인가
이 검증의 깨끗한 버전은 원칙적으로 간단합니다. 당신이 수정한 변형과 함께, 적어도 하나 이상의 변형을 완전히 손대지 않은 상태로 유지한 채 다음 주에 동일한 평가(eval)를 다시 실행하는 것입니다. 만약 손대지 않은 변형이 당신이 수정한 변형과 비슷한 폭으로 "개선"된다면, 당신의 수정은 아마 당신이 생각하는 대로 작동하고 있지 않은 것입니다. 반면 손대지 않은 변형은 평탄하게 유지되는데 수정된 변형이 급등한다면, 그것은 수정이 실제로 효과가 있다는 훨씬 더 강력한 근거가 됩니다.
대부분의 팀은 이를 수행하지 않습니다. 왜냐하면 "이미 우리에게 최악이라는 것을 알고 있는 변형"에 평가 예산(eval budget)을 두 번이나 쓸 가치가 없다고 느끼기 때문입니다. 하지만 그 직관은 정확히 반대로 되어 있습니다. 손대지 않은 변형은 당신의 대조군(control group)이며, 이 연습의 핵심은 다음 주의 수치가 얼마나 회귀(reversion)에 의한 것인지 미리 알 수 없다는 점에 있습니다.
시뮬레이션하기
이 효과를 구체화하는 작은 시뮬레이션이 여기 있습니다. 20개의 프롬프트 변형(prompt variants)이 있으며, 각 변형은 안정적인 "진정한(true)" 품질 점수를 가집니다. 여기에 측정할 때마다 판정(judge) 점수 노이즈(noise)가 추가됩니다. 1주 차와 2주 차 사이에 어떤 변형도 변하지 않으며, 어떠한 수정도 이루어지지 않습니다. 우리는 단지 노이즈가 섞인 평가 세트가 두 번째 실행 시 보여줄 행동과 정확히 일치하도록, 새로운 노이즈를 더해 동일한 20개의 변형을 다시 측정할 뿐입니다.
import numpy as np
rng = np.random.default_rng(3)
...
제 실행 결과에서, 단일 사례(single example)는 최악의 변형(worst variant)이 0.604에서 0.788로 급등하는 모습을 보였는데, 이는 문자 그대로 아무것도 변경하지 않았음에도 불구하고 0.183이라는 명백한 개선이 나타난 것입니다. 2,000주 동안 시뮬레이션한 결과, 손대지 않은 "최악의 변형"은 두 번째 측정에서 약 88%의 확률로 평균 약 0.09의 차이를 보이며 개선되었습니다. 이 시뮬레이션의 노이즈(noise) 및 참 점수(true-score) 파라미터 하에서는, 실제로 아무것도 변경하지 않았음에도 불구하고 대다수의 주(week)에서 숫자가 올라갔다는 의미에서 "최악의 변형을 수정했더니 성능이 좋아졌다"라는 말이 사실이 되었을 것입니다.
여기서 언급된 구체적인 수치(88%, 0.09)는 제가 선택한 noise_sd 및 true_scores 파라미터에 의한 결과물(artifacts)이며, 보편적인 상수는 아닙니다. true_scores의 분포 대비 noise_sd를 높이면 이 효과는 더 강력해집니다(판정의 노이즈가 커질수록 상황은 개선되는 것이 아니라 악화됩니다). 반대로 이를 줄이면 효과는 약해집니다. 여러분의 평가(eval) 설정에 대한 감을 잡고 싶다면, 위에 제시된 자리표시자(placeholder) 값 대신 여러분의 평가자(judge)가 가진 재검사 변산성(test-retest variance, 동일한 출력에 대해 두 번 점수를 매겨 얼마나 변하는지 확인)과 변형들 사이의 실제 점수 분포(spread of scores)를 파라미터로 입력해 보는 것이 가치가 있습니다.
실무에서 이를 놓치기 쉬운 이유
몇 가지 요인이 일반적인 팀의 워크플로우에서 이를 숨기도록 공모합니다. 첫째, "최악의 변형"이라는 프레임워크 자체가 매우 설득력이 있습니다. 점수가 가장 낮은 것을 수정하는 것이 당연하게 느껴지기 때문에, 아무도 선택 과정 자체에 의문을 제기하지 않습니다. 둘째, 대부분의 팀은 수정 사항과 병행하여 명시적으로 손대지 않은 대조군 변형(control variant)을 실행하지 않으므로, "변경이 없었을 경우"가 어떠했을지를 보여줄 비교 지점이 없습니다. 셋째, 단 일주일간의 변동은 "장황함(verbosity) 문제를 해결했더니 점수가 올라갔다"와 같이 만족스럽고 이해하기 쉬운 이야기를 만들어내지만, "이 중 일부는 아마도 평균 회귀(regression to the mean)였을 것이다"라는 설명은 그렇지 못합니다. 그리고 빠르게 움직이는 팀에서는 이야기가 부분적으로 틀렸을지라도, 이해하기 쉬운 이야기가 승리하곤 합니다.
이 모든 것이 수정이 결코 효과가 없다는 뜻은 아닙니다. 수많은 프롬프트 수정(prompt edits)이 실제로 도움이 되며, 이것이 성능이 가장 낮은 변형(variant)을 무시해도 된다는 주장은 아닙니다. 이는 관찰된 변화 중 얼마만큼이 수정 때문인지, 아니면 애초에 해당 변형이 선택된 방식 때문인지를 구분할 수 있는 방법을 가져야 한다는 주장입니다.
주의 사항 (Caveats)
이 시뮬레이션은 안정적인 실제 점수(true score)를 중심으로 독립적이고 대칭적이며 대략적으로 가우시안 노이즈 (Gaussian noise)가 발생한다고 가정하는데, 이는 단순화된 모델입니다. 실제 평가 노이즈 (eval noise)는 왜곡될 수 있습니다 (예를 들어, 평가자가 짧은 출력물에 체계적으로 더 높은 점수를 주는 경우 이는 대칭적 노이즈가 아닙니다). 또한 변형의 "실제" 품질 역시 실제로 고정되어 있지 않습니다. 모델의 동작은 표류(drift)할 수 있고, 평가 세트 (eval set)의 구성은 매주 변할 수 있으며, 진정으로 성능이 낮은 변형은 프롬프트 수정으로 정당하게 고칠 수 있는 구조적인 이유로 인해 성능이 낮을 수도 있습니다. 이 시뮬레이션은 메커니즘을 명확히 보여주기 위해 순수하게 노이즈에 의한 사례만을 분리해낸 것입니다. 실제 상황은 실제 효과 (genuine effect)와 회귀 (reversion)가 혼합되어 있으며, 정직한 답변은 대개 "둘 다 어느 정도 섞여 있다"이지, "전부 회귀"라거나 "전부 실제 효과"가 아닙니다.
또한 이 효과의 크기는 선택이 얼마나 극단적인지에 따라 크게 달라진다는 점을 지적할 가치가 있습니다. 20개 중 단 하나의 최악의 변형을 선택하는 것은 3개 중 최악을 선택하는 것보다 더 극단적인 이상치 (outlier)를 선택하는 것이며, 변형의 수가 많아지고 실제 분포 대비 노이즈가 커질수록 회귀 효과 (regression effect)는 그에 상응하여 더 강력해집니다. 5개의 변형을 가지고 훨씬 더 크고 노이즈가 적은 평가 세트로 동일한 점검을 수행하는 팀은 이 시뮬레이션과 동일한 효과가 아니라, 더 작은 효과를 보게 될 것입니다.
논의 (Discussion)
이 더 넓은 관점의 논점은 프롬프트 엔지니어링 (Prompt Engineering)에만 국한된 것이 아닙니다. 극단적인 관찰값을 선택하고, 개입한 뒤, 대조군 (Control) 없이 다시 측정하는 모든 프로세스는 이에 취약합니다. 예를 들어, 분기별 '최악'의 직원으로서 수행하는 성과 검토, '최악'의 성과를 보인 광고 변형에 대한 마케팅 캠페인, 나쁜 경기 이후 '반등한' 선수에 대한 스포츠 해설 등이 이에 해당합니다. LLM 평가 (LLM eval)는 표본 크기가 작은 경우가 많고 측정 노이즈 (Measurement noise)가 높은 경우가 많다는 점(실제 일상적인 변동성을 가진 LLM 판정관이 채점하는 200개 예시의 평가 세트는 진정으로 노이즈가 심한 도구입니다)이 우연히 겹쳐, 더 깨끗한 측정 설정에서보다 그 효과가 더 크게 나타나고 입증하기 쉬울 뿐입니다.
해결책은 통계적 마법이 아니라 절차적인 것입니다. 대조군을 유지하고, 자신의 노이즈 플로어 (Noise floor)에 대해 정직해지며, 단 일주일간의 변동은 그것이 유지되는 것을 확인하기 전까지는 약한 증거로 취급하십시오.
FAQ
평균 회귀 (Regression to the mean)가 평가 세트가 너무 작아서 발생하는 문제와 같은 것인가요?
관련은 있지만 동일하지는 않습니다. 작은 평가 세트는 각 측정의 노이즈를 증가시켜 평균 회귀를 더 눈에 띄고 심각하게 만들지만, 이 현상은 측정 노이즈가 존재하고 극단적인 점수를 기준으로 선택하는 한 적절한 크기의 평가 세트에서도 존재합니다. 작은 표본은 이를 증폭시킬 뿐, 이를 일으키는 원인은 아닙니다.
그렇다면 제 '수정'이 실제로 효과가 있었는지 어떻게 알 수 있나요?
수정된 변형 (Edited variant)과 최소 하나 이상의 수정되지 않은 대조 변형 (Untouched control variant)을 동일한 새로운 평가 샘플을 통해 실행하십시오. 만약 수정된 변형이 수정되지 않은 대조군보다 유의미하게 더 많이 개선된다면, 그것은 효과에 대한 실제 증거입니다. 만약 두 변형이 비슷한 정도로 개선된다면, 그 수정은 적어도 아직은, 혹은 적어도 이 비교 방식으로는 감지할 수 없는 방식으로 당신이 공을 돌리고 있는 그 역할을 수행하고 있지 않을 가능성이 높습니다.
이것이 최악의 변형뿐만 아니라 "최고"의 변형을 선택할 때도 적용되나요?
네, 대칭적으로 적용됩니다. 특정 주에 유난히 좋아 보이는 변형은 그 주에 운이 좋았을 가능성이 불균형적으로 높으며, 아무런 변화가 없더라도 재측정 시 점수가 하향 drift(drift)하는 경향이 있습니다. 팀들은 일반적으로 나쁜 소식보다 좋은 소식에 대해 덜 의심하는 경향이 있으며, 이는 이러한 방향의 효과를 놓치기 더욱 쉽게 만듭니다.
이 문제를 해결하기 위해 평가 세트(eval set)의 크기를 그냥 키우면 안 될까요?
그것은 효과를 줄여주기는 하지만(샘플이 커질수록 측정당 노이즈가 줄어들어, 운 좋거나 운 나쁜 추출이 발생할 여지가 적어짐), 완전히 제거하지는 못합니다. 측정 노이즈가 존재하는 한, 그리고 당신이 극단적인 점수를 기준으로 선택을 하고 있는 한, 어느 정도의 평균 회귀 (regression to the mean)는 발생할 것입니다. 더 큰 평가 세트는 당신이 얼마나 많은 "개선"을 신뢰해야 하는지에 대한 기준치를 높여줄 뿐, 확인해야 할 필요성 자체를 없애주지는 않습니다.
이것이 p-hacking (p-해킹)과 같은 것인가요?
아니요, 관련은 있지만 별개의 문제입니다. p-hacking은 유의미한 결과를 얻기 위해 분석을 선택적으로 수행하거나 보고하는 것을 포함합니다. 평균 회귀는 완전히 정직하고, 단일하며, 사전에 계획된 분석에서도 발생합니다. 이는 얼마나 많은 분석을 수행했는지 또는 어떻게 보고했는지의 문제가 아니라, 극단적인 관측치를 선택하고 재측정할 때 발생하는 속성입니다.
LLM-judge (LLM 판사) 점수에서 기대할 수 있는 합리적인 노이즈 floor (noise floor)는 어느 정도인가요?
일반화할 수 있는 단일 수치는 없습니다. 이는 판사 모델 (judge model), 루브릭 (rubric)의 구체성, 그리고 작업 (task)에 따라 크게 달라집니다. 유용한 연습 방법은 직접 측정해 보는 것입니다. 동일한 출력 세트를 당신의 판사로 두 번 점수 매겨 보세요 (동일한 프롬프트, 동일한 출력, 판사 호출 재실행). 그리고 실행 간에 개별 점수가 얼마나 변하는지 살펴보세요. 그렇게 하면 교과서적인 수치를 가정하는 대신, 추론할 수 있는 경험적인 noise_sd (노이즈 표준편차)를 얻을 수 있습니다.
예시당 더 많은 판정 호출(judge calls)을 평균 내면 이 문제가 해결될까요?
판정 수준의 노이즈(judge-level noise)를 줄여줍니다(출력당 1회의 판정 대신 3~5회의 판정을 평균 내면 예시별 점수가 더 정밀해집니다). 이는 이 시뮬레이션에서 noise_sd 항을 줄여주며, 결과적으로 회귀 효과(regression effect)를 줄여줍니다. 하지만 평가 세트(eval set) 자체가 작아서 발생하는 노이즈나, 측정 대상 자체의 실제 주간 변동성(week-to-week variability) 문제는 해결하지 못하므로, 이는 완전한 해결책이 아닌 부분적인 해결책입니다.
미해결 과제 (Open question)
매번 별도의 수정되지 않은 대조군(control)을 유지할 필요 없이(이는 방법론적으로는 정답이지만, 평가 예산이나 컴퓨팅 자원이 부족할 때는 항상 실용적이지는 않습니다), 단 일주일간의 데이터만을 사용하여 "이번 주의 변동 중 평균으로의 회귀(regression to the mean)가 차지하는 비중이 얼마인가"와 "수정의 실제 효과가 차지하는 비중이 얼마인가"를 더 깔끔하게 분리할 수 있는 방법을 찾고 싶습니다. 원칙적으로는 자체 평가 파이프라인의 과거 분산(historical variance)과 검사-재검사 신뢰도(test-retest reliability)로부터 기대되는 평균 회귀 크기를 추정할 수 있으며, 관찰된 변화에서 그 기대치를 뺀 나머지를 수정의 효과로 돌릴 수 있습니다. LLM 평가(eval) 맥락에서 이것이 엄격하게 수행되는 것을 본 적이 없으며, 자체 노이즈 모델을 잘못 설정했을 때 그 추정치가 얼마나 민감하게 반응할지도 확실하지 않습니다. 만약 누군가 실제 평가 파이프라인을 위해 이를 제대로 구축했다면, 그 수학적 계산법을 꼭 보고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기