선생님은 뒤섞인 단어 카드를 다시 보았습니다
두 카드에는 각각 하나의 행동이 적혀 있습니다. 하지만 카드만 놓여 있으면 어떤 행동이 먼저였는지 알기 어렵습니다.
선생님이 카드마다 번호표를 붙였습니다
선생님은 첫 번째 카드에는 ①, 두 번째 카드에는 ②를 붙였습니다. 이제 카드가 섞여도 원래 자리를 확인할 수 있습니다.
번호표가 없을 때와 있을 때
번호표가 없을 때
행동은 알 수 있지만 순서는 확실하지 않습니다.
번호표가 있을 때
각 행동의 원래 자리를 함께 알 수 있습니다.
이 위치 번호표를 Positional Encoding이라고 한다
Transformer에서는 단어마다 “첫 번째”, “두 번째”, “세 번째” 같은 위치 정보를 함께 넣어 줍니다. 이 위치 정보를 만드는 방법을 위치 인코딩(Positional Encoding)이라고 합니다.
단어 벡터에 위치 벡터를 더한다
토크나이저와 임베딩을 거친 단어는 의미를 나타내는 벡터가 됩니다. Transformer는 여기에 위치를 나타내는 또 다른 벡터를 더합니다.
같은 단어라도 위치가 다르면 다른 입력이 된다
같은 단어가 문장 안에서 여러 번 등장할 수도 있습니다. 단어의 의미 벡터는 같더라도 위치 벡터가 다르므로 Transformer가 받는 최종 입력은 서로 달라집니다.
첫 번째 위치의 “문”
다섯 번째 위치의 “문”
카드의 순서를 바꾸고 번호표를 확인해 보자
아래 버튼을 누르면 단어 카드가 다른 순서로 놓입니다. 카드가 움직여도 위치 번호표가 원래 문장 순서를 알려주는지 확인해 보세요.
Transformer는 의미와 위치를 함께 본다
위치 정보는 학습될 수도 있고, 미리 정해질 수도 있다
위치 벡터를 만드는 방법은 하나만 있는 것이 아닙니다. 모델이 학습을 통해 위치 벡터를 직접 정할 수도 있고, 일정한 수학적 규칙으로 미리 만들어 사용할 수도 있습니다.
학습형 위치 임베딩
학습 과정에서 각 위치에 알맞은 벡터값을 모델이 수정합니다.
고정형 위치 인코딩
사인과 코사인 같은 일정한 규칙으로 위치 벡터를 만듭니다.
핵심 정리
- Transformer는 단어의 의미만으로 문장 속 순서를 자동으로 알 수 없습니다.
- 그래서 각 단어에 문장 속 위치 정보를 함께 넣습니다.
- 이 위치 정보를 만드는 방법을 위치 인코딩(Positional Encoding)이라고 합니다.
- 단어 임베딩과 위치 벡터를 더해 Transformer의 입력 벡터를 만듭니다.
- 같은 단어라도 위치가 다르면 최종 입력 벡터도 달라집니다.