Files
frankenstallm/source/eval/reports/03_repetition_calibration_report.md

191 lines
12 KiB
Markdown
Raw Permalink Normal View History

# 보고서 03 — 반복 분석 및 캘리브레이션 점검
**모델**: korean_1b_fp8_run1 (~1.19B 파라미터)
**학습 단계**: 34,000 steps
**작성일**: 2026-02-26
---
## Part A — 반복 분석 (Repetition Analysis)
### 1. N-gram 반복률 결과
아래 표는 10개 프롬프트에 대해 greedy decoding으로 생성한 출력의 N-gram 반복률을 측정한 결과다. 각 열의 값은 전체 생성 토큰 중 이미 등장한 N-gram이 다시 등장하는 비율을 나타낸다.
| 프롬프트 | 1-gram | 2-gram | 3-gram | 4-gram | 판정 |
|---------|-------:|-------:|-------:|-------:|:----:|
| 한국의 수도는 | 75.3% | 68.4% | 65.3% | 64.9% | DEGENERATE |
| 인공지능이란 | 50.7% | 31.9% | 29.6% | 27.1% | OK |
| 오늘 날씨가 좋아서 | 7.6% | 0.0% | 0.0% | 0.0% | OK |
| 대한민국의 역사... | 90.7% | 89.2% | 87.7% | 86.9% | DEGENERATE |
| 서울에서 부산까지 | 24.1% | 7.3% | 2.5% | 0.0% | OK |
| 파이썬 코드 | 75.0% | 71.8% | 68.4% | 64.9% | DEGENERATE |
| 1 + 1 = 2이고 | 69.9% | 44.7% | 22.1% | 0.0% | OK |
| 봄이 오면 꽃이 피고 | 30.0% | 15.2% | 9.2% | 6.2% | OK |
| 김치찌개를 만들려면 | 31.0% | 11.1% | 5.1% | 3.1% | OK |
| 세종대왕은 | 14.8% | 7.5% | 5.1% | 3.8% | OK |
| **평균** | **46.9%** | **34.7%** | **29.5%** | **25.7%** | — |
**판정 기준**: 4-gram 반복률 50% 초과 또는 3-gram 반복률 60% 초과 시 DEGENERATE로 분류
**DEGENERATE 비율**: 3/10 (30%)
---
### 2. 분석
#### 2-1. 반복 퇴화(degenerate repetition)의 원인
**1. 1B base model의 전형적 한계**
1B 규모의 base pretrain 모델은 학습된 확률 분포에서 고확률 시퀀스가 반복 루프에 진입하는 경향이 있다. Greedy decoding은 매 step마다 가장 높은 확률의 토큰을 선택하므로, 모델이 한 번 특정 패턴을 생성하면 그 패턴이 다음 토큰 예측에 유리한 컨텍스트로 작용해 스스로 강화된다.
**2. Full-sequence forward의 컨텍스트 누적 효과**
KV cache 없이 full-sequence forward 방식으로 생성할 경우, 앞에서 반복된 토큰들이 컨텍스트를 점유하여 이후 생성에서 같은 패턴을 더욱 높은 확률로 유도한다. 반복이 반복을 낳는 피드백 루프가 형성된다.
**3. 사실 기반 프롬프트에서의 취약성**
"한국의 수도는", "대한민국의 역사" 같은 프롬프트는 모델이 단일 사실(예: "서울")을 알지만, 그 사실을 기반으로 다음 문장으로 전환하는 다양성이 부족할 때 반복이 발생한다. 모델은 "서울은 수도입니다. 서울은 수도입니다." 식으로 동일한 문장을 반복 생성한다.
**4. 코드 프롬프트의 취약성**
"파이썬 코드" 프롬프트에서도 DEGENERATE 판정이 나타났다. 이는 학습 데이터의 한국어 코드 관련 문서가 상대적으로 부족하기 때문으로 추정된다. 코드 구조(들여쓰기, 반복 키워드)가 N-gram 반복률을 높이는 효과도 있다.
#### 2-2. 양호한 프롬프트의 특성
"오늘 날씨가 좋아서", "김치찌개를 만들려면", "세종대왕은" 등 **개방형이고 생활 밀착형인 프롬프트**에서는 반복률이 낮다. 이들 프롬프트는 학습 데이터에서 다양한 방식으로 이어지는 문장과 연결되어 있어 모델이 여러 경로를 탐색할 수 있기 때문이다.
#### 2-3. 1B pretrain-only 모델 기준에서의 평가
Instruction tuning(SFT/RLHF) 이전의 base pretrain 모델에서 30% degenerate는 예상 범위 내다. GPT-2(1.5B), OPT-1.3B 등 동급 모델들도 greedy decoding에서 비슷한 수준의 반복 문제를 보였다. 모델 크기가 커지거나 instruction tuning이 적용되면 이 비율은 대폭 감소한다.
---
### 3. 개선 전략
#### 3-1. 샘플링(Sampling) 단계 개선
생성 시 아래 기법을 적용하면 반복 문제를 즉시 완화할 수 있다.
- **Repetition penalty** (theta = 1.2~1.5): 이미 생성된 토큰의 로짓을 페널티로 감소시켜 반복을 억제. theta=1.3이 품질과 다양성의 균형점으로 추천
- **Frequency penalty**: 단순 반복뿐 아니라 빈번하게 등장하는 토큰 전체를 억제
- **Top-p (nucleus) sampling**: p=0.9로 설정하면 greedy의 반복 루프를 끊는 데 효과적
- **Temperature**: 0.7~0.9 범위에서 다양성을 높이면서도 coherence 유지
#### 3-2. 학습 단계 개선
- **SFT (Supervised Fine-Tuning)**: 다양한 질문-답변 쌍으로 fine-tuning하면 instruction following 능력과 동시에 반복 억제 패턴이 학습됨
- **DPO (Direct Preference Optimization)**: 반복이 심한 출력을 rejected로, 다양한 출력을 chosen으로 설정하면 반복 문제를 직접 줄일 수 있음
- **데이터 다양성 강화**: 코드, 사실 서술 관련 한국어 데이터를 보강하면 해당 도메인의 반복 취약성 개선
#### 3-3. 모델 크기 확장
7B 이상 모델에서 반복 문제가 감소하는 경향이 있다. 현재 1B base pretrain 수준에서는 반복이 구조적으로 발생할 수밖에 없으며, 모델 capacity 증가가 가장 근본적인 해결책이다.
---
## Part B — 캘리브레이션 점검 (Calibration Check)
### 1. 결과
검증 데이터셋에서 10,240개 토큰을 샘플링하여 모델의 예측 신뢰도와 정확도를 측정했다.
| 지표 | 값 |
|------|---:|
| 분석 토큰 수 | 10,240 |
| 평균 정답 토큰 확률 (Mean correct-token prob) | 0.4738 |
| 평균 예측 엔트로피 | 2.2413 nats |
| Accuracy @1 (Top-1 정확도) | 56.18% |
| Accuracy @5 | 72.35% |
| Accuracy @10 | 77.75% |
---
### 2. 분석
#### 2-1. Accuracy@1 = 56.18%
다음 토큰을 56%의 확률로 정확히 맞힌다는 것은 1B 규모 모델 기준으로 양호한 수치다. 비교 기준으로, GPT-2(1.5B)의 영어 WikiText에서의 Top-1 accuracy가 약 40~50% 수준이었으므로, 한국어 데이터에서 56%는 그보다 높은 수준이다.
한국어 특성상 조사(이/가, 을/를, 은/는), 어미(~다, ~고, ~서), 문장 종결어미 등 문법적으로 예측 가능한 토큰이 많아 accuracy가 상대적으로 높게 나타날 수 있다는 점도 고려해야 한다. 그럼에도 불구하고 56%는 모델이 언어 구조를 충분히 학습했음을 나타낸다.
#### 2-2. Accuracy@5 = 72.35%
Top-5 안에 정답이 있는 비율이 72%로, 모델이 합리적인 후보군을 잘 제시하고 있다. Accuracy@1(56%)과 @5(72%) 사이의 격차는 약 16%p다. 이는 모델이 확신하지 못하는 토큰이 16% 정도 존재하지만, 그 토큰들은 여전히 상위 5개 후보군 안에 포함시킨다는 의미다. 즉 모델이 틀릴 때도 "합리적으로 틀린다"는 것을 시사한다.
#### 2-3. Accuracy@10 = 77.75%
@5(72.35%)와 @10(77.75%) 사이의 격차는 약 5%p로, @1@5 격차(16%p)보다 크게 줄어든다. Top-5를 넘어서면 추가적인 이득이 급격히 감소하는 수익 체감 구조다. 나머지 22.25%의 토큰은 Top-10에도 포함되지 않으며, 이들은 주로 다음에 해당할 가능성이 높다:
- **고유명사**: 인물명, 지명, 브랜드명 등 학습 빈도가 낮은 토큰
- **숫자 및 수치**: 특정 연도, 금액, 통계 수치
- **드문 표현**: 저빈도 어휘, 전문 용어, 신조어
이 22.25%가 모델의 실질적인 취약 구간이다.
#### 2-4. Mean correct-token prob = 0.4738
정답 토큰에 부여하는 평균 확률이 47%다. 이는 모델이 정답 토큰을 절반에 가까운 확률로 "가장 유력한 후보"로 지목한다는 의미로, 꽤 높은 확신도다.
NLL(Negative Log-Likelihood)과의 관계에서 PPL = exp(mean NLL) ≈ exp(ln(0.4738)) ≈ 1/0.4738 ≈ 2.11 이 되어야 하지만, 실제 측정된 엔트로피가 2.2413 nats임을 고려하면 PPL ≈ exp(2.2413) ≈ 9.4 수준이다. 이는 10,240 토큰 subset의 통계로, 전체 검증셋의 PPL=6.95와 다소 차이가 있으나 subset 샘플링 편향 범위 내다.
#### 2-5. Mean entropy = 2.2413 nats
- **bits 변환**: 2.2413 / ln(2) ≈ 3.23 bits
- **유효 후보 수**: 2^3.23 ≈ 9.4개의 토큰이 실질적으로 경쟁한다는 의미
- **해석**: 64K vocabulary 중 매 step마다 평균 약 9~10개의 토큰이 의미 있는 확률을 가진다는 뜻으로, 모델이 충분히 confident하면서도 완전히 결정론적이지 않음을 보여준다. 이 수준의 엔트로피는 반복 없이 다양한 생성이 가능한 healthy한 분포를 의미한다.
---
### 3. 종합 평가
캘리브레이션은 전반적으로 건강한 수준이다. 핵심 지표를 종합하면:
1. **예측 품질 양호**: Accuracy@1 = 56%, Accuracy@5 = 72%로, 모델이 다음 토큰을 잘 예측하며 불확실한 경우에도 합리적인 후보군을 제시한다.
2. **적절한 확신도**: 평균 정답 확률 47%, 평균 엔트로피 2.24 nats로, 모델이 너무 자신 없거나(under-confident) 너무 자신만만하지(over-confident) 않다. 이는 temperature=1.0에서 생성이 합리적으로 작동할 것을 시사한다.
3. **Greedy decoding 적합성**: Top-1이 56%이면 greedy decoding도 합리적인 결과를 줄 수 있다. 단, 다양성은 부족하므로 실제 생성 애플리케이션에서는 sampling이 권장된다.
4. **취약 구간 존재**: Top-10 밖의 22.25% 토큰이 모델의 실질적 약점이며, 이는 주로 factual knowledge(사실 지식) 부족에서 기인한다. 이 부분은 더 많은 학습 데이터 또는 외부 지식 소스(RAG 등) 활용으로 보완 가능하다.
---
### 4. 개선 방향
#### 4-1. 모델 크기 증가
모델 파라미터가 늘어남에 따라 Accuracy@1이 상승하는 경향이 뚜렷하다. 7B 모델은 1B 대비 @1이 10~15%p 향상되는 것이 일반적이다. 현재 1B 모델의 56%는 기반이 탄탄하여 확장 시 좋은 출발점이 된다.
#### 4-2. SFT 후 캘리브레이션 모니터링
SFT(Supervised Fine-Tuning) 이후 캘리브레이션이 변할 수 있다. 일반적으로 SFT 후 모델은 특정 응답 패턴에 over-confident해지는 경향이 있어 accuracy가 약간 하락하고 엔트로피가 낮아질 수 있다. SFT 완료 후 동일 지표로 재측정하여 비교를 권장한다.
#### 4-3. Temperature 튜닝
현재 캘리브레이션 결과를 활용하여 최적 temperature를 결정할 수 있다. 평균 엔트로피 2.24 nats 기준:
- **Temperature < 1.0**: 엔트로피 감소, 결정론적 생성, 반복 위험 증가
- **Temperature = 1.0**: 현재 캘리브레이션 그대로 유지
- **Temperature 0.7~0.8**: 다양성과 coherence의 균형점으로 추천
Temperature scaling을 통해 ECE(Expected Calibration Error)를 최소화하는 최적값을 찾는 후처리 캘리브레이션도 고려할 수 있다.
#### 4-4. Top-10 밖 취약 토큰 분석
22.25%의 Top-10 밖 토큰을 별도로 수집·분석하여 이들의 도메인 분포를 파악하면, 추가 학습 데이터 수집 방향을 결정하는 데 활용할 수 있다. 예를 들어 고유명사 관련 토큰이 많다면 위키피디아 기반 데이터를 보강하는 것이 효과적이다.
---
## 요약
| 구분 | 지표 | 값 | 평가 |
|------|------|---:|:----:|
| 반복 분석 | DEGENERATE 비율 | 30% (3/10) | 1B base 수준에서 정상 범위 |
| 반복 분석 | 평균 4-gram 반복률 | 25.7% | 자연스러운 프롬프트에서 낮음 |
| 캘리브레이션 | Accuracy@1 | 56.18% | 양호 |
| 캘리브레이션 | Accuracy@5 | 72.35% | 양호 |
| 캘리브레이션 | Mean entropy | 2.24 nats | 건강한 분포 |
**결론**: korean_1b_fp8_run1 모델은 캘리브레이션 측면에서 1B pretrain 모델로서 건강한 상태를 보인다. 반복 퇴화는 사실 기반·코드 프롬프트에서 국소적으로 발생하며, sampling 전략 개선(repetition penalty, top-p)으로 즉시 완화 가능하다. 향후 SFT/DPO 단계에서 근본적인 개선이 예상된다.