Level 7: Transformer & LLM 원리
🤖

Level 7

Transformer 개요

Attention is All You Need, RNN과의 비교

50분
Transformer 개요 강의 영상
강의 영상 보기 (새 탭에서 재생)YouTube

📓Google Colab에서 실습하기

이 레슨은 PyTorch/GPU가 필요합니다. 노트북을 다운로드 후 Google Colab에서 열어주세요.

학습 내용

Transformer 개요 - 현대 AI의 시작점

학습 목표

이 레슨을 완료하면:

  • "Attention is All You Need" 논문이 왜 혁명적이었는지 설명할 수 있다
  • RNN/LSTM의 한계와 Transformer가 이를 어떻게 해결했는지 이해한다
  • Transformer 아키텍처의 전체 구조를 큰 그림으로 파악한다
  • Encoder와 Decoder의 역할 차이를 구분할 수 있다

핵심 메시지

"Transformer는 단어를 한 줄로 읽는 대신, 칠판에 적힌 모든 단어를 한눈에 본다." 이 단순한 아이디어 하나가 GPT, BERT, ChatGPT 등 현대 AI 혁명의 출발점이 되었습니다.


RNN의 한계 - 왜 새로운 구조가 필요했을까?

비유: 전화 통화 vs 칠판

Level 6에서 배운 RNN/LSTM을 떠올려 봅시다. RNN은 문장을 처리할 때 전화 통화와 비슷합니다.

RNN 방식 (전화 통화):

  • 친구가 전화로 긴 이야기를 해줍니다
  • 한 단어씩 순서대로 들어야 합니다
  • 앞부분에서 들은 내용은 점점 기억이 흐려집니다
  • 중간에 "아까 뭐라고 했지?" 하고 되돌아갈 수 없습니다
  • 한 사람이 말을 끝내야 다음 사람이 말할 수 있습니다

Transformer 방식 (칠판):

  • 친구가 모든 이야기를 칠판에 적어둡니다
  • 모든 단어를 한눈에 볼 수 있습니다
  • 첫 번째 단어와 마지막 단어의 관계도 바로 파악합니다
  • 여러 사람이 동시에 칠판을 읽을 수 있습니다

RNN의 세 가지 근본적 문제

문제설명결과
순차 처리단어를 하나씩 차례로 처리해야 함학습이 매우 느림, GPU 활용 어려움
장거리 의존성멀리 떨어진 단어 관계를 파악하기 어려움긴 문장에서 성능 저하
정보 병목모든 문맥을 하나의 벡터에 압축정보 손실 불가피

구체적으로 살펴보겠습니다.

문제 1: 순차 처리의 느림

RNN이 "나는 오늘 학교에 갔다"를 처리하는 과정:

시간 1: "나는" 처리 → 상태 h1 생성 시간 2: "오늘" 처리 (h1 필요) → 상태 h2 생성 시간 3: "학교에" 처리 (h2 필요) → 상태 h3 생성 시간 4: "갔다" 처리 (h3 필요) → 상태 h4 생성

각 단계가 이전 단계의 결과를 기다려야 합니다. 100단어 문장이면? 100번 순차 계산이 필요합니다.

Transformer는 이 4개 단어를 동시에 처리합니다!

문제 2: 장거리 의존성의 어려움

긴 문장 예시: "그 소년은 매일 아침 공원에서 운동을 하고, 점심에는 도서관에서 공부를 하며, 저녁에는 친구들과 축구를 하는데, 주말에는 가족과 함께 시간을 보내는 것을 좋아하는 아이였다."

RNN이 "아이였다"를 처리할 때:

  • "그 소년은"이라는 주어 정보가 수십 단어를 거치면서 희석됨
  • LSTM이 게이트로 보존하려 해도 한계가 있음

Transformer라면:

  • "아이였다"에서 "그 소년은"을 직접 참조 가능
  • 거리와 상관없이 모든 단어와 직접 연결

문제 3: 병렬 처리 불가

GPU의 강점: 수천 개의 작은 연산을 동시에 수행

RNN: t 시점 계산에 t-1 결과가 필요 → 병렬화 불가능

  • GPU가 아무리 좋아도 순차적으로 기다려야 함

Transformer: 모든 위치를 동시에 계산 → 완벽한 병렬화

  • GPU 코어를 최대한 활용 → 학습 속도 비약적 향상

"Attention is All You Need" - 역사를 바꾼 논문

논문의 배경

2017년, 구글 연구팀(Vaswani 등)이 발표한 이 논문의 제목부터 파격적이었습니다.

논문 제목: "Attention is All You Need" 번역: "어텐션만 있으면 됩니다"

기존 상식: 시퀀스 처리에는 RNN/LSTM이 필수다 논문 주장: RNN을 완전히 제거하고, Attention만으로 충분하다!

결과:

  • 번역 성능에서 기존 모델을 크게 앞섬
  • 학습 시간도 획기적으로 단축

이 논문이 낳은 것들

