HANA : Have A Nice AI

모두를 위한, 하나를 위한 AI

딥러닝을 위한/SOTA(State-of-the-Art)

[논문요약] Vision분야에서 드디어 Transformer가 등장 - ViT : Vision Transformer(2020)

KM-Hana 2021. 7. 5. 20:25

*크롬으로 보시는 걸 추천드립니다*

 

https://arxiv.org/pdf/2010.11929.pdf

종합 : ⭐⭐⭐⭐

1. 논문 중요도 : 5점

2. 실용성 : 4점

설명 : 게임 체인저(Game Changer), Convolutional Network구조였던 시각 문제를 Transformer구조로 대체

   - Transformer구조를 사용한 Architecture가 수 많은 SOTA를 찍고 있으며, ViT논문이 그 시작점

   - 더 많은 데이터를 더 적은 Cost로, 사전 학습

   - Image Classification의 판도를 바꾼 논문으로 매우 중요한 논문

   - 대용량의 학습 자원과 데이터가 필요.. 개인이 사전 학습하기엔 쉽지 않음

 

( * 개인적인 의견이며, 제 리뷰를 보시는 분들에 도움드리기 위한 참고 정도로 봐주세요)


저 같은 경우 이미지와 텍스트를 둘 다 다루다 보니,

Transformer 구조가 Vision Task에 적용되는 건 시간문제라고 생각했습니다.

 

왜냐하면, Text Task에서는 이미 Transformer(BERT, ELECTRA 등)로 천하통일된 상태이기 때문이죠!

"언제쯤 Vision에서 Transformer 구조가 사용될까?" 항상 기대하고 걱정했었습니다.

2020년 ViT 논문이 나온 이후로, 바로 Image Classification Task를 점령해버리는 것을 보고 또 한 번 놀라게 됐습니다

 

"ViT가 무엇인지"에 대한 요약과 개인적인 생각을 담아 설명해보고자합니다.

 


ViT논문 소개 이후로는

   1. Transformer구조를 제안한 "Attention is All You Need"논문과 

   2. Transformer를 적극적으로 사용한 "BERT(Bidirectional Encoder Representations from Transformers)"논문

을 여러 번에 나누어서 자세히 다룰 예정입니다!

(개인적으로 위의 논문을 잘 설명할 수 있을까 두렵지만 ㅎㅎ 거쳐야 할 관문 같네요)


 

Visual Transformer (ViT) 의의

[ImageNet에서 판도를 바꾼 Transformer 계열]

   1. 자연어 처리(NLP)에서 많이 사용되는 Transformer를 Vision Task에 적용

 

   2. 기존의 제한적인 Attetion 메커니즘에서 벗어나, CNN구조 대부분을 Transformer로 대체

       - 입력(Input)단인 Sequences of Image Patch에서만 제외

 

   3. 대용량 데이터셋을 Pre-Train(사전학습) → Small Image 데이터셋(ImageNet-1k, Cifar100)에서 Transfer Learning

       - 훨씬 적은 계산 리소스로, 우수한 결과를 얻음

       - 단, 많은 데이터를 사전 학습해야 된다는 제한사항 있음


Visual Transformer (ViT) 요약

  • 이전 Vision Task에서 Self-Attention적용의 한계

      - Self-Attention을 적용하는 시도는 있었으나, Hardware Accelerators에 비효율적

          → ResNet구조가 SOTA였음

     ▶ 기존의 Transformer를 최대한 그대로 적용하고자 함

 

  • Attention is All you Need 

      - NLP에서 가장 대표적인 구조 "Self-Attention"를 활용한 Transformer

      - 대표 모델 "BERT"는 Large Dataset(Corpus)를 사전학습(Pre-Train) → 작은 Task에서 미세조정(Fine-Tune) 

 

  • Transformer의 장점

      - Transfoerm의 계산 효율성(Efficiency) 및 확장성(Scalability) 

      - 100B Parameter도 학습 가능!

      - 데이터셋이 크면 클수록 모델을 키워도 되며, 성능이 포화(Saturate)될 징후 X

        → 더 키우면 키울수록 더 성능은 높아질 것임!

 

  • Transformer의 적용 방안

      - 이미지를 Patch로 분할 후 Sequence로 입력 

        → NLP에서 단어(Word)가  입력되는 방식과 동일! ( ∵ 논문 제목이 "IMAGE IS WORTH 16X16 WORDS"인 이유)

      - Supervised Learning 방식으로 학습

 

  • Transformer의 특징

      - ImageNet와 같은 Mid-sized 데이터셋으로 학습 시, ResNet보다 낮은 성능을 보임

        ( * ImageNet은.. 더 이상 큰 데이터셋이 아니다..)

      - JFT-300M 사전 학습 후, Transfer Learning → CNN구조 보다 매우 좋은 성능 달성(SOTA)

      - Transformer는 inductive biases가 없음 = Locality와 Translation Equivariance 같은 CNN의 특성이 없음

 

  ※ Translation Equivariance 란

