brunch

10. 멀티헤드 어텐션

2장 GPT의 기반 기술, Transformer란 무엇인가?

by AI개발자
gaebalai.com (44).png

멀티헤드 어텐션(Multi-Head Attention)은 Transformer의 핵심 구성요소입니다. 이를 이해하려면 몇 가지 전제 지식이 필요하므로, 이번에는 먼저 어텐션 메커니즘(Attention Mechanism) 자체를 살펴본 후, 멀티헤드 어텐션으로 확장해 나갑니다.


① 어텐션 메커니즘 (Attention Mechanism)

먼저 기본 개념을 이해하기 위해, 아래 그림과 같은 인코더-디코더 구주의 RNN모델을 생각해 봅시다.

genai-070-1.jpg 인코더-디코더 구조를 갖는 RNN모델의 개념도

이 예시는 한국어로 "망설이면, 패배한다"를 영어로 번역하는 과정을 보여줍니다. 모델은 각 토큰을 임베딩하여 RNN에 입력하고, 은닉상태(hidden state)는 다음 토큰의 처리를 위해 사용됩니다. 디코더는 이전에 출력된 토큰을 다음 입력으로 사용합니다. <BOS>와 <EOS>는 각각 문장의 시작(Begin Of Sentence)과 끝(End Of Sentence)을 의미하는 특수토큰입니다.


이제 디코더의 출력이 어떻게 계산되는지 살펴봅시다.

첫번째 출력 토큰을 예측할 때, 인코더는 입력문장의 모든 토큰 정보를 은닉 벡터(hidden representation)에 압축해 가지고 있으며, 이 정보만을 통해 디코더 RNN이 첫번째 단어(예: 망설이면 → Hesitation)을 생성합니다.

두번째 출력 토큰을 예측할 때는 이전 출력인 Hesitation의 임베딩, 인코딩의 은닉정보, 그리고 디코더의 이전 상태

genai-071.jpg

이 결합된 새로운 은닉 벡터를 사용합니다. 이처럼 디코더의 은닉 상태는 이전 시점의 모든 정보가 누적된 형태이기 때문에, 특정 입력 위치(예: 패배한다)에 집중하는 선택적 처리가 어렵습니다.

예를 들어, 세번째 단어 "Defeat"를 출력하려면 입력문장에서 "패배한다"라는 단어 정보가 중요합니다. 하지만 단순 RNN 구조에서는 그 단어가 어디에 있는지 명시적으로 강조할 방법이 없습니다.


이 문제를 해결하기 위해, 아래 그림처럼 디코더의 각 시점에서 인코더의 모든 토큰 정보에 가중치(attention weight)를 부여해 중요한 부분에 집중하는 구조가 제안되었습니다.

genai-072.jpg 어텐션 메커니즘을 적용한 인코더-디코더 RNN의 개념도

디코더의 t번째 토큰 yt의 확률은 다음과 같이 정의됩니다.

genai-073.jpg 2-5

디코더의 은닉 상태

genai-074.jpg

는 아래와 같습니다.

genai-075.jpg

여기서 f와 g의 구체적인 형태는 중요하지 않으므로 추상화된 상태로 둡니다. 핵심은 컨텍스트 벡터(context vector) ct로 이는 인코더의 각 은닉 벡터

genai-076.jpg

에 가중치 at,i를 곱해 합한 형태입니다.

genai-077.jpg 2-7

이 ct가 어텐션의 핵심입니다.

가중치 at,i의 계산방식에는 여러 변형이 있지만, 대표적인 형태는 다음과 같습니다.

genai-078.jpg 2-8
genai-079.jpg 2-9

이 수식들을 개념적으로 해석하면, 디코더의 은닉벡터

genai-074.jpg

를 기준으로 "인코더의 어떤 토큰이 현재 예측에 더 중요한가?"를 판단해 스코어를 계산하고, 그. ㅡ코어를 정규화된 가중치 at,i로 변환하여 인코더의 은식벡터들을 가중 평균한다는 뜻입니다. 즉, 디코더는 각 시점마다 입력 문장의 모든 단어를 바라보며 중요한 단어일수록 더 큰 가중치로 집중(attend)하게 됩니다.


이 구조 덕분에 기존 RNN 기반 인코더-디코더 모델이 가진 "특정 입력 단어의 정보를 선택적으로 반영하기 어렵다"라는 한계를 극복할 수 있습니다. 이게 바로 어텐션 메커니즘의 본질입니다.



