멀티헤드 어텐션Multi-Head Attention

같은 장면을 여러 관점이 동시에 보는 어텐션

핵심 정리
  • 멀티헤드 어텐션은 같은 입력을 여러 갈래가 각자 다르게 살펴본 뒤 하나로 합치는 방식이에요.
  • 갈래 하나를 헤드라고 불러요. 헤드마다 무엇에 비중을 두는지가 달라요.
  • 한 갈래만 쓰면 여러 관계가 평균으로 뭉개져요. 나눠 놓으면 각자 다른 관계를 또렷하게 잡아요.
  • 나눈다고 일이 늘지는 않아요. 원래 하나가 쓰던 폭을 헤드끼리 쪼개 나눠 가져요.
  • 살펴본 결과는 마지막에 이어 붙여 한 덩어리로 정리돼 다음 단계로 넘어가요.
목차

1비유로 이해하기

합창단은 같은 가사를 부르지만 성부가 나뉘어 있어요. 소프라노는 높은 선율을, 알토는 그 아래를, 테너와 베이스는 더 아래를 맡아요. 같은 악보 같은 가사인데 각 성부가 듣는 자리와 맡는 몫이 달라요. 그리고 네 갈래는 마지막에 한 화음으로 합쳐져 하나의 소리가 돼요. 멀티헤드 어텐션이 이 구조예요.

성부를 나누지 않고 모두가 같은 선율만 부르면 어떻게 될까요. 소리는 나지만 두께가 없어요. 화음이 주는 풍부함은 서로 다른 것을 동시에 부를 때만 생겨요.

성부를 나눈다고 부르는 사람이 늘어나는 것도 아니에요. 같은 인원을 넷으로 갈라 배치한 것뿐이에요.

2자세히 알아보기

헤드마다 맡는 관계가 달라요

한 문장을 놓고 헤드들이 무엇에 비중을 뒀는지 들여다보면 제법 뚜렷한 성격이 보여요. 어떤 헤드는 바로 앞 낱말에 꾸준히 비중을 둬요. 말이 이어지는 흐름을 붙잡는 쪽이에요. 어떤 헤드는 주어와 동사처럼 멀리 떨어진 짝을 이어 줘요. 또 어떤 헤드는 문장 첫머리나 문장 부호 쪽으로 비중을 몰아 두기도 해요.

이 역할을 사람이 나눠 준 게 아니에요. 학습이 진행되면서 헤드들이 알아서 서로 다른 일을 맡게 됐어요. 같은 일을 하는 헤드가 여럿 있으면 손해니까, 자연스럽게 갈라진 거예요.

다만 모든 헤드가 사람이 알아볼 만한 역할을 맡지는 않아요. 무엇을 하는지 설명하기 어려운 헤드도 많고, 없애도 성능이 거의 떨어지지 않는 헤드도 있어요.

하나만 쓰면 뭉개져요

헤드가 하나뿐이면 비중을 한 벌만 계산해요. 그런데 문장 안에는 동시에 성립하는 관계가 여럿이에요. "지수가 어제 산 케이크를 동생이 먹었다"에서 누가 샀는지, 무엇을 먹었는지, 언제인지가 모두 따로 붙어야 해요.

비중이 한 벌뿐이면 이 관계들을 한 표에 우겨 넣어야 하니 서로 섞여요. 어느 쪽에도 크게 기울지 못하고 평균 근처에 머무는 밋밋한 결과가 나와요. 합창단 전원이 한 선율만 부르는 상태와 같아요.

헤드를 나누면 각자 자기 관계만 또렷하게 볼 수 있어요. 서로 눈치 볼 필요 없이 각자 비중을 몰아 줄 수 있으니까요.

나눈다고 일이 늘지 않아요

여기서 자주 오해가 생겨요. 헤드를 여덟 개로 늘리면 계산도 여덟 배가 될 것 같지만 그렇지 않아요. 원래 한 헤드가 쓰던 폭을 여덟로 쪼개 나눠 갖기 때문이에요. 각 헤드는 좁아진 폭에서 일하고, 합쳐 놓으면 원래 폭으로 돌아와요.

합창단이 넷으로 나뉘어도 단원 수가 늘지 않는 것과 같아요. 같은 인원을 어떻게 배치했느냐의 문제예요. 덕분에 계산 비용을 거의 그대로 두고 표현력만 얻을 수 있어요.

마지막에 한 덩어리로 합쳐요

헤드마다 나온 결과는 따로따로 남지 않아요. 순서대로 이어 붙여 원래 폭의 한 덩어리로 만들고, 거기에 한 번 더 정리 과정을 거쳐요. 이 정리 단계에서 헤드들의 결과가 서로 섞이고 비중이 조절돼요.

이어 붙이기만 하고 끝내면 헤드들이 서로 남남으로 남아요. 마지막 정리가 있어야 네 성부가 한 화음이 되는 거예요.

헤드가 많을수록 좋지는 않아요

헤드를 계속 늘리면 각 헤드가 쓰는 폭이 그만큼 좁아져요. 폭이 너무 좁아지면 담을 수 있는 정보가 줄어서 오히려 성능이 떨어져요. 그래서 모델 크기에 맞춰 적당한 개수를 고르고, 보통은 여덟에서 수십 개 사이를 써요.

학습이 끝난 모델을 살펴보면 별 역할을 하지 않는 헤드가 상당수 발견돼요. 이런 헤드를 걷어 내 모델을 가볍게 만드는 방법도 연구돼 왔어요.

3조금 더 정확하게

멀티헤드 어텐션은 입력을 헤드 수만큼의 부분 공간으로 나눠 각각 어텐션을 계산한 뒤, 결과를 이어 붙이고 한 번 더 선형 변환해 원래 차원으로 되돌리는 구조예요. 각 헤드의 차원은 보통 전체 차원을 헤드 수로 나눈 값이라, 전체 계산량은 헤드 하나를 쓸 때와 비슷하게 유지돼요.

헤드들은 서로 다른 질의, 키, 값 변환을 학습해요. 이 변환이 다르기 때문에 같은 입력에서도 서로 다른 비중 표가 나와요. 헤드 수와 헤드당 차원은 층마다 같게 두는 것이 보통이에요.

비유가 어긋나는 지점도 있어요. 합창단은 성부마다 맡는 음역이 악보에 미리 적혀 있지만, 헤드에는 그런 지정이 없어요. 무엇을 맡을지는 학습 과정에서 저절로 갈렸고, 사람이 나중에 들여다보며 짐작할 뿐이에요. 또 합창은 소리가 실제로 겹쳐 울리지만, 헤드의 결과는 겹치는 게 아니라 나란히 이어 붙인 뒤 다시 섞여요.

4직접 해보기

5흔한 오해

  • 헤드를 늘리면 계산량도 그만큼 늘어난다고 생각하기 쉽지만, 실제로는 전체 폭을 나눠 갖기 때문에 비용이 거의 그대로예요.

  • 헤드가 많을수록 성능이 좋아진다고 여기기 쉽지만, 실제로는 헤드당 폭이 좁아져서 지나치게 늘리면 오히려 나빠져요.

  • 헤드마다 사람이 역할을 정해 줬다고 생각하기 쉽지만, 실제로는 학습 과정에서 저절로 갈라진 것이라 설명하기 어려운 헤드도 많아요.

7한 줄 요약

그러니까멀티헤드 어텐션은 합창단의 성부처럼 같은 문장을 여러 갈래가 각자 다르게 살핀 뒤 한 화음으로 합치는 방식이에요.

잘못된 내용이나 더 좋은 비유가 있나요? 수정 제안 보내기 · 마지막 수정2026-09-02