목차
0. Abstract
1. Introduction
2. Encoder and Decoder Stacks
3. Attention
4. Why Self-Attention
5. Result
Abstract
등장 배경?
이전 방식들 ( RNN, LSTM, GRU ) 등등은 인코더-디코더 기반의 sequential한 모델입니다.
(sequential 하다는 것은 모델이 입력을 순차적으로 받고, 연산 또한 이전 결과의 입력을 받아야 한다는 특징을 가지는 것을 의미)
즉, 내부에 RNN, CNN을 사용하는 구조입니다.
연구진들은 RNN, CNN 없이 오직 ‘Attention’ 기법만을 이용한 Transformer 제안하였습니다. 이것이 바로 이번에 다룰 내용입니다.
Transformer의 이점으로는 기존 모델 대비 높은 성능, 병렬 학습이 가능하여 학습 시간 및 자원 절약, 다른 task에도 적용 가능 (ex. Vit) 등등이 있습니다.
Introduction
기존 방식(RNN, LSTM, GRU)은 sequential하기 때문에 병렬화에 제약이 존재하여 성능 향상에 제약이 있었다.
이를 해결하고자 하는 다른 연구들도 많았지만, transformer는 self-attention만을 이용하여 효과적으로 연산량 문제를 해결한 모델이다!
Encoder and Decoder Stacks
Transformer는 크게 Encoder와 Decoder로 구성되어 있습니다.
1. Encoder
6개의 레이어들이 스택으로 구성되어 있습니다.( 회색 박스 하나가 하나의 레이어 !) ( 논문에서 N=6이라 설정 )
각 레이어는 2개의 서브 레이어로 구성되어 있습니다. (그림에서 보면 회색박스안의 위 아래, 각 서브 레이어마다는 Add & Norm 적용)
첫번째는 multi-head self-attention,
두번째는 position-wise fully connected network가 있습니다.
또한 두 서브 레이어 각각에 residual connection(잔차 연결)을 적용하고, 뒤이어 layer normalization이 적용 되어있습니다.
2. Decoder
Decoder도 마찬가지로 N=6개의 레이어들의 스택으로 구성되어 있습니다.
추가로 Decoder에서는 세 개의 서브 레이어가 있습니다. (역시 마찬가지로, 각 서브 레이어마다 Add & Norm)
1. Masking이 추가된 Masked Multi Head Attention,
2. 인코더의 정보를 참조하는(=인코더의 결과가 들어오는) Multi-Head Attention
3. Feed Forward
로 구성되어 있습니다.
Encoder Stack과 마찬가지로 residual connection(잔차 연결)과 layer normalization가 적용되어 있습니다.
Decoder에서 계산이 끝나면 선형 변환과, Softmax를 거쳐 다음 단어의 확률을 계산하게 됩니다.
3. Layer Normalization 이란?
세로 방향이 하나의 샘플이고, 가로 방향은 각 샘플들의 feature를 의미합니다.
batch 단위로 정규화를 실행한다는 것은 같지만, feature 단위로 정규화 할지(=batch Norm), 데이터 샘플 단위로 정규화 할지(= layer Norm)가 다릅니다.
즉, 어느 축으로 정규화를 실행하는지가 다르다고 이해하시면 될 것 같습니다.
위 그림에서 Batch Norm은 feature가 6개이기 때문에 6개의 평균과 표준편차를 구하지만, Layer Norm은 batch안에 데이터 샘플의 수가 3개이므로 3개의 평균과 표준편차를 구합니다.
한마디로 정리하자면, Batch Norm은 Batch에 있는 모든 샘플들에 대해서 각 feature의 평균과 표준편차를 구하고(=각 feature 정규화),
Layer Norm은 각 sample의 feature에 대해 평균과 분산을 구한다고 보시면 됩니다. (=각 층의 input을 정규화)
그래서 배치 정규화는 주로 cnn에서 쓰이고, layer 정규화는 rnn에서 쓰입니다.
Attention
-Attention을 어떻게 구하고 사용하는지 알아보겠습니다-
1. Scaled Dot-Product Attention
| Value : 다른 단어와의 Attention이 반영 최종 Representation를 얻기 위한 벡터 |
위 사진은 왜 dk가 커질수록 Q,K의 행렬 곱의 값이 커지는지에 대한 설명입니다. 저도 잘 이해하지 못해서 캡쳐본으로 남깁니다..
마지막으로 softmax를 통해서 Query 단어가 모든 단어들과 어느정도의 correlation이 있는지를 확률 분포 형태로 만들고, 이를 value matrix와 dot product를 해줌으로써 기존 vector에 Query와 Key간의 correlation 정보를 더한 vector를 만들어 줍니다.
즉, self-attention layer는 쿼리의 단어끼리 서로간의 관계를 점수화 하는 것입니다.
2. Multi-Head Attention
동시에 여러 개의 Attention Map을 생성하여 모델이 다양한 관점에서 문장을 해석할 수 있도록하는 Multi-Head Attention이 등장했습니다.
위 그림을 살펴보면 문장에서 it이라는 단어의 attention이 The Animal일지, Tired일지 애매합니다. Multi-Head Attention은 이러한 문제를 해결하고자 여러 개의 Head (논문에서는 8개)를 두어 모델이 Head 개수만큼의 Scaled dot product Attention 연산을 수행할 수 있게합니다. 이를 통해 모델은 다양한 관점의 Attention Map을 만들어 성능을 향상할 수 있습니다.
3. Attention의 적용
1. Encoder의 Multi-Head Attention에서 Key,Query,Value의 입력이 이전 인코더 레이어의 출력입니다.
이는 해당 인코더에서 각 position은 이전 인코더 레이어의 모든 position의 정보를 활용할 수 있다는 것을 의미합니다.
2. Decoder에서 masked Multi-Head Attention에서는 Encoder와 마찬가지로 이전 디코더 레이어의 출력을 입력으로 받습니다. 인코더와의 차이점은 특정 단어 이후의 단어들을 참조하지 못하도록 masking을 수행합니다. 그 이유는 트랜스포머는 RNN과 달리 순차적으로 문장 데이터가 입력되는 것이 아닌, 한꺼번에 문장 데이터가 입력이 됩니다. 따라서 어떤 단어를 번역할 때 그 뒤에 있는 단어들의 정보까지 참조하게 된다면 모델 학습에 방해가 될 수 있기 때문에 현재 학습하는 단어 위치 이후의 단어들의 값을 −∞ 처리합니다.
3. Decoder에서 Multi-Head Attention 부분입니다. Query는 이전 디코더 레이어의 출력 값이고, Key와 Value는 인코더의 출력 값을 사용합니다. 이를 통해 Decoder가 출력 문장을 생성할 때, 입력 문장의 모든 위치의 단어들을 참조할 수 있습니다.
4. Position-wise Feed-Forward Networks
왜 position wise 연산을 하나면 각 position, 즉 각 단어마다 FFN이 적용되기 때문입니다.
입력 벡터 x에 대해 선형 변환을 거친 뒤, ReLU 함수를 적용합니다. 그리고 한번 더 선형 변환을 적용하게 됩니다. 이때 레이어에서 각각의 position의 벡터들에 대해서 같은 파라미터 값(W1,b1,W2,b2)를 사용합니다.
즉, 레이어가 달라지면 다른 파라미터 값을 사용합니다.
논문에서 이 과정은 kernel size가 1이고, channel이 layer인 convolution을 두 번 수행한 것으로 이해할 수 있다고 합니다. 수식은 위와 같습니다.
5. Embedding and Softmax
Embedding : 다른 sequence transduction model과 비슷하게 모델의 입력 부분에 learned embedding 층을 적용하였습니다.
= 어떤 단어(token)을 잘 표현할 수 있는 벡터의 생성
Softmax : decoder의 출력 부분에서는 단어의 확률을 예측하기 위해 선형 변환과 softmax 함수를 사용하였습니다.
6. Positional Encoding (단어의 위치 정보)
부가적인 순서 정보(=어순) 주입이 필요하여 Positional Encdoing 방식인 Sinusoid Encoding 방식을 선택하였습니다
문장의 relational position 정보 함께 학습하여 더욱 긴 문장도 문제없이 처리 가능하다는 장점이 존재합니다.
Sinusoid Encoding 방식이란, Position끼리 가까우면 내적이 크고, 멀면 내적이 작아져서 내적으로부터 거리관계를 대략 유추할 수 있으므로, 어순을 알 수 있게 된다는 장점이 존재하여 연구팀에서 채택한 듯 싶습니다.
자세한 것은 저도 제대로 이해하지 못해서,, 더 찾아봐야 할 것 같습니다.
Why Self-Attention
-이점-
1. 계산 복잡도 감소 ( 적은 계산으로 높은 성능!)
2. 병렬처리 상승
3. 시각화
4. 결과에 대한 해석 가능 (시각화 덕분에)
5. 긴 문장을 학습하기 용이해짐
Result
결론
1. 번역 분야에서 SOTA를 달성하였습니다
2. 다른 Task로의 적용이 기대 됩니다 -> 추후 Vit 등장의 발판이 됩니다.
'AI 논문 공부' 카테고리의 다른 글
DETR : End-to-End Object Detection with Transformers 논문 리뷰 (1) | 2023.04.07 |
---|---|
ViT 논문 리뷰 (AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE) (0) | 2023.03.27 |
You Only Look Once:Unified, Real-Time Object Detection (YOLO) 논문 리뷰 (0) | 2023.02.14 |
FPN : Feature Pyramid Net 논문 리뷰 (0) | 2023.02.06 |
R-CNN, Fast R-CNN, Faster R-CNN 논문 리뷰 (1) | 2023.01.27 |