② 쿼리(Query), 키(Key), 밸류(Value)를 이용한 정식화

어텐션 메커니즘은 쿼리(Query), 키(Key), 밸류(Value)를 이용해 수식으로 표현하는 방식이 자주 사용되며, Transformer의 원 논문에서도 이 형태가 채택되어 있습니다. 이 부분에서는 이 정식화를 하나씩 살펴봅시다.


쿼리/키/벨류라는 개념은 원래 정보 검색(information retrieval) 분야에서 사용되던 것입니다. 그 구조를 도식화되면 아래 그림과 같습니다. 즉, 쿼리(Query)가 주어졌을 때, 그에 가장 잘 일치하는 키(Key)를 찾고, 그 키에 연결된 밸류(Value)를 키-밸류 저장소(Key-Value Store)에서 꺼내오는 방식입니다.

genai-081.jpg 정보 검색에서의 쿼리 개념도

쿼리(Query): 사용자가 찾고자 하는 항목 (예: "Rikhard"라는 오타 포함 문자열)

키(Key): 데이터베이스 내에서 검색 가능한 실제 항목(예: "Richard")

밸류(Value): 키에 대응하는 실제 데이터 (예: "Feynman")

→ 쿼리와 키 간의 유사도(스코어)

예를 들어, 레벤슈타인 거리(Levenshtein distance)를 계산하여 가장 높은 점수를 갖는 키를 선택하고, 그 키에 연결된 밸류를 반환합니다.


이제 이 개념을 어텐션 메커니즘에 대응시켜 봅시다. 이를 아래 그림처럼 정리할 수 있습니다.

이전의 단순한 정보검색 모델과의 차이점은 두 가지입니다.

1. 출력(Output)이 단일 밸류가 아니라, 여러 밸류의 가중합(weighted sum)형태라는 점 → 이는 식2-7에서 정의한 컨텍스트 백터 ct에 해당함

2. 키(Key)와 밸류(Value)가 동일한 데이터로 구성된다는 점 → 이는 식2-8과 식2-7의 관계에 대응함


즉, 기계번역 등에서 사용되는 인코더-디코더 기반 RNN모델의 어텐션은, '키와 밸류가 동일한' 형태의 소프트(soft) 쿼리/키/밸류 구조로 볼 수 있습니다. 이때 인코더와 디코더 사이를 연결하는 어텐션을 크로스 어텐션(cross-attention)이라 부릅니다.

반면, 쿼리/키/밸류를 모두 동일한 특징(feature) 벡터에서 생성하는 경우도 있는데, 이 구조가 바로 셀프 어텐션(self-attention)입니다. 셀프 어텐션은 Transformer 구조에서 매우 중요한 역할을 하게 됩니다.

genai-083.jpg 어텐션 메커니즘에서의 쿼리/키/밸류 개념도

1. 쿼리 계산: 디코더의 은닉 상태 또는 입력 임베딩으로부터 쿼리를 생성

2. 스코어 계산: 쿼리와 모든 키간의 유사도를 계산 (내적 등)

3. 정규화: Softmax 함수를 통해 가중치로 변환

4. 가중합 계산: 계산된 가중치로 밸류들을 가중 평균하여 최종 출력 생성

genai-084.jpg Transformer의 Scaled Dot-Product Attention연산 표현 예시

이처럼 정보검색에서의 '쿼리 → 키 → 밸류 검색'이라는 개념이 신경망 내에서의 '가중치 기반 정보 집중(attention weighting)'으로 확장된 것입니다. 결국 Transformer 어텐션은 '가장 관련있는 정보(밸류)를 쿼리에 따라 자동으로 찾아내는 확률적 검색 메커니즘"이라고 볼 수 있습니다.



③ 스케일드 닷-프로덕트 어텐션(Scaled Dot-Product Attention)

이제 준비는 끝났습니다. 다시 Transformer의 원 논문 내용으로 돌아가 봅시다. 논문에서는 스케일드 닷-프로덕트 어텐션(Scaled Dot-Product Attention)을 아래 그림처럼 여러 위치에서 도입하고 있습니다. 이후 설명할 멀티헤드 어텐션(Multi-Head Attention) 내부에서도 사용되는 핵심 메커니즘이 바로 이것입니다. 따라서 먼저 이 구조를 정확히 이해할 필요가 있습니다.


