/ AI

트랜스포머 - 포지셔널 인코딩

트랜스포머 - 포지셔널 인코딩

발표 형식으로 진행하겠습니다.

참고 자료

1

이번 발표는 트랜스포머에서 인코더 입력 데이터에 대해 발표하겠습니다.

다음 발표에 트랜스포머 인코더와 디코더 내부의 어텐션에 대해 발표하겠습니다.

2

딥러닝을 이용한 자연어 처리 입문 책에서 Attention is All You Need에 대해 설명을 참고했습니다.

3

순서는 역사, 주요 하이퍼파라미터 설명, 트랜스포머 모델의 흐름, 입력되는 임베딩 벡터에 위치 정보를 담는 방법인 포지셔널 인코딩 방법에 대한 순서로 발표하겠습니다.

4

트랜스포머의 역사는 단순 인공신경망에서 순차적인 정보를 기억하는 순환신경망으로 발전했습니다.

입력과 출력 문장의 길이가 같아야하는 단점을 시퀀스투시퀀스에서 인코더, 디코더를 이용하면서 해결해주었습니다.

여기서 RNN을 기반으로 인코더 디코더를 구성했기 때문에 문장의 길이가 길면 정보의 손실이 발생합니다. 따라서 이를 보안하는 방법으로 어텐션 메커니즘을 이용했습니다.

추후 어텐션만으로만 구성된 인코더와 디코더를 사용한 Seqence-to-Sequence 모델이 트랜스포머입니다. 기존의 RNN을 이용한 Sequence-to-Sequence 보다 성능이 월등히 뛰어났습니다.

5

트랜스포머 모델을 살펴보기 전에 사용되는 주요 하이퍼파라미터를 알아보겠습니다.

총 4가지가 있습니다.

6

첫번째는 dmodel로 인코더와 디코더의 입력과 출력의 크기를 의미합니다.

논문에서는 512 값을 사용했습니다.

그리고 입력값으로 사용되는 임베딩 벡터 차원 또한 dmodel과 같습니다.

7

두번째는 numlayer로 인코더와 디코더가 몇개 층으로 이루어졌는지를 의미합니다.

8

세번째는 numheads 로 어텐션을 사용할 때 여러 개로 분할해서 병렬로 어텐션을 수행하고 결과값을 다시 하나로 합치는 방식을 사용하는데 이때 병렬의 개수를 의미합니다.

병렬로 수행하는 이유는 계산량 감소로 속도 향상과 각각의 어텐션이 다른 측면을 볼 수 있어서 정확도 향상도 됩니다.

9

네번째는 dff로 ff는 피드포워드를 의미하고 신경망의 은닉층의 크기를 의미합니다.

10

트랜스포머 모델을 살펴보겠습니다.

간단하게 i am a student가 트랜스포머 모델로 입력되고 인코더를 거쳐 디코더에서 프랑스어로 번역된 결과를 볼 수 있습니다.

점점 내부적으로 살펴보겠습니다.

11

주요 하이퍼파라미터였던 numlayer는 인코더와 디코더의 층을 의미한다고 했습니다.

논문에서는 6 값을 가집니다.

따라서 각 인코더, 디코더는 6개씩 층이 있습니다.

12

각 6개의 인코더 디코더를 인코더들과 디코더들로 지칭하고 입력되는 임베딩 차원의 크기는 논문에서 512로 지정했습니다.

13

기존의 RNN을 이용한 시퀀스투시퀀스와 다른점 하나입니다.

RNN은 순차적으로 입력을 받기 때문에 위치 정보가 있었습니다.

하지만, 트랜스포머는 한번에 입력을 받기 때문에 입력받는 임베딩 벡터에 위치정보를 추가해주어야합니다.

이 방법이 포지셔널 인코딩 입니다.

14

포지셔널 인코딩은 단어마다 가지는 임베딩 벡터에 위치정보를 추가해주는 것입니다.

포지셔널 인코딩을 하는 방법은 위치가 짝수인 인덱스는 sin 함수를 홀수인 인덱스는 cos 함수를 이용하여 연산합니다.

15

입력 데이터는 실제 연산은 2개의 행렬의 덧셈 연산으로 임베딩 벡터의 문장행렬과 포지셔널 인코딩의 행렬의 합으로 이루어집니다.

여기까지가 포지셔널 인코딩의 이론입니다.

16 17 18 19 20

포지셔널 인코딩의 코드 부분입니다.

초기화 부분에 position인 문장의 길이와 d_model인 인코더, 디코더 입력의 크기를 설정합니다.

포지셔널 인코딩 수식대로 코드는 만들어지며 call 부분에서 실제 입력값이 만들어집니다.

21

현재까지는 인코더, 디코더에 데이터를 입력하기 위한 작업을 했습니다.

다음 발표에서 각 인코더와 디코더의 내부를 살펴보겠습니다.

22

추가로 시각화 부분을 넣어서 살펴보겠습니다. 오른쪽 위에 있는 그림을 실제 데이터에서 시각화 해본 것입니다. 각 단어마다 패턴이 다른 모습을 볼 수 있습니다.