image.png

positional encoding이 필요한 이유

image.png

트랜스포머 이전에는 RNN과 LSTM으로 구성된 방법들이 주로 사용되었는데, 이들은 순차적으로 문장을 처리한다. 즉, input에 입력되는 순서대로 RNN 또는 LSTM 모델 내에서 처리가 되는 방식을 갖는다. 앞의 연산이 끝나야 뒤의 연산을 진행할 수 있고 따라서 계산 유닛이 많아도 한번에 1개씩 처리가 된다. 이 경우 발생하는 문제는 연산 속도가 매우 느리다는 점이다.

image.png

RNN이나 LSTM과는 다르게, 트랜스포머의 경우 입력되는 문장을 순차적으로 처리하지 않는다. 입력된 문장을 병렬로 한번에 처리한다는 특징을 가지고 있다.

따라서, “Attnetion is all you need”에서 Positional Encoding을 제안한다.

positional encoding 두 가지 규칙

단어의 위치 정보가 중요한 이유는 다음과 같다.

image.png

Not의 위치 차이로 인해 두 문장의 뜻이 완전히 달라진다. 이와 같이 문장 내의 정확한 단어의 위치를 알 수 없다면 문자의 뜻이 완전히 달라지는 문제가 발생한다.

image.png

따라서, 각각의 단어 벡터에 positional encoding을 통해 얻은 위치 정보를 더해줘야 한다. 이때 두 가지의 규칙을 지켜야한다.

image.png

첫번째, 모든 위치값은 시퀀스의 길이나 input에 관계없이 동일한 식별자를 가져야한다. 따라서 시퀀스가 변경되더라도 위치 임베딩은 동일하게 유지될 수 있다.