Part 7 · Transformer Architecture - Giving Position to Words

Transformer는 단어의 위치를 어떻게 알까

임베딩 벡터에는 단어의 의미는 담겨 있지만 문장 속 위치는 들어 있지 않습니다. Transformer는 각 단어에 위치 정보를 함께 전달하여 첫 번째 단어인지, 마지막 단어인지, 다른 단어와 어떤 순서 관계를 가지는지를 이해하도록 만듭니다.

The Next Classroom Story

선생님은 뒤섞인 단어 카드를 다시 보았습니다

T
“단어 카드에 원래 자리를 알려주는 표시를 붙이면 어떨까요?”
문을 열고
불을 켰다

두 카드에는 각각 하나의 행동이 적혀 있습니다. 하지만 카드만 놓여 있으면 어떤 행동이 먼저였는지 알기 어렵습니다.

“문을 열고 불을 켰다”와 “불을 켜고 문을 열었다”를 구별하려면 단어의 의미 외에 무엇이 더 필요할까요?
Number Tickets

선생님이 카드마다 번호표를 붙였습니다

선생님은 첫 번째 카드에는 ①, 두 번째 카드에는 ②를 붙였습니다. 이제 카드가 섞여도 원래 자리를 확인할 수 있습니다.

1번째 문을 열고
2번째 불을 켰다
번호표는 단어의 뜻을 바꾸지 않습니다. 대신 이 단어가 문장 안에서 몇 번째 자리에 있었는지를 알려줍니다.
Before and After

번호표가 없을 때와 있을 때

번호표가 없을 때

행동은 알 수 있지만 순서는 확실하지 않습니다.

문을 열다 불을 켜다

번호표가 있을 때

각 행동의 원래 자리를 함께 알 수 있습니다.

① 문을 열다 ② 불을 켜다
Transformer에도 이와 비슷한 장치가 필요합니다. 단어의 의미뿐 아니라 문장 속 자리도 함께 전달해야 합니다.
Positional Encoding

이 위치 번호표를 Positional Encoding이라고 한다

Transformer에서는 단어마다 “첫 번째”, “두 번째”, “세 번째” 같은 위치 정보를 함께 넣어 줍니다. 이 위치 정보를 만드는 방법을 위치 인코딩(Positional Encoding)이라고 합니다.

단어의 의미 “문을 열고”가 무엇을 뜻하는지
+
단어의 위치 이 단어가 첫 번째 자리에 있다는 정보
→
Transformer 입력 의미와 위치를 함께 가진 표현
실제 Transformer가 단어 옆에 숫자 1, 2, 3을 그대로 적는 것은 아닙니다. 번호표처럼 이해할 수 있도록 위치도 여러 숫자로 이루어진 벡터로 표현합니다.
Meaning Vector + Position Vector

단어 벡터에 위치 벡터를 더한다

토크나이저와 임베딩을 거친 단어는 의미를 나타내는 벡터가 됩니다. Transformer는 여기에 위치를 나타내는 또 다른 벡터를 더합니다.

단어 임베딩 “문을 열고”의 의미를 담은 벡터
+
위치 벡터 “첫 번째 자리”를 나타내는 벡터
=
최종 입력 벡터 의미와 위치를 모두 담은 벡터
Transformer가 받는 것은 단순한 단어 벡터가 아닙니다. 단어의 의미와 문장 속 위치가 합쳐진 벡터입니다.
Same Word, Different Place

같은 단어라도 위치가 다르면 다른 입력이 된다

같은 단어가 문장 안에서 여러 번 등장할 수도 있습니다. 단어의 의미 벡터는 같더라도 위치 벡터가 다르므로 Transformer가 받는 최종 입력은 서로 달라집니다.

첫 번째 위치의 “문”

문 임베딩 + 1번째 위치

다섯 번째 위치의 “문”

문 임베딩 + 5번째 위치
단어가 같아도 위치가 다르면 최종 입력 벡터도 달라집니다. 그래서 Transformer는 같은 단어가 문장 어디에 나타났는지 구별할 수 있습니다.
Interactive Position Labels

카드의 순서를 바꾸고 번호표를 확인해 보자

아래 버튼을 누르면 단어 카드가 다른 순서로 놓입니다. 카드가 움직여도 위치 번호표가 원래 문장 순서를 알려주는지 확인해 보세요.

번호표를 보면 “문을 열고”가 먼저, “불을 켰다”가 나중임을 알 수 있습니다.
What Transformer Finally Sees

Transformer는 의미와 위치를 함께 본다

Token Embedding 각 단어가 무엇을 뜻하는지 표현
+
Positional Encoding 각 단어가 어디에 있는지 표현
→
Self-Attention 의미와 위치를 바탕으로 단어 관계 계산
위치 정보가 추가되면 Self-Attention은 “어떤 단어인가?”뿐 아니라 “문장 안에서 어디에 있는 단어인가?”도 고려할 수 있습니다.
One Important Detail

위치 정보는 학습될 수도 있고, 미리 정해질 수도 있다

위치 벡터를 만드는 방법은 하나만 있는 것이 아닙니다. 모델이 학습을 통해 위치 벡터를 직접 정할 수도 있고, 일정한 수학적 규칙으로 미리 만들어 사용할 수도 있습니다.

학습형 위치 임베딩

학습 과정에서 각 위치에 알맞은 벡터값을 모델이 수정합니다.

고정형 위치 인코딩

사인과 코사인 같은 일정한 규칙으로 위치 벡터를 만듭니다.

이번 페이지에서는 두 방법의 공통 원리만 기억하면 됩니다. 단어의 의미 벡터에 위치 정보를 더해 Transformer에 전달한다는 점입니다.
Summary

핵심 정리

  • Transformer는 단어의 의미만으로 문장 속 순서를 자동으로 알 수 없습니다.
  • 그래서 각 단어에 문장 속 위치 정보를 함께 넣습니다.
  • 이 위치 정보를 만드는 방법을 위치 인코딩(Positional Encoding)이라고 합니다.
  • 단어 임베딩과 위치 벡터를 더해 Transformer의 입력 벡터를 만듭니다.
  • 같은 단어라도 위치가 다르면 최종 입력 벡터도 달라집니다.