연도모델설명
2017Transformer논문 발표
2018GPT-1 (OpenAI)Transformer의 Decoder 활용
2018BERT (Google)Transformer의 Encoder 활용
2019GPT-2더 큰 Transformer
2020GPT-31750억 파라미터
2022ChatGPTGPT-3.5 기반 대화형 AI
2023GPT-4멀티모달 AI
2024~Claude, Gemini, LLaMA수많은 LLM

모두 Transformer 아키텍처 기반!

핵심 아이디어: Self-Attention

논문의 핵심은 Self-Attention(자기 주의)이라는 메커니즘입니다.

비유: 독서 모임에서 한 문단을 분석할 때, 각 단어가 다른 모든 단어를 돌아보며 "나와 가장 관련 있는 단어는 뭘까?"라고 질문하는 것과 같습니다.

"나는 사과를 먹었다"에서 Self-Attention이 하는 일:

"먹었다"의 관점:

  • "나는"과의 관련성: 높음 (주어-동사 관계)
  • "사과를"과의 관련성: 매우 높음 (목적어-동사 관계)
  • "먹었다" 자신과의 관련성: 보통

결과: "먹었다"는 "사과를"에 가장 많이 주목하고, "나는"에도 적당히 주목하여 문맥을 이해합니다.


Transformer 아키텍처 전체 구조

큰 그림

Transformer는 크게 Encoder(인코더)와 Decoder(디코더) 두 부분으로 구성됩니다.

[입력 문장] [출력 문장] "I love AI" "나는 AI를 좋아한다" | ^ v | +-----------+ +-----------+ | | 문맥 정보 전달 | | | Encoder | -----------------------> | Decoder | | (이해) | | (생성) | | | | | +-----------+ +-----------+

Encoder의 역할

Encoder = "이해하는 역할"

비유: 통역사가 영어 문장을 듣고 의미를 완전히 파악하는 단계

  • 입력: 원래 문장의 토큰들
  • 처리: Self-Attention으로 단어 간 관계 파악
  • 출력: 각 단어의 문맥이 반영된 표현 (Context-aware Representation)

사용하는 모델: BERT, 문장 이해/분류 모델

Decoder의 역할

Decoder = "생성하는 역할"

비유: 통역사가 이해한 내용을 한국어로 한 단어씩 말하는 단계

  • 입력: 이전에 생성한 토큰들 + Encoder의 출력
  • 처리: Self-Attention + Cross-Attention (Encoder 출력 참조)
  • 출력: 다음에 올 단어 예측

사용하는 모델: GPT 시리즈, 텍스트 생성 모델

Encoder 블록의 내부 구조

하나의 Encoder 블록:

입력 (단어 임베딩 + 위치 인코딩)
     |
     v
[Multi-Head Self-Attention]  ← 단어 간 관계 파악
     |
     + (잔차 연결: 입력을 더해줌)
     |
     v
[Layer Normalization]        ← 값을 안정화
     |
     v
[Feed-Forward Network]      ← 각 위치별 변환
     |
     + (잔차 연결)
     |
     v
[Layer Normalization]
     |
     v
출력

이 블록을 N번 쌓음 (원래 논문에서는 N=6)

Decoder 블록의 내부 구조

하나의 Decoder 블록:

입력 (이전 출력 임베딩 + 위치 인코딩)
     |
     v
[Masked Multi-Head Self-Attention]  ← 미래 단어를 못 보게 마스킹
     |
     + (잔차 연결) → [Layer Norm]
     |
     v
[Multi-Head Cross-Attention]        ← Encoder 출력을 참조
     |
     + (잔차 연결) → [Layer Norm]
     |
     v
[Feed-Forward Network]
     |
     + (잔차 연결) → [Layer Norm]
     |
     v
출력

역시 N번 쌓음 (N=6)

주요 구성 요소 미리보기

다음 레슨들에서 각각을 자세히 배우겠지만, 전체 그림을 위해 간단히 소개합니다.

구성 요소역할비유상세 레슨
Self-Attention단어 간 관계 파악독서 모임에서 서로의 역할 분석7-2
Multi-Head Attention여러 관점에서 동시 분석여러 전문가가 각자 다른 측면 분석7-3
Positional Encoding단어 순서 정보 제공줄 번호가 적힌 칠판7-4
Feed-Forward Network각 위치별 비선형 변환각 단어 정보를 더 풍부하게 가공7-5
Layer Normalization학습 안정화시험 점수를 표준 점수로 변환7-5
Residual Connection정보 손실 방지원본 복사본을 항상 보관7-5

RNN vs Transformer 상세 비교

처리 방식 비교

📝 문장: "나는 오늘 학교에 갔다"

방식처리 과정단계 수
RNN[나는]→h1 → [오늘]+h1→h2 → [학교에]+h2→h3 → [갔다]+h3→h44단계 (순차)
Transformer[나는, 오늘, 학교에, 갔다] → 동시에 모든 관계 계산1단계 (병렬)

성능 비교표

항목RNN/LSTMTransformer
처리 방식순차적 (하나씩)병렬적 (한꺼번에)
학습 속도느림매우 빠름
장거리 의존성어려움 (정보 희석)쉬움 (직접 참조)
GPU 활용제한적최대 활용
메모리O(1) 추가 메모리O(n^2) 메모리 필요
해석 가능성낮음높음 (Attention 시각화)

Transformer의 약점도 있다

⚠️ Transformer가 만능은 아닙니다!

약점설명영향
메모리 O(n²)문장 길이 n → n×n 크기의 Attention 행렬긴 문서(수만 단어)에서 메모리 부족
위치 정보 부재구조 자체에 순서 개념 없음Positional Encoding 별도 추가 필요 (7-4)

| 학습 데이터 필요량 | RNN보다 더 많은 데이터가 필요한 경향 | 소규모 데이터에서는 RNN이 더 나을 수도 있음 |


실행해보기: RNN vs Transformer 속도 비교 시뮬레이션

RNN과 Transformer의 처리 방식 차이를 간단한 시뮬레이션으로 확인해 봅시다.

python
import numpy as np # 문장 길이에 따른 처리 단계 수 비교 seq_lengths = [5, 10, 20, 50, 100, 200] print("=" * 55) print("문장 길이별 처리 단계 수 비교") print("=" * 55) print(f"{'문장 길이':>10} | {'RNN 단계':>10} | {'Transformer':>12} | {'속도 비':>8}") print("-" * 55) for n in seq_lengths: rnn_steps = n # RNN: 순차적으로 n단계 transformer_steps = 1 # Transformer: 병렬로 1단계 ratio = rnn_steps / transformer_steps print(f"{n:>10} | {rnn_steps:>10} | {transformer_steps:>12} | {ratio:>7.0f}x") print() print("Transformer는 문장이 길어져도 1단계!") print("RNN은 문장 길이에 비례하여 단계가 늘어납니다.") print() # 메모리 사용량 비교 (Attention 행렬 크기) print("=" * 55) print("Attention 행렬 크기 (Transformer의 메모리 비용)") print("=" * 55) print(f"{'문장 길이':>10} | {'행렬 크기':>12} | {'메모리(대략)':>12}") print("-" * 55) for n in seq_lengths: matrix_size = n * n memory_mb = matrix_size * 4 / (1024 * 1024) # float32 기준 print(f"{n:>10} | {n}x{n} = {matrix_size:>6} | {memory_mb:>8.4f} MB") print() print("문장이 길어지면 메모리가 n^2으로 증가합니다.") print("이것이 Transformer의 주요 약점입니다.")

Transformer가 세상을 바꾼 이유

확장성(Scalability)의 승리

Transformer의 진정한 강점: "크게 만들수록 더 잘 작동한다"

모델 크기를 키우면:

  • RNN: 순차 처리 때문에 학습 시간이 기하급수적 증가
  • Transformer: 병렬 처리 덕분에 GPU만 추가하면 됨

이것이 가능하게 한 것:

  • GPT-3: 1750억 파라미터 (RNN으로는 불가능했을 규모)
  • 수천 개의 GPU로 동시에 학습
  • "스케일링 법칙": 모델이 클수록, 데이터가 많을수록 성능 향상

다양한 변형 모델들

모델 유형사용 부분대표 모델특기
Encoder만EncoderBERT, RoBERTa문장 이해/분류
Decoder만DecoderGPT 시리즈텍스트 생성
Encoder-Decoder둘 다T5, BART번역, 요약

핵심 요약

개념설명비유
RNN의 한계순차 처리, 장거리 의존성, 병렬화 불가전화 통화로 긴 이야기 듣기
Transformer모든 단어를 동시에 처리하는 구조칠판에 적힌 글을 한눈에 보기
Self-Attention각 단어가 다른 모든 단어를 참조독서 모임에서 서로 분석
Encoder입력을 이해하는 부분통역사의 이해 단계
Decoder출력을 생성하는 부분통역사의 말하기 단계
확장성크게 만들수록 성능 향상GPU 추가로 확장 가능

학습 체크리스트

  • RNN의 세 가지 근본적 한계를 설명할 수 있다
  • "Attention is All You Need" 논문의 핵심 아이디어를 이해했다
  • Transformer의 Encoder와 Decoder 역할을 구분할 수 있다
  • Encoder/Decoder 블록의 내부 구성 요소를 나열할 수 있다
  • RNN 대비 Transformer의 장점과 약점을 설명할 수 있다

다음 레슨: Self-Attention 메커니즘을 상세히 파헤쳐 봅니다. Q, K, V가 무엇이고, 어떻게 계산되는지 numpy로 직접 구현해 봅시다!

레슨 정보

레벨
Level 7: Transformer & LLM 원리
예상 소요 시간
50분
참고 영상
YouTube 링크

💡실습 환경 안내

이 레벨은 PyTorch/GPU가 필요하여 Google Colab 사용을 권장합니다.

Colab은 무료 GPU를 제공하여 PyTorch, CNN, Transformer 등을 실행할 수 있습니다.