Transformer는 2017년에 Google Brain 팀이 발표한 모델로, 자연어 처리(NLP) 및 시퀀스 변환 작업에서 큰 혁신을 가져온 모델이며 NLP뿐만 아니라 컴퓨터 비전, 음성 처리 등 다양한 분야로 확장되고 있다.
오늘은 Transformer를 처음 제안한 논문인 "Attention is all you need"를 리뷰해보려고 한다.
Background Knowledge
sequence modeling
attention mechanism
1. Abstract
기존의 지배적인 시퀀스 변환 모델들은 인코더와 디코더를 포함하는 복잡한 순환 신경망(RNN)이나 합성곱 신경망(CNN)을 기반으로 하고 있으며 가장 성능이 좋은 모델들은 인코더와 디코더를 어텐션 메커니즘을 통해 연결한다.
이 논문에서는 순환(RNN)과 합성곱(CNN)을 완전히 없애고, 오직 어텐션 메커니즘만을 기반으로 한 새로운 간단한 네트워크 아키텍처인 Transformer를 제안한다.
두 개의 기계 번역 작업에 대한 실험에서 transformer 모델이 더 우수한 품질을 보이면서도 병렬 처리가 더 용이하고 학습 시간이 크게 단축된다는 것을 보여준다.
transformer 모델은 기존 문헌의 최고 성능 모델 대비 훨씬 적은 학습 비용을 소모하며, 큰 데이터셋과 제한된 데이터셋 모두에서 영어 구분 분석에 성공적인 결과물을 보이며 다른 작업에도 잘 일반화 될 수 있다.
- 이 모델은 WMT 2014 영어-독일어 번역 작업에서 28.4 BLEU 점수를 기록하며, 기존의 최고 성능 모델, 특히 앙상블 모델들보다 2 BLEU 이상 개선된 성능을 보여준다.
- 또한 WMT 2014 영어-프랑스어 번역 작업에서는 8개의 GPU로 3.5일 동안 학습한 후, 단일 모델 기준으로 새로운 최첨단 BLEU 점수인 41.8을 달성했다.
2. Introduction & Background
순환 모델은 일반적으로 입력 및 출력 시퀀스의 기호 위치를 따라 계산을 분할하기 때문에, 이런 순차적 특성은 훈련 내에서의 병렬화를 방해하고 시퀀스 길이가 길어짐에 따라 메모리 제약으로 인해 배치가 제한된다는 제약이 있다.
본 연구에서는 순환을 배제하고 입력과 출력 간의 전역 종속성을 어텐션 메커니즘에 완전히 의존하는 모델 아키텍처인 Transformer를 제안한다. Transformer는 병렬화를 크게 향상시킬 수 있으며, 8개의 P100 GPU에서 12시간만 훈련해도 번역 품질에서 새로운 최첨단 성과를 달성할 수 있다.
Extended Neural GPU, ByteNet, ConvS2S 등의 모델은 CNN을 사용하여 입출력 위치의 표현을 병렬 계산하며 이 모델들에서는 입출력 위치 간 거리에 따라 필요한 연산 수가 증가한다.
Transformer는 이 연산 수를 일정하게 줄였지만, 어텐션 가중치의 평균화로 인해 유효 해상도가 감소하는 단점이 있다. 이를 보완하기 위해 Transformer는 Multi-Head Attention을 사용한다.
3. Model Architecture
좋은 성능을 보이는 신경망 시퀀스 변환 모델(Neural sequence transduction model)들은 대부분 encoder-decoder 구조를 가지고 있다. transformer 또한 이 구조를 따라가고 있고, 그 내부는 self-attention과 포인트-와이즈(point-wise), 완전 연결층(fully connected layer)만으로 구성되어 있다.
3-1. Encoder and Decoder Stacks
1. Encoder:
6개의 동일한 레이어로 구성
각 레이어는 multi-head self-attention과 positionwise
fully connected feed-forward network로 구성
잔차 연결(residual connection)과 레이어 정규화(layer normalization) 사용
모든 서브레이어와 임베딩 레이어는 512 차원의 출력 생성
2. Decoder:
6개의 동일한 레이어로 구성
인코더와 유사하나 추가로 인코더 출력에 대한 multi-head attention 레이어 포함
잔차 연결과 레이어 정규화 사용
Self-Attention에서 미래 위치 정보를 볼 수 없도록 마스킹 적용
현재까지의 출력에만 의존하여 다음 위치 예측
3-2. Attention
1) Scaled Dot-Product Attention
먼저 input으로 Query(Q), Key(K), Value(V) 총 3개가 들어온다. 여기서 Query는 물어보는 주체, Key는 반대로 Query에 의해 물어봄을 당하는 주체, Values는 데이터의 값들을 의미한다.
쿼리와 모든 키 사이의 내적(dot product)을 계산한 후, 각 내적을 dk 로 나누고, 소프트맥스(softmax) 함수를 적용하여 값들에 대한 가중치를 얻는다.
Attention(Q,K,V)=softmax(dkQKT)V
이미지 출처 : https://aistudy9314.tistory.com/63
닷-프로덕트 어텐션(dot-product attention)은 고도로 최적화된 행렬 곱셈 코드를 사용하여 구현할 수 있기 때문에 공간 효율적이며 본 논문에서는 닷-프로덕트 어텐션을 사용한다.
2) Multi-Head Attention
Query, Key, Value 값을 한 번에 계산하지 않고 head 수만큼 나눠 계산 후 나중에 Attention Value들을 합치는 메커니즘
출처 : https://codingopera.tistory.com/44
3) Applications of Attention in our Model
Transformer는 multi-head attention을 세 가지 방식으로 사용한다.
encoder-decoder attention:
- 쿼리: 이전 디코더 레이어에서 생성
- 키와 값: 인코더의 출력에서 생성
- 디코더가 입력 시퀀스의 모든 위치에 주목 가능
인코더의 셀프 어텐션:
- 키, 값, 쿼리: 모두 이전 인코더 레이어의 출력에서 생성
- 각 위치가 이전 레이어의 모든 위치에 주목 가능
디코더의 셀프 어텐션:
- 각 위치가 현재 위치까지의 모든 위치에 주목 가능
- 자동 회귀적 속성 유지를 위해 미래 정보 차단
- 불법적 연결을 마스킹하여 왼쪽으로의 정보 흐름 방지 * Transformer 모델의 디코더에서 자동 회귀적 속성을 유지하기 위해 사용되는 마스킹 기법으로, 여기서 "불법적인 연결"이란 현재 위치보다 미래의 위치에 대한 정보를 참조하는 것을 의미
3-3.Position-wise Feed-Forward Networks
attention layer와 함께 fully connected feed-forawrd network가 사용된다. 이 네트워크는 두 개의 선형 변환과 그 사이에 있는 ReLU 활성화 함수로 구성된다.
입력과 출력의 차원은 dmodel=512이고, 내부 레이어의 차원은 dff=2048
3-4.Embeddings and Softmax
입출력 토큰 처리: 학습된 임베딩을 사용하여 토큰을 dmodel 차원의 벡터로 변환
디코더 출력 처리: 학습된 선형 변환과 소프트맥스 함수를 사용하여 다음 토큰 확률 예측
가중치 공유: 두 임베딩 레이어와 소프트맥스 이전 선형 변환 간 가중치 행렬 공유. 임베딩 레이어에서 가중치에 dmodel 을 곱함
3-5.Positional Encoding
이미지 출처 : https://nlpinkorean.github.io/illustrated-transformer/
transforemr는 순환이나 합성곱을 포함하지 않기 때문에 sequence의 순서를 모델이 이해할 수 있도록 sequence 내 토큰의 상대적 또는 절대적 위치 정보를 주입해야한다. 이러한 기능을 하는 것이 positional encoding 이다.
self-attention이 RNN 이나 CNN보다 우수한 이유에 대해서 3가지 근거로 설명할 수 있다.
1) total computational complexity per layer
n < d 인 경우: Self-Attention 의 시간 복잡도가 RNN 보다 높다.
n > d 인 경우: RNN의 시간복잡도가 Self-Attention 보다 높다.
영어를 예로 들면, token이 되는 단어의 개수는 8000이 넘고 이 단어들을 representation dimension으로 표현하려면 256,512 등의 높은 차원이 주어져야 continuous하게 표현된다. 보통 문장의 길이가 256,512를 넘어가는 경우가 없기 때문에 self-attenstion의 시간 복잡도가 더 작다.
2) the amount of computation that can be parallelized
RNN의 경우 input을 순차적으로 입력 받아 총 n번 RNN cell을 거치게 되는 반면, self-attention layer는 input의 모든 position 값들을 연결하여 한번에 처리 할 수 있다. 따라서 sequential operation이 O(1)을 가지고, 이는 parallel system에서 유리하게 사용된다.
3) path length between long-range dependencies in the network
long-range dependencies : 멀리 떨어져 있는 단어들 간의 dependency를 말하며 이를 학습하는 것은 sequence transduction task에서 key challenge 이다.
이러한 의존성을 학습하는데 영향을 미치는 핵심요소는 forward, backward signals 간의 path length 이다.
maximum path length의 경우, RNN은 한 토큰에 하나씩 layer가 붙어 총 O(n)의 길이이고, self-attention은 하나의 layer에서 각 토큰들이 모든 토큰들과 참조하여 연관성을 구하기 때문에 O(1)이다.
+ 추가적인 장점
해석 가능한 모델 제공 가능
attention head 가 다양한 작업 수행 및 문장 구조 반영
5. Conclusion
본 논문은 최초로 전체 구조를 attention으로 구성한 시퀀스 변환 모델인 transformer를 소개한다. encoder-decoder 아키텍처에서 일반적으로 사용되는 순환 레이어를 multi-head self attention으로 대체한 것이 특징적이다.