Lecture 14 - Transformer and Self-Attention

Tobig's 1415 Textseminar·2021년 6월 2일
4
post-thumbnail

작성자: 고려대학교 언어학과 조효원

Contents

  1. Introduction
  2. Self-Attention and Transformer
  3. Local self-attention and Image Transformer
  4. Relative Positional self-attentoin and Music Transformer

1. Introduction

1-1. RNN, CNN, and Self-Attention

RNN

  • 순차적으로 계산되므로 병렬화가 불가능
  • Long-term dependency 처리에 약하다
  • 계층 구조를 모델링할 수 없다

CNN

  • 병렬화 가능
  • Local dependency에는 강하지만, Long-term dependency를 표현하기 위해서는 많은 계층이 필요

Self-Attention

  • 병렬화 가능
  • 각 token이 최단거리로 연결되어 long-term dependency 문제도 해결

Complexity

2. Self-Attention and Transformer

  • Seq2seq model with self-attention

2-1. Self-Attention Details

AttentionSelf-Attention
DefinitionInput과 Target 토큰 사이의 관계Input 내 모든 토큰들의 관계
Q,K,VQ = t시점의 Decoder output
K = 모든 시점의 Encoder output
V = 모든 시점의 Encoder output
Q = 입력 문장의 모든 단어 vector
K = 입력 문장의 모든 단어 vector
V = 입력 문장의 모든 단어 vector
Procedure1. Q에 대해 모든 K와의 유사도를 구한다.
2. 유사도를 K와 매핑되어있는 V에 반영한다.
3. 유사도가 반영된 V를 모두 더해 반환한다.
1. 독립적인 Q,K,V 벡터를 얻는다.
2. Scaled dot-product Attention을 수행한다.
3. Head들을 연결한다.
4. Fc-layer를 통과한다.

0) Transformer Hyperparameters

  1. dmodel=512d_{model} = 512
    Encoder와 Decoder의 입출력 크기
  2. num_layers=6num\_layers = 6
    Encoder Stack과 Decoder Stack의 층 개수
  3. num_head=8num\_head = 8
    Attention의 병렬화 수
  4. dff=2048d_{ff} = 2048
    Feed Forward 계층의 은닉층 크기

1) Q,K,V 벡터 얻기

  • Self-Attention은 Encoder의 입력 단어 벡터를 사용하지 않는다
  • 우선, 각 단어 벡터로부터 Q벡터, K벡터, V벡터를 얻는다.
    • 이 벡터들은 dmodelnum_head{d_{model} \over num\_head}의 크기를 가진다.

2) Scaled dot-product Attention 수행

  • Scaling 하는 이유
    • dot product 값이 상당히 커지기 때문에! Q 와 K 의 차원이 커질 수록 QK(T) 값이 커지기에 softmax 시 큰 값은 매우 커지고 작은 값은 매우 작아지는 문제 발생
    • 임의로 Q와 K가 평균이 0이고 분산이 1인 i.i.d normal distribution을 따른다고 가정해보면, 분산은 dkd_k가 된다.
    • Q 와 K 의 곱해지는 값들이 모두 독립이라 가정하면 이상적인 분산은 1이다.

3) Head 통합하기

  • 앞서 구한 n번째 head 의 Attention Value Matrix를 Attention head라고 부른다.
  • 모든 head를 합쳐서 최종 Attention Value를 구한다.
  • 각 head는 동시다발적으로 구해진다. (병렬 처리)

  • 한 문장 내에도 다양한 정보가 존재하며, 한 번의 attention으로는 모든 정보를 적절하게 반영하기 어렵다.

  • 각 head는 하나의 시점 및 시각으로 기능한다. 즉, multihead attention을 통해 여러 시점 및 시각으로 정보를 수집할 수 있다.

4) Fc layer 통과하기

  • 가중치를 곱해 Multihead Attention을 구한다.

2-2. Transformer

