인하대학교 공학대학원(인공지능융합전공)/심층신경망

심층신경망_Transformer(2)

복리 엔지니어 2026. 5. 8. 03:09
트랜스포머의 발전 - 딥러닝 10주차
Deep Learning · Week 10

트랜스포머의 발전

Attention is All You Need, 그 이후 — 특수 토큰부터 RMSNorm까지

Transformer Self-Attention Special Tokens RoPE · ALiBi RMSNorm NLP

트랜스포머 & 어텐션 복습

트랜스포머(Transformer)란?

2017년 "Attention is All You Need" (Vaswani et al.) 논문에서 제안된 딥러닝 모델입니다. 제목 그대로, 어텐션(Attention)을 이해하면 트랜스포머의 핵심을 이해한 것이나 다름없습니다.

  • 입력 토큰들 사이의 관계성을 데이터로부터 자동 학습 — 사람이 규칙을 명시할 필요 없음
  • 모든 토큰이 서로 얼마나 관련되는지를 Attention Score로 계산
  • 병렬 처리 가능 (RNN과 달리 순서에 의존하지 않음)
  • 인코더-디코더 구조로 구성
셀프 어텐션(Self-Attention) 연산 과정

입력으로 Key(K), Query(Q), Value(V) 세 가지 벡터를 사용합니다. Self-Attention에서는 같은 문장이 K·Q·V 모두에 해당합니다.

1
MatMul — 유사도 계산
Q와 K의 내적(dot product)으로 각 토큰 쌍의 유사도를 계산합니다. Cosine Similarity처럼 방향 기반 유사도를 측정합니다.
2
Scale — 정규화
벡터 차원의 제곱근(√d_k)으로 나눠줍니다. 차원이 커질수록 내적값이 커지는 문제를 방지하여 학습을 안정화합니다.
3
Softmax — 확률값 변환
유사도 값을 확률(합=1)로 변환합니다. 이 값이 Attention Score가 됩니다.
4
MatMul — 가중합으로 출력 생성
Attention Score를 V 벡터에 곱해 가중합을 계산합니다. 중요한 Value 벡터가 강조된 새로운 표현 벡터가 출력됩니다.
Attention(Q, K, V) = softmax( QKT / √d_k ) × V

이 과정을 h번 독립적으로 반복하는 것이 Multi-Head Attention입니다. 각 헤드가 서로 다른 관점(문맥)에서 관계를 학습하도록 합니다.

💡 어텐션의 핵심 장점: 몇 개의 레이어를 쌓더라도 항상 토큰 단위 해석이 가능하며, 입력 시퀀스가 바뀌면 가중치가 동적으로 변해 문맥을 반영합니다 (동적 임베딩).

인코더 vs 디코더

인코더 (Encoder)

완전한 문장 전체를 한 번에 입력받아 중간 표현 벡터(Representation)를 생성합니다. 예: 한국어 전체 문장 입력

디코더 (Decoder)

인코더의 표현 벡터를 받아 토큰을 하나씩 순차 생성합니다. 이전 출력이 다시 입력으로 들어갑니다. 예: 영어 번역문 순차 생성

01

자연어 처리에서 트랜스포머의 활용

자연어(텍스트)는 기계가 바로 처리할 수 없으므로 숫자로 변환하는 과정이 필수입니다.

입력: 토크나이징 + 임베딩

전처리가 완료된 단어들을 어휘집(Vocabulary)에서 찾아 벡터로 변환합니다. 주요 모델들의 규모는 다음과 같습니다:

모델Vocabulary SizeEmbedding 차원임베딩 행렬 크기
BERT Base30,522768≈ 23.5M
BERT Large30,5221,024≈ 31.3M
GPT-2 Small50,257768≈ 38.6M
GPT-3 (175B)50,25712,288≈ 617M
LLaMA-2 7B32,0004,096≈ 131M
출력: 태스크에 따라 다름

분류 문제

스팸 여부(0/1), 뉴스 카테고리(Food·Sports·Politics) 등을 One-Hot 벡터로 출력

생성 문제

어휘집 내 모든 토큰에 대한 확률값을 계산해 다음 단어를 순차적으로 예측

02

트랜스포머의 발전 방향 (6가지)

2017년 기본 Transformer(vanilla self-attention)는 훌륭했지만 몇 가지 한계가 있었고, 이를 해결하기 위한 다양한 기법이 제안되었습니다.

① 특수 토큰

문장 구조·경계·의미를 표현하는 기능적 토큰 추가

② 위치 인코딩 변형

상대적 거리 기반 위치 정보를 어텐션 연산에 반영

③ 표현력 강화

FFN 모듈을 고도화하여 더 좋은 벡터 표현 학습

④ 연산 효율성

n² → n으로 어텐션 연산량을 줄이는 방법

⑤ 학습 안정성 향상

정규화(Normalization)를 통해 깊은 네트워크의 학습을 안정화

03

① 특수 토큰의 사용

