지금까지는 부품을 하나씩 살펴보았습니다
자동차를 이해하려면 엔진과 바퀴를 따로 보는 것만으로는 부족합니다. 각각의 부품이 어떤 순서로 연결되어 함께 움직이는지도 알아야 합니다. Transformer의 Encoder도 마찬가지입니다.
Encoder는 입력 문장을 문맥이 담긴 벡터로 바꾼다
문장은 먼저 토큰으로 나뉘고, 각 토큰은 임베딩 벡터로 바뀝니다. 여기에 위치 정보가 더해진 뒤 Encoder로 들어갑니다.
Encoder 한 층 안에서는 어떤 일이 일어날까?
그림은 일반적인 Transformer 구조도처럼 아래의 입력에서 시작해 위의 출력으로 진행합니다. 버튼을 누르면서 계산 순서를 확인해 보세요.
주변 단어를 함께 살펴본다
Multi-Head Self-Attention은 각 단어가 문장의 다른 단어를 참고하게 합니다. 여러 Head가 서로 다른 관계를 동시에 살펴봅니다.
Encoder를 지나면 각 단어가 주변 문맥을 담게 된다
처음의 벡터는 각 단어의 기본적인 의미와 위치 정보를 담고 있습니다. Encoder를 지나면 다른 단어와의 관계가 반영됩니다.
실제 Transformer는 Encoder 층을 여러 번 쌓는다
Encoder 한 층만으로도 단어 관계를 계산할 수 있습니다. 하지만 여러 층을 차례로 통과시키면 앞 층에서 만든 표현을 다음 층이 다시 살펴볼 수 있습니다.
Encoder 한 층의 역할을 한 문장으로 정리하면
핵심 정리
- Encoder는 입력 토큰의 의미와 문맥을 계산하는 Transformer의 구성 요소입니다.
- 한 Encoder 층은 Self-Attention과 Feed Forward Network를 중심으로 구성됩니다.
- 각 계산 뒤에는 Residual Connection과 Layer Normalization이 사용됩니다.
- Encoder를 통과하면 각 토큰 벡터에 주변 단어와의 관계가 반영됩니다.
- 실제 모델은 Encoder 층을 여러 번 쌓아 벡터를 반복해서 변환합니다.
- Encoder의 출력은 다음 Encoder 층이나 Decoder가 사용할 수 있습니다.