1) 3가지 Attention block

  • Encoder Self attention

    • Encoder는 하나의 특정한 단어를 '잘 표현(encode)'하기 위해 input sequence 내 모든 단어들과의 관계를 살펴 learned representation을 산출한다.

  • Decoder Self attention

    • Decoder는 input sequence에 대해 잘 표현하기 위해 multihead attention을 수행한다.
    • 이때, Look ahead mask를 씌운 상태로 진행한다.
    • Look ahead mask란, 문장을 생성할 때 뒤의 단어를 참고하는 것을 방지하기 위한 마스크이다. 시점 t 이후 모든 key에 대한 masking이 되어있다.


  • Encoder-Decoder Attention

    • Encoder의 output과 Decoder의 input 사이의 다리를 놓아주는 역할을 합니다.

    • Q = Decoder 벡터, K,V = Encoder의 마지막 층 벡터

2) Positional Encoding

단어의 위치와 순서는 모든 언어의 필수 부분이다. RNN (Recurrent Neural Networks)은 단어별로 문장을 순차적으로 구문 분석하기에 본질적으로 단어의 순서를 고려한다. 하지만 Transformer 아키텍처는 recurrent 메커니즘을 버렸기에 단어의 위치 정보를 활용하지 못한다. 문장의 각 단어가 Transformer의 인코더 / 디코더 스택을 동시에 통과하기 때문에 모델 자체에는 각 단어의 위치/순서에 대한 감각이 없다.

Positional Encoding은 RNN 계열의 '순서/위치 정보 반영'이라는 장점을 유지하기 위해 고안된 방법으로, 문장에서의 위치에 대한 정보를 각 단어에 추가한다. 이때, 각 단어의 위치는 cos, sin 함수를 통해 표현된다.

Why cos & sin, not int
  • 정수를 사용하면?
    • 정수값 위치 표현은 값이 모델에 미치는 영향이 너무 크다
    • 따라서 모델의 robustness가 떨어진다
  • cos, sin 함수는 다음의 조건을 충족하므로 위치를 표현하기에 좋다.
    1. 각 토큰의 위치값은 고유해야 한다.
    2. 서로 다른 두 토큰이 떨어져있는 거리가 일정해야한다.
    3. 긴 길이의 문장도 표현할 수 있어야한다.
    4. 함수에 따른 결과로 토큰의 위치값을 예측할 수 있어야한다.
  • 짝수에 sin, 홀수에 cos를 사용하면 위치가 커질 때마다 값이 다시 작아져 특정 두 토큰의 위치값이 겹치는 것을 방지할 수 있다.

3) Feed Forward NN

FFNN(x)=Max(0,xW1+b1)W2+b2FFNN(x) = Max(0, x \cdot W_1 +b_1 ) \cdot W_2 + b_2

  • 즉, Relu activation function을 거치는 nn
  • xx는 multihead self-attention의 결과인 (seq_len,dmodel)(seq\_len, d_{model}) 크기의 벡터
  • W1=(dmodel,dff)W_1 = (d_{model}, d_{ff}), W2=(dff,dmodel)W_2 = (d_{ff}, d_{model})

4) Add & Norm

3. Local self-attention and Image Transformer

3-1. Using Self-attention for Image tasks

  • Self-Similarity in Image

  • Image Transformer Tasks

    - Unconditional Image Generation
    대규모의 데이터로 특정한 이미지를 제작하는 태스크
    - Conditional Image Generation
    클래스 각각의 임베딩 벡터를 입력으로 받거나, seed 이미지를 받아 이미지를 제작하는 태스크
    - Super Resolution
    저화질의 이미지를 입력으로 받아 고화질의 이미지를 출력하는 태스크

강의에서 초점을 둔 것은 Original Transfomer와 완전히 같은 구조를 사용하는 마지막 Super Resolution Task이다.

Transformer에서 입력은 문장에서 사진으로 전환되며, 따라서 처리 단위도 토큰에서 픽셀로 바뀐다. 그런데, 여기서 Complexity에 문제가 생긴다.

앞서 Self-Attention이 효율적인 이유는 model dimension보다 sequence length가 작기 때문이었다. 하지만 이미지 처리를 픽셀 단위로 한다면 sequence length는 픽셀을 나열한 크기가 된다. 이미지 픽셀의 길이는 일반적으로 32x32x3=3072이므로, self-attention을 적용하는 것이 굉장히 비용이 커지게 된다.

3-2. Local Self-Attention

이러한 배경을 바탕으로 Local self-attention이 등장한다. 말 그대로, attention window를 전체가 아닌 근처의 픽셀들로만 설정해 어텐션을 수행한다.