문제 인식: 기본 Transformer는 모든 토큰을 동등하게 처리합니다. 그렇다면 "전체 문장의 의미"는 어떤 벡터로 표현할까요? "빈칸"은? 가변 길이 입력은? 여러 문장의 경계는?

특수 토큰의 개념

자연어 문장을 모델이 이해할 수 있도록 구조화하기 위해 인위적으로 추가하는 기호형 토큰입니다. 단어 자체의 의미는 없지만, 입력 시퀀스의 역할·경계·상황을 명시적으로 알려주는 기능을 수행합니다.

주요 특수 토큰 정리
[CLS] [MASK] [PAD] [SEP] [BOS] [EOS]
토큰역할사용 모델
[CLS]전체 시퀀스의 의미를 요약하는 벡터 — 항상 입력 맨 앞에 위치. 분류 문제에서 이 위치의 출력을 사용BERT 계열
[MASK]빈칸을 나타내는 토큰. 사용자가 직접 삽입하며, MLM(Masked Language Modeling) 학습에 활용BERT 계열
[PAD]가변 길이 입력을 동일한 차원으로 맞추기 위한 패딩 토큰 (의미 없음)공통
[SEP]문장과 문장의 경계를 구분하는 토큰BERT 계열
[BOS]시퀀스 시작(Beginning of Sequence) 신호GPT 계열
[EOS]시퀀스 종료(End of Sequence) 신호 — EOS가 나오면 생성 중단GPT 계열
토크나이저 처리 예시

입력: "I love transformers"

[CLS] i love transformers [SEP]

두 문장 입력: "A man is playing guitar" + "A person is playing music"

[CLS] a man is playing guitar [SEP] a person is playing music [SEP]

💡 토크나이저(BertTokenizer 등)가 [CLS], [SEP], [PAD]를 자동으로 추가해줍니다. [MASK]만 사용자가 원하는 위치에 직접 삽입합니다.

BERT 계열 (인코더)

[MASK] 토큰 위치의 원래 단어를 맞추는 MLM(Masked LM) 방식으로 사전학습합니다.

GPT 계열 (디코더)

[BOS]에서 시작해 다음 토큰을 순차적으로 예측하며 [EOS]가 나올 때까지 생성합니다.

04

② 위치 인코딩의 변형 — RoPE & ALiBi

문제 인식: 기본 Transformer는 sin/cos로 정의된 고정 위치 인코딩을 입력 단계에서 한 번만 더해줍니다. 하지만 Attention을 여러 번 쌓다 보면 이 효과가 너무 약해집니다. 또한 절대적 위치보다 두 단어 사이의 상대적 거리가 더 중요하지 않을까요?

1단계: 학습 가능한 위치 임베딩

BERT, GPT-1~3 초기 모델에서 사용된 방식입니다. sin/cos로 고정하는 대신 각 위치(1, 2, 3…)별 벡터를 경사하강법으로 학습합니다. 더 유연하게 위치 정보를 표현할 수 있지만 여전히 절대적 위치 기반입니다.

2단계: 상대적 위치 정보 활용

핵심 아이디어: "은행나무"처럼 두 단어가 붙어 있으면 유사도↑, 멀리 떨어지면 유사도↓"가 되도록 어텐션 계산 자체에 거리 정보를 반영합니다.

🔄 RoPE (Rotary Position Embedding)

논문: Su et al., RoFormer, 2021

Q·K 벡터를 위치에 비례해 회전시킵니다. 두 단어가 멀어질수록 벡터 간 각도가 커져 내적(유사도)이 감소합니다.

  • 위치별 고유 각도 θ를 상수로 사전 정의
  • m번째 위치면 mθ 만큼 벡터를 회전
  • 상대 거리 (m-n)이 클수록 각도 차이 커짐 → 유사도 감소
  • 추가 학습 파라미터 없음

✅ LLaMA, PaLM, GPT-NeoX 등 최신 모델에서 기본 사용

📉 ALiBi (Attention with Linear Biases)

논문: Press et al., ICLR, 2022

벡터 회전 대신, 유사도 계산 결과에서 거리에 비례한 값을 직접 빼주는 방식입니다.

  • 거리 1칸 → -1점, 거리 4칸 → -4점 차감
  • 헤드마다 감쇠율(m)을 다르게 설정
  • 감쇠율 1.0 → 가까운 단어에만 집중
  • 감쇠율 0.0039 → 먼 단어까지 골고루 주의

✅ LLaMA-2 등에서 사용. RoPE보다 단순하지만 효과적

📌 공통점: 두 방법 모두 추가 학습 파라미터 없이, 사람이 정의한 상수(각도 θ, 감쇠율 m)만으로 상대적 거리 정보를 어텐션에 반영합니다. 기존 sin/cos 방식은 현재 거의 사용되지 않습니다.

05

③ 표현력 강화 — FFN 개선

문제 인식: 기본 Transformer의 Feed Forward Network(FFN)는 ReLU를 쓰는 단순한 2층 MLP입니다. 더 복잡한 모듈로 표현력을 높일 수 있지 않을까요?

