Local Attention 이란?

Juheon Oh·2023년 1월 6일
0

DiNAT 논문리뷰에 나오는 Local-Attention에 대해 보충 설명한 글입니다.

Motivation

  1. Vision은 고해상도 이미지 처리, NLP는 대규모 Document 처리할 때 Self-Attention을 사용하면 계산량⬆️
  2. 이러한 계산량을 줄이려는 후속 연구로 Self-Attention의 범위를 줄이는 다양한 시도가 있었음
  3. 그 중 하나가 Localization

특징

  • Local-Attention은 Self-Attention의 Complexity를 줄이는데 효과적
  • 하지만 Self-Attention 장점을 살리지 못함
    1. Long Range Inter-Dependency Modeling
    2. Global Receptive Field

Local-Attention

SASA (Stand-Alone Self-Attention)

  • SASA는 ViT가 나오기 전에 등장한 초기 Local-Attention 중 하나
  • Sliding Window 방식
  • Convolution 연산을 쉽게 대체할 수 있고 이론적으로 계산량도 줄일 수 있음
  • But, 실제로는 비효율적인 구현 때문에 모델 속도가 느림

SWSA (Shifted Window Self Attention)

⬆️ SWSA를 나타내는 그림

⬆️ Window Self-Attention 과정

⬆️ Shifted Window Self-Attention 과정

  • Swin Transformer에서 WSA, SWSA를 제안함
  • WSA는 Window 내에서 Self-Attention 진행
  • SWSA는 이전의 Layer와 다르게 Window를 나누고 Window 간 관계 학습

(자세한 설명은 다른 블로그 참고 부탁..)


NA (Neighborhood Attention)

⬆️ Swin과 DiNAT에서 사용된 WSA, SWSA, NA, DiNA

  • NA는 간단한 Sliding-Window Attention

  • 각 Pixel에서 가장 가까운 Neighbor들과 Self-Attention 진행

  • WSA, SWSA와 시간, 공간 복잡도 그리고 Parameter 수도 같음

  • Sliding Window가 겹쳐서 연산되기 때문에 Translation Equivariance를 보존함

  • Sliding Window 방식은 SASA와 비슷하지만, Neighbor특징 때문에 window가 커질수록 SASA와 달라짐

  • Sliding-Window Attention 문제가 비효율적으로 구현된 것인데 NATTEN이라는 extension을 도입하면서 해결됨

  • NAT는 Swin과 Hierarchical 한 디자인은 비슷하지만, Swin과 달리 Downsampling Layer에서 Convolution을 중첩해서 사용하는 점이 다름 (Swin은 Patch로 처리)

  • Swin과 Parameter 수와 FLOPS를 비슷하게 만들기 위해서 NAT는 더 작은 Inverted-Bottleneck으로 Layer를 더 쌓음


한계점

  • Local-Attention은 Self-Attention와 달리 Convolution처럼 Receptive Field가 작고 천천히 증가함
  • Local-Attention 기반 모델은 Locality와 효율성을 잘 살려서 성능은 좋지만
    Self-Attention보다는 Global Context를 잘 잡지 못함

출처
gif, SASA, Swin, DiNAT

0개의 댓글