인코더 · 디코더 · 인코더-디코더: BERT · GPT · T5와 사전학습 목표
BERT · GPT · T5 세 계열을 마스크와 사전학습 목표(MLM · CLM · 스팬 오염)로 비교하는 수업
먼저 알아야 할 것
다루는 내용
같은 트랜스포머 블록이 마스크와 사전학습 목표에 따라 인코더(BERT) · 디코더(GPT) · 인코더-디코더(T5)로 갈라지는 원리를 다룹니다. MLM 15% · 80/10/10 규칙, 인과 LM 손실 · 퍼플렉서티, T5 스팬 오염을 예문으로 직접 계산하고, 일에 따라 어떤 계열을 고를지 정리합니다.
해설
인코더 · 디코더 · 인코더-디코더: BERT · GPT · T5와 사전학습 목표
트랜스포머 블록은 같아도 어떤 토큰이 어떤 토큰을 볼 수 있게 하느냐(마스크) 와 무엇을 맞히게 하느냐(사전학습 목표) 에 따라 세 계열로 갈라집니다. 양쪽을 다 보는 인코더(BERT), 앞만 보는 디코더(GPT), 둘을 이은 인코더-디코더(T5)입니다. 이 수업에서는 세 계열의 마스크를 행렬로 그려 보고, 마스크 언어 모델 · 인과 언어 모델 · 스팬 오염 목표를 예문으로 직접 만들어 손실까지 계산한 뒤, 어떤 일에 어떤 계열을 고르는지 정리합니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | Hugging Face LLM Course 1.6 「Transformer Architectures」 · BERT(arXiv 1810.04805) · RoBERTa(arXiv 1907.11692) · T5(arXiv 1910.10683) · GPT-3(arXiv 2005.14165) |
| 트랙 · 수준 | NLP·트랜스포머 · 중급 |
| 이 수업이 다루는 범위 | 세 계열의 구조와 마스크, MLM · CLM · 스팬 오염 · 접두 LM, 손실 계산, 미세조정 방식, 계열 선택 기준 |
들어가기 전에
- 트랜스포머 블록 한 층을 손으로 — 블록 계산 순서와 인과 마스크.
- 언어 모델의 기본: 다음 토큰 예측 · 퍼플렉서티 · 샘플링 — 교차 엔트로피 손실과 퍼플렉서티.
- 어텐션만 있으면 된다 (트랜스포머) — 원조 인코더-디코더 구조.
한눈에 보기
- 인코더 · 디코더 · 인코더-디코더가 같은 블록에 다른 마스크 를 쓴 것임을 행렬로 설명할 수 있습니다.
- BERT의 마스크 언어 모델(15%, 80/10/10 규칙)을 예문에 적용해 봅니다.
- GPT의 인과 언어 모델 손실과 퍼플렉서티를 직접 계산합니다.
- T5의 스팬 오염(센티널 토큰) 입력 · 정답을 직접 만들어 봅니다.
- 분류 · 검색 · 생성 · 번역 등 일에 따라 어떤 계열이 맞는지 고를 수 있습니다.
1. 세 계열은 마스크가 다를 뿐이다
직관(해설용 비유). 시험 문제 유형으로 생각합니다.
- 인코더(BERT): 빈칸 채우기. 앞뒤 문장을 다 보고 빈칸을 맞힙니다. 문장을 이해 하는 데 강합니다.
- 디코더(GPT): 이어 쓰기. 앞부분만 보고 다음 말을 씁니다. 생성 에 강합니다.
- 인코더-디코더(T5): 원문을 다 읽고(인코더) 답안을 처음부터 써 내려갑니다(디코더). 번역 · 요약처럼 입력을 다른 글로 바꾸는 일에 잘 맞습니다.
Hugging Face 강좌도 대부분의 트랜스포머 모델이 인코더 전용, 디코더 전용, 인코더-디코더 셋 중 하나라고 정리합니다.
마스크 행렬로 보기. 토큰 4개일 때 "행(쿼리)이 열(키)을 볼 수 있으면 1"로 적습니다.
| 계열 | 마스크 모양 | 뜻 |
|---|---|---|
| 인코더(양방향) | 모두 1 | 모든 토큰이 모든 토큰을 봄 |
| 디코더(인과) | 아래 삼각(대각선 포함) | 자기와 앞쪽만 봄 |
| 접두 LM | 앞 개 열은 모두 1, 나머지는 인과 | 입력 부분은 양방향, 출력 부분은 인과 |
인과 마스크(토큰 4개)를 쓰면 다음과 같습니다.
인코더-디코더는 여기에 교차 어텐션 이 더해집니다. 디코더의 쿼리가 인코더 출력 전체(키 · 값)를 봅니다. T5 논문은 같은 틀 안에서 인코더-디코더 · 디코더 전용 언어 모델 · 접두 LM을 비교했고, 실험한 설정에서는 잡음 제거(denoising) 목표를 쓴 인코더-디코더가 가장 좋았다고 보고합니다.
flowchart LR
subgraph E[인코더 전용 · BERT]
E1[입력 전체] --> E2[양방향 셀프 어텐션] --> E3[토큰마다 문맥 벡터]
end
subgraph D[디코더 전용 · GPT]
D1[앞 토큰들] --> D2[인과 셀프 어텐션] --> D3[다음 토큰 확률]
end
subgraph ED[인코더-디코더 · T5]
A1[입력] --> A2[인코더] --> A3[교차 어텐션]
B1[지금까지 쓴 출력] --> B2[디코더 인과 어텐션] --> A3 --> A4[다음 출력 토큰]
end2. 마스크 언어 모델 (BERT)
직관. 문장 몇 군데를 가리고 맞히게 합니다. 앞뒤를 모두 보고 맞히므로 양방향 문맥을 배웁니다.
BERT의 규칙(원 논문).
- 입력 토큰의 15%를 예측 대상으로 고릅니다.
- 고른 토큰을 80%는
[MASK]로, 10%는 무작위 토큰으로, 10%는 그대로 둡니다. - 고른 위치에서만 원래 토큰을 맞히는 교차 엔트로피 손실을 계산합니다.
왜 80/10/10인가. 미세조정 · 실제 사용 때는 [MASK] 가 나오지 않습니다. 늘 [MASK] 만 쓰면 학습과 사용 사이 차이가 생기므로, 일부는 무작위 · 원래 토큰으로 두어 모델이 모든 위치의 표현을 신경 쓰게 합니다.
BERT는 여기에 두 문장이 실제로 이어지는지 맞히는 다음 문장 예측(NSP) 도 함께 학습했습니다. 학습 데이터는 BooksCorpus(8억 단어)와 영어 위키백과(25억 단어)였습니다. 이후 RoBERTa는 NSP 손실을 빼도 성능이 같거나 조금 좋아진다는 것을 보였고, 매번 다른 위치를 가리는 동적 마스킹과 160GB가 넘는 더 많은 데이터로 BERT를 개선했습니다.
숫자로 해 보기(해설용). "오늘 회의는 오후 세 시에 시작합니다"(토큰 7개라고 가정)에서 '세'를 고르고 [MASK] 로 바꿨다고 합시다. 모델이 그 자리에서 정답 '세'에 확률 0.6을 주면 손실은 입니다. 100토큰 문장이면 약 15개 위치에서만 손실이 나옵니다. 학습 신호가 토큰의 일부에서만 나온다 는 점이 MLM의 약점으로 자주 꼽힙니다.
쓰는 법. 출력은 "토큰마다 문맥이 담긴 벡터"입니다. 맨 앞 [CLS] 벡터에 분류층을 얹어 감성 분류를, 토큰 벡터마다 분류층을 얹어 개체명 인식을, 문장 벡터를 뽑아 검색(Sentence-BERT)을 합니다. 긴 글을 새로 쓰는 데는 맞지 않습니다.
3. 인과 언어 모델 (GPT)
직관. 앞부분을 보고 다음 토큰을 맞히는 일을 모든 위치에서 동시에 합니다. 인과 마스크 덕분에 한 번의 계산으로 개 위치의 예측을 다 얻습니다.
| 기호 | 뜻 |
|---|---|
| 번째 토큰 | |
| 그 앞의 모든 토큰 | |
| 모델(파라미터 )이 준 확률 | |
| 예측한 위치 수 |
숫자로 해 보기(해설용). "회의는 / 세 시에 / 시작합니다"에서 세 위치의 정답 확률이 각각 0.5, 0.2, 0.9였다면
- 손실:
- 퍼플렉서티: — 평균적으로 후보 약 2.2개 중에서 고르는 정도로 헷갈린다는 뜻입니다.
왜 생성 모델이 이 방식으로 모였나. ① 모든 토큰이 학습 신호가 되어 데이터 효율이 좋고 ② 학습 방식(다음 토큰 예측)과 사용 방식(한 토큰씩 생성)이 똑같으며 ③ 문제 설명과 예시를 앞에 적어 주기만 하면 여러 일을 할 수 있습니다. GPT-3는 이 방식을 크게 키워, 예시 몇 개를 프롬프트에 넣는 퓨샷 학습을 보였습니다(GPT-3 해설).
4. 스팬 오염 (T5)
직관. BERT처럼 빈칸을 만들되, 연속된 여러 토큰(스팬)을 센티널 토큰 하나 로 바꾸고, 디코더가 빠진 조각들을 순서대로 써내게 합니다. 모든 문제를 "글을 넣으면 글이 나온다(text-to-text)"로 통일한 T5의 사전학습 목표입니다.
T5의 설정(원 논문). 입력 토큰의 15%를 지우고, 연속으로 지워진 토큰은 하나의 센티널로 바꿉니다. 최종 모델은 평균 스팬 길이 3을 썼습니다. 사전학습 데이터로는 웹에서 정제한 약 750GB 규모의 C4를 만들었습니다.
숫자로 해 보기(해설용 예문).
- 원문:
오늘 회의는 오후 세 시에 본관 3층에서 시작합니다 - 입력:
오늘 회의는 <X> 본관 <Y> 시작합니다 - 정답(디코더 출력):
<X> 오후 세 시에 <Y> 3층에서 <Z>
정답이 지운 부분만이라 출력이 짧고, 그만큼 계산이 줄어듭니다. 마지막 <Z> 는 끝 표시입니다.
쓰는 법. 번역이면 입력에 translate English to German: … 같은 접두어를 붙이고, 분류도 정답 라벨 단어 를 생성하게 합니다. 한 모델 · 한 손실로 모든 일을 다룹니다.
5. 미세조정과 고르는 기준
| 하고 싶은 일 | 잘 맞는 계열 | 예 |
|---|---|---|
| 문장 분류 · 개체명 인식 | 인코더 | BERT, RoBERTa |
| 검색용 문장 임베딩 | 인코더 | Sentence-BERT 류 |
| 자유로운 글 생성 · 대화 | 디코더 | GPT, LLaMA |
| 번역 · 요약 | 인코더-디코더(디코더도 가능) | T5, BART |
| 생성형 질의응답 | 인코더-디코더 또는 디코더 | T5, GPT |
이 표는 Hugging Face 강좌의 정리를 따른 것입니다.
요즘 흐름(주의해서 읽기). 대형 범용 모델은 디코더 전용이 많습니다. 하나의 모델로 프롬프트만 바꿔 여러 일을 하고, 대화형으로 쓰기 쉽기 때문입니다. 그렇다고 인코더가 쓸모없어진 것은 아닙니다. 분류 · 검색처럼 "읽기만 하는" 일은 작은 인코더가 더 싸고 빠른 경우가 많아, RAG의 검색기 · 리랭커에 여전히 널리 쓰입니다(검색의 기초).
미세조정 방식 차이.
- 인코더: 출력 벡터 위에 작은 분류층을 붙여 라벨 데이터로 학습합니다.
- 디코더: 입력 · 정답을 한 글로 이어 붙이고 정답 부분 토큰에만 다음 토큰 손실을 겁니다(지시 미세조정, 미세조정 수업).
- 인코더-디코더: 입력은 인코더에, 정답은 디코더에 넣고 정답 토큰 손실을 겁니다.
연습 문제
- 토큰 200개 문장에 BERT 규칙을 적용하면 예측 대상은 몇 개이고, 그중
[MASK]로 바뀌는 것은 대략 몇 개인가요?- 풀이: 개를 고르고, 그중 80%인 약 24개가
[MASK], 3개는 무작위 토큰, 3개는 그대로입니다.
- 풀이: 개를 고르고, 그중 80%인 약 24개가
- 인과 LM에서 세 위치의 정답 확률이 모두 0.25면 퍼플렉서티는?
- 풀이: 손실 , 퍼플렉서티 입니다. 매번 4개 중 하나를 찍는 수준입니다.
- 원문
A B C D E F에서B C와E를 지우면 T5 입력 · 정답은?- 풀이: 입력
A <X> D <Y> F, 정답<X> B C <Y> E <Z>입니다.
- 풀이: 입력
- 접두 LM 마스크(토큰 4개, 접두 2개)를 행렬로 쓰세요.
- 풀이: 앞 두 열은 모든 행에서 1, 나머지는 인과입니다. 행 순서대로 , , , 입니다.
스스로 점검
- 같은 트랜스포머 블록인데 BERT는 생성을 잘 못하는 이유는?
- 답: 양방향 마스크로 '앞뒤를 다 보고 빈칸 채우기'만 배웠기 때문입니다. 한 토큰씩 왼쪽에서 오른쪽으로 써 나가는 연습(인과 LM)을 하지 않았습니다.
- 인과 LM이 MLM보다 학습 신호가 많은 이유는?
- 답: MLM은 가린 약 15% 위치에서만 손실이 나오지만, 인과 LM은 모든 위치가 '다음 토큰 맞히기' 문제가 되기 때문입니다.
- RoBERTa가 BERT에서 바꾼 것 두 가지는?
- 답: 다음 문장 예측(NSP)을 빼고, 매번 다르게 가리는 동적 마스킹을 썼습니다(데이터 · 학습량도 늘렸습니다).
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 인코더 전용 | 양방향으로 문장을 읽어 토큰마다 문맥 벡터를 내는 모델(BERT) |
| 디코더 전용 | 앞만 보며 다음 토큰을 생성하는 모델(GPT) |
| 인코더-디코더 | 입력을 읽는 인코더와 출력을 쓰는 디코더를 교차 어텐션으로 이은 모델(T5) |
| 마스크 언어 모델(MLM) | 가린 토큰을 앞뒤 문맥으로 맞히는 목표 |
| 인과 언어 모델(CLM) | 앞 토큰들로 다음 토큰을 맞히는 목표 |
| 스팬 오염 | 연속 토큰 묶음을 센티널로 바꾸고 빠진 조각을 생성하게 하는 목표 |
| 센티널 토큰 | 지운 자리를 표시하는 특수 토큰(<X>, <Y> …) |
| 접두 LM | 앞부분은 양방향, 뒷부분은 인과로 보는 언어 모델 |
| NSP | 두 문장이 이어지는지 맞히는 BERT의 보조 목표 |
더 깊이 보려면
- BERT: 양방향 트랜스포머 사전학습 — MLM · NSP 원 논문 해설
- 생성적 사전학습으로 언어 이해 높이기 (GPT-1) — 디코더 사전학습 + 미세조정의 시작
- 언어 모델은 퓨샷 학습자다 (GPT-3) — 디코더를 키웠을 때 생긴 일
- T5 원문 https://arxiv.org/abs/1910.10683 — 목표 · 구조 · 데이터를 체계적으로 비교한 실험 모음
다음에 볼 것
- 생성적 사전학습으로 언어 이해 높이기 (GPT-1) — 디코더 계열의 출발점
- BERT: 양방향 트랜스포머 사전학습 — 인코더 계열의 출발점
- 디코딩 전략: 탐욕 · 빔 · 온도 · top-k · top-p — 디코더가 확률로 실제 글을 고르는 방법
라이선스
본문은 KAITABASE 자체 해설입니다. 참고 자료 Hugging Face LLM Course는 Apache 2.0으로 공개되어 있습니다. 예문과 확률 값은 이 수업을 위해 만든 해설용 예이며, 논문 수치는 각 원문에서 확인한 것만 옮겼습니다.
출처
- Hugging Face LLM Course 1.6 Transformer Architectures: https://huggingface.co/learn/llm-course/chapter1/6
- Devlin 외, BERT (2018): https://arxiv.org/abs/1810.04805
- Liu 외, RoBERTa (2019): https://arxiv.org/abs/1907.11692
- Raffel 외, Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5, 2019): https://arxiv.org/abs/1910.10683
- Brown 외, Language Models are Few-Shot Learners (GPT-3, 2020): https://arxiv.org/abs/2005.14165
AI 원리부터 이해하기 · NLP·트랜스포머 모듈
NLP·트랜스포머 모듈 학습
이 글은 NLP·트랜스포머 모듈의 학습 자료입니다. 전체 23개 자료 중 13번째입니다.
출처·원문
원문 보기요약만