Notice
Recent Posts
Recent Comments
Link
관리 메뉴

one by one ◼◻◼◻

[NLP 논문리뷰] Attention Is All You Need(2) 본문

논문리뷰

[NLP 논문리뷰] Attention Is All You Need(2)

JihyunLee 2021. 12. 26. 03:19

저자 : Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin

링크 : https://arxiv.org/abs/1706.03762

 

Attention Is All You Need

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new

arxiv.org

 

이전에 쓴 Attention Is All You Need(1)에 이어서 논문 리뷰를 계속 해보도록 하겠습니다.

(1)을 안보신 분들은 (1)먼저 읽고 오는걸 추천드립니다!

2021.12.16 - [논문리뷰] - [NLP 논문리뷰] Attention Is All You Need(1)

 

3.2.3 Applications of Attention in our Model

그럼 attention을 모델에 어떻게 적용했는지 알아보겠습니다. 

  • encoder-decoder attention
    decoder layer의 두번째에 있는 layer인 Multi-Head Attention은 decoder에서 encoder의 내용을 보는 attention입니다. Qurey 는 이전의 decoder layer에서 온 값(Masked Multi-Head Attention의 결과(?)), key 와 value는 encoder의 결과물입니다. 이것은 디코더의 output이 어떤 순서이든, input의 sequence 전체를 효과적으로 볼 수 있게 합니다(첫번째 단어이든, 마지막 단어이든, input을 동일하게 볼 수 있게 되었습니다. LSTM은 이~전의 단어는 까먹게 된다는 단점이 있었죠). 
  • encoder의 self-attention layer
    인코더에는 slef attention layer가 있습니다. query, key, value모두 encoder에서 옵니다. 이를 통해 encoder는 하나의 단어를 이해할 때 전체 문장의 문맥을 파악하여 단어를 이해하게 됩니다. 예를 들어, "어제 그거 먹었어! 김밥" 이라는 문장이 있을 때 encoder는 "그거"를 이해하기 위해 "김밥"에 attention을 두고 이해하게 됩니다.
  • decoder의 self-attention layer
    비슷하게 decoder에도 self attention layer가 있습니다. 그러나 여기는 Masked 라는 말이 붙어있습니다. 이는 아직 생성되지 않은 단어 구간은 없는걸로 취급하겠다는 말이 됩니다. 그래서 decoder가 만약 "어제 그거 먹었어"까지 말을 생성했다면 "그거"를 이해하기 위해서는 어제, 그거, 먹었어 이 세 단어를 통해 "그거"를 이해해야 한다는(value를 다시 계산한다는(?))말이 됩니다.

이 부분은 설명 중간중간에 (?)가 있는데, 이건 제가 이해한 방법이라서 확실한 정답인지 모르겠네요!

 

3.3 Position wise feed-forward networks

위에까지 설명한 encoder와 decoder를 생성 후에는 feed forward network를 거쳐 하나의 단어를 생성해 내야 합니다. 활성화 함수로는 ReLU를 사용하였고, FFN 네트워크의 식은 다음과 같습니다.

 

3.4 Embeddings and Softmax

학습 가능한 embeddig레이어를 만들어서 사용했습니다.

 

3.5 Positional Encoding

모델이 recurrence나 convolution이 아니기 때문에 순차정보를 담기 어렵습니다. 그래서 positional encoding을 사용하여, 위치 정보를 추가해 줬습니다. sin과 cos 처럼 주기를 가지는 함수를 기반으로 아주 작은 값을 position마다 둔 뒤, 극 값을 embedding마다 더해주는 방법입니다. 주기함수 기반이기 때문에, 아주 긴 문장이오면 다시 postition마다 더해주는 값이 반복되게 됩니다.

 

6. Result

처음에는 Machine Translation을 위한 논문이었기 때문에 주로 Maching Translation에 대해서 성능이 얼마나 좋았는지 평가하고 있습니다. (그러나 후에 뭐든지 다 하는 초 거대 모델의 기반이 되죠!)

 

 

후기

2번에 걸친 attention is all you need 논문을 리뷰해 보았습니다. attention에 대해 다시한번 꼼꼼히 볼 수 있는 시간이었네요! Attention에 대해서 좀 집중해서 작성해서, training이나, 결과에 대해서는 자세히 적지 않았는데, 혹시 관심이 있다면 논문을 보시는 것을 추천드립니다💨

Comments