아래 그림의 가장 오른쪽에 있는 스케일드 닷-프로덱트 어텐션을 보면, Scale과 Mask(opt.)를 제외하면 앞서 설명했던 쿼리(Query)/키(Key)/밸류(Value)구조와 동일합니다. 입력 토큰 시퀀스 길이를 n이라 할 때, 다음과 같이 3개의 행렬을 정의합니다.

genai-087.jpg

각 행렬은 다음과 같은 특징 벡터들로 구성됩니다.

genai-088.jpg 식2-10

여기서 주의할 점은, 쿼리(Q)와 키(K)는 내적(QKT)연산을 수행해야 하므로 그 벡터의 차원(dkey)이 반드시 같아야 한다는 것입니다. 이 표기법을 이용하면 어텐션 메커니즘은 다음과 같이 간단히 표현할 수 있습니다.

genai-089.jpg ㅅㅣㄱ2-11

여기서 softmax함수는 각 행(row)에 대해 적용되며, 각 행은 하나의 쿼리에 대해 모든 키와의 내적이 나열된 형태입니다. 즉, 각 쿼리가 키 전체를 스캔하고 가중치를 정규화하여 밸류의 가중합을 계산하는 구조입니다.

genai-090.jpg Transformer에서 사용되는 멀티헤드 어텐션과 스케일드 닷-프로덕트 어텐션의 관계도

원 논문에서는 헤드수를 h로 표기했으나, 이 강좌에서는 표기혼동을 피하기 위해 H로 표기하였습니다. (원 논문 Figure1, Figure2를 인용함)


연습문제2-4:

genai-091.jpg

에서 QKT로 계산되는 스코어와 V의 특징 벡터를 식으로 구체적으로 전개하고, 이 연산이 어텐션 메커니즘이 수행하려는 계산과 일치함을 확인하십시오.


이제 스케일(Scale)의 역할을 살펴봅시다. 식2-11의 어텐션은 식 2-9의 스코어 함수가 단순한 내적일 때와 동일합니다. 쿼리와 키 벡터가 평균 0, 분산1의 랜덤한 값으로 이루어져 있다고 하면, 두 벡터의 내적은 평균 0, 분산이 dkey가 됩니다.

즉, 특징 차원 dkey가 커질수록 내적 값의 분산이 커지며, 이 값이 softmax함수에 입력될 때 값이 너무 커지면 기울기(gradient)가 작아져 학습이 어려워집니다. 이를 방지하기 위해 내적 결과를

genai-092.jpg

로 스케일링합니다. 이것이 바로 스케일드 닷-프로덕트(Scaled Dot-Product)라는 이름의 유래입니다.

genai-093.jpg 식2-12

연습문제2-5: softmax함수의 역전파(gradient backpropagation)를 고려할 때, 입력값이 큰 영역에서는 기울기가 작아지는 영역임을 수식적으로 확인하십시오.


이제 Mask(마스크)의 역할을 이해해 봅시다.

이를 이해하려면 Transformer에서 어텐션이 쓰이는 3가지 위치를 살펴보는 것이 도웁이 됩니다. 이는 아래 그림에서도 표시되어 있습니다.

1. 교차 어텐션( Cross-Attention)

인커더와 디코더를 연결하는 부분입니다. 쿼리는 디코더의 특징으로부터 키와 발류는 인코더의 특징으로부터 만들어집니다.

2. 인코더 내부의 자기 어텐션(Self-Attention in Encoder)

인코더의 각 계층이 이전 계층의 어느 위치의 특징을 참고할지 학습하기 위해 사용됩니다. 이 경우, 쿼리/키/밸류는 모두 인코더의 특징에서 만들어 집니다.

3. 디코더 내부의 자기 어텐션(Self-Attention in Decoder)

위 2번과 구조적으로 유사하지만 디코더 내에서 작동한다는 점이 다릅니다.


세번째의 경우가 특히 중요합니다.

인코더는 입력 시퀀스 전체를 한번에 처리할 수 있지만, 디코더는 다음 토큰을 한개씩 예측하는 순차적 처리(sequential processing)가 필요합니다.


즉, 토큰 ti를 출력하기 위해서는 그 이전의 토큰 ti를 출력하기 위해서는 그 이전의 토큰 tlLi-1이 모두 모델에 의해 이미 생성되어 있어야 합니다. 따라서 실제 추론(inference) 단계에서는 어쩔 수 없이 실제 추론 단계에서는 어쩔 수 없이 순차 처리를 해야 합니다.

