[TIL]트랜스포머

lena_log·2022년 3월 7일
0

Codestates Section4

목록 보기
8/12
post-thumbnail

기존 Seq2seq 모델들의 한계점

  • context vector v에 소스 문장의 정보를 압축
    • 병목이 발생하여 성능 하락의 원인이 됨

트랜스포머

  • 트렌스포머는 RNN과CNN을 전혀 사용하지 않아서 단어의 순서정보를 주기가 어려운데 그래서 문장내에 각각의 단어들의 순서정보를 알려주기위해서 별도로 순서에 대한 positional encoding을 이용해서 순서에대한 정보를 줄수있음
  • 향후 bert 같은 향상된 네트워크에서 채택됨
  • 인코더와 디코더로 구성됨
    • Attention 과정을 여러 레이터에서 반복함

트랜스포머의 동작 원리: 입력 값 임베딩

  • 전통적인 임베딩
    • 입력차원 자체는 특정언어에서 존재할 수있는 단어의 갯수와 같기 때문에 차원이 많고 정보들은 원핫인코딩으로 표현이 되기때문에 네트워크에 넣을때는 더 적은 차원의 컨티뉴어스한 값으로 표현함
  • rnn을 사용하지 않으려면 위치정보를 포함하고 있는 임베딩을 사용해야함
    • 이를 위해 트랜스포머에서는 positional encoding을 사용함

트랜스포머의 동작 원리: 인코더

  • multi-head attention에서 받는 입력값은 입력문장의값과 위치에 대한 정보까지 포함되어있는 입력값임
  • 각각의 입력값을 받아서 어텐션을 수행하고 인코더 파트에서 수행하는 어텐션은 셀프 어텐션이라고 해서 각각의 단어가 서로에게 어떤 연관성을 가지고 있는지를 구하기 위해 사용한다
  • 성능향상을 위해 잔여학습(residual learning)을 사용함
    • 전체 네트워크는 기존정보를 전달받음으로써 추가적으로 잔여된 부분만 학습하도록 만들기 때문에 전반적으로 학습 난이도가 낮기때문에 초기에 모델 수렴 속도가 높기때문에 글로벌 옵티마를 찾을 확률이 높아짐
      그래서, 다양한 네트워크에 대해서 잔여학습을 사용했을때 성능이 좋아지는걸 목격할 수있음
  • 어텐션과 정규화 과정을 반복함
    • 각 레이언느 서로 다른 파라미터를 가짐

트랜스포머의 동작 원리: 인코더와 디코더

  • 트랜스포머에서도 인코더와 디코더의 구조를 따릅니다
    • 이때 RNN을 사용하지 않으며 인코더와 디코더를 다수 사용한다는 점이 특징
    • eos가 나올 때까지 디코더를 이용
  • 인코더와 디코더는 multi-head-attention 레이어를 사용
  • 어텐션을 위한 세가지 입력 요소
    • 쿼리(query)
    • 키(key)
    • 값(value)

트랜스포머의 동작 원리(하나의 단어): 쿼리, 키, 값

  • 어텐션을 위해 쿼리, 키, 값이 필요
  • 각 단어의 임베딩을 이용해 생성 할 수 있음
  • 실제로는 행렬 곱셈 연산을 이용해 한꺼번에 연산이 가능함

트랜스포머의 동작 원리(하나의 단어): scaled dot-product attention

  • 마스크 행렬를 이용해 특정 단어는 무시할 수 있도록 함
  • 마스크 값으로 음수 무한의 값을 넣어 softmax 함수의 출력이 0퍼에 가까워지도록함

트랜스포머의 동작 원리: self attention

  • self attention은 인코더와 디코더 모두에서 사용됨
    • 매번 입력 문장에서 각 단어가 어떤 단어와 연관성이 높은 지 계산 할 수 있음

트랜스포머의 동작원리: positional encoding

  • positional encoding은 다음과 같이 주기 함수를 활용한 공식을 사용
    • 각 단어의 상대적인 위치 정보를 네트워크에 입력

profile
안녕하세요. 기억보다 기록을 믿는 레나입니다!

0개의 댓글