Swin Transformer
[기존 ViT 모델의 문제점]
1. Classification problem을 풀기 위한 모델로 제안
2. 이미지를 위한 특성이 ViT에 없음.
3. Token 수가 증가하면 연산량의 quadratic하게 증가
[Notation]
빨간 박스 : patch
Local window 사이즈 : 4
(patch의 개수로 계산)
Local window 개수 : 4
[Local Window]
Local Window를 모델에 적용하였다.
ViT와는 다르게 계층마다 다른 patch size를 적용
기존 ViT보다 더 적은 complexity
[class] token을 사용하지 않는다.
Method
[1. patch merging]
해상도를 줄여주는 과정
[2. Swin Transformer Block]
W-MSA (Window Multi-head Self Attention)
Local Window 안에서 self-attention
각각의 patch로 구성된 이미지를 윈도우로 또 나눠서 각 윈도우 안에서 self-attention을 진행
Local Window로 나눈 만큼 self-attention 연산 횟수의 증가
서로 다른 window에 대해서 각기 다른 self-attention 수행
전체 이미지로 할 때보다 더 많은 작업이 수행됨
이를 해결하기 위해
Efficient batch computation
Relative Position Bias
Window size (M) = 3이라면
아래의 연산을 거쳐
# Step 1
y_axis_matrix += window_size - 1
x_axis_matrix += window_size - 1
# Step 2
x_axis_matrix *= 2 * window_size -1
relative_position_M = x_axis_matrix + y_axis_matrix
24라는 값이 나온이유는 matrix 차원이 (2m-1) x (2m - 1)로 되어 있어서
보다 적은 학습 파라미터로 넓은 범위의 relative position을 설정할 수 있음.
이후 아래의 값을 더해줘 사용
SW-MSA (Shifted Window Multi-head Self Attention)
Local Window 간의 self-attention
W-MSA에서 연결되어 있지 않은 부분들이 SW-MSA에서 연결되어 학습
window 개수가 기존의 개수보다 가로 세로 1개씩 늘어남
연산이 비효율적어서 Cyclic shift & Attention mask를 이용하여 W-MSA와 동일한 Window 개수 사용
=> 기존의 9개의 window에서 4개의 window로 window 간의 attention을 구할 수 있음.
다양한 augmentation 및 regularization 필요
참고
https://www.youtube.com/watch?v=2lZvuU_IIMA
'딥러닝관련 > 기초 이론' 카테고리의 다른 글
Stochastic gradient descent(확률적 경사 하강법) (0) | 2022.02.20 |
---|---|
경사 하강법(Gradient Descent) (0) | 2022.02.20 |
Vision Transformer (ViT) 정리 : An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (0) | 2021.11.12 |
Transformer 정리 (0) | 2021.11.09 |
seq2seq, attention 정리 (0) | 2021.11.08 |