Day 4 - Transformer 요약

4055 단어 심층 학습
이 기사는 개인 공부용 메모입니다.

강의



NN 기계 번역의 문제점



길이에 약하다.

이유
・번역 원본 문장의 내용을 하나의 벡터로 표현
・문장과 번역 정밀도의 관계성

문서의 두 그래프에서 볼 수 있듯이,
Encoder-Decoder 모델은 통계 기계 번역 모델보다
BLEU 점수가 낮습니다.

Attention(주의 기구)



개요



번역 대상의 각 단어를 선택할 때 번역 원본 문장의 각 단어
숨겨진 상태 사용
가중치를 모두 더하면 1


h1은 무거운
h2는 가볍게

이에 따라 번역원과 번역처에서 단어마다 주의를 기울인다.
문장의 한 단어의 의미를 이해할 때 문장의 단어 중 어느 것에 주목하면 좋을지를 나타내는 점수.

메커니즘


  • Query
    입력. 검색하려는 쿼리
  • Key
    Key에서 비슷한 문장 찾기
    정규화 된 벡터 출력
  • Value
    정규화 된 벡터를 문장으로 만듭니다

  • Key Value Attension 모두.

    Transformer



    개요


  • Seq2seq와 마찬가지로 Encoder-Decoder 모델
  • RNN을 사용하지 않는다 (사용하는 것은 Attension 전용)
  • 병렬화하기 쉬운

  • 구조



    Encoder 및 Decoder

    Encoder 측면
  • Input Embedding
  • Positional Encoding (1. 단어 벡터에 단어 위치 추가)
  • Encoder
  • Multi-Head Attention (2. 복수의 헤드로 실시하는 Dot Product Attention, Self-Attention)
  • Add & Norm
  • Feed Forward (3. 단어의 위치마다 독립 처리하는 전체 결합)
  • Add & Norm


  • Decoder 측면
  • Output Embedding
  • Positional Encoding
  • Decoder
  • Masked Multi-Head Attention (4. 미래의 단어를 보지 않도록 마스크)
  • Add & Norm
  • Multi-Head Attention
  • Add & Norm
  • Feed Forward
  • Add & Norm

  • Linear
  • Softmax

  • Attention 유형



    Source Target Attention(소스 타겟 주의 기구)
    Query: Target
    Key:Source
     Value:Source

    Self-Attention(자기주의 기구)
    Query:Source
    Key:Source
     Value:Source

    "바나나""가""좋아"
    단어 사이의 주의를 구한다.

    Position-Wise Feed-Forward Networks(PFFN)



    위치 정보를 유지하면서 순전파한다.

    Scaled dot product attention



    모든 단어에 대한 Attention을 함께 계산합니다.
    Attention(Q,K,V)=softmax \Biggl(\frac{QK^T}{\sqrt{d_k}} \Biggr)V
    

    ※ $Q,K,V$ 가 식의 어디에 위치하는지 주의.
    ※ $\sqrt{d_k}$ 로 나누는 이유는, 나누지 않는 경우에 소프트 맥스 함수의 기울기가 작아져 버리기 (위해)때문에.
    \begin{align}
    Q・K^T&=
    \begin{pmatrix}
    q_1\\
    q_2\\
    q_3\\
    \end{pmatrix}
    \begin{pmatrix}
    k_1 k_2 k_3
    \end{pmatrix}
    \\
    &=
    \begin{pmatrix}
    q_1 k_1 & q_1 k_2 & q_1 k_3\\
    q_2 k_1 & q_2 k_2 & q_2 k_3\\
    q_3 k_1 & q_3 k_2 & q_3 k_3\\
    \end{pmatrix}
    \end{align}
    
    \begin{align}
    Attention(Q,K,V)
    &=softmax(QK^T)・ V \\
    &=
    \begin{pmatrix}
    0.1 & 0.2 & 0.7\\
    0.4 & 0.3 & 0.3\\
    0.8 & 0.1 & 0.1
    \end{pmatrix}
    \begin{pmatrix}
    v_1\\
    v_2\\
    v_3\\
    \end{pmatrix}
    \\
    &=
    \begin{pmatrix}
    0.1v_1 + 0.2v_2 + 0.7v_3\\
    0.4v_1 + 0.3v_2 + 0.3v_3\\
    0.8v_1 + 0.1v_2 + 0.1v_3\\
    \end{pmatrix}
    \end{align}
    

    Multi-Head Attention



    가중치가 다른 8개의 헤드 사용

    Decoder


  • 6 층 (Encoder와 동일)
  • 자기 주의 기구와 소스 타겟 주의 기구 양쪽 모두
  • 자기 주의 기구의 key 와 value 는 엔코더로부터, query 는 디코더로부터.

  • Add and Norm



    Add: Residual Connection
    입출력의 차이를 학습
    실장상은 출력에 입력을 그대로 가산할 뿐
    효과: 학습 및 테스트 오류 감소

    Norm: Layer Normalization
    평균 0, 분산 1로 정규화
    효과: 학습 가속화

    Positional Encoding



    단어 열의 단어 순서 정보 추가
    $\sin$ 및 $\cos$ 사용(0~1 범위)
    PE_{(pos,2i)}=\sin\Biggl(\frac{pos}{10000^{2i/512}}\Biggr)\\
    PE_{(pos,2i+1)}=\cos\Biggl(\frac{pos}{10000^{2i/512}}\Biggr)\\
    

    ※ 괄호 안은 같다. 차이는 $\sin$ 과 $\cos$ 뿐입니다.

    구현 연습





    「자신의」는 옳지만, 그 이후는 미묘한 번역.



    이곳은 BLEU 평가.
    좋은지 나쁜지 판단하기 힘들다.

    좋은 웹페이지 즐겨찾기