[논문 리뷰] Attention Is All You Need[2]: Attention

Attention

  • Attention이란 query를 key-value 쌍에 매핑하는 것
  • query와 key의 유사도를 구해 가중치를 구함
  • 이를 해당 key의 value 값 가중치로 사용
  • output 값은 value의 가중치 합

Scaled Dot-Product Attention

Attention
$$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$
  • 쿼리(Q), 키(K) 벡터들의 도트 프로덕트를 $ \sqrt{d_k} $로 나눈 후 소프트맥스 적용하여 가중치 구함
  • 값(V)들의 가중합으로 어텐션 출력값 계산

Multi-Head Attention

Attention
  • 쿼리, 키, 값을 각각 서로 다른 선형 변환하여 h개의 병렬 어텐션 계산
  • 각 어텐션 헤드는 Scaled Dot-Product Attention 수행
  • 모든 헤드의 출력값들을 연결하고 최종적으로 선형 변환
  • 의의
    • 다중 헤드를 통해 서로 다른 위치에서 다양한 정보에 주목 가능
    • 병렬 연산으로 성능은 유지하고 연산량을 줄임: 논문에서는 8개의 헤드를 두고, 차원을 512/8 = 64로 낮춤

Applications of Attention in Transformer

  • 인코더의 셀프 어텐션 레이어
    • 키, 값, 쿼리가 모두 인코더의 이전 레이어 출력에서 옴
    • 인코더의 각 위치가 이전 레이어의 모든 위치에 주목 가능
  • 디코더의 셀프 어텐션 레이어
    • 디코더의 각 위치가 해당 위치까지의 모든 디코더 위치에 주목
    • 마스킹을 통해 후행 위치 정보가 유출되는 것을 방지
  • 디코더의 인코더-디코더 어텐션 레이어
    • 디코더의 이전 레이어에서 쿼리가 오고, 인코더 출력에서 키와 값이 옴
    • 디코더의 모든 위치가 입력 시퀀스의 모든 위치에 주목할 수 있음
    • seq2seq와 작동 방식 유사

레퍼런스

  1. Pytorch 공식 코드
  2. Transformer 분석: Transformer의 Encoder 이해하기

Categories: ,

Updated: