어텐션 메커니즘
더 많은 작업

어텐션 메커니즘(Attention mechanism)은 인공신경망에서 입력 시퀀스의 각 요소가 출력에 기여하는 중요도를 동적으로 계산하여 반영하는 기법이다. 원래는 신경망 기계번역(NMT)에서 제안되었으며, 이후 다양한 자연어 처리와 컴퓨터 비전 분야에서 널리 활용되고 있다.
전통적인 시퀀스-투-시퀀스(seq2seq) 구조에서는 인코더가 입력 시퀀스 전체를 고정된 길이의 벡터로 요약하고, 디코더가 그 벡터를 바탕으로 출력을 생성하였다. 그러나 긴 문장의 경우 정보 손실이 발생하여 성능이 제한적이었다. 어텐션 메커니즘은 출력의 각 단계마다 입력 시퀀스 전체를 다시 참조하여, 관련성이 높은 부분에 더 높은 가중치를 주고 낮은 부분에는 낮은 가중치를 주는 방식으로 문제를 해결한다.[1]
어텐션은 일반적으로 쿼리(Query), 키(Key), 값(Value)의 세 가지 요소를 사용한다.
- 쿼리(Query): 현재 디코더 상태와 같은 "집중해야 할 대상"
- 키(Key): 입력 시퀀스 각 요소의 표현
- 값(Value): 실제 참조할 입력의 정보
쿼리와 키를 비교하여 유사도를 계산한 후, 이를 확률적 가중치로 변환한다. 그 가중치를 값 벡터와 결합하여 최종적으로 어텐션 출력을 생성한다.
인코더-디코더 어텐션
- 출력(타겟) 시퀀스의 각 단어를 생성할 때, 입력(소스) 시퀀스의 모든 단어와의 관계를 계산한다. 기계 번역 모델에서 주로 사용된다.
셀프 어텐션(Self-Attention)
- 쿼리, 키, 값이 모두 동일한 입력 시퀀스에서 생성된다. 시퀀스 내부의 토큰 간 관계를 학습할 수 있어 트랜스포머 아키텍처의 핵심 구성 요소가 되었다.
멀티헤드 어텐션(Multi-Head Attention)
- 셀프 어텐션을 병렬로 여러 번 수행하여 다양한 표현 공간에서 관계를 학습한다. 최종적으로 여러 헤드의 출력을 결합해 더 풍부한 표현을 얻는다.
어텐션 메커니즘은 처음에는 기계 번역에서 제안되었으나, 이후 다양한 분야에서 사용되고 있다.
- 기계 번역, 텍스트 요약, 질의응답 등 자연어 처리 전반
- 이미지 분류, 객체 탐지, 이미지 캡셔닝 등 컴퓨터 비전
- 음성 인식 및 합성
어텐션 메커니즘은 입력 시퀀스 길이를 n, 은닉 차원을 d라고 할 때, Q와 K의 내적 연산에서 n×n 크기의 어텐션 행렬을 계산해야 한다. 이 때문에 계산량은 n의 제곱에 비례하며, 긴 시퀀스를 처리할 때 연산 비용과 메모리 사용량이 크게 증가한다. 특히 셀프 어텐션(Self-Attention)은 쿼리와 키가 동일한 시퀀스에서 생성되므로 이러한 비용 문제가 두드러진다.
이 한계를 완화하기 위해 다양한 효율화 기법들이 제안되었다.
- 로컬 어텐션(Local Attention): 전체 시퀀스가 아니라 일정 범위(윈도우) 안의 토큰들만 참조하여 계산량을 줄인다. (예: Transformer-XL, Longformer)
- 희소 어텐션(Sparse Attention): 어텐션 행렬의 연결 구조를 처음부터 제한해 일부 중요한 연결만 유지한다. 이 방식은 모든 토큰 쌍을 계산하지 않기 때문에 연산량 자체를 줄일 수 있다. (예: BigBird)
- 저랭크 근사(Low-rank Approximation): 큰 어텐션 행렬을 저차원으로 근사하여 효율적으로 계산한다. (예: Linformer)
- 커널 기반 어텐션(Kernelized Attention): softmax 어텐션을 커널 함수로 근사해 계산 복잡도를 n에 비례하거나 n log n 수준으로 줄인다. (예: Performer)
- 토큰 프루닝(Token Pruning): 중요도가 낮은 토큰을 완전히 제거하거나 무시해 시퀀스 길이를 줄인다. 정보 손실이 발생할 수 있으나 효율성은 높아진다.
- 토큰 머징(Token Merging): 중요도가 낮은 토큰을 단순히 제거하지 않고, 인접하거나 유사한 토큰들을 합쳐 새로운 토큰으로 만든다. 이 방식은 시퀀스 길이를 줄이면서도 정보를 압축해 보존한다. (예: 최근 비전 트랜스포머에서의 패치 병합 기법)
이러한 기법들은 기존 어텐션의 제곱형 복잡도를 완화하여, 긴 문서 처리나 대규모 모델 학습에 널리 활용되고 있다.
- 2014년: Bahdanau 등이 신경망 기계 번역에서 처음 제안
- 2015년: Luong 등이 확장된 어텐션 방식을 제시
- 2017년: Vaswani 등이 트랜스포머 논문에서 셀프 어텐션과 멀티헤드 어텐션을 도입
- 이후 LLM(대규모 언어 모델)과 비전 트랜스포머 등 최신 모델의 핵심 기술로 발전
시퀀스투시퀀스(sequence-to-sequence, seq2seq)는 입력 시퀀스를 받아 다른 시퀀스를 출력하는 인코더-디코더 구조이다. 기계 번역처럼 입력과 출력의 길이가 다른 문제에 쓴다.
- 인코더는 RNN이나 LSTM으로 입력 단어를 차례로 읽고, 마지막 은닉 상태에 입력 전체의 정보를 압축한다. 이 고정 길이 벡터를 컨텍스트 벡터(context vector)라 한다.
- 디코더는 컨텍스트 벡터를 받아(첫 은닉 상태로 삼아) 출력 단어를 하나씩 생성해 출력 시퀀스를 만든다.
- 입력이 길어도 컨텍스트 벡터의 크기는 고정되어 있어 앞부분 정보가 손실되는 병목이 생긴다. 어텐션은 디코더가 단어를 만들 때마다 인코더의 모든 은닉 상태에 가중치를 주어 합한 컨텍스트 벡터를 매 단계 새로 만들어 이 문제를 줄인다.
| 용어 | 뜻 |
|---|---|
| 컨텍스트 벡터 | seq2seq 에서 인코더가 입력 시퀀스를 요약해 디코더에 넘기는 벡터 |
| 고유벡터 | 선형대수에서 행렬 A 에 대해 Av = λv 를 만족해 방향이 바뀌지 않는 벡터. 주성분 분석 등에 쓴다 |
| 기저벡터 | 벡터 공간의 모든 벡터를 일차결합으로 나타낼 수 있게 하는 일차독립인 벡터들 |
| 영벡터(공벡터) | 모든 성분이 0 인 벡터 |
- 고유벡터·기저벡터·영벡터는 선형대수 용어이고, 인코더가 만들어 디코더가 받는 벡터는 컨텍스트 벡터이다.
- Bahdanau, D., Cho, K., Bengio, Y. (2014). Neural Machine Translation by Jointly Learning to Align and Translate. ICLR.
- Luong, M., Pham, H., Manning, C. D. (2015). Effective Approaches to Attention-based Neural Machine Translation. EMNLP.
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.
- ↑ Bahdanau, D., Cho, K., Bengio, Y., "Neural Machine Translation by Jointly Learning to Align and Translate", 2014