Transformer 논문 리뷰 - "Attention Is All You Need"

목록으로 돌아가기

Transformer 아키텍처


이미지 설명

기능 별 구현


Abstract

이미지 설명

기존 시퀀스 모델의 복잡한 순환과 합성곱 기반 모델링에서 완전히 새로운 아키텍쳐를 제시한다. 오직 어텐션 메커니즘을 기반으로 하는 단순하지만 새로운 네이트워크 구조를 가진 모델이 트렌스포머이다.

본 모델은 번역 과제 실험에서 굉장히 우수한 성능을 보여줬다고 한다. 뿐만 아니라 병렬 처리성이 높아져 학습에 훨씬 적은 시간이 소요된다고 한다.

  • WMT 2014 영어-독일어 번역 작업에서 28.4 BLEU를 달성하여 앙상블을 포함한 기존 최고의 결과보다 2 BLEU 이상 개선됨
  • WMT 2014 영어-프랑스어 번역 작업에서 우리 모델은 8개의 GPU에서 3.5일 동안 교육한 후 41.8이라는 새로운 단일 모델 최첨단 BLEU 점수를 확립

트랜스포머는 대규모 혹은 제한된 소규모 학습 데이터 기반의 영어 구문 분석 과제에서도 높은 성능을 보이며, 다른 과제들에도 일반화가 가능하다는 것을 보여준다.


Introduction

이미지 설명

순환 신경망(RNN), 장단기 기억망(LSTM) 그리고 게이트드 리커런트 신경망(게이트드 RNN) 등은 특히 시퀀스 모델링 및 언어 모델링과 기계 번역과 같은 변환 문제에서 최신 기술로 강력하게 인정 받았다고 한다. 여러 노력들이 이후에도 계속해서 순환 언어 모델 및 인코더-디코더 아키텍처의 경계를 확장하고 있다

이미지 설명

순환 모델들은 h(t)시퀀스를 생성하기 위해서는 h(t-1)의 연산 값을 받아야 한다. 이러한 특성은 메모리 제약이 예제간의 배치를 제한하기 때문에 더 긴 시퀀스 길이에서 중요해지는 훈련 예제 내의 병렬화를 할 수 없습니다. 계산 효율성을 늘리는 연구가 있었음에도 불구하고 근본적인 제약은 있다.

이미지 설명

Attention 메커니즘은 다양한 작업에서 입력, 출력 시퀀스의 커리에 상관없이 모델링을 할 수 있다. 하지만 몇가지 경우를 제외한 모든 경우에서 Attention 메커니즘은 순환 신경망과 함께 사용된다.

이미지 설명

본 연구는 모델 아키텍처가 순환 구조를 대신해 입력과 출력 사이의 글로벌 의존성을 끌어내기 위해 오직 어텐션에 의존하는 모델 트랜스포머를 제안한다고 한다.


Background

이미지 설명

본 문단에서는 Transformer 모델과 self-attention의 중요성을 강조하며, 이러한 모델이 기존의 접근 방식과 어떻게 다른지 설명하고 있다.

  • “Reducing sequential computation”을 목표로 하는 몇 가지 모델들이 언급된다. Extended Neural GPU, ByteNet, ConvS2S는 컨볼루션 신경망을 기본 구성 요소로 사용하며, 입력 및 출력 위치에 대한 숨겨진 표현을 병렬로 계산한다. 그러나 두 위치 간의 신호 관련 작업에 필요한 작업 수가 위치 간의 거리에 따라 선형 또는 로그로 증가하므로 먼 위치 간의 종속성을 학습하기가 더 어려워진다.
  • Transformer 모델은 이러한 문제를 해결하기 위해 self-attention을 사용하며, 입력 및 출력의 표현을 계산하는 데에만 self-attention을 사용하며 시퀀스 정렬된 RNN 또는 컨볼루션을 사용하지 않는다.
  • Self-attention은 단일 시퀀스 내의 서로 다른 위치 간의 관련성을 계산하여 시퀀스의 표현을 생성하는 주요 메커니즘으로 사용된다.
  • 종합적으로, Transformer는 self-attention을 사용하여 입력 및 출력의 표현을 계산하는 최초의 변환 모델로, 시퀀스 정렬 RNN 또는 컨볼루션을 사용하지 않는다. Transformer의 장점은 다른 모델에 비해 self-attention을 사용함으로써 설명된다.


Model Architecture

이미지 설명

이 파트에서는 대부분의 경쟁력 있는 신경망 시퀀스 변환 모델이 인코더-디코더 구조를 사용한다는 아이디어를 소개하고 있다 (자기 회귀 모델이면 결국 순차적인 처리가 들어가는데 원래 제시한 근본적인 문제와 동일한거 아닌가?… 아직 의문이다.)

  • 인코더-디코더 구조: 모든 경쟁력 있는 시퀀스 변환 모델은 인코더-디코더 구조를 따른다. 이 구조는 두 부분으로 나뉜다.
  • 인코더 (Encoder): 인코더는 입력 시퀀스 (x1, …, xn)를 연속적인 표현으로 매핑한다. 이 표현은 z = (z1, …, zn)와 같이 표현된다.
  • 디코더 (Decoder): 디코더는 z를 입력으로 받아, 하나씩 원소를 생성하여 출력 시퀀스 (y1, …, ym)를 생성한다. 즉, 디코더는 이전에 생성된 기호들을 추가 입력으로 사용하여 다음 기호를 생성한다.
  • 자기 회귀 모델 (Auto-Regressive Model): 각 단계에서 모델은 이전에 생성된 기호들을 추가 입력으로 사용하여 다음 기호를 생성하는 자기 회귀적인 방식을 따른다. 이것은 현재 생성 중인 기호가 이전에 생성된 기호에 의존한다는 것을 의미한다.