이때, Sequence 내 일정 부분을 Memory block이라고 하며, memory block 내에서만 self-attention 적용한다.

Super Resolution에서의 decoder가 이미지를 생성하는 순서는
1. Input을 겹치지 않는 Block으로 구분, 마지막으로 생성된 픽셀을 포함하는 block을 Query block이라고 한다. 이때 마지막으로 생성된 픽셀을 Current Query pixel, 그 다음 생성되야할 픽셀을 Target pixel이라고 한다.
2. 위쪽 방향으로 hmh_{m} 픽셀, 양 옆으로 wmw_{m} 픽셀만큼을 둘러싸는 Memory block을 지정한다. 이는 Key와 Value의 역할을 한다.
3. Memory block 내 픽셀을 key, value로, Current Query pixel을 query로 하는 self-attention 수행(Transformer Decoder의 Multihead self attention)
4. Encoder-Decoder Attention, FFNN을 거쳐 output 생성

Results

  • Super Resolution
  • Conditional Image Completion

4. Relative Positional self-attentoin and Music Transformer

4-1. Using Self-attention for Music generation tasks

  • Self-Similarity

  • Music Transformer Tasks

    • Unconditional Music Generation
      대규모의 데이터로 특정한 음악을 제작하는 태스크
    • Conditional Music Generation
      클래스 각각의 임베딩 벡터를 입력으로 받거나, seed 음악을 받아 음악을 제작하는 태스크

4-2. Relative Positional Self-Attention

Attention + Convolution

어텐션을 통해 우리는 지나간 정보들에 대한 weighted average를 알 수 있다. 또한, 어텐션의 큰 강점 중 하나는 어떤 토큰이든 직접적인 접근을 할 수 있다는 것이다. 그러나 이는 다르게 이야기하면 모든 토큰들이 마치 bag of words처럼 여겨져 한 토큰과 다른 토큰의 거리는 알 수 없다는 것이다.

여기에 Convolution의 장점을 결합한 것이 Relative Positional Self-Attention이다. convolution은 이동하는 고정된 크기의 필터가 있고 이것은 각 토큰 사이의 상대적인 거리를 잡아낸다. 즉, self attention에 거리라는 요소를 추가한 것이다.

Relative Positional Self-Attention

거리 정보를 고려해야 했던 이유는 무엇일까. 살펴보았듯이 음악은 특정 주기를 가지고 비슷한 음들이 반복된다. 흔히 듣는 음악의 훅만 생각해보아도 그렇다. Music Transformer의 Relative Positional Self-Attention은 각 단위의 내용뿐만 아니라 그 단위가 한 스텝 떨어져있는지 두 스텝 떨어져 있는지 등을 함께 고려한다. 즉 주기성을 고려하는 것이다.

Relative Positional Self-Attention는 단순히 일반적인 Self-attention에 Relative Positional Vector를 더해 query와 key의 sequence 내 거리를 attention weight에 반영하는 형태다.

Relative Positional Self-Attention에서 SrelS^{rel}을 만드는 순서는 다음과 같다:

  1. Relative Positon Embedding Matrix(ET)E^T)를 만든다.
  2. Relative Positon Embedding Matrix(ET)E^T)를 Query Vector를 곱한다.
  3. 기존 attention과 더할 수 있도록 모양을 변형한다. (Skewing)
  4. 기존 attention score와 relative positional attention score를 더하여 output을 산출한다.

Results

Relative self-attention이 적용된 music transformer는 다양하고 반복적인 곡을 생성함과 동시에 training data보다 2배나 긴 sequence에 대한 generation 또한 가능했다.

Reference

10개의 댓글

comment-user-thumbnail
2021년 6월 2일

투빅스 14기 정세영

self-attention과 transformer의 개념을 잘 잡아주신 강의였습니다.

  • 기존의 RNN은 병렬화 불가 및 flat한 구조로 인해 계층화도 불가 / CNN은 long-term dependency에 많은 계층 필요 -> 이러한 단점을 부수고 나온 것이 self-attention
  • self-attention은 문장 하나를 한번에 때려넣으니까 병렬화가 가능하고 모든 단어가 서로에게 direct로 접근 가능해 시간복잡도를 낮춰줌
  • 기존 attention은 input과 target 토큰 사이의 관계였다면 self-attention은 input 내 모든 토큰 간의 관계라 비교할 수 있음
  • transformer의 multi-head는 여러 시점/시각으로 정보를 수집하는 것이라 볼 수 있음
  • transformer 구조에서는 문장의 단어들을 동시에 때려넣기 때문에 모델이 단어의 위치 개념을 인지하지 못해 position encoding 도입
  • position encoding은 sin cos 함수를 통해 같은 단어여도 자리에 따라 다르게 모델에 입력할 수 있게 해줌
  • local self-attention은 근처 memory block 내에서만 self-attention 수행
