AI 다이어트 실패 사건 · 정확도 손실을 재는 법 · 이론
정확도가 0.3% 떨어졌다는 말은 언제 의미가 있는가
한 줄 요약
정확도 차이는 숫자 두 개를 빼서 나오는 것이 아니라 표본 수와 갈린 표본의 수에서 나온다. 같은 표본에서 견주지 않으면 0.3퍼센트포인트는 아무 말도 아니다.
왜 이게 문제가 되나
양자화한 모델을 올릴지 말지 정하는 자리에서 가장 많이 나오는 문장이 "정확도가 0.3% 떨어졌습니다" 다. 이 문장만으로는 아무것도 결정할 수 없다. 표본이 300개라면 0.3퍼센트포인트는 표본 한 개 차이다. 같은 자료를 다시 뽑으면 방향이 바뀔 수도 있는 크기다.
정확도는 비율이고, 비율을 표본에서 재면 표본이 흔들리는 만큼 흔들린다. 시험 표본 400개에서 정확도가 0.78 이라면, 이 숫자 하나의 95% 구간은 대략 0.74 부터 0.82 까지다. 폭이 8퍼센트포인트다. 이 폭을 본 사람은 0.3퍼센트포인트를 근거로 삼지 않는다.
그런데 여기서 흔한 잘못이 하나 더 나온다. 구간이 겹치니 차이가 없다고 말하는 것이다. 그것도 틀렸다. 두 모델을 같은 표본에서 재었다면 쓸 수 있는 정보가 훨씬 많다.
어떻게 따지나
핵심은 두 모델이 같은 입력을 보았다는 것이다. 400개 가운데 380개는 두 모델이 똑같이 맞히고 3개는 똑같이 틀렸다면, 그 383개는 두 모델을 가르는 데 아무 도움이 안 된다. 남은 17개, 즉 한쪽은 맞고 다른 쪽은 틀린 표본만이 정보다.
그래서 표를 2x2 로 만든다.
B 맞음 B 틀림 A 맞음 307 6 <- A 만 맞은 6건 A 틀림 8 79 <- B 만 맞은 8건이 표에서 정확도 차이는 (8 - 6) / 400 = 0.005 다. 하지만 중요한 것은 분모가 400이 아니라 갈린 14건이라는 사실이다. 14건이 6대 8로 갈렸다면 동전을 14번 던져 6대 8이 나온 것과 다르지 않다. 이 판정을 숫자 하나로 만든 것이 쌍 비교 통계량이고, 이 실습은 갈린 건수로 나눈 잣대를 쓴다. 갈린 건수가 적으면 아무리 차이가 커 보여도 통계량이 커지지 않는다.
표본을 늘리면 되지 않느냐고 물을 수 있다. 맞는 말이지만 값이 비싸다. 구간의 폭은 표본 수의 제곱근에 반비례해 줄어들므로, 폭을 절반으로 만들려면 표본을 네 배로 늘려야 한다. 정확도 0.78 짜리 모델에서 95% 구간의 반폭을 0.04 에서 0.005 까지 좁히려면 시험 표본이 2만 6천 개쯤 필요하다. 라벨을 그만큼 붙이는 일이 현실적이지 않으니, 표본을 늘리기 전에 같은 표본에서 쌍으로 견주는 쪽을 먼저 쓴다. 쌍 비교는 두 모델이 함께 겪는 흔들림을 통째로 지워 주기 때문에 같은 표본 수로 훨씬 작은 차이를 잡아낸다.
기준선도 하나가 아니다. 대개 두 개다. FP32 원본은 "양자화가 얼마나 깎아 먹었나" 를 답하고, 이전 배포본은 "지금 돌고 있는 것보다 나빠지나" 를 답한다. 두 질문의 답이 서로 다른 방향일 수 있다. 원본보다 나빠졌는데 이전 배포본보다는 나은 후보가 실제로 나온다.
현장에서 갈라야 하는 두 가지
출력 차이와 과제 지표는 다른 것이다. 최대 절대 오차나 코사인 유사도는 출력 벡터가 얼마나 움직였나를 재고, 정확도는 결정이 바뀌었나를 잰다. 둘은 같이 움직이지 않는다. 최대 절대 오차가 1.7 이나 되는데 정확도는 오히려 올라가는 일이 있다. 결정 경계에서 멀리 있는 표본은 출력이 크게 흔들려도 답이 안 바뀌기 때문이다.
그래서 보고는 셋을 함께 적는다. 출력이 얼마나 움직였는지(최대 절대 오차·코사인), 결정이 몇 건이나 뒤집혔는지(뒤집힌 표본 수와 방향), 그 결과 과제 지표가 어떻게 되었는지(정확도와 그 구간). 하나만 적으면 읽는 사람이 나머지를 상상한다.
또 하나 조심할 것이 있다. 같은 시험 표본을 여러 후보에 되풀이해 쓰면 그 표본에 우연히 잘 맞는 후보가 뽑힌다. 후보를 열 개 재고 그중 가장 좋은 하나를 고르면, 그 하나의 구간은 처음 재었을 때보다 낙관적이다. 그래서 여러 후보를 견준 뒤에는 고른 후보를 한 번도 안 쓴 표본으로 다시 재는 절차가 필요하다. 이 실습은 후보 하나를 다루지만, 후보가 늘어나는 순간 이 문제가 따라온다는 것은 알고 있어야 한다.
한 가지 더. 뒤집힌 표본을 셀 때는 방향을 나눠야 한다. 맞던 것이 틀린 건수, 틀리던 것이 맞은 건수, 그리고 틀린 답이 다른 틀린 답으로 바뀐 건수. 셋째 항목은 정확도에 아무 영향이 없지만 모델이 흔들렸다는 증거이고, 사용자 눈에는 "답이 바뀌었다" 로 보인다.
실무에서 진짜 중요한 것
- 정확도는 구간과 함께 적는다. 숫자 하나로 적으면 읽는 사람이 정밀도를 오해한다.
- 두 모델은 같은 표본에서 견준다. 따로 잰 두 숫자를 빼지 않는다.
- 갈린 표본 수를 함께 적는다. 그것이 실제 분모다.
- 기준선을 둘로 둔다. 원본과 이전 배포본의 답이 다를 수 있다.
- 출력 차이와 과제 지표를 따로 적는다. 하나로 다른 하나를 대신하지 않는다.
다음 실습에서 할 것
시험 자료와 세 판(FP32 원본·이전 배포본·정수 후보)의 예측을 직접 만들고, 정확도 구간·쌍 비교 표·뒤집힌 표본·출력 차이를 재는 도구를 한 단계씩 키운다. 채점기는 여러분이 적은 숫자를 믿지 않는다. 매번 다른 씨앗으로 자기 예측표를 차려 여러분의 도구를 실제로 돌리고, 채점기가 같은 계산을 다시 해 대조한다. 1단계에서는 여러분이 남긴 씨앗으로 시험 입력을 다시 만들어 여러분의 모델을 직접 돌려 본다.