결과적으로 Transformer 모델: Transformer 모델은 이러한 구조를 따르며, 인코더와 디코더 모두에서 쌓인 self-attention 및 포인트별 완전 연결 레이어를 사용한다. Figure 1의 왼쪽과 오른쪽 절반에서 해당 구조가 시각적으로 나타낸다.


Encoder and Decoder Stacks

이미지 설명

Transformer 모델의 인코더와 디코더 스택에 대한 설명을 한다. Transformer 모델은 이러한 스택을 여러 번 쌓아서 깊은 신경망 아키텍처를 형성한다. 각각의 인코더 및 디코더 레이어에는 여러 하위 레이어(sub-layer)가 있다 아래 구조는 Transformer 모델의 핵심 부분이며, 인코더와 디코더 각각이 정보를 처리하고 전달하는 방식을 설명한다.

Encoder (인코더):

  • 인코더는 총 6개의 동일한 레이어로 구성된다. 즉 인코더 구조 자체가 동일한 것이 6개란 뜻이다. (N = 6(변경가능한 값 논문에서는 이렇게 진행됨))
  • 각 레이어에는 두 가지 하위 레이어가 있다.
  • 첫 번째 하위 레이어는 멀티헤드(self-attention) 셀프 어텐션 메커니즘이다. 이것은 입력 시퀀스의 다른 위치 간의 관련성을 계산한다.
  • 두 번째 하위 레이어는 단순한 위치별 fully connected feed-forward 네트워크이다.
  • 각 하위 레이어 주위에는 잔여 연결(residual connection)이 적용된다. 이것은 이전 레이어의 출력을 현재 레이어의 입력에 더해주는 방식으로 정보의 손실을 방지한다.
  • 또한, 각 하위 레이어 뒤에는 레이어 정규화(layer normalization)가 적용된다. 이것은 출력을 정규화하여 학습을 안정화시키는 데 도움을 준다.
  • 모든 하위 레이어 및 임베딩 레이어의 출력 차원은 dmodel = 512로 설정된다. (dmodel 값은 변경가능한 값이다. 논문에서는 이렇게 진행됨)

Decoder (디코더):

  • 디코더도 인코더와 유사한 구조를 가지며, N = 6개의 동일한 레이어로 구성됐다.
  • 각 레이어에는 두 가지 하위 레이어가 있으며, 인코더와 동일하게 멀티헤드 어텐션 및 위치별 fully connected feed-forward 네트워크를 사용한다.
  • 더불어, 디코더는 인코더 스택의 출력을 기반으로 하는 멀티헤드 어텐션을 수행하는 세 번째 하위 레이어를 삽입한다.
  • 잔여 연결과 레이어 정규화도 디코더에서 사용된다.
  • 또한, 디코더에서는 자신의 예측 위치 이후의 위치에 대한 어텐션을 방지하기 위해 self-attention 하위 레이어를 수정한다. 이렇게 함으로써 위치 i의 예측은 위치 i 이전의 알려진 출력에만 의존하게 된다.


Attention

이미지 설명

  • 어텐션 함수는 주어진 쿼리(query)와 일련의 키(key)-값(value) 쌍을 입력으로 받아 출력으로 매핑하는 함수이다.
  • 여기서 쿼리, 키, 값, 출력은 모두 벡터이다. 이러한 벡터들은 다양한 정보를 나타낸다.
  • 출력은 값(value)들의 가중 합으로 계산된다. 각 값에 할당되는 가중치는 쿼리와 해당 키 간의 호환성 함수(Compatibility function)에 의해 계산된다.
  • 쿼리와 키 간의 호환성 함수는 두 벡터 간의 유사도를 측정하고, 유사도에 따라 가중치가 부여된다.


Attention - Scaled Dot-Product Attention

이미지 설명

이 부분은 어텐션 메커니즘 중 “스케일드 닷-프로덕트 어텐션(Scaled Dot-Product Attention)”에 대한 설명이며, 어텐션 함수의 구체적인 계산 방법과 어텐션 함수에 사용되는 두 가지 주요 유형인 “가산 어텐션(Additive Attention)”과 “닷-프로덕트 어텐션(Dot-Product Attention)”을 비교하고 있다.

스케일드 닷-프로덕트 어텐션(Scaled Dot-Product Attention)