답글 달기
comment-user-thumbnail
2021년 6월 3일

투빅스 14기 한유진

  • RNN 병렬화 불가능 -> long-term dependency표현을 위해 deep한 구조필요(학습속도 저하)-> 이 문제점들을 모두 해결하기 위해 등장한것이 Self-Attention입니다. 기존의 Attention과의 가장 큰 차이점은 Encoder의 입력단어벡터를 사용하지 않는다는 점입니다. 독립적인 Q,C,V벡터를 얻어 Scaled dot-product Attention 수행, head연결, FC통과 순으로 진행됩니다. 이런 Self-Attention을 적용한 모델이 Transformer입니다.
  • Encoder/Decoder Self attention, Encoder-Decoder attention 이렇게 3가지의 Attention block과 문장에서의 단어 위치/순서에 관한 정보를 담기 위해 Positional Encoding 추가, ReLU를 거치는 FFNN, ADD&Norm으로 이루어져 있습니다.
  • Image : Self attention의 변형인 Local Self attention은 attention window전체가 아닌 근처의 픽셀들 즉, memory block내에서만 Self attention을 적용하는 것입니다.(image 픽셀에 모두 적용하면 비용커짐)
  • Music : Relative Positional Self attention은 attention과 conv를 결합한 형태입니다. attention을 통해 지나간 정보들에 대한 weighted average를, Conv를 통해 각 토큰 사이의 거리 정보를 고려할 수 있습니다.

Self Attention의 등장배경부터 이를 적용한 Transformer, 나아가 변형까지의 과정들을 이해하기 쉽게 설명해주셔서 좋았습니다. 좋은 강의 감사합니다!

답글 달기
comment-user-thumbnail
2021년 6월 21일

투빅스 15기 김동현

Self-attention과 이미지, 음성의 Self attention 개념을 잘 알 수 있는 강의였습니다.

  • RNN 계열의 모델은 parallelization이 불가능하고 long-term dependency를 잘 반영하지 못한다는 단점이 있습니다. 이때 Parallelization이 불가능한 이유는 the 이전에 kicked가 계산되어 hidden state로 kicked에 대한 값이 넘어가야지만 the에 대한 계산이 가능하기 때문입니다.

  • transformer의 가장 큰 특징은 self-attention을 사용해 sequential한 토큰을 sequential하게 처리하지 않아 병렬처리를 가능하게 한 점입니다.

  • 이미지 트랜스포머의 첫 번째 태스크는, Unconditional Image Generation은 대규모의 데이터로 특정한 이미지를 제작하는 태스크를 의미합니다. 두 번째 태스크는, Class Conditional Image Generation은 클래스 각각의 임베딩 벡터를 입력으로 받아 이미지를 제작하는 태스크를 의미합니다. 마지막 태스크는, Super Resolution은 저화질의 이미지를 입력으로 받아 고화질의 이미지를 출력하는 태스크를 의미합니다.

  • Music Transformer는 Relative Positional Self-Attention을 사용합니다. 즉, 일반적인 Self-attention에 Relative Positional Vector를 더해 query와 key의 sequence 내 거리를 attention weight에 반영합니다.

답글 달기
comment-user-thumbnail
2021년 6월 22일

투빅스 15기 조준혁

  • RNN의 단점은 순차적 계산으로 인한 병렬화 불가능, Long term dependency에 약하며 계층 구조를 모델링 할 수 없다 입니다. 이를 해결하기 위해 병렬화가 가능하고 각 token이 최단거리로 연결되는 방식으로 long-term dependency 문제를 해결하는 Self Attention이 등장하게 되었습니다.
  • Self Attention을 수행하는 방식은 Q, K, V 벡터를 얻고 Scaled dot-product Attention을 수행, Head를 통합하고 Fc Layer를 통과시키는 방식입니다.
    -Transformer는 3가지 Attention block(Encoder Self attention, Decoder Self attention, Encoder-Decoder Attention)을 가지고 있습니다. Positional Encoding을 통해 순서/위치 정보를 반영하고 Feed Forward NN을 지나 Add(잔차 연결) & Norm(층정규화)를 수행합니다.
  • Transformer는 Language 뿐만 아니라 Image, Music 등의 분야에도 다양한 활용사례가 있으며 영역을 확장하고 있습니다.
