Transformer는 Attention 메커니즘을 활용한 모델로, 병렬처리가 가능하고 긴 문맥을 잘 반영할 수 있다는 점에서 RNN/LSTM을 대체하는 대표적인 모델입니다. 본 포스트에서는 Encoder-Decoder 구조를 중심으로 Transformer의 핵심 구성 요소를 설명합니다.
🔹 Transformer 전체 구조
Transformer는 크게 두 부분으로 구성됩니다.
Encoder: 입력 시퀀스를 인코딩 (예: 문장을 의미 벡터로 변환)
Decoder: 인코딩된 벡터를 바탕으로 출력 시퀀스 생성
🔸 Encoder 구성
1. Input Embedding + Positional Encoding
Transformer는 순서를 모르는 구조이기 때문에, 단어 임베딩 + 위치 정보(Positional Encoding)를 더해줍니다.
2. Multi-Head Self-Attention
Self-Attention: 입력 시퀀스 내 단어들끼리 서로 얼마나 중요한지 계산합니다.
각 단어는 Query, Key, Value로 변환되고 아래 수식을 따라 Attention Score가 계산됩니다.
Attention(Q,K,V)=softmax(dkQKT)V
3. Feed Forward Network (FFN)
각 위치에서 독립적으로 작동하는 작은 신경망입니다.
4. Add & Norm (Residual + LayerNorm)
Residual connection을 통해 정보 손실을 막고, Layer Normalization을 통해 학습 안정성을 높입니다.
🔸 Self Attention 더 확대해서 보면 다음과 같다!
▶ Query, Key, Value 생성
입력
Q, K, V 생성 방식
임베딩 벡터
각기 다른 가중치를 가진 선형변환으로 Q, K, V 생성
Query: Embedding vector를 구할 대상 (ex: it)
Key: Query와 연관성있는 단어들을 계산할 대상 (ex: 위 그림의 왼쪽 문서 토큰들)
Value: Query와 Key를 이용해 찾은 attention weight를 적용해 Attention value를 찾을 대상.
Self attention은 Query, Key, Value 모두 입력 Sequence(X)로 부터 생성한다.
- X에 각각 다른 Weight를 내적하여 만든다.
- Query=X⋅Wq
- Key=X⋅Wk
- Value=X⋅Wv