dev.Log
Beam Search 쉽게 이해하기 본문
(STT·번역·LLM 디코딩에서 왜 쓰일까)
Beam Search는 음성 인식(STT), 기계 번역, 대규모 언어 모델(LLM)에서
문장을 한 토큰씩 생성할 때 더 나은 결과를 얻기 위한 탐색 전략이다.
모델은 항상 다음 단어 하나를 바로 결정하지 않는다.
여러 가능성 중에서 어떤 선택이 전체 문장으로 이어졌을 때 가장 자연스러운지를
끝까지 고려해야 하기 때문이다.
1. Greedy Search의 한계
가장 단순한 방식은 Greedy Search다.
- 매 시점마다 확률이 가장 높은 단어 하나만 선택
- 계산은 빠르지만, 초반 선택이 틀리면 되돌릴 수 없다
예를 들어 문장이 이렇게 시작했다고 하자.
다음 단어 확률이 아래와 같다면,
| 단어 | 확률 |
| 학교에 | 0.40 |
| 집에 | 0.35 |
| 밥을 | 0.15 |
| 갑니다 | 0.10 |
Greedy Search는 항상 학교에만 선택한다.
하지만 전체 문장으로 보면 집에 갑니다가 더 자연스러울 수도 있다.
2. Beam Search의 핵심 아이디어
Beam Search는 이 문제를 이렇게 해결한다.
확률이 높은 후보 K개를 동시에 유지하면서 문장을 확장한다.
여기서 K를 Beam Width라고 부른다.
- K = 1 → Greedy Search와 동일
- K > 1 → 여러 문장 후보를 병렬로 유지
3. 예제로 이해하는 Beam Search
Beam Width = 2
Step 1
확률이 높은 상위 2개 후보를 유지한다.
- 나는 오늘 학교에 (0.40)
- 나는 오늘 집에 (0.35)
Step 2
각 후보 문장을 다시 확장한다.
모델 예측 결과가 다음과 같다고 하자.
- "학교에" 다음
- 갑니다 (0.6)
- 갔습니다 (0.4)
- "집에" 다음
- 갑니다 (0.9)
- 있었습니다 (0.1)
문장 점수는 누적 확률(실제 구현에서는 log 확률) 로 계산한다.
| 문장 | 점수 |
| 나는 오늘 학교에 갑니다 | 0.40 × 0.60 = 0.24 |
| 나는 오늘 학교에 갔습니다 | 0.16 |
| 나는 오늘 집에 갑니다 | 0.35 × 0.90 = 0.315 |
| 나는 오늘 집에 있었습니다 | 0.035 |
이 중 상위 2개만 유지한다.
- 나는 오늘 집에 갑니다 (0.315)
- 나는 오늘 학교에 갑니다 (0.24)
이 과정을 문장이 끝날 때까지 반복한다.
4. Beam Search와 다른 방식 비교
| 방식 | 특징 |
| Greedy Search | 빠르지만 품질이 낮을 수 있음 |
| Beam Search | 정확도 높음, 계산량 증가 |
| Sampling (Top-k, Top-p) | 다양성 높음, 결과가 불안정 |
| Beam + Length Penalty | 번역·STT에서 자주 사용 |
5. Beam Search의 단점
1) 다양성이 낮다
비슷한 문장 후보만 여러 개 남는 경향이 있다.
그래서 LLM 대화에서는 답변이 너무 정형화될 수 있다.
2) 길이 편향 문제
확률 누적 방식 때문에 짧은 문장이 유리하다.
이를 보완하기 위해 Length Penalty를 사용한다.
6. STT와 Whisper에서의 Beam Search
STT에서는 Beam Search가 특히 중요하다.
- 여러 음성 해석 후보를 동시에 유지
- 음향 모델 점수 + 언어 모델 점수를 함께 고려
- Whisper에서도 beam_size 옵션 제공
실무적으로는 다음처럼 사용한다.
- 실시간 STT: beam size 1~5
- 오프라인 고정밀 인식: beam size 5~10
7. 한 문장 요약
Beam Search는
가능성 높은 문장 후보 K개를 끝까지 동시에 유지하며,
가장 점수가 좋은 문장을 선택하는 탐색 전략이다.
'인공지능' 카테고리의 다른 글
| Whisper vs NeMo (EPD) (0) | 2025.12.30 |
|---|---|
| 업스트림 / 다운스트림 뜻이 뭔데 개발자들이 굳이 이렇게 말할까? (0) | 2025.12.30 |
| NeMo Diarization vs pyannote.audio 구조 비교 (0) | 2025.12.30 |
| 실제 서비스에서 Speaker Diarization 성능 평가 지표(DER) 정리 (1) | 2025.12.30 |
| NVIDIA NeMo Speaker Diarization(SD) 구조 정리 (0) | 2025.12.30 |