Attention(Q, K, V ) = softmax(QKt / √dk)V
  • 스케일드 닷-프로덕트 어텐션은 어텐션 메커니즘의 한 종류로, 입력으로 주어진 쿼리(queries)와 키(keys)는 차원(d)을 갖고 있으며, 값(values) 역시 차원(d)을 갖고 있다.
  • 어텐션 함수는 쿼리와 모든 키(keys) 간의 점곱(dot product)을 계산하고, 각 점곱값을 dk로 나누어 스케일링한다.
  • 스케일링된 값에 softmax 함수를 적용하여 가중치(weights)를 얻는다.
  • 이러한 가중치를 사용하여 값을(values)의 가중 합을 계산하여 출력을 생성한다.

Additive Attention vs. Dot-Product Attention:

  • 가장 일반적으로 사용되는 어텐션 함수는 가산 어텐션(Additive Attention)과 닷-프로덕트 어텐션(Dot-Product Attention) 두 가지이다.
  • 가산 어텐션은 dk 차원의 은닉층(hidden layer)을 가진 피드포워드 네트워크(feed-forward network)를 사용하여 호환성 함수를 계산한다.
  • 반면, 닷-프로덕트 어텐션은 스케일링 외에는 알고리즘적으로 동일하지만, 행렬 곱셈을 효율적으로 구현할 수 있기 때문에 실제로 훨씬 빠르고 공간 효율적이다.
  • dk 값이 작은 경우 두 메커니즘은 유사하게 작동하지만, dk 값이 큰 경우 가산 어텐션은 스케일링 없이 닷-프로덕트 어텐션보다 성능이 더 나은 경우가 있다.
  • 큰 dk 값에서는 닷-프로덕트 어텐션의 점곱 값이 커져 softmax 함수를 극히 작은 경사도(gradient) 영역으로 밀어 넣을 수 있다. 이를 방지하기 위해 점곱 값을 √dk로 스케일링합니다.


즉, 스케일드 닷-프로덕트 어텐션은 어텐션 함수의 일종으로, 스케일링을 사용하여 쿼리와 키 간의 유사도를 계산하고 가중치를 얻어 값을 조합하는 방식이다. 닷-프로덕트 어텐션은 일반적으로 가산 어텐션보다 빠르고 효율적이지만, 큰 dk 값에서 스케일링이 필요하다.


Attention - Multi-Head Attention

이미지 설명

dmodel 차원의 키, 값 및 쿼리로 단일 주의 기능을 수행하는 대신 쿼리, 키 및 값을 각각 dk, dk 및 dv 차원으로 학습된 선형 투영을 사용하여 h번 선형 투영하는 것이 유용하다는 것을 발견했다고 한다.

멀티헤드 어텐션(Multi-Head Attention):

  • 이 방법은 단일 어텐션 함수 대신 쿼리, 키 및 값에 대한 선형 변환을 여러 번 수행하고, 각각의 변환된 버전을 병렬로 어텐션 함수에 입력으로 제공하는 방식이다.
  • 선형 변환은 각각 다른 학습 가능한 선형 투영(projections)을 사용하여 이루어진다. 이때, 선형 투영에 의해 쿼리(Q), 키(K), 값(V)은 서로 다른 차원인 dk, dk 및 dv로 투영된다.
  • 각 변환된 버전의 쿼리, 키 및 값에 대해 병렬로 어텐션 함수를 수행하면, 각 버전의 출력은 dv 차원의 값들로 나타낸다.
  • 이러한 값을 연결(concatenate)하고, 다시 한 번 선형 투영을 수행하여 최종 결과를 얻는다.
  • 멀티헤드 어텐션은 모델이 서로 다른 표현 공간(representation subspace)에서 서로 다른 위치에서 정보를 함께 어텐션할 수 있게 해준다. 단일 어텐션 헤드를 사용하는 경우, 정보를 평균화(averaging)하기 때문에 이러한 특성을 활용하기 어려울 수 있다.

여기서, 멀티헤드 어텐션은 다음과 같이 수식으로 나타낼 수 있습니다:

MultiHead(Q, K, V ) = Concat(head1, ..., headh)WO

여기서 각 헤드(headi)는 다음과 같이 계산된다.

headi = Attention(QWiQ , K WiK , V WiV )
  • 여기서 WiQ, WiK, WiV는 학습 가능한 파라미터 행렬로, 각각 dmodel 차원에서 dk, dk 및 dv 차원으로 투영한다.
  • WO는 최종 출력에 대한 파라미터 행렬이다.
  • 이 작업에서는 h = 8개의 병렬 어텐션 레이어 또는 헤드를 사용하며, 각 헤드에 대해 dk = dv = dmodel/h = 64를 사용합니다. 각 헤드의 차원이 감소했으므로, 전체 계산 비용은 차원이 전체 크기인 단일 헤드 어텐션과 유사하다.


Attention - Applications of Attention in our Model

이미지 설명

Transformer 모델에서 멀티헤드 어텐션을 세 가지 다른 방식으로 활용하는 방법을 설명하고 있다.