더보기

  ※ Translation Equivariance 란

https://stats.stackexchange.com/questions/208936/what-is-translation-invariance-in-computer-vision-and-convolutional-neural-netwo

  ※  inductive biases 란

더보기

  ※  inductive biases 란

    - The inductive bias (also known as learning bias) of a learning algorithm is the "set of assumptions" that

      the learner uses to predict outputs of "given inputs that it has not encountered".

    - 만나지 못한 상황을 해결하게 위해, 추가적인 가정을 활용해서 문제를 해결

    - 단, 가정에서 벗어나는 경우 예측력이 떨어짐

    - 예시 : 

 

   - CNN은 지역성(Locality)이라는 가정을 활용하여 공간적(Spatial)인 문제를 품

   - RNN은 순차성(Sequentiality)이라는 가정을 활용하여 시계열(Time)인 문제를 품

 

https://robot-vision-develop-story.tistory.com/29 참고

 

Inductive Bias

안녕하세요 오랜만에 글을 쓰게 되었습니다. 요즘 대학원 진학 후 이것저것 하다 보니 시간이 빨리 가네요.. 오늘 다룰 주제는 제가 최근에 공부하고 있는 Transformer에서 나온 용어에 대해서 짚어

robot-vision-develop-story.tistory.com

 

 

Related Work

  • Transformers 종류

      - BERT : Self-Supervised Pre-Training Task

      - GPT : 일방향 언어 모델링

      - Trm : Transformer

 

  • Naive Application (Self-Attention을 적용하려는 초기 시도)

      - Parmar : 전역적(Globally)으로 적용 X → 쿼리(Query) 픽셀 주변(Local Neighborhood)에만 Self-Attention 적용

      - Weissenborn : 다양한 크기의 Block을 Scale Attention 적용,

                             But, 효율적인 GPU 사용을 위한 복잡한 엔지니어링 필요

      - Cordonnier : 2x2 Image Patch를 추출하여, Full Self-attention 사용 ( ViT와 가장 유사)

                             But, 2x2 Image Patch를 사용하므로 작은 해상도(Resolution)에만 적용

      - Image GPT(iGPT) : Generative Model처럼 학습

                             1. 해상도와 Color Space를 축소 

                             2. Transformers를 Image Pixel에 적용

 

  • VIT 핵심 목적

     1.  Large scale pre-training 가능한지

     2.  일반적인 Transformer를 바로 적용

     3.  Medium-Resolution 이미지에도 적용 가능


ViT Method

  • NLP의 Transformer의 아키텍처를 거의 바로 사용할 수 있음

ViT Architecture
ViT 수식

