Ash Space
GitHubHuggingFace
  • Contents
  • 🥑Resume / CV
    • Reseume / CV
  • 📄Paper Review
    • Paper List
      • [2017] Attention is all you need
      • [2023] CoVe : Chain of Verification Reduces Hallucination in Large Language Models
      • [2024] RAG Survey : A Survey on Retrieval-Augmented Text Generation for Large Language Models
      • [2023] Interleaving Retrieval with Chain-of-Thought for Knowledge-Intensive Multi-Step Questions
      • [2024] Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models
      • [2020] ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT
      • [2024] Retrieval Augmented Generation (RAG) and Beyond
      • [2009] Reciprocal Rank Fusion outperforms Condorcet and individual Rank Learning Methods
      • [2024] Don't Do RAG : When Cache-Augmented Generation is All you Need for Knowledge Tasks
      • [2024] Text2SQL is Not Enough : Unifying AI and Database with TAG
  • 🗂️Research Article
    • Reference List
      • Dataset
      • LLM
      • Prompt Engineering
      • LLMops
      • RAG & Agent
      • Etc
    • Compounded AI System : The Shift from Models to Compound AI Systems
    • LLM과 Grounding
    • Essence of RAG
    • How to reduce Hallucinations
    • Golden Gate Claude Review
    • Editorial Thinking
    • Embedding을 평가하는 방법
    • 나야, Chunk
    • 당신.. Chunking이 뭔지 정확히 알아..?
    • 그래서 제일 좋은 Chunking이 뭔데?
    • 웅장한 대결 AI Agent와 Agentic AI
    • UV써도 괜찮아~ 딩딩딩딩딩
    • 아무도 RAG 평가 셋 만드는 것에 관심가지지 않아~
    • Linguistic Prompts
    • Chroma야, Chunking 평가를 어떻게 한다고?
    • Generations Never Easy
    • Model Context Protocol
    • Chill칠치 못한 Function Calling
    • RAG 평가지표 정복하기
    • LLM Quantization 방법론 알아보기
    • LLM은 더우면 헛소리를 해?
    • Text2SQL 넌 내꺼야!
  • 🏵️Conference
    • 일할맛 판교 3월 세미나
    • LangChainOpenTutorial를 진행하며
    • Talk: Prompt and Language The Science of Prompts 후기
    • 2024년 회고
    • 제 7회 Kako Tech Meet Up 후기
    • Moducon 2023 행사 후기
    • GDGXGDSC DevFest Happy Career 행사 후기
    • 모두를 위한 한국어 오픈액세스 언어모델 못다한 이야기 (feat. 모두연) #1
    • 모두를 위한 한국어 오픈액세스 언어모델 못다한 이야기 (feat. 모두연) #2
    • 맨땅에서 구축해본 개인화시스템 구축기 Session 후기
  • ♟️Basic
    • 00 Introduction
    • 01-1 LLM 지도
    • 01-2 LLM의 중추 트랜스포머 아키텍처 살펴보기
Powered by GitBook
On this page
  • 0. Abstract
  • 1. Introduce
  • 2. Background
  • 3. Model Architecture
  • 3.1 Encoder and Decoder Stacks
  • 3.2 Attention
  • 3.3 Point wise Feed Forward Network
  • 3.4 Embedding and Softmaxs
  • 3.5 Positional Encoding
  • 4. Why Self-Attention
  • 5. Training
  • 5.1 Training Data and Batching
  • 5.2 Hardware and Schedule
  • 5.3 Optimizer
  • 5.4 Regularization
  • 6. Results
  1. Paper Review
  2. Paper List

[2017] Attention is all you need

2024.05.05.

Last updated 4 months ago

Paper Link :

※ 본 포스팅은 논문의 가장 중요한 내용에 대한 리뷰를 정리하여 올리기 때문에 다소 축약되거나 의역된 내용이 많습니다. 참고하세요.

