본문 바로가기

AI.ML

[AI/ML 스터디] 7주차 - Attention is All Your Need 논문 리뷰

초록(Abstract)

현재 지배적인 순차 변환 모델은 인코더와 디코더를 포함한 복잡한 순환 신경망(RNN)이나 합성곱 신경망(CNN)에 기반

  • 복잡성을 없애고 오직 어텐션 메커니즘에만 기반한 간단한 네트워크 구조인 트랜스포머(Transformer)를 제안
    • 이 모델은 순환과 합성곱을 완전히 제거
    • 병렬 처리가 더 용이하고 훈련에 필요한 시간이 크게 줄어드는 것을 확인

서론(Introduction)

순환을 배제하고 대신 어텐션 메커니즘에 전적으로 의존하여 입력과 출력 사이의 글로벌 의존성을 도출하는 모델구조인 트랜스포머를 제안

  • 셀프 어텐션(Self-Attention)
    • 단일 시퀀스의 서로 다른 위치를 관련지어 시퀀스의 표현을 계산하는 어텐션 메커니즘

모델 구조(Model Architecture)

Scaled Dot-Product Attention

 

각 Q 벡터는 모든 K 벡터에 대해서 어텐션 스코어를 구하고, 어텐션 분포를 구한 뒤에 이를 사용하여 모든 V 벡터를 가중합하여 어텐션 값 또는 컨텍스트 벡터를 구하게 된다.

  • 쿼리 : 물어보는 주체 - I am a teacher에서 ‘I’를 뜻함
  • 키 : 물어보는 대상 - 각각의 단어들

마스크 행렬(Mask)을 이용해서 특정 단어는 무시할 수 있도록 한다.

 

두 가지 가장 일반적으로 사용되는 어텐션 함수는 가산 어텐션(additive attention)과 닷 프로덕트(dot-product, 곱셈) 어텐션

  • 가산 어텐션은 단일 은닉층을 가진 피드포워드 네트워크를 사용하여 호환성 함수를 계산
  • 닷 프로덕트 어텐션은 고도로 최적화된 행렬 곱셈 코드를 사용하여 구현할 수 있기 때문에 실제로는 훨씬 빠르고 공간 효율적

Multi-Head Attention

임베딩 차원(d_{model})의 키, 값, 쿼리를 사용하여 단일 어텐션 함수를 수행하는 대신, 쿼리, 키 및 값을 각각 d_k, d_k 및 d_v 차원으로 선형 투영하는 것이 유익하다는 것을 발견

  • 선형 투영된 쿼리, 키 및 값의 각 버전에서 어텐션 함수를 병렬로 수행하여 $d_v$ 차원의 출력 값을 얻는다.
    • 이 출력 값들을 연결한 후 다시 한 번 투영하여 최종 값을 얻는다.

모델에서 어텐션 응용(Applications of Attention in our Model)

세가지 종류의 어텐션 레이어가 사용된다.

  • 인코더-디코더 어텐션(Encoder-Decoder Attention):.
    • 쿼리가 디코더에 있고 각각 키와 Value는 인코더에 있는 것을 의미
    • 디코더에 있는 쿼리가 인코더에 있는 키와 Value 값을 참조함.
  • 인코더 셀프 어텐션(Encoder Self-Attention):
    • 인코더의 각 층에서 모든 키, 값, 쿼리는 동일한 위치, 즉 인코더의 이전 층의 출력에서 나온다. 인코더의 각 위치는 인코더의 이전 층의 모든 위치에 주목한다.
    • 각각의 단어가 서로에게 어떤 영향을 미치는 지 확인
  • 디코더 셀프 어텐션(Decoder Self-Attention):
    • 디코더의 각 위치가 해당 위치까지 디코더의 모든 위치에 주목할 수 있게 한다. 디코더에서 자가 회귀적 속성을 유지하기 위해 왼쪽으로 정보가 흐르지 않도록 마스킹을 사용
    • 앞쪽 단어만을 참고할 수 있도록 만듦.

Position-wise Feed-Forward Networks

어텐션 서브 레이어 외에도, 인코더와 디코더의 각 레이어는 위치별로 동일하게 적용되는 완전 연결 피드포워드 네트워크를 포함

  • 두 개의 선형 변환과 그 사이의 ReLU 활성화 함수로 구성
  • 선형 변환은 다른 위치에서도 동일하지만, 층마다 다른 매개변수를 사용

Positional Encoding

  • 모델이 시퀀스의 순서를 활용할 수 있도록 하기 위해 시퀀스 내 토큰의 상대적 또는 절대적 위치에 대한 정보를 주입

  • pos는 각각 단어의 번호, i는 각각 단어의 임베딩 값 위치를 의미함
    • 파장(wavelength)은 2π에서 10000 · 2π까지 기하급수적으로 증가
    • 즉, 각 단어의 상대적인 위치 정보를 네트워크를 알 수 있도록 주기함수 사용

왜 셀프 어텐션이 유리한가?

순환 및 합성곱 레이어와 셀프 어텐션 레이어의 다양한 측면을 비교

  • 셀프 어텐션을 사용하기 위한 동기부여 요소
    1. 레이어별 총 계산 복잡도가 줄어듦
    2. 필요한 최소 순차 연산 수로 측정되는 병렬처리가 가능
    3. 네트워크에서 장기 종속성 간의 경로 길이

  • n은 시퀀스의 길이(단어의 개수), d는 표현차원, r은 이웃의 크기, k는 합성곱의 커널 크기
    • 💡Self-Attention이 가장 복잡도가 낮음을 보여줌,
    • n의 길이가 d보다 짧은 경우가 더 많음
      • n은 word-piece와 같이 단어의 단위의 개수로 보기 때문에

Training

  • 약 450만 개의 문장 쌍으로 구성된 표준 WMT 2014 영어-독일어 데이터셋으로 학습을 진행
    • 문장은 약 37000개의 토큰으로 구성된 공유된 소스-타겟 어휘를 사용하는 바이트 페어 인코딩을 사용하여 인코딩
  • 영어-프랑스어의 경우, 우리는 약 3600만 개의 문장으로 구성된 WMT 2014 영어-프랑스어 데이터셋을 사용하였고, 토큰을 32000개 단어 조각 어휘로 나눈다.

결과(Results)

  • 영어-독일어 번역과제에서, 대형 프랜스포머 모델은 기존에 보고된 최고 모델보다 2.0 BLEU이상 높은 28.4의 BLEU 점수를 기록해 새로운 최고 성능 달성
  • 영어-프랑스어 작업을 위해 훈련된 대형 트랜스포머 모델은 $P_{drop}$비율을 0.3대신 0.1로 설정했다
  • 트랜스포머가 다른 작업에도 일반화할 수 있는지 평가하기 위해 우리는 **영어 구성구 분석(English constituency parsing)**에 대한 실험을 수행
    • RNN 시퀀스-투-시퀀스 모델과는 달리, 트랜스포머는 WSJ 훈련 세트의 40K 문장만으로도 BerkeleyParser보다 우수한 성능

결론(Conclusion)

본 연구에서는 트랜스포머를 소개했다.

  • 완전히 어텐션 메커니즘에 기반한 최초의 순차 변환 모델로
    • 인코더-디코더 구조에서 주로 사용되던 순환 레이어 → **다중 헤드 셀프 어텐션(multi-headed self-attention)**로 대체함.
    • 번역 작업에서 트랜스포머는 순환(recurrent) 또는 합성곱 레이어((convolutional layers) 기반구조 보다 훈련 속도가 훨씬 빠름.