인코더-디코더 어텐션 (Encoder-Decoder Attention)

  • 이것은 인코더-디코더 어텐션 레이어에서 사용되는 방식이다.
  • 쿼리(queries)는 이전 디코더 레이어에서 나온다.
  • 키(keys)와 값(values)은 인코더의 출력에서 가져온다.
  • 이렇게 함으로써 디코더의 각 위치가 입력 시퀀스의 모든 위치에 어텐션할 수 있게 된다. 즉, 디코더의 각 위치가 인코더의 모든 입력 위치에 어텐션을 수행할 수 있다.
  • 이것은 시퀀스-투-시퀀스 모델에서 일반적인 인코더-디코더 어텐션 메커니즘과 유사하다.

인코더의 자기 어텐션 (Encoder Self-Attention)

  • 이것은 인코더 내의 자기 어텐션 레이어에서 사용되는 방식이다.
  • 쿼리, 키 및 값은 모두 같은 위치에서 가져온다. 이 위치는 인코더의 이전 레이어에서 나온 출력이다.
  • 이것은 인코더의 각 위치가 이전 레이어의 모든 위치에 어텐션할 수 있게 한다.

디코더의 자기 어텐션 (Decoder Self-Attention)

  • 이것은 디코더 내의 자기 어텐션 레이어에서 사용되는 방식이다.
  • 디코더의 각 위치가 현재 위치를 포함한 이전 모든 위치에 어텐션할 수 있어야 한다. 그러나 왼쪽 방향으로의 정보 흐름을 방지하여 자기 회귀적 특성을 보존해야 한다.
  • 이를 위해 스케일드 닷-프로덕트 어텐션 내에서 소프트맥스의 입력에 대해 “마스킹”을 적용한다. 이는 불법적인 연결에 해당하는 모든 값들을 -∞로 설정하여 정보 흐름을 막는다.
  • 이러한 방식으로 멀티헤드 어텐션은 Transformer 모델의 다양한 부분에서 정보를 처리하고 관련성을 계산한다. 이는 모델이 다양한 위치에서 다양한 종류의 어텐션을 수행하여 효율적으로 시퀀스 변환 작업을 수행하는 데 도움이 된다.


Position-wise Feed-Forward Networks

이미지 설명

피드 포워드 네트워크 설명

  • 피드 포워드 네트워크(FFN)는 각 위치(position)의 입력에 대해 동일한 연산을 수행한다.
  • 이 네트워크는 선형 변환(linear transformation)과 ReLU 활성화 함수를 포함한다.
  • 구체적으로, FFN은 다음과 같은 수식으로 표현된다
    FFN(x) = max(0, xW1 + b1 )W2 + b2
    

    여기서 x는 입력 벡터, W1과 b1은 첫 번째 선형 변환에 사용되는 가중치 행렬과 편향 벡터, W2와 b2는 두 번째 선형 변환에 사용되는 가중치 행렬과 편향 벡터이다. 이 네트워크의 목적은 입력 벡터 x를 두 번의 선형 변환과 ReLU 활성화 함수를 통해 변환하여 출력 벡터를 생성하는 것이다.

피드 포워드 네트워크의 특징:

  • 피드 포워드 네트워크는 서로 다른 위치의 입력에 대해 동일한 연산을 수행하며, 모든 위치에서 독립적으로 처리된다.
  • 다른 레이어 간에는 서로 다른 파라미터를 사용하여 동일한 연산이 수행되므로, 각 레이어에서 파라미터가 다르다고 할 수 있다.
  • 이를 다른 방식으로 표현하면, 피드 포워드 네트워크가 커널 크기가 1인 두 개의 합성곱(convolution)으로 생각할 수 있다.
  • 입력과 출력의 차원은 모두 dmodel = 512이며, 네트워크의 내부 층(inner-layer)은 차원이 dff = 2048인 것으로 정의된다.
  • 피드 포워드 네트워크는 Transformer 모델의 각 레이어에서 위치별로 적용되어 비선형성을 추가하고, 입력의 특징을 추출하는 데 도움을 준다.


Embeddings and Softmax

이미지 설명

입력 토큰과 출력 토큰 임베딩

  • 입력 문장의 단어나 토큰들은 모델에서 처리하기 위해 벡터로 변환된다. 이 변환은 “임베딩”이라고 부른다.
  • 임베딩은 토큰을 모델의 내부 표현 공간으로 매핑하는데 사용되며, 이 내부 표현의 차원을 dmodel로 정의한다.

디코더 출력에서 예측된 다음 토큰 확률로 변환:

  • 디코더의 출력은 다음 토큰에 대한 예측 확률로 변환된다.
  • 대개 소프트맥스 함수를 통해 수행된다.

가중치 공유:

  • 모델에서는 임베딩 레이어와 소프트맥스 이전의 선형 변환(Linear Transformation) 레이어 사이에서 가중치 행렬(weight matrix)을 공유한다.
  • 즉, 임베딩 레이어에서 사용되는 가중치 행렬과 소프트맥스 이전의 선형 변환 레이어에서 사용되는 가중치 행렬이 동일하다.
  • 이 가중치 공유 방식은 모델의 학습 파라미터 수를 줄이고, 모델을 효율적으로 학습시키는 데 도움을 준다.

임베딩 가중치에 대한 스케일링:

  • 임베딩 레이어에서 사용되는 가중치 행렬에는 특별한 스케일링이 적용된다.
  • 가중치 행렬에는 모델의 차원 dmodel을 5√dmodel로 곱하여 값을 스케일링한다.

