Transformer

TaeWoo Lee / Kris·2022년 3월 7일
0

트랜스포머(Transformer)

기존의 seq2seq의 구조인 인코더-디코더를 따르면서도 어텐션으로만 구현만 모델

  • 기존 RNN 단점

    • 단어가 순차적으로 들어온다.
    • 처리해야 하는 시퀀스가 길수록 연산 시간이 길어진다.
  • Transformer 장점

    • 모든 토큰을 동시에 입력받아 병렬 처리하기 때문에 GPU 연산에 최적화 되어 있다.(시퀀스의 길이가 길어지더라도 연산 시간에 큰 변화가 없다)
  • Transformer 구조

    • 인코더, 디코더 6개씩 존재
    • 인코더 블록 (2개 서브 레이어): Multi-Head (Self) Attention, Feed Forward
    • 디코더 블록 (3개 서브 레이어): Masked Multi-Head (Self) Attention, Multi-Head (Encoder-Decoder) Attention, Feed Forward
    • Positional Encoding (위치 인코딩) : 단어의 상대적인 위치 정보를 담고 있다.
    • 모든 단어 동시 입력 -> 컴퓨터가 단어 위치를 알 수 없다.
  • 인코더

    • Self-Attention (셀프-어텐션)
      • 트랜스포머 주요 매커니즘
      • 쿼리 - 분석하고자 하는 단어에 대한 가중치 벡터
    • 키 - 쿼리에 해당하는 단어와 얼마나 연관있는지 비교를 위한 가중치 벡터
    • 벨류 - 단어의 의미를 살려주기 위한 가중치 벡터
        1. 단어 행렬과 준비된 가중치 행렬을 내적하여 쿼리, 키, 밸류 행렬을 만들어냅니다.
        1. 쿼리 행렬과 키 행렬을 내적합니다.
        1. 계산하여 나온 값을 (쿼리, 키, 밸류) 벡터 차원의 제곱근에 해당하는 값으로 나누어줍니다.
        1. 계산하여 나온 값에 소프트맥스 함수를 취해줍니다.
        1. 계산하여 나온 값과 밸류 행렬을 곱해줍니다.
  • 문장 내부 요소의 관계를 잘 파악하기 위해서 문장 자신에 대해 어텐션 메커니즘을 적용

  • Multi-Head Attention(앙상블과 유사한 효과)

    • 여러 개의 Attention 메커니즘을 동시에 병렬적으로 실행
  • Layer Normalization

    • 학습이 훨씬 빠르고 잘 되도록 합니다.
  • Skip Connection

    • 정보가 소실되지 않도록 한다.
  • FFNN(Feed forward neural network)

    • 은닉층의 차원이 늘어났다가 다시 원래 차원으로 줄어드는 단순한 2층 신경망
  • Masked Self-Attention

    • 트랜스포머에서는 타깃 문장 역시 한 번에 입력되기 때문에
      해당 위치 타깃 단어 뒤에 위치한 단어는 Self-Attention에 영향을 주지 않도록 마스킹(Masking)을 해주게된다.
  • Encoder-Decoder Attention

    • 번역할 문장과 번역되는 문장의 정보 관계를 엮어주는 부분
    • Q : 디코더 벡터
    • K, V : 인코더 벡터
profile
일단 저지르자! 그리고 해결하자!

0개의 댓글