기본 FFN 구조
FFN(x) = ReLU(xW₁ + b₁)W₂ + b₂

각 토큰별로 독립적으로 비선형 변환 + 차원 변경을 수행합니다.

방법 1: 활성함수 확장

ReLU 대신 더 복잡한 곡선형 활성함수를 사용합니다:

  • GELU — Gaussian Error Linear Unit
  • SwiGLU — Swish + Gated Linear Unit
  • GeGLU — GELU + Gated Linear Unit
방법 2: 차원 확장 + 병렬 처리

FFN의 중간 차원을 매우 크게 설정하거나, 여러 FFN을 병렬로 두어 Mixture-of-Experts(MoE) 구조를 활용합니다.

06

④ 연산 효율성 향상

문제 인식: 기본 Self-Attention은 시퀀스 길이 n에 대해 O(n²)의 연산이 필요합니다. 시퀀스가 길어질수록 연산량이 폭발적으로 증가합니다.

🪟 Sparse / Local Attention

모든 토큰 쌍을 보지 않고 주변 토큰만 선택적으로 어텐션합니다.

  • Window size를 사전 정의하여 그 범위 내에서만 연산
  • CNN의 필터 크기와 비슷한 개념
  • Longformer, BigBird에서 사용

⚠️ 성능은 소폭 하락하지만, 긴 시퀀스를 처리할 수 있게 됩니다.

📐 Linear Attention

수식 자체를 변형하여 O(n²) → O(n)으로 줄입니다.

  • Linformer(2020): K, V를 저차원으로 선형 투영하여 연산량 감소
  • Performer(2021): Softmax를 Random Feature Mapping으로 근사
softmax(QKT)V ≈ φ(Q)(φ(K)TV)

⚠️ 연산 효율성을 위해 어텐션을 변형하면 정보 손실이 발생하여 정확도가 소폭 하락합니다. 속도·메모리가 중요한 환경(모바일, 실시간 응답)에서 활용합니다.

07

⑤ 학습 안정성 향상 — 정규화

문제 인식: Attention 모듈을 20~30개씩 쌓으면 역전파 과정에서 기울기 소실(Vanishing Gradient) 또는 기울기 폭발(Exploding Gradient)이 발생하기 쉽습니다. 각 층을 거칠 때마다 출력값의 분포가 달라지는 Internal Covariate Shift 문제도 생깁니다.

정규화(Normalization)란?

각 레이어의 출력값 분포를 평균 0, 분산 1로 일정하게 유지시켜 학습을 안정화합니다. 기본 Transformer의 Add & Norm 블록이 이에 해당합니다.

Layer Normalization

기본 Transformer에서 사용되는 방법입니다. 임베딩 차원을 기준으로 정규화합니다.

LayerNorm(x) = (x - μ(x)) / √(σ²(x)+ε) · γ + β
  • 각 토큰·샘플별 임베딩 차원에 대해 평균=0, 분산=1
  • 다른 토큰·샘플과 무관하게 독립적으로 정규화

⚠️ 평균과 분산 계산이 필요하여 완전한 병렬화가 어렵습니다.

RMSNorm

최근 대부분의 언어 모델에서 사용됩니다. 평균을 빼지 않고 RMS(제곱평균제곱근)로만 나눠 벡터의 크기만 정규화합니다.

RMSNorm(x) = x / √(1/d · Σxᵢ²+ε) · g
  • 평균 제거 없이 벡터의 크기(길이)만 정규화
  • 분산 계산 불필요 → 연산 속도 빠름
  • 병렬화 용이

✅ LLaMA, Mistral 등 최신 LLM의 기본 설정

구분Layer NormalizationRMSNorm
정규화 기준임베딩 차원 (채널 단위)임베딩 차원 (채널 단위)
평균 제거O (중앙 이동)X (그대로)
분산 계산OX (RMS만 사용)
연산 속도상대적으로 느림빠름
대표 사용 모델기본 Transformer, BERTLLaMA, Mistral, GPT-NeoX

최근 트랜스포머 기반 언어 모델 정리

발전 방향기본 Transformer (2017)최신 모델 (2022~)
특수 토큰없음[CLS], [SEP], [MASK], [BOS], [EOS] 등 사용
위치 인코딩고정 sin/cos, 입력에 1회 더함RoPE 또는 ALiBi — 어텐션 계산 시 반복 반영
표현력ReLU + 2층 FFNGELU/SwiGLU + 차원 확장 / MoE
연산 효율O(n²) 전체 어텐션Local Attention 또는 Linear Attention (필요시)
학습 안정성Layer NormalizationRMSNorm (더 빠르고 병렬화 용이)

🗺️ 트랜스포머의 발전 흐름

모든 태스크에 적용 가능한지 검증 → 효율화 → 안정화 → 스케일 확장의 순서로 발전해왔습니다.

Transformer
2017, 기본 구조
Efficient
연산량 최적화
Stable
학습 안정화
Scalable
GPT-3, LLaMA 등