하지만, 학습(training)단계에서는 이미 전체 정답시퀀스를 알고 있으므로, 모든 토큰을 한번에 입력해 병렬적으로 학습하는 것이 훨씬 효율적입니다. 이때 각 위치 i-1에서 다음 토큰 i를 예측하도록 학습합니다.

즉, 한번의 연산으로 모든 워치의 다음 토큰 예측을 동시에 수행할 수 있게 됩니다.

그러나, 단순히 인코더와 동일한 어텐션을 적용하면 현재 시점 i-1에서 계산할 때 미래의 토큰(ti+l:n)정보를 참조하게 되어 버립니다. 이는 "답을 미리 본 상태에서 학습하는 것"과 같아, 학습시와 추론시의 조건이 달라지게 됩니다. 결과적으로 실제 추론시에는 성능이 떨어지게 됩니다.


이 문제를 해결하기 위해 마스크(Mask)처리를 도입합니다. 마스크는 "미래 토큰의 정보를 무시하면서도 병렬 계산을 유지"하도록 합니다. 그 개념은 아래 그램과 같습니다.

genai-095.jpg Transformer 디코더에서의 자기 어텐션 마스크 개념도

예를 들어, "is"라는 단어의 특징을 계산할 때, 자기 어텐션 연산에서는 이전 정보들의 정보만 사용하고 "is" 이후의 단어 정보는 사용하지 않도록 마스크합니다.


구현은 간단합니다.

현재 토큰 ti이후의 토큰 ti+1:n 정보를 사용하지 않기 때문에, 식2-9의 score함수 값 중 해당 영역을 -∞(또는 충분히 큰 음수)로 설정하면 됩니다. softmax 계산 시 이 영역의 가중치는 0이 되므로, 학습 중에도 병렬 계산을 유지하면서 추론 시와 동일하게 "현재 시점 이후의 정보는 사용하지 않는" 조건을 만족할 수 있습니다. 이로써 스케일드 닷-프로덱트 어텐션의 핵심구성요소로 스케일링, 마스킹, 쿼리/키/밸류 기반 계산을 모두 이해했습니다.


결과적으로 Transformer에서는

인코딩/디코더 간의 교차 어텐션,

인코등 내부의 자기 어텐션

디보더 내부의 자시 어텐션

이 3가지 형태로 어텐션이 사용되며 이 구조들이 Transformer의 중심 메커니즘을 이룹니다.



④ 멀티헤드 어텐션(Multi-Head Attention)

③에서 다룬 'Transformer에서 사용되는 멀티헤드 어텐션과 스케일드 닷-프로덕트 어텐션의 관계도'그림 가운데 있는 멀티헤드 어텐션(Multi-Head Attention)으로 넘어가 봅시다. 이름에서 짐작할 수 있듯이, 하나의 어텐션을 여러 헤드(head)로 나누어 병렬로 수행하는 구조입니다. 즉, 특징공간(feature space)을 H개의 부분 공간으로 나누어 각각 독립적인 어텐션 연산을 적용하는 방식입니다.

구현 관점에서는 그리 복잡하지 않으며, 수식으로는 다음과 같이 표현됩니다.

genai-096.jpg 식2-13/14

여기서

genai-097.jpg

이고, 이는 입력 특징을 변환하여 각 헤드의 어텐션 연산에 맞게 투영(projection)하는 가중치 행렬입니다. 또한,

genai-098.jpg

은 각 헤드의 결과를 결합(concatenate)한 후, 이를 다시 모델의 출력차원으로 변환하기 위한 가중치 행렬입니다. Concatenate는 특정 차원 방향으로 행렬을 연결(concatenation)한다는 의미입니다.

원 논문에서는 다음과 같은 하이퍼파라미터를 사용했습니다.

즉, 전체 모델 차원이 512라면 이를 8개의 헤드로 나누어 각 헤드가 64차원의 어텐션을 학습하는 구조입니다. 이처럼 나누는 이유는 무엇일까? 논문에서는 다음과 같이 설명합니다.

“Multi-head attention allows the model to jointly attend to information from different representation subspaces at different positions.”
(멀티헤드 어텐션은 모델이 서로 다른 위치의 여러 표현 하위공간(subspace)에서 동시에 정보를 주의(attend)할 수 있게 한다.)

즉, 여러 헤드를 사용하면 서로 다른 관점에서의 정보 표현을 동시에 학습할 수 있다는 것입니다. 다만, 이 설명은 수학적 근거보다는 경험적 직관(heuristic)에 가까운 서술입니다.


