[NLP]Transformer Paper Review

조한희·2022년 3월 9일
0

프리온보딩코스

목록 보기
4/4

1. Abstract

기존에 Sequence Task를 해결하기 위해서 복잡한 recurrent(RNN, LSTM, GRU) 모델 또는 합성곱(CNN) 모델을 사용했다. Transformer는 이러한 Recurrence와 Convolution을 사용하지 않고 Attention 매커니즘만을 사용하여 만든 모델입니다. 실험 결과, Train 시간이 비교적 적게 걸립니다.

2. Model Architecture

Transformer는 인코더와 디코더에 이러한 self-Attention, point-wise, fully connected 레이어를 쌓아 사용합니다.
인코더는 6개의 레이어(N = 6)를 사용합니다. 한 레이어는 두 개의 서브 레이어로 이루어져 있습니다. 하나는 Multi-Head Attention, 또 하나는 간단한 position-wise fully connected Feed Forward입니다. 각 레이어에 Bypass를 사용하여 잔차를 더하고, Normalize 합니다.
디코더 또한 6개의 레이어(N = 6)를 사용합니다. 디코더는 세 가지 레이어를 사용합니다. 인코더와 같이 Multi-Head Attention, position-wise fully connected Feed Forward에 마지막으로 Masked Multi-Head Attention 레이어도 함께 사용합니다.

3. Attention

어텐션 레이어는 쿼리, 키, 벨류 세 개의 벡터 값으로 만들어집니다. 이 세 개 벡터의 연산으로 어텐션 레이어의 Output 벡터가 만들어 집니다. output 벡터는 가중치가 설정된 value에 의해 만들어 집니다. 여기에서 각 Value의 weight는 Key와 Query의 연산으로 정해지게 됩니다.

4. Layers

  • Scaled Dot-Product Attention
    Scaled Dot-Product Attention 레이어는 가장 많이 사용되는 Attention 레이어 중에 하나입니다. 중간에 마스크 연산을 선택하여 사용할 수 있습니다. Mask를 사용하는 경우 현재단어와 이전 단어 만을 볼 수 있어 후단에 있는 단어를 미리 예측하는 것을 방지합니다. 시계열 데이터를 순차적으로 이해하며 유추하기를 원하기 때문에 이러한 방식을 사용합니다.

    Q는 Query, K는 Key, V는 Value를 의미합니다. 각 Matrix가 하나의 셋으로 뭉쳐져 다음 연산식에 들어가게 됩니다.

  • Multi-Head Attention
    Attention 레이어를 여러개 병렬로 쌓아 서로 다른 Projection을 갖도록 하는게 하나만 쌓아 사용하는 것보다 더 좋은 결과를 보여줍니다. 그림에서는 위에 설명한 Scaled Dot-Product Attention레이어를 병렬화하여 사용하는 예시 사진입니다.

    어텐션 연산한 결과를 하나의 head로 보아 매트릭스를 Concat하여 연산 결과를 도출합니다.

  • Feed Forward
    인코더와 디코더에 position-wise fully connected Feed Forward 레이어를 사용합니다. 수식은 다음과 같습니다. ReLU activation과 함께 두번의 선형 계산을 합니다.

5. Positional Embedding

데이터의 순서를 담기 위해 인코더와 디코더 실행 가장 첫 단에서 Sin, Cos 함수를 사용하여 Positional Embedding을 수행합니다. 아래 표를 보면 시간복잡도상 타 네트워크 레이어 입력 방식보다 더 낮기에 짧은 런타임을 기대할 수 있습니다.

6. Experiment Result

타 모델과 비교하여 보았을 때, BLEU의 EN-DE과 EN-FR 테스크에서 제일 좋은 성능을 보여줍니다. ConvS2S Ensemble 모델이 EN-FR에서 유사한 성능을 보이지만 Training Cost를 보았을 때 Transformer가 더 적은 연산량으로 높은 성능을 보여줍니다.

7. Conclusion

Attention 개념에 기초한 모델인 Transformer는 Sequence Transduction Task에서 Recurrence, Convolutional 모델을 대체하여 사용할 수 있습니다. 타 모델과 비교했을 떄 더 적은 연산으로 높은 성능을 보여줍니다.


Paper

profile
ML engineer @seawavve

0개의 댓글