멀티헤드 어텐션 (Multi-Head Attention)
쉽게 풀면
하나의 어텐션 메커니즘만 사용하면 한 가지 기준으로만 단어들 사이의 관계를 살펴보게 돼요. 멀티헤드 어텐션은 어텐션 연산을 여러 개의 독립적인 '헤드'로 나누어 동시에 수행하는데, 각 헤드가 서로 다른 부분 공간에서 서로 다른 종류의 관계(예: 하나는 문법적 관계, 하나는 의미적 관계)에 주목하도록 학습됩니다.
마치 같은 문장을 여러 명의 전문가가 각자 다른 관점에서 동시에 분석한 뒤 의견을 종합하는 것과 비슷해요. 이렇게 여러 관점을 병렬로 결합함으로써 트랜스포머가 훨씬 풍부하고 다양한 문맥 정보를 포착할 수 있게 됩니다.
왜 중요한가
멀티헤드 어텐션은 트랜스포머 아키텍처의 핵심 구성요소로, 자연어처리뿐 아니라 이미지, 음성, 멀티모달 모델에 이르기까지 폭넓게 재사용되고 있습니다. 단일 어텐션보다 다양한 유형의 관계를 동시에 표현할 수 있어 모델의 표현력을 크게 높이며, 이 때문에 대규모 언어모델과 비전 트랜스포머를 다루는 논문에서 거의 예외 없이 등장하는 기본 구성요소로 다뤄집니다.
어떤 절차인가
- 선형 변환으로 쿼리·키·값 만들기: 입력 표현 X(토큰 수 n × 모델 차원 dmodel)에 헤드마다 다른 가중치 행렬 WiQ, WiK, WiV를 곱해 Qi, Ki, Vi를 만듭니다. 각 헤드의 차원은 보통 dk = dmodel ÷ h로 정합니다.
- 헤드별 스케일드 점곱 어텐션: 헤드마다 softmax(QiKiT ÷ √dk)Vi를 계산합니다. 헤드끼리 서로 독립이므로 병렬로 계산할 수 있습니다.
- 이어 붙이기: h개 헤드의 결과를 옆으로 이어 붙입니다.
- 출력 변환: 이어 붙인 결과에 WO를 곱해 dmodel 차원으로 합칩니다.
Vaswani 외(2017)의 기본 모델은 h = 8, dmodel = 512, dk = dv = 64를 썼습니다. 관련 개념은 어텐션 메커니즘과 트랜스포머 구조에서 다룹니다.
언제 쓰고 무엇을 얻나
언제 쓰나: 트랜스포머의 인코더 자기어텐션, 디코더 자기어텐션, 인코더-디코더 교차어텐션에 모두 쓰이며, 비전 트랜스포머 같은 다른 영역에도 그대로 옮겨졌습니다.
무엇을 얻나: 헤드마다 서로 다른 부분 공간에서 토큰 사이의 관계를 보므로, 한 번의 어텐션보다 다양한 관계를 동시에 표현할 수 있습니다. 매개변수 수를 늘리지 않고 이렇게 나눌 수 있다는 점이 설계의 특징입니다. dmodel = 512에서 헤드 수만 바꿔 계산하면 다음과 같습니다(편향 제외).
| 헤드 수 h | 헤드 차원 dk | 투영 가중치 수 (3·h·dmodel·dk + dmodel²) |
|---|---|---|
| 1 | 512 | 1,048,576 |
| 8 | 64 | 1,048,576 |
| 16 | 32 | 1,048,576 |
헤드 수와 관계없이 가중치 수가 같습니다. 헤드를 늘려도 모델이 자동으로 좋아지는 것은 아닙니다. Voita 외(2019)는 학습된 번역 모델에서 소수의 헤드가 주된 역할을 하고 나머지는 성능 손실이 작게 잘라 낼 수 있음을 보였고, Michel 외(2019)도 많은 헤드를 테스트 때 제거해도 성능이 크게 떨어지지 않는 경우가 많다고 보고했습니다.
변형: 디코딩의 메모리 비용을 줄이려고 모든 헤드가 키와 값을 공유하는 멀티쿼리 어텐션(Shazeer, 2019), 그 중간 단계인 그룹쿼리 어텐션 같은 변형이 쓰입니다.
논문에는 이렇게 적는다
- 구조를 적을 때는 층 수, 헤드 수 h, 모델 차원 dmodel, 헤드 차원 dk, 드롭아웃 비율을 함께 제시합니다. 예: “인코더는 h = 8인 멀티헤드 어텐션 층으로 구성하였다.”
- 헤드 수를 바꾼 실험(절제 연구)이라면 dmodel을 고정했는지, 매개변수 수를 맞췄는지를 밝혀야 공정한 비교가 됩니다.
- “헤드가 문법 관계에 주목한다”처럼 헤드의 역할을 해석하는 문장에는 근거(어텐션 가중치 시각화, 가지치기 실험)를 붙여야 합니다. 어텐션 가중치가 곧 설명이라는 해석은 논쟁이 있으므로 단정하지 않는 것이 안전합니다.
- 경사하강법으로 학습하는 일반 매개변수와 같으므로, 학습 설정(옵티마이저, 학습률)은 별도로 적습니다.
논문에서는 이렇게 쓰입니다
실제 논문에서
이 용어를 직접 쓴 국내 논문 문장을 아직 수집하지 못했습니다. 수집되는 대로 출처와 함께 싣겠습니다.
예시 문장
아래는 용어의 쓰임을 보여 주려고 만든 예시로, 실제 논문에서 가져온 문장이 아닙니다.
어텐션 연산을 8개의 독립된 헤드로 나누어 병렬 수행하고 그 결과를 결합하는 구조를 사용했다는 뜻이다.
이미지 처리 분야에서 이미지를 패치 단위로 나눈 뒤 멀티헤드 어텐션으로 패치들 사이의 관계를 학습한 예다.
기계번역 모델에서 디코더가 입력 문장의 여러 부분을 다양한 헤드로 동시에 참조하는 구조를 설명한 예다.
조금 더 깊게 보면
멀티헤드 어텐션 논문을 읽을 때는 헤드 수와 각 헤드의 차원(head dimension)이 전체 모델 차원을 어떻게 나누어 구성되는지, 그리고 헤드별 결과가 최종적으로 선형변환을 거쳐 어떻게 하나로 합쳐지는지를 함께 살펴보는 것이 도움이 됩니다. 최근에는 계산 비용과 메모리 사용량을 줄이기 위해 여러 헤드가 키와 값을 공유하는 멀티쿼리 어텐션이나 그룹쿼리 어텐션 같은 변형 기법도 연구되고 있습니다.
주의할 점
헤드 개수를 늘린다고 항상 성능이 좋아지는 것은 아니며, 오히려 일부 헤드는 학습 후에 거의 중복되거나 불필요한 역할을 하는 경우도 있다는 연구가 있다.
헷갈리기 쉬운 용어
어텐션 관련 용어는 층위가 다릅니다.
| 용어 | 핵심 | 관계 |
|---|---|---|
| 어텐션 메커니즘 | 입력의 각 부분에 가중치를 주어 합치는 일반 원리 | 상위 개념 |
| 멀티헤드 어텐션 | 어텐션을 여러 헤드로 나누어 병렬 수행하고 합침 | 어텐션의 구성 방식 |
| 셀프어텐션 / 교차어텐션 | 쿼리·키·값이 같은 입력에서 오는지, 다른 입력에서 오는지의 차이 | 멀티헤드와 독립된 축 |
| 트랜스포머 구조 | 멀티헤드 어텐션과 피드포워드 층을 쌓은 모델 | 멀티헤드가 들어가는 상위 구조 |
참고 문헌
- Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, Ł., & Polosukhin, I. (2017). Attention is all you need. Advances in Neural Information Processing Systems 30.
- Voita, E., Talbot, D., Moiseev, F., Sennrich, R., & Titov, I. (2019). Analyzing multi-head self-attention: Specialized heads do the heavy lifting, the rest can be pruned. Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics.
- Michel, P., Levy, O., & Neubig, G. (2019). Are sixteen heads really better than one? Advances in Neural Information Processing Systems 32.
- Shazeer, N. (2019). Fast transformer decoding: One write-head is all you need. arXiv preprint arXiv:1911.02150.
표의 기준값은 위 문헌에 근거한 관례이며, 분야·학술지마다 다른 기준을 쓸 수 있습니다.