0. Abstract

  • 현재 주도적인 Sequence transduction model들은 인코더와 디코더 구조를 포함한 복잡한 RNN 혹은 CNN구조를 기반으로 함.

  • 재귀(=recurrent)나 합성곱(=convolution) 방식을 아예 배제하고 Attension Mechanism만을 활용한 Transformer라는 새로운 간단한 네트워크 구조를 제안.

  • 2가지 Translation Task를 수행한 실험 결과, 이 모델들은 품질 면에서 우수함을 보였으며 Transformer가 다른 작업에도 잘 일반화됨을 보여주었음.

1. Introduce

  • RNN, LSTM과 GRU는 언어 모델링, 기계 번역과 같은 순차 모델링 및 변환 문제에서 최고의 접근 방식으로 확고히 자리잡고 있고 이후에도 많은 연구가 순환 언어 모델과 인코더-디코더 구조의 한계를 뛰어넘기 위해 계속되고 있음.

    • 이런 inherently한 sequential 본질은 병렬처리를 못 하게하며, 긴 문장에서는 critical한 문제이고 메모리 제약으로 인해 예제에서 일괄 처리가 제한됨.

    • factorization tricks과 conditional computation을 통해 계산 효율성을 크게 향상시켰으며, 후자의 경우 모델 성능도 개선되었지만 여전히 순차적 계산의 근본적인 제약은 남아 있음.

  • Attention Mechanism은 다양한 task에서 compelling sequence modeling 및 transduction model의 필수적인 부분이 되었으며, 입력 또는 출력 시퀀스에서의 거리의 제약을 받지 않게 하였음.

  • 본 연구에서 우리는 순환을 배제하는 대신 오로지 Attention Mechanism에 의존하여 입출력 간의 전역적 의존성을 파악하는 모델 구조인 Transformer를 제안하고자 함.

    • 해당 모델은 훨씬 더 많은 병렬 처리를 가능하게 하며, 8개의 P100 GPU에서 단 12시간 훈련한 후 번역 품질에서 SOTA를 달성할 수 있었음.

2. Background

  • 순차적 계산을 줄이려는 목표는 Extended Neural GPU, ByteNet, 그리고 ConvS2S에서도 다루어졌으며, 이 모델들은 모두 CNN을 사용함.

    • input, output 거리에서 dependency를 학습하기 어려움.

    • Transformer에서는 이것을 Multi-Head Attention을 사용하여 상수시간으로 줄어들었음.

  • Self-attention, 때때로 intra-attention이라고 불리는 이 attention mechanism은 하나의 시퀀스 내 다양한 위치를 서로 연관시켜 시퀀스의 표현을 계산함.

    • 독해(=comprehension), 추상적 요약(=abstractive summerization), 텍스트 함축(=textual entailment) 및 task-independent sentnece representation과 같은 다양한 작업에 성공적으로 사용됨.

  • End-to-End Memory Network는 sequence-aligned recurrence 대신 recurrent attention mechanism을 기반으로 하며, 단순 언어 질문 응답 및 언어 모델링 작업에서 좋은 성능을 보인 것으로 나타남.

  • Transformer는 Sequence-aligned RNN이나 CNN을 사용하지 않고, Self-Attention에만 의존하여 입력과 출력의 표현을 계산하는 최초의 transduction 모델입니다.

3. Model Architecture

  • 대부분의 경쟁력 있는 신경망 구조의 sequence transduction 모델은 인코더-디코더 구조를 가지고 있습니다.

  • 각각의 단계에서 모델은 auto-regressive하며, 다음을 생성할 때 이전에 생성된 symbol들을 추가 입력으로 사용합니다.

  • Transformer는 인코더와 디코더에 대해 각각 Figure 1의 왼쪽과 오른쪽 반쪽에서 보여지는 것처럼, Self-Attention과 Point-wise, fully connected layer를 사용하여 구성됨.

3.1 Encoder and Decoder Stacks

Encoder

  • 인코더는 N=6개의 동일한 계층으로 구성됨.

  • 각 계층은 2개의 Sub-Layer를 가짐.

    • 첫 번째는 Multi-Head Self Attention Mechanism

    • 두 번째는 위치별 Fully connected FFN

  • 두 Sub-Layer 각각을 둘러싸는 Resiual connection을 사용하고, 그 다음에 정규화를 적용함.

