Skip to main content

인코더-디코더 구조 비교 — 세 가지 Transformer 패러다임

Transformer 아키텍처는 원래 인코더-디코더(Encoder-Decoder) 구조로 제안되었지만, 이후 인코더만(Encoder-only) 또는 디코더만(Decoder-only)을 사용하는 변형이 등장했습니다. 이 세 가지 패러다임은 각각 다른 유형의 NLP 과제에 최적화되어 있으며, 현대 사전학습 언어모델(PLM)의 근간을 이룹니다.

핵심 아이디어

각 구조는 Transformer의 구성요소를 선택적으로 사용하며, 이에 따라 입력을 처리하는 방식과 적합한 과제가 달라집니다.
구조대표 모델어텐션 방향주요 과제사전학습 목표
Encoder-onlyBERT, RoBERTa양방향분류, NER, QAMasked LM
Decoder-onlyGPT, LLaMA단방향 (인과적)텍스트 생성, 대화Next Token Prediction
Encoder-DecoderT5, BART양방향 + 인과적번역, 요약, QASpan Corruption / Denoising

동작 방식

Encoder-only (인코더 전용)

인코더 전용 모델은 입력 시퀀스 전체를 양방향(Bidirectional)으로 처리합니다. 각 토큰이 좌우 모든 토큰을 동시에 참조할 수 있어, 문맥(Context)을 풍부하게 포착합니다. 특징:
  • 양방향 어텐션: 마스크 없이 모든 위치를 참조
  • 입력 전체를 한 번에 처리하여 풍부한 문맥 표현 생성
  • 자연스러운 텍스트 생성에는 적합하지 않음 (양방향이므로 순차 생성 불가)
사전학습 방식 — Masked Language Model (MLM): 입력의 일부 토큰(15%)을 [MASK]로 가리고, 가려진 토큰을 예측하는 방식으로 학습합니다.
입력: 나는 [MASK] 이다
목표: "학생" 예측
대표 모델: BERT, RoBERTa, ALBERT, ELECTRA, DeBERTa

Decoder-only (디코더 전용)

디코더 전용 모델은 인과적 마스크(Causal Mask)를 사용하여 각 토큰이 자신과 이전 토큰만 참조할 수 있습니다. 텍스트를 왼쪽에서 오른쪽으로 한 토큰씩 생성하는 자기회귀(Autoregressive) 방식입니다. 어텐션 마스크 예시 (시퀀스: “나는 학생 이다”):
나는학생이다
나는OXX
학생OOX
이다OOO
  • “나는”은 자기 자신만, “학생”은 “나는”과 자신을, “이다”는 앞의 모든 토큰을 볼 수 있습니다
사전학습 방식 — Next Token Prediction: 이전 토큰들이 주어졌을 때 다음 토큰을 예측합니다. P(xtx1,x2,,xt1)P(x_t | x_1, x_2, \dots, x_{t-1}) 대표 모델: GPT 시리즈, LLaMA, Mistral, Qwen, Claude
현재 가장 강력한 대규모 언어모델(LLM)의 대부분은 Decoder-only 구조를 채택하고 있습니다. 단순한 구조임에도 스케일링 법칙(Scaling Law)에 의해 모델 크기와 데이터를 키우면 성능이 지속적으로 향상되기 때문입니다.

Encoder-Decoder (인코더-디코더)

원 Transformer의 구조를 그대로 사용합니다. 인코더가 입력을 양방향으로 인코딩하고, 디코더가 인코더 출력을 Cross-Attention으로 참조하면서 출력을 자기회귀적으로 생성합니다. 사전학습 방식 — Span Corruption (T5) / Denoising (BART): T5 (Span Corruption): 입력의 연속된 토큰 범위를 센티널 토큰으로 대체하고, 원본을 복원합니다.
입력:  "나는 <X> 좋아한다"
출력:  "<X> 음악을 <Y>"
BART (Denoising): 입력에 노이즈(삭제, 셔플, 마스킹 등)를 추가하고 원본을 복원합니다. 대표 모델: T5, BART, mT5, FLAN-T5, UL2

구현 (코드)

세 가지 어텐션 마스크

import torch

def create_encoder_mask(seq_len):
    """Encoder-only: 마스크 없음 (모든 위치 참조 가능)"""
    return torch.ones(seq_len, seq_len)

def create_decoder_mask(seq_len):
    """Decoder-only: 인과적 마스크 (미래 차단)"""
    return torch.tril(torch.ones(seq_len, seq_len))

def create_cross_attention_mask(tgt_len, src_len):
    """Encoder-Decoder: Cross-Attention 마스크 (소스 전체 참조 가능)"""
    return torch.ones(tgt_len, src_len)

# 시각화
print("=== Encoder-only (양방향) ===")
print(create_encoder_mask(4))
# tensor([[1., 1., 1., 1.],
#         [1., 1., 1., 1.],
#         [1., 1., 1., 1.],
#         [1., 1., 1., 1.]])

print("\n=== Decoder-only (인과적) ===")
print(create_decoder_mask(4))
# tensor([[1., 0., 0., 0.],
#         [1., 1., 0., 0.],
#         [1., 1., 1., 0.],
#         [1., 1., 1., 1.]])