비슷한 개념은 오래전 합성곱 신경망(CNN)에서도 등장했습니다. CNN은 여러 개의 커널(kernel)을 사용해 각 커널이 서로 다른 시각적 특징(예: 모서리, 질감, 방향)을 학습함으로써 전체 표현력을 높였습니다.

Transformer의 어텐션도 마찬가지입니다. 여러 개의 어텐션 헤드를 두어 각 헤드가 서로 다른 언어적 특징(semantic feature)을 학습하게 함으로써 모델이 더 다양한 문맥적 관계를 포착하도록 합니다.


원 논문은 단순히 "이럴 것이다"라는 추측에 머무르지 않고, 마지막 부분에서 멀티헤드 어텐션의 시각화(visualization) 결과를 함께 제시합니다. 아래 그림은 서로 다른 헤드가 실제로 서로 다른 언어적 패턴을 학습하고 있음을 보여줍니다.


윗쪽 그림: "Law", "application", "missing", "opinion"등의 특정 단어가 다음 층(layer)의 넓은 범위의 토큰에 영향을 미치고 있습니다.

아랫쪽 그림: 보다 많은 토큰이 가까운 주변 토큰(neighboring tokens)에 영향을 주고 있습니다.

즉, 일부 헤드는 장거리 의존성(long-range dependency)을 다른 헤드는 국소적 문맥(local context)을 담당하는 식입니다.


이러한 현상은 논문 저자의 주장을 뒷받침하는 결과로서 흥미롭습니다. 하지만, 동시에 "해석하기 좋은 사례만 골라 제시했을 가능성(일종의 체리피킹)"도 배제할 수 없습니다. 수학적으로 이러한 분화가 반드시 일어난다고 보장된 것은 아니며, 모델 설계 단계에서 상당 부분 경험적 감각과 직관에 의존하는 면이 있습니다.

genai-100.jpg 엔코더의 다섯번째 레이어의 멀티헤드 어텐션이 다른 헤드에서 어텐션 가중치를 시각화한 것(원논문의 Figure5인용)

결국, 멀티헤드 어텐션은 Transformer를 대표하는 핵심구조이자 '직관과 실험으로 완성된 장인의 구조'라고 부를만한 요소입니다.



⑤ 자기어텐션(Self-Attention)은 왜 뛰어난가?

지금까지 Transformer의 핵심 구성요소 중 가장 중요한 멀티헤드 어텐션(Multi-Head Attention)을 살펴봤습니다.하지만 원 논문에서 가장 혁신적인 부분은 '자기어텐션(Self-Attention)'의 활용방식입니다. 이번에는 왜 자기어텐션이 다른 구조보다 우월한지 그 이유를 구체적으로 설명합니다.


Transformer 논문은 자기어텐션의 강점을 3가지 관점에서 제시합니다.

1. 계산량(Computation per layer)

2. 병렬화 가능성(Parallelization)

3. 장거리 의존성(Long-range dependency)의 경로 길이(Path length)

이 3가지 기준을 RNN, CNN과 비교하며 분석합니다.


㈀ 계산량의 관점

모델은 여러 층을 쌓아 특징 벡터를 계산하기 때문에, 한 층(layer)당 필요한 연산량으로 비교합니다.


㈁ 병렬성의 관점

GPU나 TPU를 사용한 학습에서 병렬로 처리할 수 없는 부분이 많을수록 전체 속도가 느려집니다. 따라서 순차적(Sequential) 처리 부분이 얼마나 적은가가 핵심입니다.


㈂ 장거리 의존성의 경로 길이

문장에서 떨어져 있는 두 위치의 정보를 연결하려면 몇 층을 거쳐야 하는지를 의미합니다. 즉, 첫번째 토큰과 마지막 토큰이 서로 영향을 주기 위해 필요한 층수로 평가합니다.


이 3가지 측면에서 RNN, CNN 그리고 Self-Attention을 비교한 결과가 아래 그림입니다.

genai-101.jpg 모델 구조별 1층당 계산량, 순차 연산수, 최대 경로 길이 비교 (n-입력토큰길이, k-CNN커널크기, r-어텐션을 적용하는 근접토큰수)

여기서 논문은 n<<d(토큰 길이 n이 특징 차원 dmodel = 512보다 충분히 작다)라는 가정을 하고 있습니다. 현재 기준에서는 성립하지 않지만, 당시 기계번역 과제에서는 문장긿이가 보통 100 토큰 이하였기 때문에 타당했습니다. 이 내용을 시각적으로 정리한 것이 아래 그림입니다.