답글 달기
comment-user-thumbnail
2021년 6월 22일

투빅스 14기 강재영
Self-Attention과 Transformer에 대해 배울 수 있었던 강의였습니다.

  • RNN은 병렬화가 불가능하고 Long-term dependency 처리에 약하고 계층구조에 모델링이 불가능하다는 단점이 있었다.
  • CNN은 이를 보완하여 병렬화도 가능하고, Local dependency에 강해졌지만 Long-term dependency를 표현하기 위해서는 많은 계층이 필요하다는 단점이 있었다.
  • Self-Attention은 이를 다시 보완하여 병렬화도 가능하고 각 Token이 최단거리로 연결되도록하여 Long-term dependency 문제도 해결하였다
  • 기존 Attention과 Self-Attention의 차이는 기존 Attention 경우에는 input과 Target 토큰 사이의 관계였다면, Self-Attention은 input 내 모든 토큰들의 관계이다.
  • Transformer 의 경우 3가지 Attention Block을 가지고 있는데, 1) Encoder Self Attention , 2) Decoder Self Attention 3) Encoder-decoder Attention이다.
  • 또한 Positional Encoding을 통해 순서/위치 정보 반영이라는 장점을 유지하였다.
답글 달기
comment-user-thumbnail
2021년 6월 22일

투빅스 15기 이수민

  • RNN 모델은 병렬화가 불가능하고 long-term dependency 처리에 약하다는 단점이 있으며, CNN 모델은 병렬화는 가능하지만 long-term dependency를 표현하기 위해서는 다수의 layer가 필요하기 때문에 학습이 어려워진다.
  • Transformer는 병렬 처리를 가능하게 하면서 동시에 long-term dependency 문제를 해결하는 self-attention을 사용한다.
  • Transformer는 세가지 attention block: encoder self-attention, decoder self-attention, encoder-decoder attention으로 이루어져 있으며, positional encoding을 통해 문장에서 위치에 대한 정보를 각 단어에 추가하여 단어 위치 정보 손실을 방지한다.
  • Multihead attention을 통해 한 문장 안에 존재하는 다양한 정보를 한 번의 attention으로는 반영하기 어렵기 때문에 8개의 head를 가진 attention을 사용하여 다수의 정보를 적절하게 반영할 수 있다.
  • Image transformer는 sequence 내 일정 부분 (memory block) 내에서만 attention을 수행하는 local self-attention을 사용한다.
  • Music transformer에서는 self-attention에 relative positional vector를 더한 relative positive self-attention을 사용하여 곡을 생성한다.
답글 달기
comment-user-thumbnail
2021년 6월 22일

투빅스 15기 김재희

  • RNN은 병렬화가 불가능하고, 장기 의존성 문제가 발생한다는 문제가 있습니다.
  • CNN은 장기 의존성 문제를 해결할 수 있으나, 많은 레이어가 필요하다는 문제점이 있습니다.
  • 이를 개선하여 병렬화가 가능하고, 장기 의존성 문제를 해결한 트랜스포머가 제시되었습니다.
  • 트랜스포머는 self-attention, multi-head-attention, Encoder, Decoder, positional encoding 등으로 구성되어 있습니다.
  • self-attention을 통해 입력 문장을 인코딩 하고, multi-head-attention을 통해 병렬화하며, positional encoding을 통해 시점에 대한 정보가 입력에 담기도록 합니다.
  • 트랜스포머의 구조는 자연어 뿐만 아니라, 음성, 이미지 등 다양한 분야에서 활용될 수 있습니다- 음성 분야의 트랜스포머는 매우 긴 시점까지 정보를 보전하고, 상대적인 거리를 고려하도록 모델이 구성되어 있습니다.
답글 달기
comment-user-thumbnail
2021년 6월 22일

