vision transformer에 대해서 알아보았습니다.
원래 Transformer는 주로 자연어 처리(NLP)에서 텍스트를 분석하고 이해하는 데 사용되던 기술입니다. 문장 속 단어와 같은 순차 데이터 내의 관계를 추적해 맥락과 의미를 학습하는 신경망입니다. 그런데 이 방식을 이미지 분석에 적용한 것이 Vision Transformer(ViT)입니다. 이미지도 언어처럼 일정한 구조로 나눠서 분석할 수 있다는 생각에서 나온 것입니다.
Vision Transformer(ViT)는 컴퓨터가 이미지를 이해하고 처리하는 방법 중 하나입니다. ViT는 사람의 시각처럼 이미지를 조각내서 분석하고, 이 조각들을 조합해 전체 이미지를 이해하는 인공지능 모델입니다.
기존 방식(CNN)은 이미지를 전체적으로 훑는 것이라면, ViT는 이미지의 일부에 집중해서 순차적으로 분석하는 방식입니다.
이런 방식을 통해 컴퓨터는 이미지 안의 중요한 부분에 더 잘 집중하고, 더 복잡한 이미지도 잘 이해할 수 있습니다.
Vision Transformer는 처음에 아주 큰 데이터셋을 사용해 Pre-Train(사전 학습) 합니다. 이렇게 큰 데이터로 학습한 후, 작은 이미지 데이터셋에 이 학습된 모델을 Transfer Learning(전이 학습) 방식으로 적용하면, 적은 리소스로도 훨씬 좋은 성능을 낼 수 있습니다.
Transformer의 도입과정부터 살펴보도록 하겠습니다.
앞에서 말했듯이 Transformer는 자연어 처리(NLP)에서 유명해진 모델인데, 특히 "Attention is All You Need"라는 논문에서 나온 Self-Attention메커니즘을 사용했습니다. 입력으로 들어온 시퀀스 안에서 단어들 간의 관계를 고려하는 이 메커니즘을 기반으로 다양한 NLP 모델이 발전했습니다.
Transformer의 큰 장점은 계산 효율성과 확장성입니다. 매우 큰 모델(1000억 개의 파라미터)도 학습이 가능합니다. 특히, 데이터셋이 크면 클수록 성능이 계속 향상됩니다. 일반적으로 모델은 어느 정도 커지면 성능이 한계에 도달하는데, Transformer는 데이터를 더 주고 모델을 더 크게 만들수록 성능이 계속 좋아지는 경향이 있습니다.
이제 트렌스포머에 이미지를 적용하는 방법을 살펴보면
이미지를 작은 조각들(Patch)로 나눈 다음 이 조각들을 순서대로 입력합니다. 이 과정은 NLP에서 단어를 입력하는 방식과 매우 유사합니다. NLP에서 텍스트는 단어의 나열(Sequence)로 구성되는데, 이미지를 조각내면 이미지도 비슷한 방식으로 분석할 수 있다는 것이죠.
16x16 픽셀 크기의 이미지 조각 하나가 NLP에서 단어 하나처럼 작동한다고 생각할 수 있습니다. 이렇게 나눈 조각들을 Supervised Learning방식으로 Transformer로 학습시킵니다. 정답을 알려주고 그에 맞게 학습하는 방식으로 학습합니다.
ImageNet과 같은 중간 크기의 데이터셋으로 학습하면 ResNet보다 성능이 낮을 수 있습니다. 하지만, JFT-300M과 같은 아주 큰 데이터셋으로 사전 학습(Pre-Train)을 하고, 그 후 전이학습하면, 기존 CNN 구조보다 훨씬 좋은 성능을 보여줍니다.