본문 바로가기
AI

트랜스포머 아키텍처 완벽 가이드 | Transformer Architecture Guide

by markbyun 2025. 5. 8.

트랜스포머 아키텍처 완벽 가이드

트랜스포머란 무엇인가?

트랜스포머(Transformer)는 2017년 Vaswani 외 연구진이 "Attention is All You Need" 논문에서 소개한 신경망 아키텍처로, RNN이나 LSTM 같은 순차적 모델을 대체하면서 자연어처리 분야에서 혁신을 일으켰습니다. 트랜스포머는 셀프 어텐션(Self-Attention)을 통해 문장의 전 범위를 병렬적으로 처리하며, 긴 입력 문장을 이해하고 학습하기 어려웠던 문제를 효과적으로 해결합니다. 또한 이전 알고리즘들이 병렬 처리가 힘들었던 부분도 함께 해결합니다.

트랜스포머 아키텍처


1. 트랜스포머 구성 요소와 RNN/LSTM의 한계 극복

트랜스포머는 인코더와 디코더로 이루어진 구조로, 각 블록은 다음의 주요 구성 요소로 이루어져 있습니다:

  • 셀프 어텐션(Self-Attention): 입력 시퀀스 내의 단어들 간 관계를 각 토큰이 다른 전체 토큰들과 가지는 관계를 학습함으로써 장기 의존성 문제를 해결하고 문맥 정보가 풍부하게 반영되도록 학습될 수 있도록 합니다.
  • 멀티-헤드 어텐션(Multi-Head Attention, MHA): 싱글 셀프 어텐션을 주어진 수의 멀티 헤드로 나눠서 여러 개의 셀프 어텐션들로 분리하고 병렬적으로 연산들을 수행합니다. 각 '헤드'는 입력 데이터의 서로 다른 그룹들의 관계에 집중하여 계산을 하고 각 헤드들의 연산 결과들은 각각의 가중치에 따라서 합산이 되며, 이들 가중치 역시 학습이 됩니다.
  • 포지셔널 인코딩(Positional Encoding): 트랜스포머 자체는 시퀀스 기반의 연산을 수행하지 않으므로 입력 값들의 상대적인 위치를 모델에 학습시키는 부분이 중요한데 이를 처리해주는 것이 포지셔널 인코딩 입니다.
  • 피드포워드 네트워크(FFN): 셀프 어텐션 레이어를 통해서 만들어진 피처들에 대해서 각 위치에서 비선형 변환과 함께 부가적인 레이어 연산들을 추가 수행함으로 네트웍을 보다 깊게 만들어 모델이 좀 더 풍성한 의미 분석을 할 수 있도록 합니다.
  • 레이어 정규화 및 잔차 연결(Add & Norm): ResNet에서 제안된 스킵커넥션과 Layer Norm을 적용하여 학습 안정성과 수렴 속도를 개선 및 입력 배치의 크기에 무관하게 학습이 진행될 수 있도록 합니다.

기존의 RNN/LSTM은 순차적 계산으로 인해 병렬 처리가 어렵고, 긴 시퀀스에서는 정보가 소실되는 문제가 있습니다. 트랜스포머는 병렬 연산과 셀프 어텐션으로 이를 극복함으로써 대규모 모델 및 데이터셋을 처리할 수 있는 길을 열었습니다.


2. 셀프 어텐션 메커니즘: 쿼리, 키, 밸류

Self-Attention은 시퀀스의 각 단어(또는 토큰)가 자신을 포함한 모든 다른 단어들과의 관계를 학습하는 메커니즘입니다. 이를 통해 단어 간의 의미적 연관성을 파악하고, 문맥에 따른 유동적인 표현을 구성할 수 있습니다. 예: 문장 “The cat sat on the mat”에서 “cat”이라는 단어는 “sat”와 “mat”보다 더 강하게 연결될 수도 있습니다. 각 입력 토큰은 세 가지 벡터로 변환됩니다:

  • Query (Q): 현재 단어가 다른 단어에 얼마나 집중해야 하는지 질문하는 벡터
  • Key (K): 각 단어가 다른 단어로부터 주목받을 수 있는 정도를 나타내는 벡터
  • Value (V): 최종적으로 반영될 정보 벡터

이들은 모두 학습 가능한 행렬 $𝑊^𝑄, 𝑊^𝐾, 𝑊^𝑉$를 통해 계산됩니다.

