Part 7 · Transformer Architecture - Inside an Encoder

Encoder는 어떤 순서로 동작할까

지금까지 살펴본 Self-Attention, Residual Connection, Layer Normalization, Feed Forward Network는 서로 독립적인 기능이 아닙니다. Encoder는 이 계산들을 일정한 순서로 연결하여 하나의 Transformer Layer를 구성하고, 이러한 층을 여러 번 반복하여 입력 문장을 점점 더 깊이 이해합니다.

The Assembly Story

지금까지는 부품을 하나씩 살펴보았습니다

E
“Attention도 배웠고, Feed Forward Network도 배웠습니다. 그런데 이 부품들은 Transformer 안에서 실제로 어떻게 연결될까요?”

자동차를 이해하려면 엔진과 바퀴를 따로 보는 것만으로는 부족합니다. 각각의 부품이 어떤 순서로 연결되어 함께 움직이는지도 알아야 합니다. Transformer의 Encoder도 마찬가지입니다.

이번 페이지의 목표는 새로운 계산식을 배우는 것이 아닙니다. 앞에서 배운 여러 부품이 하나의 Encoder 층으로 조립되는 모습을 이해하는 것입니다.
The Big Picture

Encoder는 입력 문장을 문맥이 담긴 벡터로 바꾼다

문장은 먼저 토큰으로 나뉘고, 각 토큰은 임베딩 벡터로 바뀝니다. 여기에 위치 정보가 더해진 뒤 Encoder로 들어갑니다.

입력 문장 문을 열고 불을 켰다
→
임베딩 + 위치 의미와 순서를 담은 벡터
→
Encoder 단어 관계와 문맥을 계산
→
출력 벡터 문맥이 반영된 표현
Encoder의 출력도 단어가 아니라 벡터입니다. 다만 입력 벡터보다 주변 단어의 문맥이 더 많이 반영된 벡터입니다.
Inside One Encoder Layer

Encoder 한 층 안에서는 어떤 일이 일어날까?

그림은 일반적인 Transformer 구조도처럼 아래의 입력에서 시작해 위의 출력으로 진행합니다. 버튼을 누르면서 계산 순서를 확인해 보세요.

Encoder Layer
출력 벡터
↑
Residual Connection + Layer Normalization
↑
Feed Forward Network
↑
Residual Connection + Layer Normalization
↑
Multi-Head Self-Attention
↑
입력 벡터
1단계

주변 단어를 함께 살펴본다

Multi-Head Self-Attention은 각 단어가 문장의 다른 단어를 참고하게 합니다. 여러 Head가 서로 다른 관계를 동시에 살펴봅니다.

Residual Connection과 Layer Normalization은 앞에서 배운 기능입니다. 여기서는 그 원리를 다시 설명하기보다, Attention 뒤와 Feed Forward 뒤에 각각 한 번씩 사용된다는 구조에 집중합니다.
Before and After Encoding

Encoder를 지나면 각 단어가 주변 문맥을 담게 된다

처음의 벡터는 각 단어의 기본적인 의미와 위치 정보를 담고 있습니다. Encoder를 지나면 다른 단어와의 관계가 반영됩니다.

문을 열고 ↔ 불을 켰다 · 행동의 순서와 관계를 함께 고려
문을 열고 자신의 의미와 위치
불을 켰다 자신의 의미와 위치
아직 각 단어는 자신의 기본적인 의미와 위치를 중심으로 표현되어 있습니다.
Why Repeat the Encoder?

실제 Transformer는 Encoder 층을 여러 번 쌓는다

Encoder 한 층만으로도 단어 관계를 계산할 수 있습니다. 하지만 여러 층을 차례로 통과시키면 앞 층에서 만든 표현을 다음 층이 다시 살펴볼 수 있습니다.

입력 표현 단어의 기본 의미와 위치 출발점
Encoder 1 가까운 단어 관계를 반영 문맥 연결 시작
Encoder 2 앞 층의 결과를 다시 계산 관계가 더 풍부해짐
마지막 Encoder 문장 전체를 반영한 표현 더 깊은 문맥
여러 층이 쌓인다고 해서 사람이 이해하듯 “생각의 깊이”를 숫자로 측정하는 것은 아닙니다. 정확히는 앞 층에서 계산된 벡터를 다음 층이 다시 변환한다는 뜻입니다.
One Layer at a Glance

Encoder 한 층의 역할을 한 문장으로 정리하면

입력 의미와 위치가 담긴 벡터
→
Self-Attention 다른 단어를 참고
→
Feed Forward 각 단어 표현을 다시 계산
→
출력 문맥이 더 반영된 벡터
Encoder는 문장을 하나의 벡터로 압축하는 상자가 아닙니다. 입력된 각 토큰마다 하나의 출력 벡터를 만들어 냅니다.
Summary

핵심 정리

  • Encoder는 입력 토큰의 의미와 문맥을 계산하는 Transformer의 구성 요소입니다.
  • 한 Encoder 층은 Self-Attention과 Feed Forward Network를 중심으로 구성됩니다.
  • 각 계산 뒤에는 Residual Connection과 Layer Normalization이 사용됩니다.
  • Encoder를 통과하면 각 토큰 벡터에 주변 단어와의 관계가 반영됩니다.
  • 실제 모델은 Encoder 층을 여러 번 쌓아 벡터를 반복해서 변환합니다.
  • Encoder의 출력은 다음 Encoder 층이나 Decoder가 사용할 수 있습니다.