[NLP] Transformer (Attention Is All You Need)

.·2022년 3월 9일
0

Transformer

  • 기존 seq2seq 모델
    • 인코더-디코더 구조
    • 인코더 : 입력 시퀀스를 하나의 벡터 표현으로 압축
    • 디코더 : 이 벡터 표현으로 출력 시퀀스 생성
    • 이 과정에서 입력 시퀀스의 정보가 일부 손실 가능
  • 이를 보정하기 위해 attention 사용

dmodeld_{model}(512) : transformer의 encoder와 decoder에서 정해진 input/output 크기(임베딩 벡터의 차원), 다음층의 인코더와 디코더로 값을 보낼 때에도 차원 유지

num_layersnum\_layers(6) : transformer에서 하나의 encoder와 decoder를 층으로 생각 했을 때, 몇 층으로 구성된지를 의미

num_headsnum\_heads(8) : 어텐션 사용시 여러 개 분할 후 병렬로 어텐션 수행하고 결과값을 하나로 합치는 방식에서 병렬 갯수

dffd_{ff}(2048) : transformer 내부 feed forward 신경망에서의 은닉층 크기

  • encoder 와 decoder 라는 단위가 N개로 구성
    • cf) RNN 에서는 encoder, decoder 에서 각각 하나의 RNN이 t개의 time-step을 가지는 구조

      ![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/07ef4b52-8aee-440c-bc6f-d2a66bd7a144/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/07ef4b52-8aee-440c-bc6f-d2a66bd7a144/Untitled.png)

      Positional Encoding

    • RNN과 다른 방식으로 단어의 위치정보를 알려줌

    • 각 단어의 임베딩 벡터에 위치 정보들을 더해 모델의 입력으로 사용(positional encoding)

      Self-Attention

    • encoder에 입력된 벡터들에서 각 3개의 벡터를 만듦(Query, Key, Value)

    • 이 벡터들은 입력 벡터에 대해 세 개의 학습 가능한 행렬들을 각각 곱해 만들어짐

    • 이 새 벡터들이 기존 벡터들 보다 더 작은 사이즈를 가짐

    • 반드시 작은 것은 아니지만 multi-head attention의 계산 복잡도를 일정하게 만들고자한 구조적 선택

    • self-attention 계산 시 단어와 입력 문장 속 다른 모든 단어들에 대해 각각 점수를 계산해야함

    • score = query vector \cdot key vector


    • #1 에 있는 단어의 self-attention의 첫 번째 점수 : q1k1q_1\cdot k_1

    • 두 번째 점수 : q1k2q_1 \cdot k_2

    • 3,4 단계 : 점수들을 8(key vector size인 64의 제곱근)로 나눔

    • softmax : 각 단어의 표현들이 얼마나 들어갈 것인지 결정

    • 5단계 : 입력 각 단어의 value vector에 이 점수를 곱하는 것(무관한 단어는 지우는 단계)

    • 6단계 : 이 점수로 곱해진 weighted value vector 들을 다 합해버림, 이 단계의 출력이 현재 위치에 대한 self-attention layer의 출력


    • 이 결과로 나온 벡터(실제로는 행렬 형태)를 feed-forward 신경망으로 보냄

      행렬 계산 요약

Reference

https://wikidocs.net/31379

https://blog.promedius.ai/transformer/

https://ahnjg.tistory.com/57

https://www.youtube.com/watch?v=IBSGb2Tt-1Q

https://blog.promedius.ai/transformer/

profile
http://s6820w.tistory.com/ 로 블로그 이전

0개의 댓글