2.1. 입력 임베딩 → Query, Key, Value로 변환

$Q = XW^Q,\quad K = XW^K,\quad V = XW^V$

여기서:

  • X: 입력 시퀀스의 임베딩 행렬 (크기: $n \times d$)
  • $W^Q, W^K, W^V$: 각각 $d \times d_k$ 크기의 학습 행렬
  • Q, K, V: 각 크기 $n \times d_k$

2.2. 어텐션 스코어 계산 (쿼리와 키의 내적)

각 Query 벡터와 모든 Key 벡터 간 내적하여 유사도를 구함:

$\text{Attention Scores} = QK^T$

크기: $n \times n$ (모든 토큰 쌍의 유사도 행렬)

2.3. 스케일링

큰 값에 대한 소프트맥스 출력의 경사를 안정화하기 위해 다음과 같이 나눔:

$\text{Scaled Scores} = \frac{QK^T}{\sqrt{d_k}}$

2.4. 소프트맥스 적용

각 토큰에 대해 softmax를 적용하여 가중치로 변환:

$\alpha_{ij} = \text{softmax}\left( \frac{q_i \cdot k_j}{\sqrt{d_k}} \right)$

이 가중치는 어떤 단어가 얼마나 중요한지를 나타냅니다.

2.5. 가중합으로 최종 출력 계산

이 가중치를 각 단어의 Value에 곱해 최종 출력을 만듭니다:

$\text{Attention}$(Q, K, V) = $\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$

출력: $n \times d_k$크기의 새로운 표현


3. 멀티 헤드 어텐션 vs 싱글 헤드 어텐션

멀티-헤드 어텐션은 트랜스포머 모델의 핵심 구성 요소로, 다양한 문맥적 관계를 동시에 학습할 수 있도록 해줍니다. 단일 어텐션 헤드만으로는 잡아내기 어려운 언어의 미묘한 관계나 의미적 다양성을 효과적으로 포착할 수 있는 구조입니다. 간단히 말해, 멀티-헤드 어텐션은 여러 개의 셀프 어텐션(Self-Attention)을 병렬로 수행한 후 그 결과를 통합하는 방식입니다. 각각의 헤드는 독립적으로 쿼리(Q), 키(K), 밸류(V)를 학습하여 서로 다른 표현 공간에서 정보를 추출합니다.

3.1. 계산 과정

입력 임베딩 X에 대해 각 어텐션 헤드는 다음과 같이 계산됩니다.

  • 학습 가능한 가중치 행렬: $W_i^Q$, $W_i^K$, $W_i^V$
Qᵢ = X × Wᵢ^Q
Kᵢ = X × Wᵢ^K
Vᵢ = X × Wᵢ^V

headᵢ = softmax(Qᵢ × Kᵢᵀ / √dₖ) × Vᵢ

이 과정을 h개의 헤드에 대해 병렬로 수행한 후, 결과를 이어붙이고 최종 선형 변환을 적용합니다:

MultiHead(Q, K, V) = Concat(head₁, ..., headₕ) × Wᴼ

여기서 Wᴼ는 출력 투영 가중치 행렬입니다.

3.2. 멀티-헤드 어텐션의 장점

  • 다양한 의미적 관계 학습: 각 헤드는 문법적, 의미적, 위치 기반 정보 등 다양한 유형의 관계를 학습할 수 있습니다.
  • 병렬 처리: RNN과 달리 모든 토큰의 어텐션을 동시에 계산하므로 연산 속도가 빠릅니다.
  • 표현력 향상: 여러 시각에서 정보를 해석함으로써 모델의 표현력을 극대화합니다.

3.3. 싱글-헤드 vs 멀티-헤드 어텐션 비교

구분 싱글-헤드 어텐션 멀티-헤드 어텐션
학습 범위 하나의 표현 공간 여러 표현 공간
정보 다양성 제한적 풍부함
계산 효율 비교적 간단 병렬처리로 효율적
표현력 낮음 높음

3.4. 예시로 이해하기

문장: “그 고양이는 피곤해서 길을 건너지 않았다.”

  • 한 헤드는 “고양이”와 “피곤해서”의 관계를 학습할 수 있음
  • 또 다른 헤드는 “건너지 않았다”와 시간 순서 관계를 포착할 수 있음

