Processing math: 100%

AI

Attention is all you need (1/2) - Scaled Dot Product Attention

공부하는 sum 2024. 11. 10. 23:27
728x90

Attention is all you need 를 읽고 공부하며 작성한 글 입니다.


Abstract

  • 시퀀스 모델에서 제일 많이 사용되는 모델들은 인코더와 디코더를 포함한 RNN 또는 CNN을 기반으로 하는 모델
  • transformer는 인코더와 디코더를 어텐션 매커니즘을 이용하여 연결하여 사용함

INTRODUCTION

  • 시퀀스 모델링 문제에서 RNN, LSTM, GRU등 기존의 recurrent 모델들은 이전 결과를 순차적으로 받아야 하는 특성 때문에 병렬화가 제한적임

https://wikidocs.net/22886

  • 이전의 값을 처리 후 그 값을받아서 이후 값을 처리해야하는 문제
  • 그 길이가 길수록 시간, 메모리적인 부담이 증가하게 됨
  • attention 매커니즘을 이용하여 입,출력 시퀀스 내의 거리와 상관없이 의존 관계를 효과적으로 모델링할 수 있게 되었으나 이것 마저도 대부분 recurrent네트워크와 사용됨.
  • 그렇기에 recurrent 없이 attention 매커니즘 만으로 입,출력간의 의존성을 학습할 수 있도록 transformer를 제안

MAIN IDEA

Attention Mechanism

이전에 사용되던 건 Seq2Seq

  • Seq2Seq
    • 인코더가 입력 시퀀스를 압축된 컨텍스트로 인코딩한 후, 디코더가 해당 컨텍스트를 기반으로 출력 시퀀스를 생성하는 모델
    • seq2seq 모델의 문제
      • 정보 손실 : 하나의 고정된 크기의 벡터에 모든 정보를 압축하려고 함 기울기 소실
      • RNN의 고질적 문제 중 하나로, 해결하지 못함

Attention의 기본 아이디어

  • 출력 단어를 예측하는 매 시점(time step)마다, 인코더에서의 전체 입력 문장을 다시 한 번 참고함
  • 예를들어, 4번 단어의 representation을 학습하기 위해서,이전레이어의 모든 단어와의 유사도를 계산함. 이 유사도를 통해 각 단어에 대한 가중치를 얻고, 이 가중치를 이전 레이어의 각 단어 표현에 곱하여 가중합(weighted sum)을 구하고, 이를 통해 자기 자신의 최종 representation을 정의함. 

Attention의 구성요소

  • Key, Query, Value 3가지를 통해서 Attention Value를 계산하게 됨.
  • Query: 내가 어떤 정보에 주목해야 할지 알고 싶을 때 기준이 되는 요소.
  • Key: 각 단어가 가진 정보를 표현하며, 다른 단어들이 얼마나 주목해야 하는지 판단할 기준.
  • Value: 최종적으로 전달될 정보로, 가중치가 적용되어 중요한 정보가 더 강조된 결과
    • 각각의 Value를 통해서 최종적인 Attention Value를 얻게 됨

Scaled Dot Product Attention

  • Attention 에도 다양한 종류가 있는데, 이 논문에서는 Scaled Dot-Product Attention을 이용함.
  • Attention Value 계산 순서
    1. Attention Score를 통해 Query와 Key 간의 유사도를 계산하며, 이 과정에서 Dot-Product를 사용.
    2. Attention Score를 소프트맥스로 정규화하여 Attention Distribution(확률 분포)로 변환.
    3. Attention Distribution을 Value 벡터에 곱해 합산하여 Attention Value(최종 결과)를 출력

  • 수식과 함께 단계를 살펴보면 다음과 같이 단계를 나눌 수 있음
    1. Q와 K의 MatMul 단계
      •  QKT
      • MatMul이란, Matrix Multiplication (행렬 곱셈)을 의미함
      • Query와 Key를 Dot-Product(내적)하여 Attention Score를 구함
    2. Scale
      • 1dk
      • dk:Key
      • Scaling을 왜 해주는걸까?
        • 벡터 차원이 커질수록 내적 값의 크기가 커질 가능성이 높기 때문에 특정 위치에 과하게 높은 가중치가 부여되지 않도록 스케일링을 통하여 조절하려는 목적
    3. Mask : 디코더에서 사용
      • 특정 위치에 대한 가중치를 0으로 만들어 특정 단어나 위치를 무시하게 하는 단계
      • 디코더의 경우에는 미래 정보를 알면 안되기 때문에 활용
    4. SoftMax
      • SoftMax를 이용하여 정규화, 확률 형태로 변환하여 Attention Distribution 로 변환
    5. MatMul
      • 앞서 구한 Attention Distribution 에 Value를 곱하여 weighted sum형태로 최종적인 Attention Value구함
728x90