Self-attention은 Transformer의 심장입니다.
일반 어텐션이 「출력이 입력을 본다」면, self-attention은 「입력이 자기 자신을 본다」는 뜻입니다.
한 문장 안의 모든 단어가 서로를 바라보며 「누가 누구와 관련 있는가」를 계산합니다.
예를 들어 「The cat sat on the mat」 문장에서 「sat」의 의미를 이해하려면 「cat」(누가 앉았는가)에 강하게 주목해야 하고, 「the」 같은 관사보다 「mat」(어디에 앉았는가)에 더 많이 주목해야 합니다.
self-attention은 이 「누가 누구를 봐야 하는가」를 학습으로 자동 결정합니다.
기술적으로 각 단어는 자기 자신의 「쿼리·키·값」 벡터를 만듭니다.
그 다음 자기 쿼리와 다른 모든 단어의 키를 비교해 「얼마나 관련 있는지」 점수를 계산하고, 그 점수로 다른 모든 단어의 값들을 가중 평균해 자기 새 표현을 만듭니다.
비유하자면 self-attention은 「회의실의 모든 사람이 동시에 다른 모든 사람을 보면서, 누구의 의견을 얼마만큼 반영할지 각자 결정하는」 과정과 같습니다.
결과적으로 모든 사람이 「자기 + 다른 모두」의 정보가 통합된 새 의견을 가지게 됩니다.
self-attention의 큰 장점은 「거리에 무관하게」 정보가 전달된다는 점입니다.
100 단어 떨어진 두 단어 사이의 관계도 단 한 번의 계산으로 잡을 수 있습니다.
단점은 계산량이 시퀀스 길이의 제곱(O(n²))으로 늘어 매우 긴 문장에서는 부담이 된다는 점이며, 이를 줄이는 다양한 변형 연구가 활발합니다.
한 줄 요약
Self-attention은 한 문장 안의 모든 단어가 서로를 바라보며 관련도를 계산해 새 표현을 만드는 메커니즘으로, 거리에 무관한 정보 전달을 가능하게 한 Transformer의 심장입니다.
더 알아볼 것
- Q·K·V 벡터의 직관적 의미
- 계산 복잡도 O(n²)와 그 한계
- FlashAttention — 어텐션의 메모리 최적화