ViT 핵심 구조

  • 입력 Embedding

      º Token embedding을 1D Sequence로 입력

        - 2D Image(\( \textup{x}_{p}\in \mathbb{R}^{ H \times W \times C } \) )를  \( \textup{x}_{p}\in \mathbb{R}^{N\times( P^{2}\cdot C)} \) 로 변환

        - \( (P, P) \) : Image Patch의 해상도

        - \( N \) : Patch의 수 = \( HW/P^{2} \) 

        - \( D \) : 모든 Layer에서의 동일한 latent Vectore size

          → Flatten 한 Patch를 학습 가능한 Linear Projection( \( \textbf{E} \) )을 사용하여, D 차원으로 매핑

      º Patch Embedding이 출력됨

  • [CLS] Token

      º BERT의 [class] Token처럼, 학습 가능한 Embedding patch ( \( \textbf{z}_{0}^{0} = x_{class} \) )를 추가 

      º \( \textbf{z}_{L}^{0}  \) : 최종 L 번째 Layer의 0 번째 Token

        - Pre-Training과 Fine-Tuning을 수행하는 Classification Head가 부착

  • Classification Head

      º Pre-training : 1-hidden Layer인 MLP 

      º Fine-Tuning : 1-linear Layer

  • Position embedding

      º Patch Embedding의 Position 정보를 유지하기 위해서, 추가 

      º 2D-Position Embedding을 추가해보았지만 더 좋은 성능 X

        → 이미지이지만, 1D Position Embedding 사용

  • Transformer

      º 결과 embedding sequence는 Encoder의 입력으로 들어감 

      º Transformer Encoder

        - Multi-Head로 구성된 self-Attention 메커니즘 적용

        - MLP Block

        - 모든 Block 이전에 LayerNorm(LN) 적용

        - Residual Connection 모든 블록 끝에 적용

 

  • Inductive bias

    º CNN(Locality 가정)이나 RNN(Sequentiality 가정) 경우, Global 한 영역의 처리는 어려움

    º ViT는 일반적인 CNN과 다르게 공간에 대한, "Inductive bias"이 없음

    º 그러므로, ViT는 더 많은 데이터를 통해, 원초적인 관계를 Robust 하게 학습시켜야 함

       - ViT는 MLP Layer에서만 Local 및 Translation Equivariance 함

       - Self-Attention 메커니즘은 Global 함

    º 2-차원 구조 매우 드물게 사용

       - 이미지 Patch를 잘라서 넣는 Input 부분

       - Fine-tune 시, 다른 해상도(Resolution)의 이미지를 위한 위치 임베딩 조정

   ▶ 공간(Spatial) 관계를 처음부터 학습해야 함 (∵ Position Embedding 초기화 시 위치정보 전달 X)

 

  • Hybrid Architecture

    º Image Patch의 대안으로, CNN의 Feature Map의 Sequence를 사용할 수 있음

       - CNN의 Feature는 Spatial size가 1x1이 될 수 있음

       - CNN으로 Feature추출 → Flatten → Eq.1의 Embedding Projection ( \( \textbf{E} \) ) 적용

 

Fine-Tuning & Higher Resolution

  • 미세조정 시, 해상도 설정

    º 사전 훈련 때보다 더 높은 해상도로 Fine-Tune 하는 것이 성능에 도움이 됨

    º 더 높은 해상도 및 Patch Size 동일 → Sequence 길이 증가

       - Fine-Tuninig 시 : Pre-trained Position Embedding은 더 이상 의미가 없음

       - Pre-Trained Position Embedding을 2D 보간(Interpolation)을 수행


ViT 실험 결과

실험 설정

  • 목표

   º 더 낮은 Pre-Training 비용으로 SOTA 달성

   º Self-Supervision 실험 진행

 

  • 설정

    º 학습 데이터 셋 :
       - 1. ImageNet-1k( 1.3 M)   2. ImageNet-21k( 14 M)   3. JFT-18k(303M)

    º Transfer 데이터 셋 : 19-Task VTAB 평가(Evaluate) - 적은 데이터셋을 활용한 Transfer Learning 성능 평가

       - Natural : Pet, CIFAR

       - Specialized : Medical이나 위성 이미지

       - Structured : 기하학(Geometric)과 지역적(Localization)인 이해가 필요

 

  • 모델 설정

    º ViT 

크기별 ViT 설정

    º ViT-L/16 : "Large" 매개변수 크기 및 16x16 Input Patch 사용

       - Sequence Lenght : Patch의 크기 제곱의 반비례 → 패치가 작아지면, 계산량 증가

    º ResNet : Batch Normalization → Group Normalization & Weight Standardization 사용

       - Sequence Lenght : Patch의 크기 제곱의 반비례 → 패치가 작아지면, 계산량 증가

    º Hybrid : Intermediate Feature Map을 입력으로 사용 → Patch Size 1x1 

       1. ResNet50 - 4 stage 사용

       2. ResNet50 - 3 stage 사용(단, Layer 수 유지) → 4배 더 긴 Sequence 길이 ( ∵ Feature map 크기 증가되므로 )

 

  • 학습 

    º Hyper-Parameter
       - Optimizer : Adam

       - Batch Size : 4096

       - Weight Decay : 0.1 - 매우 높음

  •  Fine-Tuning

    º Hyper-Parameter
       - Optimizer : SGD

       - Batch Size : 512

       - 해상도 변경 : 1. ViT-L/16 : 512    2. ViT-H/14: 518

 

  • Metric

    º Few-shot 정확도 : Regularized Least-squares Regression으로 측정
       - 실시간 평가를 위해, Fine-Tunning 비용이 큰 경우 사용

       - Training Image의 (Frozen) Representation 추출 → {-1, 1} K Target Vector로 매핑하여 측정

 

