Transformer

HojunJang·2024년 3월 5일

구성요소

  • Encoder

    • Self-Attention
    • Layer Normalization
    • Skip Connection
    • Feed-Forward Networks
    • Multi-Head Attention
  • Decoder

    • Auto-regressive
    • TeacherForcing
    • Masked Self-Attention(차별점)
    • Encoder-Decoder Attention
  • Input Embedding

    • 입력 데이터를 고차원 벡터로 변환하는 과정
    • Transformer가 입력 데이터를 처리할 수 있도록, Vocabulary를 연속적인 벡터 형태로 변환
    • 학습 가능한 파라미터들로 구성됨
  • Positional Encoding

    • 단어의 위치 정보를 반영(sequence적인 RNN 과 CNN의 특성을 모두 제거하였기 때문에 병렬계산을 위한 정보가 필요?)
    • sin함수와 cos함수를 통해 입력마다 다른 위치의 정보값 부여
  • Self-Attention

    • 기존 Seq2seq
      • 입력문장과 타겟 문장 사이의 Attention Score만 계산
    • Transformer에서의 Self_Attention
      • 입력 문장 내의 토큰들의 attention
    • 단계
      • Embedding(512)
      • 3개의 Query, Key, Value 벡터 구성
      • Query와 Key를 곱하여 Dot Product Attention Score 계산
      • Scale 작업을 진행. Key 벡터사이즈인 64의 제곱근인 8로 나누어 줌
      • Softmax진행(실제로 attention distribution으로 만들어줘야 하기 때문에)
        • 현재 위치의 단어의 encoding에 있어서 얼마나 각 단어들의 표현이 들어가는지에 대한 일종의 확률로 변환
          • '어디에 얼마나 집중해야 하는가?'를 보는 것
      • Softmax를 통과한 확률 값을 Value 벡터의 각각 원소에 곱하여 새로운 벡터를 얻음
        • 이전까지의 과정 == Scaled Dot Product Attention이라 명명
      • 결과로 나온 벡터를 다 더하여 Self Attention의 출력을 구성
  • Multi-Head Attention

    • Self-Attention 계산 과정을 8개의 다른 weight행렬들에 대해 Head 갯수 만큼 수행
    • Transformer 논문에서는 Head를 8개로 나누어서 계산
    • 다양한 표현을 학습함으로 더 잘 표현 가능
    • 여러 self-attention의 앙상블이라 생각하면 쉬움
    • 단계
      • 문장 X가 입력, Input Embedding 및 Position Encoding을 거쳐 입력벡터 계산
      • 입력 벡터를 통해 Self-Attention을 Head #0 ~ #7까지 모두 계산
      • 계산된 Self-Attention값들을 가지는 모든 HEAD들을 연결
        • HEAD#0 ~ HEAD#7의 출력인 Z_0 ~ Z_7값들을 연결
      • 연결된 Z_0 ~ Z_7의 값을 최종 Output Matrix인 WoW^{o} 왁 곱하여 최종 벡터 Z를 계산
  • Addition & Layer Normalization

    • Addition
      • 두 개 이상의 텐서를 요소별로 더하는 연산
      • Transformer 모델에서는 각 계층의 입력과 출력을 더하는 Residual Connection 기법을 Addition으로 사용
      • 모델의 깊이가 깊어질수록 발생할 수 있는 Over-fittiong 문제를 완화하는 데 도움을 줌
    • Layer Normalization
      • 각 layer의 출력을 정규화하는 방법
      • 각 샘플의 특성 값들을 평균 0, 분산 1로 정규화
      • Batch Normalization#
        • 기존에 많이 사용하던 정규화방식
        • 각 데이터의 배치를 독립적으로 정규화함
      • Layer Normalization#
        • transformer 이후 주로 사용
        • 입력 데이터의 sequence 길이에 영향을 받지 않음

특징

  • 병렬 계산

profile
일단 취업하고 싶어요

0개의 댓글