구조 선택 가이드

def recommend_architecture(task_type):
    """과제 유형에 따른 아키텍처 추천"""
    recommendations = {
        # 분류/이해 과제 → Encoder-only
        "text_classification": "Encoder-only (BERT)",
        "named_entity_recognition": "Encoder-only (BERT)",
        "sentiment_analysis": "Encoder-only (RoBERTa)",
        "extractive_qa": "Encoder-only (BERT, DeBERTa)",
        "sentence_similarity": "Encoder-only (Sentence-BERT)",

        # 생성 과제 → Decoder-only
        "text_generation": "Decoder-only (GPT, LLaMA)",
        "dialogue": "Decoder-only (GPT, LLaMA)",
        "code_generation": "Decoder-only (CodeLLaMA, StarCoder)",
        "instruction_following": "Decoder-only (LLaMA + SFT)",

        # 조건부 생성 → Encoder-Decoder
        "machine_translation": "Encoder-Decoder (T5, mBART)",
        "abstractive_summarization": "Encoder-Decoder (BART, T5)",
        "generative_qa": "Encoder-Decoder (T5, FLAN-T5)",
    }
    return recommendations.get(task_type, "과제를 구체적으로 명시해주세요")

관련 기술 비교

상세 비교표

특성Encoder-onlyDecoder-onlyEncoder-Decoder
어텐션양방향 Self-Attention인과적 Self-Attention양방향 + 인과적 + Cross
사전학습Masked LM (MLM)Next Token PredictionSpan Corruption / Denoising
파인튜닝분류 헤드 추가프롬프트/인스트럭션입출력 쌍 학습
추론 방식단일 패스 (병렬)자기회귀 (순차)인코딩(병렬) + 디코딩(순차)
추론 속도빠름느림 (토큰별 생성)중간
문맥 이해우수 (양방향)제한적 (왼쪽만)우수 (인코더 양방향)
생성 능력약함우수우수
스케일링수억 파라미터수천억+ 파라미터수십억 파라미터
현재 트렌드임베딩, 분류 특화주류 (LLM)번역, 요약 특화

시대별 흐름

여러 요인이 있습니다.
  1. 스케일링 법칙: Decoder-only 구조가 모델 크기, 데이터, 컴퓨팅을 늘릴수록 예측 가능하게 성능이 향상됩니다 (Kaplan et al., 2020)
  2. 통합 인터페이스: 분류, 생성, QA 등 거의 모든 과제를 “텍스트 입력 → 텍스트 출력”으로 통일할 수 있습니다
  3. In-Context Learning: Few-shot 예시를 프롬프트에 넣어 파인튜닝 없이 다양한 과제를 수행할 수 있습니다
  4. 학습 효율성: 모든 토큰에서 손실을 계산하므로, 같은 데이터에서 더 많은 학습 신호를 얻습니다 (MLM은 15%만)
다만, 양방향 문맥이 필요한 임베딩/분류 과제에서는 여전히 Encoder-only 모델이 효율적입니다.
결합하려는 시도가 여러 번 있었습니다.
  • UniLM (2019): 하나의 Transformer에서 양방향, 단방향, Seq2Seq 마스킹을 모두 학습
  • XLNet (2019): 순열 언어 모델(Permutation LM)로 양방향 문맥을 자기회귀적으로 포착
  • UL2 (2022): Mixture of Denoisers로 다양한 사전학습 목표를 결합
하지만 실용적으로는 과제에 맞는 단일 구조를 선택하는 것이 더 효과적이며, 최근에는 Decoder-only에 충분한 스케일을 적용하면 대부분의 과제를 해결할 수 있다는 것이 증명되고 있습니다.
아닙니다. 특히 다음 영역에서 여전히 강점을 보입니다.
  • 기계번역: 소스와 타겟 언어가 명확히 구분되는 경우
  • 문서 요약: 긴 입력을 짧은 출력으로 변환하는 경우
  • 음성 인식: Whisper(OpenAI)는 Encoder-Decoder 구조를 사용합니다
  • 멀티모달: 이미지 인코더 + 텍스트 디코더 구조
입출력의 모달리티나 길이가 크게 다른 경우, Encoder-Decoder가 구조적으로 자연스럽습니다.

참고 논문

논문학회/연도링크
Attention Is All You Need (Vaswani et al.)NeurIPS 2017arXiv 1706.03762
BERT: Pre-training of Deep Bidirectional Transformers (Devlin et al.)NAACL 2019arXiv 1810.04805
Language Models are Unsupervised Multitask Learners - GPT-2 (Radford et al.)2019OpenAI Blog
Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer - T5 (Raffel et al.)JMLR 2020arXiv 1910.10683
BART: Denoising Sequence-to-Sequence Pre-training (Lewis et al.)ACL 2020arXiv 1910.13461
LLaMA: Open and Efficient Foundation Language Models (Touvron et al.)2023arXiv 2302.13971
Scaling Laws for Neural Language Models (Kaplan et al.)2020arXiv 2001.08361