Decoder

  • 디코더 또한 N = 6개의 동일한 계층으로 구성됨

  • 인코더 계층의 두 서브레이어 외에도, 세 번째 서브레이어를 추가함

    • 인코더의 출력에 대해 Multi-Head Attention Mechanism을 수행함

  • 각 Sub-Layer 주변에 Residual connection을 사용하고, 그 다음에 레이어 정규화를 적용함.

  • 디코더의 self-attention layer를 수정하여 position이 다른 위치로 이동하는 것을 방지하는데 이를 위해 사용되는 방법이 Masking임.

    • 어떤 i번째 position에서 예측을 수행할 때, 미래에 올 위치에 접근하는 것이 불가능하고 해당 위치와 그 이전의 위치들에 대해서만 의존하도록 함.

3.2 Attention

  • Attention Function은 query, key, value 그리고 output 모두가 벡터인 출력에 대해서 query와 key-value pair를 output에 매핑하는 함수임.

  • output은 value들의 가중치 합으로 계산하는데 이때, 각 value에 할당된 가중치는 해당 key를 가진 query와 연관된 함수(=> 종류가 많음! dot-prod, badanau, etc...)에 의해 계산됨.

3.2.1 Scaled Dot Product Attention

  • additive attention은 feed-forward network를 이용하여 compatibility function을 계산함.

  • 위의 두 가지는 이론적인 복잡성은 유사하지만, dot-product attention이 훨씬 빠르고 공간효율적임.

3.2.2 Multi-Head Attention

  • 파라미터들

3.2.3 Applications of Attention in our Model

  • Transformer에서는 Multi-Head Attention을 3가지 방식으로 사용함.

  • 인코더-디코더 레이어

    • query는 이전 디코더 레이어에서 나옴.

    • key와 value는 인코더의 output에서 나옴.

      • 디코더의 모든 위치에서 input sequence의 모든 position을 다룰 수 있음.

    • 전형적인 Seq2Seq에서의 attention 방식.

  • 인코더

    • self-attention layer를 포함함.

    • query, key, value는 모두 인코더의 이전 layer의 output에서 나옴.

    • 인코더의 각 position은 인코더의 이전 layer의 모든 position을 다룰 수 있음.

  • 디코더

    • 디코더의 각 position은 해당 position까지 모든 position을 다룰 수 있음.

    • 디코더의 auto-regressive 성질을 보존하기 위해 leftward의 정보흐름을 막아야함 (= 미래 시점의 단어들을 미리 조회함에 따라 현재단어 결정에 미칠 수 있는 영향을 막음).

3.3 Point wise Feed Forward Network

  • 인코더 디코더의 각 layer는 fully connected feed-forward network를 가짐.

    • 각 position에 따로따로, 동일하게 적용됨.

    • ReLu 활성화 함수를 포함한 두 개의 Linear Transformation이 포함됨.

3.4 Embedding and Softmaxs

  • 다른 시퀀스 변환 모델과 유사하게, 학습된 임베딩을 사용함.

  • 디코더의 출력을 예측되는 다음 토큰의 확률로 변환하기 위해서 일반적으로 학습된 linear transformation과 softmax함수를 사용함.

    • 두 임베딩 레이어와 softmax 이전의 linear transformation에 동일한 가중치 행렬을 공유하도록 함.

3.5 Positional Encoding

  • Transformer는 어떤 recurrence, convolution도 사용하지 않기 때문에, sequence의 순서를 사용하기 위해 position에 대한 정보를 주입해줘야 함.

  • 인코더와 디코더 stack 아래의 input 임베딩에 "Positional Encoding"을 추가함.

  • Positional encoding은 여러가지가 있지만, Transformer는 다른 주기를 가지는 Sine, Cosine function을 사용함.

  • 파라미터들

  • 실험결과 두 버전이 동일한 결과를 산출하였고 결국 Sine Curve를 선택함.

    • 모델이 훈련중에 접한 것보다 더 긴 시퀀스 길이에 대해서도 추정할 수 있기 때문

