먼저 가장 큰 흐름만 보자
복잡한 블록 그림보다 먼저, 입력이 들어와 출력으로 바뀌는 전체 흐름부터 이해해 보겠습니다.
Transformer는 같은 구조를 여러 층 쌓는다
하나의 Transformer 층은 문장 관계를 한 번 해석합니다. 하지만 한 번만으로 모든 의미를 충분히 이해하기 어렵기 때문에 같은 구조를 여러 층 쌓습니다.
한 층 안에는 어떤 계산이 들어 있을까?
Transformer 한 층의 핵심은 크게 두 가지입니다. 먼저 단어 사이의 관계를 찾고, 그 결과를 다시 가공합니다.
문장 속 단어들이 서로를 참고합니다.
원래 정보를 유지하고 계산값을 안정적으로 정리합니다.
각 단어의 표현을 더 깊게 가공합니다.
다음 층으로 보낼 새로운 토큰 표현이 만들어집니다.
왜 같은 층을 여러 번 통과할까?
He와 Tom이 연결될 가능성을 찾습니다.
단어 사이의 비교적 가까운 관계를 파악합니다.
Tom이 New York에 산다는 관계를 연결합니다.
문장 안의 여러 정보가 하나의 문맥으로 묶입니다.
He가 Tom이고, the city가 New York이라는 더 넓은 관계를 함께 반영합니다.
문장 전체의 의미가 더 풍부해집니다.
입력 문장은 Transformer를 지나며 어떻게 바뀔까?
입력 단계
단어를 숫자 벡터로 바꾸고 위치 정보를 더합니다.
Transformer 통과 후
각 단어는 문맥이 풍부한 새로운 벡터로 바뀝니다.
Transformer는 크게 Encoder와 Decoder로 나눌 수 있다
원래 Transformer는 번역을 위해 만들어졌습니다. 그래서 입력 문장을 이해하는 부분과 출력 문장을 만드는 부분이 나뉘어 있습니다.
Encoder
Decoder
Transformer의 흐름을 단계별로 확인해 보자
아래 버튼을 눌러 각 단계가 무엇을 하는지 확인해 보세요.
현재 단계
입력 준비
토큰을 Embedding 벡터로 바꾸고, 각 토큰의 위치 정보를 더합니다.
Transformer 전체 구조를 한 번에 정리
이제 한 층의 부품을 하나씩 살펴볼 차례다
전체 구조는 이해했습니다. 다음부터는 Transformer 한 층 안의 부품을 하나씩 자세히 살펴봅니다.
핵심 정리
- Transformer는 입력 문장을 여러 층에서 반복적으로 가공하는 모델입니다.
- 입력은 Tokenization, Embedding, Positional Encoding을 거쳐 준비됩니다.
- 한 Transformer 층은 Self-Attention과 Feed Forward Network를 중심으로 구성됩니다.
- Residual Connection과 Layer Normalization이 층을 안정적으로 연결합니다.
- 층이 깊어질수록 토큰 표현은 더 넓고 복잡한 문맥을 반영할 수 있습니다.
- Transformer의 출력은 각 토큰의 문맥이 반영된 새로운 벡터입니다.
- 원래 Transformer는 Encoder와 Decoder를 함께 사용했습니다.
- BERT는 Encoder 중심, GPT는 Decoder 중심 구조로 발전했습니다.