본문 바로가기
Data Science & AI

[NLP] Transformer 구조와 Attention 이해하기

by skwkiix 2025. 5. 23.
728x90

Transformer

등장배경 : RNN / LSTM의 한계

LSTM은 문장을 처리할 때 한 단어씩 차례대로 다음처럼 계산한다.

  • $ x_{t} $ 현재 단어
  • $  h_{t-1}, c_{t-1}  $ : 이전 시점의 은닉 상태와 셀 상태

즉, RNN  LSTM과 같은 Neural Network 기반의 알고리즘은

현재 출력이 이전 출력에 의존하게 된다. 따라서, 구조적으로 병렬처리가 어렵다.

 

1. 순차 처리라서 느림

  • RNN은 단어를 한 개씩 순서대로 처리
    → 병렬 처리 불가능
    → 긴 문장일수록 속도 느림

2. 긴 문장 기억 못함

  • 문장이 길어지면 앞부분 정보를 잊어버림
    → 장기 의존성 문제 (Long-term dependency) : LSTM 이 이 문제를 일부 해결했지만, 근본적인 구조적인 문제로 완전 해결이 불가능함

3. 병렬 처리 불가능

  • LSTM도 구조는 더 복잡하지만 결국 순차적→ GPU 활용 잘 안 됨 → 훈련 오래 걸림

 

Transformer의 구조

입력 문장을 벡터화 → Self-Attention → Multi-Head → Feed Forward → 출력

 

https://wikidocs.net/31379

 

Transformer는 입력 문장을 한 번에 처리할 수 있도록 설계된 완전 병렬 처리 기반 모델이다.

RNN/LSTM처럼 순서대로 처리하지 않고, 전체 문장을 동시에 보고 처리 가능한 점이 핵심이다.

 

1. Encoder (왼쪽)

- 입력 전체 문장의 의미를 인코딩

 

  • 입력 임베딩 + 위치 인코딩 (Positional Encoding)
  • Multi-head Self-Attention
    → 입력 문장의 모든 단어가 서로를 보는 구조
  • Add & Norm
    → 잔차 연결 + 정규화
  • Position-wise Feed Forward
    → 각 단어 벡터에 MLP 적용
  • Add & Norm

 

2. Decoder (오른쪽)

- 인코딩된 문맥을 바탕으로 출력 문장 생성

 

  • 입력 임베딩 + 위치 인코딩
  • Masked Multi-head Self-Attention
    → 아직 생성되지 않은 단어는 못 보게 “마스킹”
  • Add & Norm
  • Multi-head Attention (Encoder-Decoder Attention)
    → Encoder 출력을 참고함 (문맥 정보)
  • Add & Norm
  • Position-wise Feed Forward
  • Add & Norm
  • 마지막에 Dense + Softmax
    → 다음 단어 확률로 변환

 

Transformer는 모든 단어를 동시에 보고, 각 단어쌍 간의 관계를 Attention Score로 계산한다.

→ 계산 순서가 시간 축에 의존하지 않기 때문에 GPU로 병렬 연산이 가능하다.

Transformer 구조 전체에서 핵심적인 포인트는  Attention (Self-Attention, Masked Self-Attention) 이다.


Attention 알고리즘

‘뉴럴 네트워크(Neural Network)’가 주어진 데이터들 사이의 관계를 학습하기 제한적인 한계를 극복하기 위해 고안된 알고리즘

  • 데이터를 표현하는 벡터들의 내적(Dot Product) 을 통해 그 관계를 파악
    • 해당 value를 잘 표현할 수 있는 데이터(키, key)
    • 유사성을 측정할 대상(Query)
    • 가중치가 곱해지는 대상(value)

⇒ 어텐션 알고리즘의 궁극적인 목표는 주어진 벡터들의 가중합을 구하는 일

Self-Attention

Self-Attention

각 단어가 문장 내 다른 모든 단어를 참조하여 문맥을 이해

(예시) "The animal didn't cross the street because it was too tired."

여기서 it이 의미하는 게 animal인지 street인지 판단하려면, 단어 하나만 보면 안 되고 문장 전체를 함께 봐야 한다.

Self-Attention Process

다른 단어들을 얼마나 참조할지 계산

  1. 입력 문장을 임베딩 벡터로 표현
    $ X \in \mathbb{R}^{n \times d_{model}} $
  2. 각 단어로부터 Q, K, V 생성
    $ Q = XW^Q,\quad K = XW^K,\quad V = XW^V $
  3. 유사도 계산 및 가중합
    $ Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax} \left( \frac{QK^T}{\sqrt{d_k}} \right) V $

 

Masked Self-Attention

아직 생성되지 않은 미래 단어는 못 보도록 막는 Self-Attention

Decoder에서는 다음 단어를 하나씩 예측해야 해요.
예측할 때, 정답 단어를 미리 보면 안 되기 때문에, 미래 단어에 대한 정보를 마스킹(masking)

나는
밥을
먹었다
.

 

 

728x90