[Attention Is All You Need_논문1]Transformer _  Embedding, Positional Encoding
논문리뷰

[Attention Is All You Need_논문1]Transformer _ Embedding, Positional Encoding

728x90

오늘은 자연어처리 모델중 번역 분야에서 유명한 논문인 Transformer를 정리하는 글이다.

논문 링크 : 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

Transformers _ 자연어 처리 모델

1. 등장배경

  • 기존 RNN 모델의 한계

기존의 seq2seq 모델은 encoder-decoder 구조로 구성되어 있었다. 여기서 encoder는 입력 시퀀스를 하나의 벡터 표현으로 압축하고, decoder는 이 벡터 표현을 통해서 출력 시퀀스를 만들어 내는 구조였다.

하지만 이런 구조는 인코더가 입력 시퀀스를 하나의 벡터로 압축하는 과정에서 입력 정보가 손실(기울기소실)된다는 단점이 있었고, 이를 보정하기 위해 어탠션이 사용되었다.

출처 - https://davinci-ai.tistory.com/30

  • attention의 등장

출처 : 나동빈 깃허브

처음에 attention은 단순히 RNN의 성능을 보정하기 위해 사용되었는데 2017년 구글의 연구진들이 attention을 보정하기 위한 용도가 아니라 어텐션 자체로 인코더와 디코더를 만드는 방법을 제안했다. 이 때 발표된 논문이 "Attention Is All You Need" 라는 논문이다.

현재 번역모델에 좋은 성능을 나타내는 GPT, BERT 모델도 Transfomer의 아키텍처를 활용해서 만든 모델이다.

번역 문장이 길어지면 길어질수록 RNN, LSTM보다 Attention의 성능이 높아진다.

2. Transformers 아키텍처

Transformers의 구조를 보면 RNN이나 CNN 구조를 전혀 사용하지 않고 있다. 그 대신 Positional Encoding을 통해 input값을 처리한다.

전체 구조는 Encoder와 Decoder로 구성되어있으며 Attention과정을 여러 레이어에서 반복하는것을 알 수 있다.

위 그림에도 나와있듯이 입력값으로 단어가 들어오면 여러 층의 Encoder를 거친 K, V값을 Decoder의 각 층에 입력값으로 보내고 Decoder는 번역된 값을 출력하는 것을 볼 수 있다.

(논문에서 N=6개의 층으로 구성)

 

아래 그림이 조금 더 자세하게 표현되어있다.

이제 위 구조도에서 나오는 기술에 대한 설명을 정리한다.

 

3. Transformers의 입력방식

  • Embedding + Positional Encoding

Transformer의 input값이 만들어지는 방법으로는 입력값을 임베딩 벡터로 변환하고 Positional Encoding값을 더해주는 방법으로 입력값을 생성한다.

출처 - https://www.baeldung.com/cs/transformer-text-embeddings

3.1 Embedding

Embedding의 정의는 입력된 문자를 기계가 이해할 수 있도록 숫자(벡터)로 바꾸는 방법론이다.

벡터화 방법으로는 두가지 방법이 있습니다

  1. 희소표현

One-hot Encoding 방법처럼 벡터의 값이 대부분 0으로 표현하는 방법이다.

 

   2. 밀집 표현(임베딩)

 

벡터의 차원을 조밀하게 변형하는 방법이다. 이 밀집 표현 방법에도 두가지 방법이 있는데

이 중 Transformer에서는 Embedding layer로 단어를 실수로 변환한다.

 

  • Embedding layer

단순히 임베딩 층을 차원에 맞게 랜덤초기화해서 출력해주는 방식이다.

출처 - https://tungmphung.com/the-transformer-neural-network-architecture/

위 그림처럼 단어를 토큰단위로 나눈 후 각 토큰당 {1 x 차원의 수}의 랜덤 가중치 벡터로 변환한다. 그리고 그 벡터를 모두 합쳐 {토큰 수 x 차원의 수} 행렬로 변환한다.  

* 논문에서는 차원을 512로 설정했다.

 

 

3.2 Positional Encoding

이렇게 출력된 무작위 임베딩 행렬에 Positional Encoding 행렬을 더해 줌으로써 단어의 위치를 저장해서 Encoder부분의 입력값을 만들게 됩니다. 

Transformer는 순차적으로 연산하지 않기 때문에 Positional Encoding을 통해 단어간 순서 위치 정보가 필요합니다. 

그럼 Positional Encoding은 무엇일까요?

attention 논문 출처

Positional Encoding은 sin, cos을 통해서 주기함수로 표현하는데 이건 input길이가 달라도 항상 같은 값을 출력합니다. 

  • pos        : 문장 내 단어의 순서
  • i             : 임베딩 벡터 차원에서의 순서
  • d_model : 트랜스포머의 모든 층의 출력 차원을 의미 (논문에서는 512)

Ex) 토큰(단어) 4개를 512차원으로 임베딩 했다면, pos=0~3, i=0~127이다. 

출처 - https://kazemnejad.com/blog/transformer_architecture_positional_encoding/

위 그림은 positional encoding 값을 시각화 한 그림이다. 

위에서 sin, cos 수식으로 계산한 Positional Encoding값을 랜덤 임베딩 값에 더하면 단어간 수의 차이가 일정하게 변환되서 Encoder의 입력값으로 들어가게 된다.


Transformer의 내용을 한번에 담기는 너무 길어서 part는 1,2로 나눠서 작성하려고 한다.

아래 링크에서 part2에서 self-Attention과 Encoder, Decoder의 전반적인 내용을 확인할 수 있다.

https://zeuskwon-ds.tistory.com/88?category=1041966

 

[논문_Attention Is All You Need]Transformer _ Encoder, Decoder

이번 포스팅은 이전에 작성한 Transformer에 이어서 Encoder, Decoder 부분에 대한 세부 기술들을 설명하려고 한다. Tranfomer의 개요와 input값에 대한 설명은 아래 링크에서 확인가능하다. https://zeuskwon-ds..

zeuskwon-ds.tistory.com

 

출처

https://daje0601.tistory.com/287

https://github.com/ZeusKwon/Deep-Learning-Paper-Review-and-Practice/blob/master/lecture_notes/Transformer.pdf

 

 

 

 

728x90