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 |
---|