4. Why Self-Attention

  • self-attention과 recurrent, convolution layer를 다음에 대해 비교함.

    • Layer당 계산 복잡도

    • sequential parallelize 할 수 있는 계산량

    • network에서 long-range dependency 사이의 path 길이

      • network에서 순회해야하는 forward 와 backward의 path 길이가 이런 dependency를 학습하는 능력에 영향을 주는 주요 요인

      • input과 output sequence에서 position의 조합 간의 path가 짧을수록, long-range dependecy를 학습하기가 쉬움

      • -> input과 output position 사이의 최대 path 길이를 비교할 것

5. Training

5.1 Training Data and Batching

  • English-German

    • 450만개의 sentence pairs로 구성된 WMT 2014 English-German 데이터셋 활용함.

    • 문장들은 byte-pair 인코딩으로 인코딩 되어있음.

    • Source target vocabulary는 37000개임.

  • English-French

    • 3600만개의 sentence로 구성된 WMT 2014 English-French 데이터셋 활용함.

    • 32000개의 word-piece vocabulary로 구성됨.

5.2 Hardware and Schedule

  • 8개의 NVIDIA P100 GPU를 사용함.

  • base model은 12시간 동안 (100,000 step) 학습함.

  • big model 은 3.5일 동안 (300,000 step) 학습함.

5.3 Optimizer

  • Adam optimizer 사용함.

5.4 Regularization

  • Residual Dropout

    • 하위 레이어 입력이 추가되고 정규화되기 전에, 각 하위 계층의 출력에 드롭아웃을 적용함.

    • 인코더와 디코더 스택 모두에서 임베딩과 위치 인코뎅의 합계에 드롭아웃을 적용함.

  • Label Smoothing

  • 모델이 불확실해지긴 하지만 정확도와 BLUE 점수를 향상하였음.

6. Results

이 시점 Transformer가 아주 혁신이었다! (자세한건 논문에!!)

순환 모델은 일반적으로 입력 및 출력 시퀀스의 심볼 위치에 따라 계산을 분할함. 연산 steps의 위치에 따라, 이전 hidden state인 ht−1h_{t-1}ht−1​ 와 position ttt 의 입력을 기능으로 하는 hidden state hth_tht​가 생성됨.

인코더의 입력 시퀀스 (x1,⋯ ,xn)(x_1,\cdots,x_n)(x1​,⋯,xn​) 를 연속적 표현인 와 같이 매핑하여 표현함.

zzz를 바탕으로 디코더는 출력 시퀀스 (y1,⋯ ,ym)(y_1, \cdots, y_m)(y1​,⋯,ym​) 를 하나씩 생성함.

transformer architecture

각 Sub-Layer의 출력은 LayerNorm(x+Sublayer(x))LayerNorm(x + Sublayer(x))LayerNorm(x+Sublayer(x)) 인데, 여기서 Sublayer(x)Sublayer(x)Sublayer(x)는 Sub-Layer자체가 구현하는 함수임.

Residual Connection을 용이하게 하기 위해, 모델의 모든 서브레이어와 임베딩 레이어는 dmodel=512d_{model}=512dmodel​=512의 차원을 가진 출력을 생성함.

Scaled Dot-Product Attention의 입력은 dkd_kdk​에 대한 query, key와 dvd_vdv​에 대한 value의 벡터들로 구성됨.

모든 key로 dot-product를 계산하고 각각을 dk\sqrt{d_k}dk​​로 나눈 다음, Softmax함수를 적용하여 value의 가중치를 얻게됨.

가장 일반적으로 사용되는 attention function은 'additive attention'과 'dot-product attention'이고 이중 Dot-product attention의 스케일링 인자인 1dk\frac{1}{\sqrt{d_k}}dk​​1​를 제외하면 본 논문의 알고리즘과 같음.