이러한 설명은 모델의 입력과 출력을 처리하는 방식과 가중치 공유에 대한 내용을 다루고 있다. Transformer 모델은 이러한 임베딩 및 가중치 공유 기술을 사용하여 자연어 처리 작업을 수행한다.


Positional Encoding

이미지 설명

배경

  • Transformer 모델은 순환(recurrence)과 합성(convolution)을 사용하지 않는 구조를 가지기 때문에, 모델이 시퀀스의 순서를 이해하고 활용하기 위해서는 위치 정보에 대한 추가 정보가 필요하다.
  • 이를 위해 입력 임베딩(embeddings)에 위치 인코딩을 추가한다.

위치 인코딩의 특징

  • 위치 인코딩은 임베딩과 동일한 차원(dmodel)을 가진다.
  • 위치 인코딩은 임베딩에 더해져(summed) 입력으로 제공된다.

위치 인코딩 종류

  • 위치 인코딩은 학습 가능한 위치 인코딩과 고정 위치 인코딩(fixed positional encodings) 중에서 여러 가지 선택 사항이 있다.
  • 이 작업에서는 학습 가능한 위치 인코딩과 고정 위치 인코딩 대신에 사인 함수와 코사인 함수를 사용한 위치 인코딩을 사용한다.

사인과 코사인 함수를 사용한 위치 인코딩

PE(pos, 2i) = sin(pos / 10000^(2i / dmodel))
PE(pos, 2i+1) = cos(pos / 10000^(2i / dmodel))
  • 여기서 pos는 위치를 나타내며, i는 차원(dimension)을 나타낸다.
  • 위치 인코딩의 각 차원은 사인 및 코사인 함수의 주기(sinuoid)를 나타내며, 주기의 길이가 위치(pos)와 차원(i)에 따라 결정된다.
  • 이러한 위치 인코딩을 사용하면 모델이 상대적 위치에 따라 어텐션을 수행하도록 학습할 수 있다.

선택 이유

  • 이 모델에서는 위치 인코딩으로 학습 가능한 위치 인코딩과 사인/코사인 함수를 사용한 고정 위치 인코딩을 비교하였으며, 두 버전은 거의 동일한 결과를 얻었다.
  • 그러나 사인/코사인 함수를 사용한 버전을 선택한 이유는 이러한 위치 인코딩이 모델이 훈련 중에 경험한 시퀀스 길이보다 더 긴 시퀀스에 대해서도 일반화할 수 있을 것으로 기대하기 때문이다.

위치 인코딩은 Transformer 모델에서 시퀀스의 위치 정보를 포함하도록 도와주는 중요한 메커니즘 중 하나이며, 이 모델에서는 사인과 코사인 함수를 사용한 위치 인코딩을 사용하여 상대적 위치 정보를 모델에 제공한다.


Why Self-Attention

이미지 설명

자기 어텐션(self-attention) 레이어를 주로 사용하는 이유와 이를 순환 레이어(recurrent layers) 및 합성곱 레이어(convolutional layers)와 비교하는 이유에 대해 설명한다. 주요 비교 대상은 하나의 가변 길이 시퀀스 (x1, …, xn)를 다른 동일한 길이의 시퀀스 (z1, …, zn)로 매핑하는 모델의 레이어이다. 이런 비교를 통해 자기 어텐션 사용을 근거하는 세 가지 요소를 고려한다.

총 계산 복잡성 (Total Computational Complexity)

각 레이어 당 총 계산 복잡성은 모델의 효율성을 판단하는 중요한 요소 중 하나입니다.

병렬화 가능한 계산 (Parallelization)

레이어 내에서 얼마나 많은 병렬 계산이 가능한지는 연산을 효율적으로 분산하는 데 중요합니다.

긴 범위 종속성 경로 (Long-Range Dependency Path Length)

모델이 두 위치 사이의 긴 범위 종속성을 학습하는 데 필요한 경로의 길이는 학습 능력에 큰 영향을 미칩니다.

이미지 설명

비교

  • 자기 어텐션 레이어는 모든 위치를 일정한 수의 순차적인 작업으로 연결한다. 반면 순환 레이어는 O(n)개의 순차 작업이 필요하다.
  • 계산 복잡성 측면에서, 입력 시퀀스의 길이 n이 표현 차원 d보다 작을 때 (이는 대부분의 경우입니다), 자기 어텐션 레이어는 순환 레이어보다 빠르다.
  • 매우 긴 시퀀스를 다루는 작업의 계산 성능을 향상시키기 위해 자기 어텐션은 출력 위치 주변에 크기 r의 이웃만 고려하도록 제한될 수 있다. 이렇게 하면 최대 경로 길이가 O(n/r)로 증가한다.
  • 단일 컨볼루션 레이어에서 커널 너비 k < n의 경우 입력 및 출력 위치의 모든 쌍을 연결하지 않는다. 이를 위해서는 연속적인 커널의 경우 O(n/k)개의 컨볼루션 레이어가 필요하거나, 확장된 컨볼루션의 경우 O(logk(n))개의 레이어가 필요하다. 이로 인해 네트워크 내의 두 위치 간 최장 경로 길이가 증가한다.
  • 컨볼루션 레이어는 일반적으로 순환 레이어보다 더 비싸며, 비용은 커널 너비 k에 따라 달라진다. 그러나 분리 가능한 컨볼루션(separable convolutions)은 복잡성을 크게 감소시킨다. 분리 가능한 컨볼루션의 복잡성은 자기 어텐션 레이어와 포인트-와이즈 피드 포워드 레이어의 결합과 동일하다.
  • 자기 어텐션은 해석 가능한 모델을 생성할 수 있으며, 이러한 모델의 어텐션 분포를 조사하여 문장의 구문 및 의미 구조와 관련된 동작을 확인할 수 있다.