SOTA와의 비교실험

  • 비교 대상

    1. BiT

    2. Noisy Student - Semi-Supervised Learning을 적용한 Large EfficientNet 

  • 비교 결과

    - JFT로 사전 학습 후, 각 데이터 셋에 Transfer Learning 진행

사전교육에 대한 고찰

  • 사전학습에서의 데이터셋 크기

    º Pre-Train : ImageNet-1k(1.3 M) / ImageNet-21k(14 M) / JFT-18k(303M)

                     → Fine-Tune ImageNet-1k

       - 작은 데이터셋에서의 최적화를 위해서, Regularization 설정 : Weight Decay, Dropout, Label Smoothing

    º 사전학습 시 데이터 셋이 클수록 ViT 좋음

    º 사전학습시 데이터 셋이 작으면 좋지 않음

    ▶ 원인 : Convolutaional Inductive Bias가 없기 때문에, 더 많은 데이터 필요

 

Scaling Study

  • Transformer, Hybrid, BiT의 모델 크기 실험 → Transfer Learnig 실험
  • 실험 모델 

  • 실험 결과

     º x축 : Pre-training시 필요한 계산 비용

     º 작은 크기의 모델 : Hybrid > ViT

     º ViT > BiT

     º ViT의 성능이 아직 포화(Saturate) 되지 않음 → 성능이 더 좋아질 수 있음

 

Vision Transformer 고찰

  • Vision Transformer의 데이터 처리 방법을 이해하기 위해, Internal Representation을 확인

     º 왼쪽 그림 : Embedding의 Filter를 확인

       - 각 Filter의 기능이, 저차원의 CNN Filter 기능과 유사

     º 가운데 그림 : Position Embedding 간의 유사성 확인

       - ViT는 Projection 후 Position Embedding을 Patch Representation에 추가함

       - 가까운 패치 간의 유사도 높음 → Input Patch 간의 공간정보가 잘 학습됨

     º Self-Attention을 활용한, 전체 이미지 정보의 통합 가능 여부 확인

       - Attention의 가중치를 기반으로 Image Space의 평균 거리를 계산

       - "Attention Distance" =  Receptive Field

       - 낮은 Layer의 Self-attention Head는 CNN처럼 "Localization" 효과를 보임

 

  • ViT의 Classfication 정보 이해력 확인

     º Class 정보와 관련된 이미지 영역에 "주의를 기울"인다는 것을 확인

Self-Supervision 

  • NLP Task에서 수행되는 Self-supervision 학습 방법을 시도

     º 예를 들어, BERT는 Input을 Masking후, Masking 한 단어를 올바르게 예측하도록 학습(Self-Supervised Learning)

  • Vision Self-Supervision 결과

     º ViT-B/16 모델은 79.9 % 정확도를 보여 우수함

     º 하지만, Supervied Learning 방식보다는 낮음

 

Conclusion

  • "Image-specific Inductive Baises"를 사용하지 않고, Self-Attetnion을 적용

     º 초기 Patch 추출 단계에서만 사용

  • Large Dataset(JFT-300M 급)에서 매우 잘 작동
  • 사전 학습 비용이 상대적으로 저렴
  • 남은 과제 : 1. Detection과 Segmentation   2. Self-Supervised Learning
  • Scaling 여지가 남아있어, 추가적인 성능 향상 기대

마치며

  • 생각보다 더 빠르게 Transformer 구조가 Vision Task에 침투했습니다.
  • 앞으로 사전학습 모델의 활용이 매우 커지겠지만, 직접 사전학습을 진행하기에는 많은 한계가 있을 것입니다.

      - JFT-300M 데이터 셋은 공개되어 있지 않고

      - 많은 학습 자원이 필요한데, 녹녹지 않음

  • Vision 분야 역시, Text 분야처럼 많은 고민을 하게 될 것으로 보입니다!

      - 1. 어떻게 ViT를 가져다 쓸 것인가?

      - 2. 우리도 ViT를 학습할 수 있을 것인가?

      - 3. 효율적으로 ViT와 같은 모델을 사전 학습 할 수 있는 방안이 있는 것인가?

      - 4. CNN 구조는 앞으로 사라지게 될 것인가?

  • ViT의 단점에도 불구하고, 상대적인 Pre-Train 비용이 적기 때문에 많은 후속 연구들이 파생될 것으로 보입니다
  • Vision Task에도 새로운, 큰 바람이 불었네요