728x90
반응형

키워드

1. 순차적 처리 없이 주목 메커니즘만을 사용한 트랜스포머 모델 제안. 이후 NLP 모델의 표준이 됨.

2. "Attention is All You Need"

3. Transformer, Attention mechanism, encoder, decoder

Transformer

  RNN, LSTM, GRU 등은 언어 모델링 및 기계 번역과 같은 시퀀스 모델링 및 변환 문제에 뛰어난 성능을 보였다. 순환(recurrent) 모델은 이전 hidden state ℎ𝑡−1와 𝑡의 입력에 대한 함수로 hidden state ℎ𝑡를 생성한다. 이러한 본질적인 순차적 특성으로 인해 훈련 중 병렬화가 불가능하다. 특히 메모리 제약으로 인해 예제를 한번에 처리할 수 없기 때문에, 이러한 문제는 시퀀스 길이가 길어질수록 부각된다.

  순환 모델의 또 다른 문제는 long-term dependence의 모델링에 취약하다는 것이다. 이 또한 순차적 특성으로 인해 거리가 먼 요소간 모델링이 어렵기 때문이다. 이러한 문제는 attention mechanism을 통해 시퀀스의 거리에 관계없이 dependence를 모델링할 수 있게 되었고, 대부분의 task에서 뛰어난 성능을 보였다. 하지만 여전히 한계는 순환 네트워크에 함께 사용된다는 것이다.

  이에 반복을 완전히 없애고 attention mechanism에만 기반한 새로운 아키텍처인 Transformer를 고안하였다. 이는 attention에만 전적으로 의존하여 입력과 출력 사이의 전역 dependence을 모델링하는 아키텍처이다. 즉, 출력을 위해 RNN 혹은 CNN은 전혀 사용하지 않았다. 대신 Self-attention을 사용하였으며, 이는 시퀀스의 표현을 계산하기 위해 단일 시퀀스의 서로 다른 위치간 관계를 학습하는 attention mechanism의 일종이다. 이는 독해, 요약, 번역 등을 포함한 다양한 작업에서 좋은 성능을 보인다.

  이렇게 순환 구조를 배제했기 때문에 훈련의 병렬화가 가능하며, attention mechanism의 long-term dependece 모델링 능력까지 갖출 수 있다. 또한 순환 구조를 줄이는 시도는 이전에도 있었다. ConvS2S, ByteNet 등이 있으며, 모두 ConveNet을 기본 빌딩 블록으로 사용하여 hidden state를 병렬로 계산하는 방식이다. 다만 필요한 작업 수가 위치 간 거리에 따라 ConvS2S의 경우 선형적으로 ByteNet의 경우 로그적으로 증가하였고, Transformer는 이와 달리 증가 없이 한 번에 연결되어 더욱 효율적이다.

Architecture

Encoder-Decoder

  성능이 뛰어난 모델은 대부분 encoder-decoder 구조를 사용하고 있다. 인코더는 입력 시퀀스를 표현 시퀀스 𝐳에 매핑하며, 디코더는 𝐳가 주어지면 한 번에 한 요소씩 출력 시퀀스를 생성한다. 각 출력 단계는 이전에 생성된 출력을 추가 입력으로 사용하는 autoregressive 방식으로 작동한다.

  Transformer는 인코더와 디코더가 “self-attention + pointwise fully connected 레이어”의 스택으로 구성된 아키텍처다. 둘 다 6개의 레이어 스택을 가지며, 각 구조에는 residual connection 과 layer normalization이 사용된다.

  디코더는 기본 스택 구조에 레이어를 한 개 추가한다. 이 레이어는 이전 출력에 대해 attention을 수행한다. 또한 위치 𝑖에 대한 예측이 𝑖보다 작은 위치의 출력에만 attention할 수 있음을 보장하기 위해 마스크가 적용되도록 수정되었다. 또한 출력 임베딩이 한 위치만큼 오프셋된다는 사실에 따라, 마스크도 출력마다 한 위치 씩 공개되게 된다.

Attention

  Attention function은 query, key, value 세트를 출력에 매핑하는 것이다. 출력은 value의 weighted sum으로 계산할 수 있다. 각 값에 할당된 가중치는 해당 key와 query의 호환성(compatibility)에 의해 계산된다.

  이를 계산 하기 위한 self-attention을 "Scaled Dot-Product Attention"이라고 부른다. Query, key는 𝑑𝑘 차원, key는 𝑑𝑣 차원의 크기를 가진다. 가중치는 키와 쿼리의 내적을 𝑑𝑘의 제곱근으로 나눈 다음 softmax를 적용한 값이다. 𝑑𝑘가 큰 경우 내적의 크기가 커지면서 softmax 함수의 기울기를 매우 작게 유도하기 때문에, 이를 상쇄하기 위해 제곱근을 나누었다. Mask 영역은 앞서 설명한 디코더에만 적용되는 부분이다.

  Multi head attention은 scaled dot-product attention을 여러 개로 나누어 병렬로 수행하는 구조다. Query, key, value에 해당하는 𝑑𝑘, 𝑑𝑘, 𝑑𝑣 차원을 h 개수로 나눈 뒤, 각 세트를 서로 다른 linear projection으로 선형 투영한다. 이후 각 출력은 concat되고 연결되고 다시 한 번 projection되어 최종 값이 생성된다.

  이를 통해 서로 다른 위치의 서로 다른 표현 공간에 대한 정보를 동시에(jointly) 주의(attention)를 기울일 수 있다. 단일 attention head를 사용하면 averaging이 이를 억제한다. 또한 각 헤드의 차원이 줄어들기 때문에, 전체 계산량은 단일 헤드와 유사하다. Transformer는 attention을 세 가지 다른 방식으로 사용된다.

  • Encoder-Decoder attention : Query는 디코더, Key와 Value는 인코더를 사용하는 방식으로, 디코더의 모든 위치가 입력 시퀀스의 모든 위치에 참조할 수 있는 구조다.
  • Encoder self-attention : 모든 Query, Key, Value가 동일한 입력 시퀀스를 사용하는 방식으로, 인코더는 이전 인코더의 모든 위치에 attention 가능하다.
  • Decoder masked self-attention : 인코더와 동일하게 동일한 입력 시퀀스를 사용하지만, autoregressive 속성을 유지하려면 디코더는 왼쪽 방향으로 정보가 흐르면 안된다. 즉 미래의 정보가 흘러들어오면 안된다는 것을 뜻한다. 이를 위해 softmax 입력에 사용해선 안되는 위치를 음의 무한대로 설정한다.