요약하면, 자기 어텐션 레이어는 복잡성, 병렬화 가능성 및 긴 범위 종속성 학습 측면에서 순환 레이어 및 컨볼루션 레이어와 비교하여 몇 가지 이점을 가지며, 또한 해석 가능성을 제공할 수 있다.


Training

이제 모델 훈련에 대한 설명이다.

Training Data and Batching

이미지 설명

훈련 데이터

  • 영어-독일어 번역 모델의 경우, WMT 2014(Workshop on Machine Translation)에서 제공한 표준 데이터셋을 사용하였다.
  • 이 데이터셋은 약 4.5백만 개의 문장 쌍으로 구성되어 있으며, 영어와 독일어 사이의 번역 관계를 나타낸다.

데이터 인코딩:

  • 문장을 모델에 입력하기 위해 Byte-Pair Encoding(BPE)을 사용하여 문장을 인코딩한다.
  • BPE는 텍스트를 작은 하위 단위로 분할하여 처리하는 방법으로, 약 37,000개의 공통 소스-대상 어휘(토큰)를 사용한다.
  • 예를 들어, 단어보다 작은 서브워드(subword) 단위로 분할될 수 있다.

영어-프랑스어 데이터

  • 영어-프랑스어 번역 모델의 경우, 더 큰 규모의 WMT 2014 영어-프랑스어 데이터셋을 사용하였다.
  • 이 데이터셋에는 약 3600만 개의 문장이 포함되어 있으며, 단어-피스(word-piece) 어휘로 토큰을 분할한다.
  • 어휘 크기는 약 32,000개의 단어 피스로 구성된다.

데이터 배치화

  • 훈련 데이터의 문장 쌍은 유사한 시퀀스 길이를 가진 것들끼리 묶여(batched) 학습에 사용된다.
  • 각 훈련 배치는 약 25,000개의 소스 토큰과 25,000개의 대상 토큰을 포함하는 문장 쌍 세트를 담고 있다.
  • 이러한 데이터와 전처리 과정을 통해 모델은 영어-독일어 및 영어-프랑스어 번역 작업에 사용될 수 있도록 훈련됐다. BPE 및 단어 피스를 사용하여 텍스트를 인코딩하는 것은 모델이 다양한 언어 및 문체에 적응할 수 있도록 도움을 줄 수 있는 중요한 전처리 방법 중 하나이다.

Hardware and Schedule

이미지 설명

하드웨어 구성

  • 모델은 8개의 NVIDIA P100 그래픽 처리 장치(GPUs)를 갖춘 하나의 컴퓨터(서버 머신)에서 훈련됐다.
  • 이러한 GPU들은 병렬 처리를 통해 모델 훈련을 가속화하는 데 사용된다.

훈련 시간

  • “베이스 모델(Base models)”에 대한 훈련에서 각 훈련 단계(training step)가 약 0.4초 소요됐다.
  • 베이스 모델의 경우, 총 100,000 단계(training step) 또는 12시간 동안 훈련됐다.
  • “큰 모델(Big models)”에 대한 훈련에서 각 단계가 1.0초 소요됐다.
  • 큰 모델의 경우, 총 300,000 단계 또는 3.5일 동안 훈련됐습니다.

요약하면, 모델 훈련은 고성능의 그래픽 처리 장치를 사용하여 수행되었으며, 베이스 모델과 큰 모델의 경우 각각 다른 훈련 시간과 총 훈련 단계를 갖고 있다. 훈련 시간은 모델의 크기와 하드웨어 리소스에 따라 달라질 수 있다.

Optimizer

이미지 설명

최적화 알고리즘

  • 모델 훈련에는 Adam 옵티마이저를 사용했다.
  • Adam은 경사 하강법의 변종 중 하나로, 학습률을 조절하면서 모델 파라미터를 업데이트하는 최적화 알고리즘이다.

Adam 옵티마이저 하이퍼파라미터

  • β1 = 0.9: 첫 번째 모멘트(momentum)의 지수 감소율(Exponential decay rate).
  • β2 = 0.98: 두 번째 모멘트(momentum)의 지수 감소율(Exponential decay rate).
  • ε = 10^-9: 업데이트에서 분모에 추가되는 작은 상수값(epsilon) (수치 안정성을 보장하기 위한 값)