3.5. 멀티-헤드 어텐션의 핵심 아이디어 요약

  • 하나의 어텐션만으로는 학습하기 어려운 다양한 관계를 병렬적으로 학습
  • 쿼리, 키, 밸류를 여러 공간에서 독립적으로 계산
  • 결과를 연결$\text{(concatenate)}$한 후 선형변환을 통해 최종 표현 생성

4. 포지셔널 인코딩의 필요성과 절대 vs 상대 인코딩 방식

트랜스포머(Transformer)는 시퀀스의 순서를 고려하지 않는 구조이기 때문에, 입력 토큰들의 위치 정보를 직접적으로 제공해야 합니다. 이를 위해 도입된 것이 바로 포지셔널 인코딩(Positional Encoding)입니다. 트랜스포머는 RNN과 달리 입력을 병렬로 처리합니다. 즉, 입력 순서를 인식하지 못하므로 단어의 위치(position)를 나타내는 정보를 따로 입력에 추가해줘야 문장의 문법적, 의미적 구조를 올바르게 이해할 수 있습니다.

4.1. 절대 포지셔널 인코딩 (Absolute Positional Encoding)

Transformer 원 논문(“Attention is All You Need”)에서는 사인(sin)과 코사인(cos) 함수를 활용한 절대 포지셔널 인코딩을 사용합니다. 각 위치 pos와 임베딩 차원 i에 대해 다음과 같이 계산됩니다:

PE(pos, 2i)   = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

이 방식은 위치 간의 상대 거리를 간접적으로 인코딩하며, 모델이 토큰의 위치를 주기적 함수로부터 추론할 수 있게 합니다. 이 방식은 정적이며 학습되지 않고 순서 정보가 직접적으로 추가됩니다. 장점은 구현이 간단하고 직관적이며 추론 중 재사용 가능하지만, 길이가 다른 문자에 대한 일반화가 떨어질 수 있고 문장 내 상대 위치를 명확히 인코딩하지 못하는 문제가 있습니다.

4.2. 상대 포지셔널 인코딩 (Relative Positional Encoding)

상대 포지셔널 인코딩은 토큰의 절대 위치가 아닌 토큰 간 거리를 인코딩합니다. 문장의 길이와 관계없이 더 강력한 일반화를 제공합니다. 대표적인 방식들로는 RoPE (Rotary Positional Embedding)과 ALiBi (Attention with Linear Biases)

4.3. 절대 vs 상대 인코딩 요약 비교

구분 절대 인코딩 상대 인코딩 (RoPE / ALiBi)
기준 토큰의 고정된 위치 토큰 간 거리
일반화 낮음 높음
학습 여부 보통 고정 (비학습) RoPE: 비학습, ALiBi: 비학습
최근 사용 BERT, Transformer (기본) GPT-NeoX, LLaMA, T5 등

5. 인코더-온리, 디코더-온리, 인코더-디코더 아키텍처 비교

인코더-온리 (예: BERT): 전체 입력을 한 번에 처리하며 문장 분류, 질의응답 등 이해 중심 태스크에 적합합니다.

디코더-온리 (예: GPT): 이전 단어를 기반으로 다음 단어를 예측하는 자기회귀적 구조로 생성 중심 태스크에 강합니다.

인코더-디코더 (예: T5, BART): 인코더로 입력을 요약하고 디코더로 출력 문장을 생성합니다. 기계 번역, 요약, 질의응답 등 다목적 태스크에 적합합니다.


6. 표준 트랜스포머의 계산적 한계와 해결 방안

표준 트랜스포머는 어텐션 연산에서 입력 길이의 제곱(O(n²))에 비례하는 시간/메모리 복잡도를 가집니다. 이를 해결하기 위한 주요 방법은 다음과 같습니다:

  • 스파스 어텐션: 일부 토큰 간 어텐션만 계산 (예: Longformer, BigBird)
  • 선형 어텐션: 어텐션 연산을 리팩터링하여 시간 복잡도를 선형으로 축소 (예: Performer, Linear Transformer)
  • 압축 어텐션: 키/밸류 개수를 줄여 연산량 감소 (예: Linformer, Reformer)
  • 세그먼트 기반 처리: 시퀀스를 조각내어 순차 처리 (예: RetNet, RWKV)

참고자료

  • Vaswani 외 (2017), "Attention is All You Need"
  • Google AI 블로그: Self-Attention 메커니즘
  • HuggingFace Transformers 문서
  • RoFormer, Performer, BigBird, Linformer 관련 논문