작성자: 고려대학교 언어학과 조효원
Contents
- Introduction
- Self-Attention and Transformer
- Local self-attention and Image Transformer
- Relative Positional self-attentoin and Music Transformer
Attention | Self-Attention | |
---|---|---|
Definition | Input과 Target 토큰 사이의 관계 | Input 내 모든 토큰들의 관계 |
Q,K,V | Q = t시점의 Decoder output K = 모든 시점의 Encoder output V = 모든 시점의 Encoder output | Q = 입력 문장의 모든 단어 vector K = 입력 문장의 모든 단어 vector V = 입력 문장의 모든 단어 vector |
Procedure | 1. Q에 대해 모든 K와의 유사도를 구한다. 2. 유사도를 K와 매핑되어있는 V에 반영한다. 3. 유사도가 반영된 V를 모두 더해 반환한다. | 1. 독립적인 Q,K,V 벡터를 얻는다. 2. Scaled dot-product Attention을 수행한다. 3. Head들을 연결한다. 4. Fc-layer를 통과한다. |
Encoder Self attention
Decoder Self attention
Encoder-Decoder Attention
Encoder의 output과 Decoder의 input 사이의 다리를 놓아주는 역할을 합니다.
Q = Decoder 벡터, K,V = Encoder의 마지막 층 벡터
단어의 위치와 순서는 모든 언어의 필수 부분이다. RNN (Recurrent Neural Networks)은 단어별로 문장을 순차적으로 구문 분석하기에 본질적으로 단어의 순서를 고려한다. 하지만 Transformer 아키텍처는 recurrent 메커니즘을 버렸기에 단어의 위치 정보를 활용하지 못한다. 문장의 각 단어가 Transformer의 인코더 / 디코더 스택을 동시에 통과하기 때문에 모델 자체에는 각 단어의 위치/순서에 대한 감각이 없다.
Positional Encoding은 RNN 계열의 '순서/위치 정보 반영'이라는 장점을 유지하기 위해 고안된 방법으로, 문장에서의 위치에 대한 정보를 각 단어에 추가한다. 이때, 각 단어의 위치는 cos, sin 함수를 통해 표현된다.
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을 적용하는 것이 굉장히 비용이 커지게 된다.
이러한 배경을 바탕으로 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. 위쪽 방향으로 픽셀, 양 옆으로 픽셀만큼을 둘러싸는 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 생성
Self-Similarity
Music Transformer Tasks
어텐션을 통해 우리는 지나간 정보들에 대한 weighted average를 알 수 있다. 또한, 어텐션의 큰 강점 중 하나는 어떤 토큰이든 직접적인 접근을 할 수 있다는 것이다. 그러나 이는 다르게 이야기하면 모든 토큰들이 마치 bag of words처럼 여겨져 한 토큰과 다른 토큰의 거리는 알 수 없다는 것이다.
여기에 Convolution의 장점을 결합한 것이 Relative Positional Self-Attention이다. convolution은 이동하는 고정된 크기의 필터가 있고 이것은 각 토큰 사이의 상대적인 거리를 잡아낸다. 즉, 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에서 을 만드는 순서는 다음과 같다:
Relative self-attention이 적용된 music transformer는 다양하고 반복적인 곡을 생성함과 동시에 training data보다 2배나 긴 sequence에 대한 generation 또한 가능했다.
투빅스 14기 한유진
Self Attention의 등장배경부터 이를 적용한 Transformer, 나아가 변형까지의 과정들을 이해하기 쉽게 설명해주셔서 좋았습니다. 좋은 강의 감사합니다!
투빅스 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에 반영합니다.
투빅스 15기 조준혁
투빅스 14기 강재영
Self-Attention과 Transformer에 대해 배울 수 있었던 강의였습니다.
투빅스 15기 이수민
투빅스 15기 김재희
투빅스 15기 이윤정
self-attention과 transformer에 대해 짜임새 있게 설명해주셔서 더욱 이해가 잘 되었습니다. 감사합니다!
투빅스 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의 활용까지 쉽게 설명해주신 강의였습니다. 강의 감사합니다!
투빅스 14기 이정은
Self-Attention과 Transformer에 대한 설명과 각 변형 모델에 대해 자세히 설명해주신 점이 좋았습니다. 감사합니다! : )
투빅스 14기 정세영
self-attention과 transformer의 개념을 잘 잡아주신 강의였습니다.