학습률 스케줄링

  • 모델 훈련 중에 학습률을 조절하기 위한 스케줄링 방법을 사용했다.
  • 학습률은 다음의 수식에 따라 변화한다.:
    lrate = d^(-0.5) * min(step_num^(-0.5), step_num * warmup_steps^(-1.5))
    
  • 이 수식은 처음 warmup_steps 단계 동안 학습률을 선형으로 증가시키고, 그 이후에는 단계(step) 수에 반비례하여 학습률을 감소시킨다.
  • warmup_steps = 4000: 학습률을 선형 증가시킬 단계 수로, 초기 학습 과정에서 학습률을 안정적으로 증가시키기 위한 값이다.

이 학습률 스케줄링 방법은 초기 훈련 단계에서 높은 학습률로 시작하고, 점진적으로 안정된 값으로 수렴하도록 모델을 조절한다. 이러한 방식은 훈련 초기에 빠르게 수렴하고 이후에는 미세한 조정을 수행하도록 도와준다.

Regularization

이미지 설명

Transformer 모델의 훈련 중에 적용된 정규화 기법은 다음과 같다

Residual Dropout (잔여 드롭아웃)

  • 각 서브-레이어의 출력에 대해 dropout을 적용한다. 이 dropout은 서브-레이어 출력이 서브-레이어 입력에 추가되고 정규화되기 전에 적용된다.
  • 인코더 및 디코더 스택의 임베딩(embeddings) 및 위치 인코딩(positional encodings)의 합에 대해서도 dropout을 적용한다.
  • 베이스 모델의 경우, dropout 비율(rate)은 Pdrop = 0.1로 설정됐다. 이는 일정 비율의 뉴런을 무작위로 비활성화하여 모델의 일반화(generalization) 능력을 향상시키는 데 사용된다.

Label Smoothing (레이블 스무딩):

  • 훈련 중에는 레이블 스무딩을 사용하였습니다. 레이블 스무딩은 εls = 0.1의 값을 사용했다.
  • 이 기법은 모델이 레이블에 대해 더 불확실하게 예측하도록 유도한다. 이로 인해 모델은 훈련 중에 레이블에 대해 더 확실한 예측을 하지 않도록 되며, 이는 perplexity(모델의 예측 불확실성)을 향상시키고 정확도 및 BLEU 점수를 개선하는 데 도움이 된다.

레지듀얼 드롭아웃은 모델의 학습 중 일반화를 증가시키고 과적합(overfitting)을 방지하는 데 도움이 되며, 레이블 스무딩은 모델의 예측을 더 안정적으로 만들고 훈련 중에 더 효과적으로 학습할 수 있도록 도와준다.


Results

이미지 설명

영어-독일어 번역 작업

  • 큰 Transformer 모델(“Transformer (big)”)은 WMT 2014 영어-독일어 번역 작업에서 뛰어난 성능을 보여준다.
  • 이 모델은 이전에 보고된 최고 성능 모델(앙상블 모델 포함)보다 BLEU 점수에서 2.0 이상 높은 성적을 거두어 새로운 최고 성능을 설정하며, BLEU 점수는 28.4이다.
  • 훈련은 8개의 P100 GPU에서 3.5일 동안 수행되었으며, 이 모델의 훈련 비용은 경쟁 모델의 일부에 비해 적었다.

영어-프랑스어 번역 작업:

  • 큰 Transformer 모델은 WMT 2014 영어-프랑스어 번역 작업에서도 우수한 성적을 보인다.
  • BLEU 점수는 41.0으로, 이전에 게시된 단일 모델 중에서 가장 높은 성능을 보이며, 이전 최고 성능 모델보다 훈련 비용이 적게 든다.

모델 평가 및 추론

  • 모델의 성능 평가에는 BLEU 점수를 사용하며, 빔 서치(beam search)를 사용하여 번역을 수행한다.
  • 빔 크기(beam size)는 4로 설정되고, 문장 길이 패널티(length penalty)로 α = 0.6을 사용한다.
  • 모델 훈련 중 사용된 하이퍼파라미터는 개발 데이터셋에서 실험을 통해 선택됐다.
  • 추론 중에는 최대 출력 길이를 입력 길이 + 50으로 설정하고 가능한 경우 조기 종료한다.

훈련 비용

  • 모델 훈련에 필요한 비용은 훈련 시간, 사용된 GPU 수 및 각 GPU의 단일 정밀도(single-precision) 부동 소수점 연산 용량을 곱하여 추정된다.
  • 이러한 결과를 종합하면 Transformer 모델은 뛰어난 번역 성능을 보이면서도 훈련 비용을 경제적으로 관리할 수 있는 모델 아키텍처임을 보여준다

이미지 설명

이 실험에서는 다양한 모델 변형을 적용하고, 그 결과를 Table 3에 제시한다.

어텐션 헤드와 어텐션 키 및 값 차원의 변화 (행 A)

  • 이 실험에서는 어텐션 헤드의 수와 어텐션 키 및 값 차원을 변화시키면서 연산량은 일정하게 유지하였다.
  • 결과적으로 단일 어텐션 헤드보다 어텐션 헤드의 수를 늘리는 것이 BLEU 점수를 향상시키지만, 어텐션 헤드 수가 너무 많아지면 품질이 저하됨을 관찰하였다.

