본문 바로가기

papers

Attention is all you need - 3 (모델 아키텍쳐2)

이번 글에서는 지난 글에 이어Transformer 아키텍쳐를 공부하고 시퀀스 학습에 있어 왜 self-attention이 recurrent, convolution보다 나은 모델인지 알아보자.

Position-wise Feed-Forward Networks

Transformer의 인코더-디코더의 sub layers를 Fully connected feed-forward network가 연결된다. 두 개의 선형 변환(linear transformation, 논문에서 FFN을 LT로 지칭하는 듯하다) 사이에 ReLU를 사용한다. 입력과 출력은 512차원이고 inner-layer는 2048차원의 벡터이다.

수식은 다음과 같다.

FFN 수식

Embeddings and Softmax

Transformer도 시퀀스를 생성하는 여느 다른 모델처럼 임베딩된 벡터를 입력받아 다음 토큰의 확률을 예측하기 위한 출력으로 사용한다.

Positional Encoding

Transformer는 Recurrence와 convolution을 사용하지 않기 때문에 별도로 상대적이거나 절대적인 토큰의 위치에 대한 정보를 모델에 추가할 필요가 있다. 인코더와 디코더 스택의 첫 부분에 "Positional encodings"을 더하여 위치 정보를 삽입한다. Positional encoding(PE)은 model의 차원과 같은 벡터로 모델을 구성하는 벡터에 서로 다른 주기를 가진 sin함수와 cosine함수를 이용한 Positional encoding을 더한다.

reference를 달아 놓은 블로그에서 PE의 정보를 얻었는데, 삼각함수의 주기성과 행렬의 선형변환하는 특성을 이용한 인코딩인 듯 하다. 삼각함수와 행렬에 대한 이해가 더 깊어져야 완전하게 이해할 듯하다. 위치 정보 임베딩에서 sinusoid한 특징은 중요하다고 하니 향후에 내자신이 이해할 수 있기를 응원한다.

Positional Encoding 수식

pos는 PE를 적용하는 토큰의 위치이고 PE를 적용하는 i는 벡터의 index이다. 위치를 인코딩 하려면 각 인코딩 결과 값이 중복되지 않는 정보를 지녀야하는데, Transformer에서는 PE를 적용하는 토큰의 위치(pos), 임베딩의 차원(dmodel) 크기, PE가 적용되는 순서(i)를 독립변수로 sin, cos 함수에 입력한다.

Why Self-Attention

시퀀스 생성 모델에서 self-attention과 recurrent, convolution을 비교해보자. self-attention은 세 장점이 있다. 첫째는 layer당 계산 복잡도가 작고 둘째는 계산을 병렬처리할 수 있다는 것이다. 셋째는 long-range dependency 학습에 강점이 있는 것이다. 기존 시퀀스 생성 모델에서 긴 시퀀스를 학습하려면 층을 얕게 쌓아 순전파, 역전파의 거리를 짧게 했어야 했다. 

표에 나와있듯이 self-attention은 한번의 연산으로 위치 정보를 학습할 수 있는 반면에 recurrent layer는 n번의 연산이 필요하다. 저자들은 더 긴 시퀀스를 학습하고 계산을 효율적으로 하기위해 출력 주변의 r개에만 집중해 최적의 층(path) 수를 찾는 것을 향후에 연구할만한 주제로 남겨두었다.

why self-attention

convolution kernel의 크기가 n과 같다면 논문에서 사용한 self-attention과 point-wise feed-forward layer를 사용한 것과 같은 효과를 낸다. kernel의 사이즈가 n보다 작다면 비용이 점점 더 비효율적으로 된다.

self-attention은 신경망 모델의 설명 가능성에 강점이 있다. 각각의 attention head는 다른 특징을 포착할 뿐 아니라 문장의 의미적이고 구문적인 연관성을 잘 표현하는 것 같다.

 

Reference

https://blog-deepest.medium.com/position-encoding%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B6%84%EC%84%9D-ab1816b0f62a

https://tigris-data-science.tistory.com/entry/%EC%B0%A8%EA%B7%BC%EC%B0%A8%EA%B7%BC-%EC%9D%B4%ED%95%B4%ED%95%98%EB%8A%94-Transformer5-Positional-Encoding

https://blog-deepest.medium.com/position-encoding%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B6%84%EC%84%9D-ab1816b0f62a