개발 창고/AI

트랜스포머(Transformer) 구조 이해하기

Royzero 2025. 8. 24. 22:00
반응형

트랜스포머(Transformer) 구조 이해하기


1. 들어가며

앞 강의에서 어텐션 메커니즘을 배웠습니다.
트랜스포머(Transformer)는 이 어텐션 개념을 기반으로 만들어진 모델로, 현재의 GPT, BERT, LLaMA와 같은 최신 언어 모델의 뼈대가 됩니다.

트랜스포머는 RNN이나 LSTM처럼 순차적으로 데이터를 처리하지 않고, 병렬적으로 문장을 한 번에 학습할 수 있어 속도와 성능 면에서 혁신을 가져왔습니다.


2. 트랜스포머의 기본 아이디어

트랜스포머는 크게 두 가지 블록으로 구성됩니다.

  1. 인코더(Encoder) – 입력 문장의 의미를 추출
  2. 디코더(Decoder) – 의미를 바탕으로 출력 문장을 생성

하지만 번역과 같은 작업이 아니고 분류, 문서 임베딩 같은 경우에는 인코더만 사용하기도 합니다.


3. 트랜스포머의 핵심 구성 요소

  1. Self-Attention (자기 어텐션)

    • 문장 안의 각 단어가 다른 단어와의 관계를 학습
    • 예: “The cat sat on the mat because it was tired.” → “it”이 “cat”을 가리킨다는 맥락 이해
  2. 멀티헤드 어텐션 (Multi-Head Attention)

    • 여러 개의 어텐션을 동시에 계산하여 서로 다른 관점에서 단어 관계를 학습
    • 예: 하나의 헤드는 "문법 관계", 다른 헤드는 "의미 관계"에 집중
  3. 포지셔널 인코딩 (Positional Encoding)

    • RNN처럼 순서를 고려하지 않는 트랜스포머에 위치 정보를 추가
    • 단어 벡터에 위치별 사인/코사인 값을 더해 순서 개념을 반영
  4. 피드포워드 네트워크 (Feed-Forward Network)

    • 어텐션의 결과를 다시 한번 비선형 변환해 표현력을 강화
  5. 잔차 연결 + Layer Normalization

    • 학습이 안정되도록 돕는 장치

4. 직관적 이해

트랜스포머는 마치 회의 중에 여러 명이 동시에 발언을 듣고, 각자 중요한 내용을 기록한 뒤, 그 정보를 종합해 정리하는 과정과 비슷합니다.

  • 어텐션은 “누구의 발언에 집중할지”를 결정
  • 멀티헤드 어텐션은 여러 사람이 동시에 기록하는 것
  • 포지셔널 인코딩은 “발언 순서”를 표시하는 역할

5. 파이썬 실습: 간단한 트랜스포머 인코더

TensorFlow/Keras에서 제공하는 MultiHeadAttention 레이어를 사용해 간단한 인코더 블록을 구현해봅니다.

import tensorflow as tf
from tensorflow.keras import layers

# 입력 (batch=1, 단어=5, 차원=16)
x = tf.random.normal((1, 5, 16))

# 멀티헤드 어텐션
attn = layers.MultiHeadAttention(num_heads=2, key_dim=16)
out1 = attn(x, x)  # Self-Attention

# 잔차 연결 + LayerNorm
out1 = layers.LayerNormalization()(x + out1)

# 피드포워드 네트워크
ffn = tf.keras.Sequential([
    layers.Dense(64, activation="relu"),
    layers.Dense(16)
])
out2 = ffn(out1)

# 잔차 연결 + LayerNorm
encoder_output = layers.LayerNormalization()(out1 + out2)

print("Encoder output shape:", encoder_output.shape)

출력 예시:

Encoder output shape: (1, 5, 16)

6. 트랜스포머의 장점

  • 병렬 학습 가능 → RNN보다 훨씬 빠름
  • 긴 문맥 처리 → 어텐션으로 멀리 떨어진 단어도 연결 가능
  • 범용성 → NLP뿐 아니라 이미지, 음성 등 다양한 분야에서 활용

7. 오늘의 정리

  • 트랜스포머는 어텐션 기반의 병렬 처리 모델
  • 인코더-디코더 구조로 되어 있으며, 번역, 분류, 생성 등 다양한 분야에서 성능이 우수
  • GPT, BERT 등 최신 모델의 근간이 되는 핵심 구조
반응형