1. Position embedding이 다름

ViT의 경우 패치의 픽셀들을 일렬로 펼친후 Linear 레이어로 embedding을 시킨다 

Linear 레이어이기에 학습 가능한 파라미터이다 이를 통해 절대적인 주소값으로 임베딩한다

SwinTransformer의 경우 상대적인 embedding을 하는데 두 픽셀의 위치차이를 계산한다 

이를 위해 tabel을 작성해놓는다 

 

2. self-attention 범위 다름 && Shift-Window 

ViT의 경우 이미지 전체에 대한 self-attention을 진행하나

SwinTransformer의 경우 각 윈도우 내에서만 sefl-attention을 진행한다

이로인해 계산 효율성이 증대되었으며 어떻게 증대되었는지는 다음 항목에서 설명한다

또한 이 경우 윈도우 간의 관계성이 훼손되지 않나 생각할 수 있기에

SwinTransformer의 경우 Shift-Window라고 윈도우를 이동시켜서 한번 더 계산한다

 

3. 계산 효율성이 증대됨

높이가 h, 너비가 w인 이미지가 있다고 했을 때 전통적인 Transformer의 계산복잡도는 O(n^2)이므로 ViT의 계산 복잡도 또한 O((hw)^2)이다 

하지만 SwinTransformer의 경우 한 윈도우의 크기를 M 이라고 할 때 

세로에 있는 윈도우 수 H/M

가로에 있는 윈도우 수 W/M

총 윈도우 수 HW/M^2 이다

윈도우 사이즈가 M 이므로 M하나의 계산복잡도는 O(M^4)이다 그리고 이게 HW/M^2 개 있으므로 계산복잡도는 O(hw * M^2)이다 M < h, w 이므로 hw * M^2 < (hw)^2 이다 따라서 swin transformer가 ViT보다 계산복잡도가 낮다 

'AI > Transformer' 카테고리의 다른 글

BLEU(트랜스포머 평가지표)  (2) 2024.05.02

+ Recent posts