이미지는 여러 개의 작은 패치로 분할됩니다. 예를 들어, 16x16 또는 32x32 같은 고정된 크기로 분할할 수 있습니다.
각 패치는 Flatten(평탄화)되어, 1D 벡터로 변환됩니다. 이 벡터는 Transformer 모델이 처리할 수 있는 형태로 만들기 위해 사용됩니다.
평탄화된 패치들은 모두 임베딩 과정을 거치게 되며, 이 과정에서 고차원의 벡터로 변환됩니다. 이 임베딩 과정은 패치의 원시 픽셀 값들을 모델이 이해할 수 있는 표현으로 변환합니다.
임베딩된 각 패치에 위치 인코딩을 추가하여, 각 패치의 원본 이미지 내의 위치 정보를 모델에게 전달합니다. 위치 인코딩 없이는 모델이 패치들 사이의 공간적 관계를 알 수 없습니다.
임베딩된 패치와 위치 인코딩이 추가된 패치들은 Transformer 모델의 입력으로 사용됩니다.
Transformer 모델은 Multi-Head Self-Attention 메커니즘을 사용하여, 각 패치가 이미지 내의 다른 패치들과 어떻게 관련되어 있는지 학습합니다. 이는 이미지 내의 복잡한 패턴과 상관관계를 모델이 포착하게 합니다.
Transformer 모델의 출력은 일반적으로 한 개 또는 여러 개의 Dense 레이어(MLP)를 거쳐 최종 분류 결과로 변환됩니다. 이 과정에서 모델은 학습한 특징들을 바탕으로 이미지를 분류합니다.
일반적인 패치 크기는 16x16으로 분할합니다. 224x224 픽셀의 표준 입력 이미지 크기에 잘 맞으며, 이 경우 이미지는 총 196개의 16x16 패치로 분할됩니다.
Transformer 모델은 본질적으로 시퀀스의 순서에 대한 정보를 내재적으로 가지고 있지 않습니다. 즉, 모델의 입력으로 들어가는 요소들이 서로 어떤 순서로 배열되어 있는지에 대한 정보가 없습니다. 이는 이미지 처리에서도 마찬가지로, 패치들이 원본 이미지에서 어떤 위치에 있었는지에 대한 정보가 모델에 자동으로 전달되지 않습니다.
위치 인코딩은 이러한 문제를 해결하기 위해 사용됩니다. 위치 인코딩을 통해 각 패치의 고유한 위치 정보를 모델에 주입함으로써, 모델이 패치들 사이의 공간적 관계를 이해할 수 있게 됩니다. 이는 이미지 내의 객체와 장면의 구조적인 특성을 학습하는 데 도움을 줍니다. 위치 인코딩 없이는 Transformer 모델이 패치들의 배열 순서나 상대적 위치에 대한 중요한 단서를 놓칠 수 있습니다.
글로벌한 컨텍스트 학습
ViT에서 Self-Attention은 이미지의 한 부분이 이미지의 먼 다른 부분과 어떻게 관련되어 있는지를 학습할 수 있습니다. 이는 컨볼루셔널 신경망(CNN)에서는 어려운 일입니다. CNN은 주로 로컬 패턴을 학습하며, 레이어를 거듭할수록 글로벌한 정보를 추출하긴 하지만, Self-Attention에 비해 이러한 긴 범위 의존성을 직접적으로 모델링하는 데는 한계가 있습니다.
특정 피쳐에 대한 관심도 높이기
이미지 내의 다양한 객체나 패턴에 따라, 중요한 정보가 될 수 있는 부분은 달라집니다. Self-Attention은 모델이 이미지를 처리할 때 어떤 패치(또는 특성)에 더 많은 주의를 기울일지 동적으로 결정하게 합니다. 이는 모델이 이미지의 주요 부분에 자동으로 집중하고, 덜 중요한 부분은 덜 강조하여 처리할 수 있게 만듭니다.
Self Attention인 이유
Attention이 Encoder와 Decoder를 모두 사용하는 방식인 것과 달리, Self-Attention은 이미지를 하나의 시퀀스로 만들어 요소들 사이의 상호작용을 분석할 수 있어서 보다 적합합니다.
Multi-Head Self Attention (MSA) 인 이유
모델이 다양한 sub-space나 feature space에서 정보를 동시에 학습할 수 있게 하기 위함입니다. 각 head는 다른 가중치 세트를 사용하여 Attention 계산을 수행하므로, 모델은 동일한 데이터에 대해 다양한 관점을 탐색할 수 있습니다. 이러한 방식으로, Multi-Head Attention은 입력 데이터의 다양한 특성과 패턴을 동시에 포착할 수 있으며, 이는 특히 복잡한 데이터 구조를 가진 태스크에서 모델의 성능을 개선하는 데 도움이 됩니다.
Inductive bias란 기계학습 모델이 학습 과정에서 특정 패턴이나 구조를 선호하도록 하는 사전 지식이나 가정입니다. 이러한 선호는 모델이 더 빠르게 학습하고, 더 일반화된 예측을 하는 데 도움을 줄 수 있습니다
전통적인 컨볼루션 신경망(CNN)은 강력한 inductive bias를 가지고 있는 것으로 알려져 있습니다. 예를 들어, CNN은 지역적인 픽셀 간의 상관관계와 이미지 내의 계층적인 패턴을 학습하는 데 최적화되어 있습니다. 이러한 성질은 이미지 인식과 같은 시각적 작업에서 매우 유용하며, CNN이 초기부터 이미지 처리 분야에서 널리 사용되는 이유 중 하나입니다.
반면, Vision Transformer(ViT)는 Transformer 아키텍처를 기반으로 하며, 본질적으로는 자연어 처리(NLP)에 사용되는 모델입니다. Transformer 모델은 주로 순서가 있는 데이터(예: 텍스트)를 처리하도록 설계되었으며, 전통적인 CNN에 비해 상대적으로 적은 inductive bias를 가집니다. 즉, ViT는 이미지의 지역적인 특성이나 계층적인 구조를 자동으로 학습하는 데 특별히 최적화되어 있지 않습니다.
여기서 Translation을 명시하였으므로 보통 위치적인 관계를 설명할 때 쓰인다.
CNN을 살펴보면 그 안에서 쓰이는 Convolution 연산은 필터가 움직이면서 입력이 다르고 그에 대한 출력이 다르므로 Translation Equivariance 하다고 한다. 그러나 Max Pooling과 같은 샘플링 작업은 해당 영역 내에서 대표 값을 얻는 것이므로 영역이 살짝 움직이는 경우에는 같은 값이 나올 것으로 기대할 수 있고 이는 Translation Invariance 하다. 또한 CNN에서 마지막에 MLP를 거쳐서 Classification 하는 부분도 Translation Invariance하다. 왜냐하면 위치적으로 조금씩 다른 개의 사진에 대한 피쳐가 입력되더라도 항상 '개'라는 결과로 추정할 것이기 때문이다.
이러한 성향과 더불어 Convolution 연산은 해당 필터 내에서 인접한 픽셀과의 상관관계도 고려하는 locality 라는 성질이 있기도 해서 결과적으로 CNN은 이미지 데이터에 대한 Inductive Bias가 높다. 반면에 Transformer 계열인 ViT는 상대적으로 Inductive Bias가 낮아서 더 많은 데이터로 일반화가 필요하다고 한다.
ViT는 이미지 내의 글로벌한 상관관계를 학습할 수 있는 능력 덕분에 고해상도 이미지에서 뛰어난 성능을 발휘합니다. 또한, Transformer의 병렬 처리 능력을 활용하여 학습 속도도 빠릅니다. 그러나, ViT는 상대적으로 적은 inductive bias를 가지기 때문에 상대적으로 많은 양의 데이터와 계산 자원을 필요로 합니다. 이러한 특성때문에 Pretrained Model을 가지고 Fine Tuning 하는 것이 강력하게 권장됩니다.