728x90

Pointwise feed-forward network

  인코더와 디코더의 각 레이어에는 각 위치 별로 독립적으로 수행되는 fully connected pointwise feed-forward 레이어가 있다. 두 번의 linear 레이어를 통과하며, 사이에 ReLU를 사용한다.

Positional encoding

  입력 토큰과 출력 토큰은 𝑑 차원의 벡터로 임베딩되어 사용된다. 최종 디코더 출력을 linear-softmax를 거쳐 다음 step의 토큰 확률을 구하게 된다. 여기서 시퀀스의 순서를 활용하려면 시퀀스에서 토큰의 상대적 또는 절대적 위치에 대한 정보를 주어져야 한다. 이를 위해 “positional encoding”이 활용된다.

 

  Positional encoding은 임베딩과 동일한 𝑑 차원의 크기를 가진다. 그 값은 학습시키거나 고정시키는 두 가지 방법이 있다. 다만 두 버전의 성능은 크게 차이가 나지 않는다. 이에 이후 실험에서는 고정된 positional encoding을 활용하였고, 그 수식은 위와 같다. 사인, 코사인 함수를 통해 정현파(sinusoidal) 형태를 사용하였는데, 이유는 모델이 훈련 중에 활용한 예제보다 더 긴 시퀀스 길이를 추론할 수 있고, 정현파는 어느 길이에나 대응되기 때문이다.

레이어 유형 별 비교

  Self-attention는 레이어별 계산 복잡성이 낮으며, recurrent 작업이 최소화되어 병렬화할 수 있는 계산량이 많다. 또한 입력 및 출력 시퀀스의 위치 조합 사이의 길이, 즉, 신호가 통과해야 하는 경로의 길이가 짧다. 이는 long-term dependence를 학습하는 능력에 영향을 미치는 주요한 요소다. 아래는 서로 다른 레이어 유형으로 구성된 네트워크 간 비교 자료다.

  우선 𝑛은 시퀀스 길이, 𝑑는 차원, 𝑘는 conv의 kernel 크기, 𝑟는 self-attention의 참조 가능한 이웃 크기를 의미한다. Self-attention 레이어는 모든 위치를 한번에 연결한다. 반면 순환 레이어에는 𝑂​(𝑛) 순차적으로 연결된다. 또한 계산 복잡성 측면에서, 시퀀스 길이 𝑛이 차원 𝑑보다 작을 때 self-attention 레이어는 순환 레이어보다 더 빠르다. 매우 긴 시퀀스에서 계산 성능을 향상시키기 위해, self-attention은 각 출력 위치를 중심으로 대응되는 입력 시퀀스 중심으로 부터 크기 𝑟의 이웃만 고려할 수도 있다.

  부가적인 이점으로 self-attention은 한다는 것이다. 모델의 attention distribution을 확인할 수 있으며, 개별 attention head는 사람이 문장의 구문 및 의미 구조와 관련하여 생각하는 방법과 유사하게 학습한다.

결과

Machine Translation

  WMT 2014 영어-독일어 번역 작업에 대한 성능은 BLEU 28.4로 최고 성능을 보였다. 이전에 발표된 모든 모델의 앙상블 결과도 능가하며 학습 비용도 훨씬 저렴하다. 영어-프랑스어 번역 작업 또한 모든 단일 모델을 능가하는 BLEU 41.0을 달성하였으며 학습 비용은 1/4 미만이다.

모델 변형

  Transformer의 구성 요소 별 중요성을 평가하기 위해 다양한 방식으로 변경하여 성능을 비교하였다.

  • (A) : 연산량을 일정하게 유지하면서 attention head 수 및 dk, dv 의 차원을 변경한 결과다. 단일 head attention의 성능은 최고 성능보다 BLEU 0.9가 떨어지는 동시에, 헤드가 너무 많아도 성능이 떨어진다.
  • (B) : Key의 차원 𝑑𝑘를 줄이면 성능이 떨어진다.
  • (C) : 모델이 클 수록 성능이 향상된다.
  • (D) : Dropout은 overfit을 방지하는데 도움이 된다.
  • (E) : 고정 positional encoding을 학습 가능한 positional encoding으로 대체하여도 모델 성능은 유사하다.

English Constituency Parsing

  다른 작업에 대해서도 일반화할 수 있는지 평가하기 위해 영어 구문 분석에 대한 실험을 수행했다. Transformer는 Recurrent Neural Network Grammar을 제외한 모든 모델보다 더 나은 결과를 보였다.

Reference

논문 링크 : https://arxiv.org/abs/1706.03762

 

728x90
반응형

'딥러닝 > RNN, LLM' 카테고리의 다른 글

[RNN] Reformer  (4) 2024.11.18
[RNN] WaveNet  (1) 2024.11.16
[RNN] Pointer Networks  (0) 2024.11.15
[RNN] Attention Mechanism  (2) 2024.11.14
[RNN] Seq2Seq  (0) 2024.11.13

+ Recent posts