Whisper large-v3에서 beam search는 greedy보다 정확도 이득이 거의 없다
·수정 1회
요약
- 한국어 대화 녹음에 large-v3를 돌려 보니 beam5는 greedy보다 통계적으로 뚜렷하게 낫지 않았다. 조건에 따라서는 오히려 나빴다. 그런데 시간은 조건에 따라 1.5~2.1배 더 들었다
- beam search는 "모델이 확률 높다고 보는" 후보를 고르지 "정답에 가까운" 후보를 고르지 않는다. (추정) 모델이 이미 확신하는 자리가 대부분이라 beam이 골라낼 게 적은 것일 수 있다. 토큰 확률분포는 직접 재지 않았다
- faster-whisper 기본값이 beam_size=5라서, 기본값 그대로 쓰면 이득 없이 비용만 내고 있을 수 있다
본문
beam search가 고르는 기준
- beam search는 매 단계에서 모델이 판단한 확률이 높은 순으로 후보 5개를 유지한다 (정의)
- (추론, 미검증) 그래서 모델이 틀리게 믿고 있으면 후보 5개도 그 믿음 안에서 나올 가능성이 크다. beam은 모델의 판단 자체를 고쳐 주지 못한다
큰 모델에서 beam과 greedy가 비슷해지는 이유 (추론)
- 두 가지 상황을 비교하면
- (A) 1순위 95%, 2순위 3%, …처럼 한 후보가 압도적
- (B) 35% / 33% / 30%처럼 후보들이 팽팽
- beam이 greedy와 다른 선택을 할 여지가 생기는 건 B다
- (추론) large-v3는 대부분의 위치에서 A에 가까울 것이다. 그래서 beam과 greedy가 대부분 같은 토큰을 고른다
- 관측 근거: 이어받기를 끈 조건에서 두 출력을 서로 비교하면 글자 기준 3~7%만 달랐다. 차이는 주로 거↔것, 아↔애, 엔↔은 같은 표기와 "그/뭐/이제/음음" 같은 추임새였다. 단어가 통째로 달라진 곳도 일부 있었다
- 토큰 확률분포 자체는 측정하지 않았다
남은 오류 유형 (greedy+VAD vs 정답, 22파일)
- 추임새 누락: 정답에만 있는 글자의 빈도가 어 106, 그 70, 음 64, 아 50, 뭐 45였다. 원인은 확인하지 않았다. Whisper가 비유창성(disfluency)을 지우는 경향이 있다는 통념과 맞는 관찰일 뿐이다
- 표기 차이: 것↔거(~78), 어→아(44), 애→아(33), 일→1(12), 아홉→9 같은 글자 단위 치환이다. 대부분 둘 다 맞는 표기로 판단했다. 이런 표기를 맞춰 줘도 CER은 0.171 → 0.163으로 조금만 내려갔다
- 반복 루프: 정답보다 결과에 더 들어간 글자(8자 이상 구간) 중 57%가 반복이었다
- 환각: 엉뚱한 라틴 문자 텍스트가 약 2%였다
- (추론) 추임새와 표기 문제는 모델이 확률 높다고 보는 쪽으로 나오는 결과라, 확률 높은 후보를 더 찾는 beam으로는 안 고쳐질 것이다
반복 루프에서는 beam이 오히려 불리했다
- 관측 (4파일 × 3회 반복, VAD 켬, GPU):
| 조건 | 평균 CER | 실행 간 CER 편차 | 파일당 시간 |
|---|---|---|---|
| 이어받기 켬 + greedy | 0.139 | 0.017 | 72초 |
| 이어받기 켬 + beam5 | 0.165 | 0.052 | 152초 |
| 이어받기 끔 + greedy | 0.131 | 0 | 40초 |
| 이어받기 끔 + beam5 | 0.129 | 0 | 58초 |
- (추론) 반복되는 문장은 앞 문맥을 그대로 따라 쓰는 거라 모델 입장에서 확률이 높다. 문장 전체의 확률이 높은 경로를 찾는 beam은 그 반복 경로로 몰리기 쉽다. 이어받기를 켜면 루프가 다음 창으로 번지니 그 차이가 커지는 것 같다
- 같은 방향의 문헌 (Whisper 환각 논문, 비음성 오디오 조건):
More hallucinations occur for higher beam size values. The lowest hallucination rate is achieved for beam size equal to 1.
- 반대 방향의 문헌 (Whisper 원 논문이 beam 5를 쓰는 이유):
we use beam search with 5 beams using the log probability as the score function, to reduce repetition looping which happens more frequently in greedy decoding.
- 해석: 원 논문은 greedy에서 루프가 더 잦다고 본다. 이번 실험(VAD를 켠 한국어 대화)에서는 이어받기를 켜면 beam5가 더 나빴고, 끄면 둘이 동률이었다
실험 결과 요약 (faster-whisper 1.2.1, large-v3, VAD 켬)
| 조건 | 결과 |
|---|---|
| GPU L4 fp16, 22파일, 기본 설정 | CER beam5 0.176 vs greedy 0.168. 파일별 평균 차이 −0.004 (t=−0.33, 유의하지 않음). 처리 시간은 greedy가 약 1.7배 빠름 (두 워커가 GPU를 동시에 나눠 써서 근사치) |
| GPU, 이어받기 끔, 4파일 × 3회 | CER beam5 0.129 vs greedy 0.131. 시간은 beam5가 1.45배 |
| CPU M4 Pro int8, 3파일 | RTF beam5 0.55 vs greedy 0.29 (1.9배) |
- 판단: 이 조건(한국어 대화, large-v3, VAD)에서는 greedy를 기본값으로 쓰는 게 낫다. beam으로 얻는 정확도는 확인되지 않았고, 비용은 확실히 더 든다
- 한계: 한국어 대화 22파일(11개 세션 × 2채널, 세션 그룹 7개)뿐이다. 다른 큰 모델, 작은 모델, 잡음 많은 오디오에서는 B 상황이 늘어서 beam 이득이 커질 수 있다(추론, 미검증)
참고
- faster-whisper BatchedInferencePipeline은 production blocker급 미해결 이슈가 다수 있다
- WhisperX는 VAD로 청크 의존성을 제거해 배치 추론을 가능하게 한다
- Whisper 음성 처리와 최적화 방식
- 정답 전사가 없어도 변형 간 이탈 패턴으로 오디오 열화를 판별할 수 있다
- Radford et al., Robust Speech Recognition via Large-Scale Weak Supervision — https://arxiv.org/pdf/2212.04356
- Investigation of Whisper ASR Hallucinations Induced by Non-Speech Audio — https://arxiv.org/html/2501.11378v1