크크루쿠쿠

Transformer (2) 본문

DeepLearning/부스트캠프 AI Tech

Transformer (2)

JH_KIM 2021. 9. 20. 12:46

Multi-head Attention

동일한 V,K,Q에 대해서 여러 버전의 W 를 적용시켜 h개의 attention을 수행한다.

왜 필요한가?

-> 특정한 쿼리에서 다양한 측면에서 정보를 뽑을 필요가 있다. 

예시

 

Self-Attention -> 행렬의 계산을 한번에 하기 때문에 O(1) 로 가능 (GPU가 받쳐준다는 가정 하에)

Recurrent -> 매 time step 마다 따로 계산해줘야 하기 때문에 O(n), 병렬화가 불가능하다.

하지만 메모리 관점에서는  Self-Attention이 더 많이 차지함.

 

Transformer: Block based model

 

Add & Norm 에서 Residual Connection이라 부르는 Add 와 Layer Noramlization을 거침

Add 과정을 통해 학습을 안정화 시키고 Gradient Vanishing 문제도 해결 해준다.

 

Layer Normalization

 

Layer에서 평균을 0 분산을 1로 만들어주는 Normalization 과정을 거친다.

그 이후에 Affine transformation을 거친다.

Affine transformation의 변수들도 network의 학습에 따라 달라지는 parameter가 된다.

Layer Normalization 과정

 

Positional Embedding

Attention 연산은 순서를 고려하지 않기 때문에 위치를 알아야 한다.

벡터에 위치를 반영해줘야 한다.

순서를 특정지을 수 있는 상수 벡터를 더해줘야함.

그 벡터를 어떻게 정하나? -> 위에 그림의 식으로 구해준다.

위 그래프를 Position(y축) 마다 더해줌으로써 구분해준다. 

 

Warm-up Learning Rate Scheduler

 

학습 도중에 learning rate를 계속 변경시켜줌으로써 더 좋은 결과를 얻게끔 한다.

초반에는 global optima를 찾기 위해 learning rate를 증가시킨다음에 점점 낮추는 모양을 띈다.

 

Transformer : Decoder

V,K는 Encoder에서 가져오고 Q는 1단에서 출력하는 벡터를 사용한다.

ground truth를 이용해 backpropagation 진행

 

Masked Self-Attention

기존 학습시에는 모든 정보 접근을 허용했었다.

예측 과정에서는 뒤의 단어를 제외해주어야 한다.

그 뒤에 row 별로 합이 1이 되도록 normalize 해줘야 한다.

즉 후처리로 mask 처리를 해주는 것이다.

Comments