dkd_kdk​가 작으면 두 방식의 성능은 비슷하지만, dkd_kdk​가 큰 경우 additie attention이 더 성능이 좋음.

dkd_kdk​가 크면 dot-product의 경우 gradient vanishing 문제를 해결하기 위해 1dk\frac{1}{\sqrt{d_k}}dk​​1​로 스케일링 함.

dmodeld_{model}dmodel​의 차원크기를 가지는 key, value, query로 단일 어텐션 기능을 수행하는 대신에 query, key,value을 각각 dk,dk,dvd_k, d_k, d_vdk​,dk​,dv​ 차원으로 hhh번 linear projection하는 것(=> 서로 다르게 학습)이 더 효과적이라는 것을 발견함.

이렇게 projection된 query, key, value에 대해서 attention function을 병렬적으로 수행하여 hhh개의 dvd_vdv​ 차원의 결과를 산출함. 이 결과들을 연결시킨 후 linear projection하여 최종적인 결과벡터를 얻게됨.

WiQ∈Rdmodel×dkW^Q_i \in \mathbb{R}^{d_{model} \times d_k}WiQ​∈Rdmodel​×dk​

WiK∈Rdmodel×dkW^K_i \in \mathbb{R}^{d_{model} \times d_k}WiK​∈Rdmodel​×dk​

WiV∈Rdmodel×dvW^V_i \in \mathbb{R}^{d_{model} \times d_v}WiV​∈Rdmodel​×dv​

WiO∈Rhdv×dmodelW^O_i \in \mathbb{R}^{hd_v \times d_{model}}WiO​∈Rhdv​×dmodel​

본 연구에선 h=8h=8h=8이고 dk=dv=dmodel/h=64d_k=d_v=d_{model}/h=64dk​=dv​=dmodel​/h=64이다. 각 head마다 차원을 줄이기 때문에 전체계산비용이 단일 어텐션과 비슷하다.

Scaled-dot product attention에서 모든 softmax의 input value 중 illegal connection에 해당하는 값을 −∞-\infty−∞ 로 masking out해서 구현함. (= Softmax를 취했을 때 해당위치의 값이 0이 되게하기 위해서)

선형변환은 position에 대해서는 동일하지만, 각 층마다 다른 파라미터 (W1,W2)(W_1, W_2)(W1​,W2​)를 사용함.

입출력 차원은 동일하게 dmodel=512d_{model}=512dmodel​=512.

FFN 내부 hidden layer의 차원은 dFFN=2018d_{FFN}=2018dFFN​=2018.

입력 토큰과 출력 토큰을 dmodeld_{model}dmodel​차원의 벡터로 변환하기 위함.

임베딩 레이어에서는 그 가중치에 dmodel\sqrt{d_{model}}dmodel​​을 곱해줌.

Positional Encoding은 input 임베딩과 마찬가지로, dmodeld_{model}dmodel​차원을 가지기 때문에 합칠 수 있음.

pospospos : position을 의미함

iii : 차원을 의미함

positional encoding의 각 차원iii는 Sine Curve에 대응됨.

파장은 2π2\pi2π에서 10000×2π10000\times2\pi10000×2π까지 기하급수적으로 늘어남.

위의 함수를 선택한 이유는 어떤 고정된 오프셋 kkk에 대해,PEpos+kPE_{pos+k}PEpos+k​가 PEposPE_{pos}PEpos​의 선형함수로 표현될 것이라는 가설때문. (상대적으로 위치를 쉽게 학습할 것이다!)

β1=0.9\beta_1=0.9β1​=0.9

β2=0.98\beta_2=0.98β2​=0.98

ϵ=10−9\epsilon=10^{-9} ϵ=10−9

warmup;steps=4000warmup;steps=4000warmup;steps=4000

Pdrop=0.1P_{drop}=0.1Pdrop​=0.1

훈련하는동안 label smoothing value ϵls=0.1\epsilon_{ls}=0.1ϵls​=0.1을 사용함.

📄
https://arxiv.org/pdf/2309.11495
Attention is All You Need (a.k.a. Transformers)