투빅스 15기 이윤정

  • RNN은 병렬화가 불가능하고 long-term dependency에 약하다면, CNN은 병렬화가 가능하고 local dependency에 강하지만 많은 계층이 필요하다. 이와 달리 self-attention은 병렬화가 가능하며 long-term dependency도 해결하였다.
  • 기존의 attention이 입력값과 target token 사이의 관계를 정의하였다면 self-attention은 입력값 내 모든 token들의 관계를 정의한다.
  • transformer 모델의 경우 encoder와 decoder self-attention과 encoder-decoder attention의 구조를 지닌다.

self-attention과 transformer에 대해 짜임새 있게 설명해주셔서 더욱 이해가 잘 되었습니다. 감사합니다!

답글 달기
comment-user-thumbnail
2021년 6월 22일

투빅스 14시 박준영

  • 기존의 RNN은 순차적으로 계산되어 long-term dependecy 처리에 약하고 계층구조를 모델링 할수 없다는 단점이 존재하였고, CNN은 병렬화 가능했지만 long-term dependency를 표현하기 위해 많은 계층이 필요하였다. 이를 해결한것이 self-Attention이다. self-Attention은 각 token이 최단거리로 연결되어 long-term dependency 문제를 해결했고 병렬화 가능하다는 이점을 가진다.

  • self-Attention : self-attention은 encoder의 입력 단어에 벡터를 사용하지 않고 입력 문장의 모든 단어 vector로 이루어진 독립적인 Q, K, V 벡터가 있다. 이를 scaled dot-product attention을 합쳐 최종 Attention head를 구한뒤 모든 head를 합쳐 최종 attention value를 구한다. 여기에 가중치를 곱해 multihead attention을 구한다.

  • Transformer는 3가지 attention block으로 구성되어있다. input sequence내 모든 단어와 관계를 살펴 learned representation을 산출하는 Encoder self attention, input sequence를 잘 표현하기 위해 multihead attention을 수행하는 Decoder, Encoder의 output과 Decoder의 input을 연결해주는 Encoder-Decoder Attetinon이 있다.

  • Transformer는 positional Encoding을 사용하는데 각 단어에 문장의 위치정보를 추가하여준다.

  • Transformer는 image task에도 사용되는데 이미지 처리를 픽셀 단위로 하면 sequence length가 너무 길어져 비용이 올라간다. 이를 해결하기 위해 local self-attention이 등장하였다.

self-attention과 transformer 그리고 이미지와 음악에서의 transformer의 활용까지 쉽게 설명해주신 강의였습니다. 강의 감사합니다!

답글 달기
comment-user-thumbnail
2021년 6월 23일

투빅스 14기 이정은

  • 기존의 RNN은 병렬화가 불가능하고, Long-term dependency 처리에 약하며 계층 구조로 모델링이 불가하다는 단점을 가집니다. CNN은 RNN의 병렬화 문제를 해결하였지만, Long-term dependency 처리를 위해 많은 계층이 필요하여 연산량이 많아집니다.
  • 이때 등장한 Self-Attention은 문장을 한번에 집어 넣기 때문에 병렬화가 가능하고, 각 토큰에 직접적으로 접근하여 Long-term dependency 문제도 해결합니다.
  • 기존 Attention과 다른 Self-Attention의 특징은 token과 token과의 관계를 나타내며 Q, C, V가 각각 독립적인 벡터로 이루어진다는 점입니다.
  • Transformer는 Self-Attention으로 이루어진 seq2seq 모델로 Encoder와 Decoder 여러 개가 쌓인 stack의 형태를 가집니다. 총 3가지의 Attention Block과 RNN의 순서/위치 정보를 반영하는 Positional Encoding, ReLU를 거치는 Feed Forward, ADD, Norm으로 구성되어 있습니다.
  • Image 처리를 위해 사용되는 Local Self-Attention은 window 전체가 아닌 일정 부분인 memory block 내에서만 Attention을 적용합니다.
  • Music 처리에 쓰이는 Relative Positional Self-Attention은 각 단위의 내용과 함께 거리 정보까지 고려합니다. 이때 거리는 이미 거쳐온 애들만 고려합니다.

Self-Attention과 Transformer에 대한 설명과 각 변형 모델에 대해 자세히 설명해주신 점이 좋았습니다. 감사합니다! : )

답글 달기