Patches are all you need? 논문 리뷰

seokj·2023년 3월 9일

https://arxiv.org/abs/2201.09792

요약

Vision분야와 Transformer를 결합한 Vision Transformer가 좋은 성능이 나온다. ViT는 Transformer 내부의 self-attention layer를 사용하기 위해 Patch를 사용한 모델이다. 저자는 ViT가 좋은 성능을 내는데에는 Transformer가 사용되었기 때문이 아니라 Patch 때문일 것으로 추측한다.


ViT에서 Patch를 사용한 이유

ViT에서 self-attention layer를 사용하기 위해 Patch를 사용한 이유는 무엇일까? NLP에서는 attention 하나 당 단어 하나에 매칭시켜 계산하면 됐었지만 Vision에서는 이론상 픽셀마다 매칭시켜야 해서 계산량이 너무 커지는 것이 문제이기 때문이었다.

  1. 원본 이미지를 몇 개의 Patch로 나눈다.
  2. 각 Patch마다 임베딩을 한다.
  3. 임베딩 한 것을 attention 하나에 매칭한다.

이렇게 하면 attention 레이어의 크기가 작아져 계산이 빨라진다.


ConvMixer 고안

저자는 ConvMixer라는 간단한 모델을 고안했다. 이러한 면에서 ViT와 유사하다:

  • Patch를 이용한다.
  • downsampling을 하지 않는다. (이미지 크기가 끝까지 동일하게 유지된다.)
  • 일반적인 convolution을 하지 않고 depthwise, pointwise를 시행한다.

하지만 ConvMixer는 MLP-Mixer와 달리 기본적인 Convolution은 사용하였다.

ConvMixer는 엄청 간단한데도 ResNet의 파라미터 수를 가지는 기본적인 Convolutional 네트워크를 능가하고 ViT나 MLP-Mixer만큼 성능이 잘 나온다. 특히 작은 데이터셋에서 성능이 좋다.


ConvMixer 구조

ConvMixer는 다음과 같은 단계로 이루어진다.

  1. Patch Embedding

    Patch크기 p, Embedding dimmension h라 할 때 Patch embedding은 커널 크기가 (p, p)이고 stride가 p이며 output channel이 h인 Convolution layer를 통과시킴으로써 계산한다.

  2. Convolutional blocks

    depthwise, pointwise convolution을 반복하여 구성된다. 각 convolution layer 뒤에 activation function과 batch normalization이 붙는다.
    특이하게도 depthwise convolution에서 커널 사이즈가 커야 성능이 가장 좋았다.

  3. Classifier

    Global Pooling layer를 통과시킨 뒤 Softmax Classifier를 사용한다.

이러한 ConvMixer는 4가지 조절가능한 파라미터가 있다.

  1. h - 임베딩 크기
  2. d - Convolutional blocks 개수
  3. p - Patch 크기 (모델 내부 레이어들의 해상도를 결정한다)
  4. k - depthwise convolution layer의 커널 크기

왜 Patch만으로 성능이 좋은걸까?

저자는 MLP-Mixer 논문에서 영감을 많이 받았다고 한다.

  • depthwise convolution으로 공간정보를 섞고, pointwise convolution으로 채널끼리 섞는 convolution방식
  • MLP와 self attention은 공간적으로 멀리 떨어진 정보끼리도 섞을 수 있다는 아이디어 (그래서 depthwise convolution의 커널 크기를 7, 9정도로 크게 키웠다.)

멀리 떨어진 정보와 섞을 수 있다는 것은 receptive field가 그만큼 넓어질 수 있음을 의미하기 때문에 큰 해상도의 입력으로도 좋은 성능을 낼 수 있다.

이러한 점에서 꼭 기존의 피라미드형 구조의 Convolutional 네트워크만을 고집할 필요는 없다는 걸 알 수 있다.


관련 연구

Isotropic architecture(기존의 downsampling의 반복을 통한 피라미드형 구조가 아닌, Patch embedding을 통한 크기가 유지되는 구조의 모델)에 관한 연구

  • MLP 연산을 개선시키는 연구

Patch Embedding을 개선시키는 방향으로의 연구

  • Early convolutions help transformers see better
  • Incorporating convolution designs into visual transformers
  • Training vision transformers from scratch on imagenet

CNN와 ViT를 결합시키는 연구

앞으로의 연구

ConvMixer와 같은 isotorpic architecture로 sementic segmentation, object detection하기
ConvMixer를 Wightman이 Resnet의 성능을 끌어올리기 위해 적용했던 방법처럼 로우레벨에서 최적화하기

profile
안녕하세요

0개의 댓글