연습문제2-6: 제한된 자기어텐션(근접 r개의 토큰만 주의)에서도 표와 같은 계산량/순차연산수/경로길이가 성립함을 보이고, 이 경우 팽창합성곱(dilated convolution)을 사용하지 않은 일반 CNN과의 관계를 확인하십시오.


위 가정(n << d)하에서는 자기어텐션이 3가지 모든 관점에서 다른 구조보다 우수함을 확인할 수 있습니다. 하지만, 논문은 미래에서 n이 더커질 것(즉, 긴 시퀀스 처리)이 예상된다고 보고, 이에 대비해 "제한된 자기어텐션(restricted self-attention)"을 제안합니다.

To improve computational performance for tasks involving very long sequences, self-attention could be restricted to considering only a neighborhood of size r in the input sequence centered around the respective output position.
"매우 긴 시퀀스의 계산 효율을 높이기 위해, 자기어텐션의 범위를 각 출력 위치를 중심으로 하는 근접 영역 r 내로 제한할 수 있다."

즉, 자기어텐션을 전체 문맥이 아닌 부분 문맥(local window)에만 적용하면 계산량은 줄지만, 대신 최대 경로 길이는 길어집니다.


CNN의 경우, 논문에 다음과 같이 기술합니다.

O(n=k) convolutional layers in the case of contiguous kernels, or O(logk(n)) in the case of dilated convolutions
“연속 커널(consecutive kernels)을 사용할 경우 복잡도는 O(n/k), 팽창합성곱(dilated convolution)을 사용할 경우 O(logₖ(n))이 된다.”

따라서 아래 그림의 CNN항목은 팽창합성곱을 전제로 한 계산 복잡도입니다.


자기어텐션의 계산량을 구체적으로 봅시다. 식2-14에서처럼 각 헤드의 Q/K/V는 모두 입력 특징 벡터에 가중치 행렬이 곱해져 생성됩니다. 헤드가 하나일 때, QWᵩ형태의 곱셈은 O(nd²)의 연산량을 가집니다. 따라서 Transformer 전체의 계산 복잡도는 O(n2d+nd2) 입니다.

이 관점에서 보면, 단순히 계산량만 보면 RNN보다 우위라고 하긴 어렵습니다.


위 그럼의 표는 다소 오해를 줄 수 있지만, 논문은 이에 대해 다음과 같이 명확히 언급합니다.

“Separable convolutions, however, decrease the complexity considerably, to O(knd + nd²). Even with k = n, however, the complexity of a separable convolution is equal to the combination of a self-attention layer and a point-wise feed-forward layer, the approach we take in our model.”
“분리 가능한 합성곱(separable convolution)을 사용하면 복잡도는 크게 줄어 O(knd + nd²)이 된다. 그러나 k = n인 경우, 이는 자기어텐션 층과 포인트와이즈 피드포워드 층을 결합한 우리 모델의 접근법과 계산량이 같다.”

즉, 논문 저자들도 Transformer의 실제 계산량을 정확히 인지하고 있었습니다.


이제 요즘을 정리해 봅시다.

자기어텐션 단일 층만 놓고 보면 계산량 측면에서의 이점은 제한적입니다.

그러나, Transformer 전체 구조에서는

1. 병렬 연산이 가능하고,

2. 최대 경로 길이가 짧아(long dependency 학습이 용이) 장문 텍스트의 문맥을 효과적으로 처리할 수 있습니다.


결국 자기어텐션이 우수한 이유는 "더 빠르게 계산된다"기보다, "병렬처리가 가능하고 문맥 거리가 짧다"는 점입니다. 이 두 특성이 GPU, TPU시대의 병렬 연산 환경과 긴 문서 처리 수요에 완벽히 부합했기 때문에, Transformer는 이후 세대를 대표하는 구조로 자리잡게 됩니다.

genai-103.jpg
genai-103-1.jpg Self-Attention, RNN, CNN의 1층당 계산량/순차연산수/경로길이 비교 도식화

©2024-2025 MDRULES.dev, Hand-crafted & made with Jaewoo Kim.

이메일문의: jaewoo@mdrules.dev


AI 에이전트 개발, 컨텍스트 엔지니어링 교육 컨설팅, 바이브코딩 강의 문의: https://bit.ly/4kjk5OB


keyword
이전 08화9. 위치 임베딩(Positional Encoding)