기존의 번역 방식: RNN 기반 인코더-디코더 모델

인코더는 입력 문장을 단어(토큰)을 순서대로 읽어 지금까지의 정보를 담은 은닉 상태를 갱신한다. 그리고 입력 문장의 마지막 단어까지 처리하고 만들어진 최종 은닉 상태가 문장 전체 의미를 압축한 문맥 벡터(Context Vector)라고 한다.
디코더는 압축된 의미(문맥 벡터)를 바탕으로 출력 문장을 한 단어씩 생성한다.
모든 의미를 담기에 너무 작은 문맥 벡터

인코더-디코더 모델의 단점은 입력 문장의 길이와 관련없이 모든 정보를 고정된 크기의 벡터 하나에 담아야 한다는 것이다.
때문에, 문장이 길어질 수록 의미가 손실되는 문맥 병목(Context Bottleneck) 현상이 발생한다.
이러한 문제를 해결하기 위해, 인코더가 처리했던 모든 시점의 은닉 상태를 전부 참조하면 어떨까? 라는 아이디어로 구현된 것이 바다나우 어텐션(Bahdanau Attention) 이다.
바다나우 어텐션(Bahdanau Attention)
디코더에서 각 단계에서 새로운 단어를 생성하기 전에, 인코더의 모든 은닉 상태를 살펴본다. 그리고 현재 생성할 단어와 가장 관련성이 높은 입력 단어의 정보에 더 높은 어텐션 점수(Attention Score)를 부여하여 집중적으로 활용한다.
어텐션 메커니즘 덕분에 긴 문장에 대한 번역 품질을 높였지만, 어텐션은 인코더의 모든 은닉 상태를 저장해야 하기 때문에 메모리 사용량이 크게 증가하여 입력 문장 길이에 제한이 생겼다.
셀프 어텐션(Self-Attention)
기존 구조에서 순차적으로 정보를 처리하는 RNN의 제약이 문제로 생각되어, RNN을 제거하고 어텐션 메커니즘만 활용하여 모델을 구성하면 어떨까? 라는 아이디어로부터 트랜스포머(Transformer) 아키텍처가 시작되었다.
셀프 어텐션은 하나의 문장 내에서 단어들 사이의 관계를 직접 계산하여, 문장에서 단어가 갖는 의미를 모델이 직접 파악할 수 있게 된다.
* 본 게시글은 밑바닥부터 만들면서 배우는 LLM 강의를 참고하여 작성되었습니다.
'Tech > LLM' 카테고리의 다른 글
| [LLM] 코절 어텐션과 멀티헤드 어텐션 (0) | 2026.01.02 |
|---|---|
| [LLM] Transformer는 단어의 순서를 어떻게 알까? (위치 인코딩) (0) | 2025.12.28 |
| [LLM] 슬라이딩 윈도우로 데이터 샘플링 (0) | 2025.12.27 |
| [LLM] 바이트 페어 인코딩(BPE) (0) | 2025.12.27 |
| [LLM] 특수 문맥 토큰 (0) | 2025.12.27 |
잘못된 정보가 있다면 말씀해주세요!