어텐션 키 차원 축소 (행 B)

  • 어텐션 키 차원 (dk)을 줄이는 실험 결과, 모델의 품질이 저하되는 것을 관찰하였다.
  • 이는 어텐션 키와 값을 결정하는 것이 어렵다는 것을 시사하며, 단순한 점곱(dot product)보다 더 복잡한 호환성 함수(compatibility function)가 유용할 수 있음을 제안한다.

모델 크기의 변화 (행 C와 D)

  • 모델 크기가 증가함에 따라 품질이 향상되는 것을 관찰하였다. 더 큰 모델이 일반적으로 더 좋은 성능을 보인다.
  • 드롭아웃(Dropout)이 과적합(Overfitting)을 방지하는 데 매우 도움이 되는 것으로 나타냈다.

학습된 위치 인코딩 대신 학습된 위치 임베딩 사용 (행 E)

  • 실험에서는 초기 위치 인코딩(positional encoding) 대신 학습된 위치 임베딩(learned positional embeddings)을 사용한 결과, 거의 동일한 결과를 얻었다.
  • 이는 위치 정보를 다루는 방법을 조금 변경해도 모델의 성능에 큰 영향을 미치지 않을 수 있음을 시사한다.

이미지 설명

Transformer 모델의 일반화 능력을 평가하기 위해 영어 구성 파싱(English constituency parsing) 작업에 대한 실험 결과를 설명한다. 구성 파싱 작업은 특정한 도전 과제를 제공하는데, 출력은 강력한 구조적 제약 사항에 따르며 입력보다 길이가 상당히 긴 작업이다. 또한, RNN 시퀀스-대-시퀀스 모델은 작은 데이터 환경에서 최첨단 결과를 얻을 수 없었다.

모델 및 데이터

  • Wall Street Journal (WSJ)의 Penn Treebank의 일부인 WSJ 데이터셋을 사용하여 4층의 Transformer 모델을 훈련하였다. 훈련 데이터는 약 4만 문장으로 구성된다.
  • 더 큰 데이터셋인 high-confidence와 BerkleyParser 데이터를 포함한 반자율 학습(semi-supervised learning) 설정에서도 모델을 훈련하였다. 이 데이터셋은 약 1700만 문장을 포함한다.
  • WSJ만 사용한 설정에서는 16,000 토큰으로 구성된 어휘를 사용하고, 반자율 학습 설정에서는 32,000 토큰 어휘를 사용하였다.

실험 및 하이퍼파라미터

  • 하이퍼파라미터 튜닝을 최소화하기 위해 Section 22 개발 데이터셋에서 드롭아웃, 어텐션 및 레지듀얼에 대한 실험, 학습률 및 빔 크기 선택을 수행하였다.
  • 추론 중에는 최대 출력 길이를 입력 길이 + 300으로 증가시켰으며, 빔 크기는 21이고 α = 0.3을 사용하였다.

결과

  • 실험 결과는 Table 4에 나와 있으며, 과제별 튜닝 없이도 모델이 놀랍도록 잘 수행하는 것을 보여준다.
  • 특히, RNN 시퀀스-대-시퀀스 모델과 비교하여 Transformer 모델은 작은 데이터 환경에서 우수한 결과를 제공하며, 이전에 보고된 모델 중에서도 최고의 결과를 제공한다.
  • Recurrent Neural Network Grammar (RNN-G)을 제외하고 모든 다른 모델을 능가한다.

이 결과는 Transformer 모델이 다양한 작업에 적용될 수 있으며, 특히 작은 데이터 환경에서도 강력한 성능을 발휘할 수 있음을 보여준다.


Conclusion

이미지 설명

이 연구에서는 Transformer라는 모델을 제안하였으며, 이 모델은 어텐션(attention)만을 기반으로 한 최초의 시퀀스 변환 모델이다.이 모델은 주로 인코더-디코더 아키텍처에서 사용되는 순환 레이어를 다중 헤드 자기 어텐션(multi-headed self-attention)으로 대체한다.

번역 작업을 위해 Transformer는 순환 또는 합성곱 레이어에 기반한 아키텍처보다 훨씬 빠르게 훈련될 수 있다. WMT 2014 영어-독일어 및 WMT 2014 영어-프랑스 번역 작업에서 우수한 성과를 달성하며, 특히 전자 작업에서 우리의 최고 모델은 이전에 보고된 모든 앙상블 모델을 능가한다.

우리는 어텐션 기반 모델의 미래에 대해 흥미를 가지며, 이를 다른 작업에 적용할 계획이라고 한다. Transformer를 텍스트 이외의 입력 및 출력 모달리티를 다루는 문제로 확장하고, 이미지, 오디오, 비디오와 같은 대규모 입력과 출력을 효율적으로 처리하기 위한 로컬 및 제한된 어텐션 메커니즘을 연구할 계획이라고도 한다. 또한, 생성 작업을 순차적으로 처리하지 않는 방법을 연구하는 것도 연구 목표 중 하나입니다.



사용한 모델을 훈련하고 평가하는 데 사용한 코드는 코드 깃허브 에서 사용할 수 있다고 한다!!

author-profile
Written by 유찬영

댓글