[논문리뷰] - Vision은 메타지! Meta AI가 만든 DiNO 시리즈에 대해서 알아보자.

Meta AI

 

 

 

Vision 분야의 최신 연구트렌드는 Meta Ai의 리서치를 따라가면 됩니다.

Meta는 최근 Llama의 네 번째 시리즈를 출시했지만, 평가가 그렇게 좋지 않았죠? 상대적으로 LLM 기술에 뒤쳐져 있는 Meta이지만, Vision 분야라면 이야기는 달라집니다. 

 

메타의 연구들을 따라가보면 Vision 분야에서 새 돌파구를 찾고 있는 듯 보이고, 실마리를 찾은 것 같아 보입니다.

사실 와닿지 않을 수 있습니다. 

망한 라마4


ChatGPT 지브리나 구글의 nano banana에 비해서 Meta가 보여줬다는 느낌은 안 듭니다. 

 

SAM 정도가 생각나긴 하지만요 앞서 언급한 프로덕션에 비해서 임팩트가 떨어지는 것은 사실입니다. 

하지만 메타의 비전 관련 연구들을 보면 분명한 목표가 느껴집니다. 

MAE 연구 - https://arxiv.org/abs/2111.06377

 

https://arxiv.org/abs/2104.14294

 

메타의 연구들을 보면서 메타의 AI 비전 그 중에서도 'DiNO' 시리즈를 살펴보겠습니다. 

메타의 목표는 GPT의 학습 전략을 컴퓨터 비전에도 적용하고 싶어하는 것 같습니다. 

 

우선 ChatGPT와 같은 LLM 모델을 만들기 위해서는 두 가지 학습 과정이 필요합니다.

바로 Pretrain과 fine tuning 입니다. 딥러닝을 공부하시는 분들은 분명히 들어보셨을거예요. 

 

이 두 단계는 AI 모델에게 각각 다른 성질의 정보를 학습시킵니다. 

 

Pretrain

첫 번째로 Pretrain 단계를 봅시다. 

인터넷의 굉장히 많은 글들을 보면서요 어떤 부분까지의 글을 입력을 받은 후에 바로 직후의 단어를 잘 예측하는 방식을 통해서 학습시킵니다.(Autoregressive한 방식)

 

이 pretrain 과정에서는 글 안의 내용의 논리적인 의미나 도덕성, 가치 판단과는 상관없이 단순히 언어가 어떤 패턴으로 구성되는지 이 세상의 글들이 어떤 규칙으로 나열되는지를 단어 나열의 패턴으로써 학습하게 됩니다. 그리고 이 과정은 일종의 Self-supervised learning 입니다. SSL의 의미는 우선 Supervised Learning을 알면 이해할 수 있습니다. 

 

전통적인 머신러닝에서는요 데이터와 데이터에 해당하는 정답 레이블 즉, 데이터-라벨 쌍을 기본으로 생각했습니다. 

데이터의 입력을 통해 라벨을 예측하는 모델 이 모델을 학습하는 방식이 지도 학습(Supervised Learing)입니다. 

예를 들어 숫자 이미지가 들어갔을 때 그게 어떤 숫자인지 정확히 맞추도록 학습, 질문 글이 들어왔을 때 적절한 대답 글을 맞추도록 학습. 이 학습에는 아까 말했듯이 데이터-라벨 쌍이 필요합니다. 

 

Supervised Learning, 출처 - 임커밋

 

Self supervised Learning은 라벨은 없이 데이터만 가지고 해당 데이터가 어떻게 구성되는지 패턴을 학습하는 방식이 self-supervised learning 입니다. 

 

self-supervised learning, 출처-임커밋

 

self-supervised learning은 입출력에다가 각각 어찌저찌 조작을 한 다음에 이 조작된 입력을 가지고 조작된 출력을 잘 학습하도록 합니다. 이렇게 함으로써 이 데이터를 이루는 규칙이 어떤 식으로 들어가는지 이 데이터가 가지고 있는 의미를(Semantic) 모델이 학습하게 됩니다. 

 

그러면 여기서 다시 아까의 LLM pretrain으로 돌아오면 chatGPT같은 언어모델의 pretrain도 일종의 self-supervised learning이라고 했죠 ? 이 pretrain에 필요한 것은 어떤 질문 대답 쌍, 이 질문에는 이 대답이어야 한다. 이런 식의 라벨 쌍이 아닙니다. 

pretrain에는 단순한 글, 이런 블로그와 같은 글들이 앞부분까지 떼어낸 조작 입력에 대해서 직후 단어만 추출한 조작을 가한 데이터를 예측하도록 self-supervised learning하는 방식을 pretrain에 사용하고 이 방식을 토대로 언어가 어떻게 구성되는지 학습합니다. 

 


FineTuning

 

아까 언급한 것처럼 이 pretrain을 통해서요 글의 논리나 도덕적 원리가 아닌 글 자체의 나열, 즉 언어 그 자체로 어떤 원리로 구성되는지를 모델이 학습합니다. 이 pretrain을 거쳐서 언어가 어떤 원리로 이루어져 있는지 깨달은 모델은 finetuning 단계를 거쳐서 어떤 말을 해야할지 배우게 됩니다. 

 

이 finetuning 단계에서 모델은 데이터와 이 데이터에 대응하는 어떤 값을 통해서요 아까 말한 논리적 의미, 도덕적 원리, 진위 여부와 같은 정보를 배우게 됩니다. 참고로 방금 라벨이 아니라 '어떤 값'이라고 표현한 이유는 이 finetuning에는 지도 학습뿐만 아니라 온갖 여러가지 방법들이 있기 때문입니다. 데이터와 라벨로 이야기하는 supervised learning으로 언어 모델의 finetuning을 정의할 수는 없기 때문에 조금은 모호한 표현인 '대응하는 어떤 값'이라는 표현을 사용합니다. 

 

이 finetuning(RLHF, DPO)와 같은 방법들에게는 공통점이 있습니다. 바로 pretrain보다 데이터셋이 작은 규모인데요.

왜냐하면 데이터셋 샘플들이 pretrain 때보다 더 희소하기 때문입니다. 

 

pretrian에서는 그냥 단순한 글을 가져왔지만 finetuning에서는 Prompt, Responses, Preference와 같은 구성을 만족하는 데이터셋을 갖춰야 하기 때문입니다. 이런 구성을 만족하는 데이터는 당연히 단순한 글보다 희소할 수 밖에 없기 때문이겠죠 ? 

 

그래서 이런 ChatGPT와 같은 LLM을 학습할 때는요 두 과정이 필수적입니다.(Pretrain, Finetuning) 

Pretrain 없이는요 언어를 구사하는 능력을 학습할 수 없고, finetuning이 없으면 모델이 단순한 단어의 배치만 학습하기 때문에 쓸모가 없을테죠. 

 


 

다시 메타의 비전으로 돌아와보겠습니다. 

Vision에서 사용하는 이미지 데이터는 LLM에서 사용하는 데이터처럼 pretrain-finetuning을 그대로 적용하기에는 좀 어렵습니다. 

그 이유는 바로 pretrian 때문인데요, finetuing같은 경우는 컴퓨터 비전 분야의 여러 task들(Classification, Segmentation...)이 있고 이 task를 위해 준비된 데이터를 사용하면 됩니다. 

 

제 생각에 pretrain을 적용하기 어려운 이유는 두 가지가 있는데요 

첫 번째는 이미지가 나열 개념이 아니라는 점, 두 번째는 이미지가 언어에 비해서 redundancy가 크다는 점입니다. 

 

우선 나열 개념이 아니라는 점은 1차원이 아니라는 것인데요. 이건 어느 정도 직관적입니다. 

LLM에서 사용하는 언어 모델은 나열의 다음 subword 예측 task로 학습합니다. 이걸 이미지에 적용하려고 보니까 이미지는 2D이기 때문에 다음이라는 개념이 말이 안되는 것 같습니다. 

 

두 번째로 이미지가 언어에 비해 정보 Redundancy가 크다는 점인데요 만약에 이미지 내부 구성에서도 용케 다음이라는 개념을 잘 정의했다고 칠게요. 하지만 언어에서 한 단어 한 단어가 이루는 유기적인 의미 연결보다 이미지에서 다음으로 이루어지는 연결은 중복같은 군더더기가 훨씬 많겠죠? (배경) 

 

 


 

그래서 이런 문제들이 있지만, 앞서 말했듯이 pretrain이 없으면 본다는 개념(시각적 정보)이 없기 때문에 다양한 비전 Task들을 한 모델이 일반적으로 잘하지는 못할 것 같습니다. 이건 현재 빅테크들의 이미지 모델이 동일하게 겪고있는 문제입니다. 

 

text 입력을 바탕으로 editing을 잘하기도 하고, text 입력을 바탕으로 그 이미지를 잘 만들기도 합니다. 

 

하지만 비전 task를 종합적으로 잘하는, 즉 본다는 것에 대한 일반적인 이해가 있는 그런 비전 모델은 아직 없습니다. 

이렇게 비전 모델들의 난항 속에서 Meta는 DiNO라는 실마리를 찾았습니다. 

 

DiNO는 SSL의 일종이라서 라벨이 붙어있지 않은 데이터 이미지를 학습시킬 수 있습니다. 

이로 인해 pretrain에서 대규모 데이터를 통해 얻는 이점인 '본다'는 것에 대한 일반적인 이해를 모델에게 주입시킬 수 있습니다. 

 

 

실제로 라벨이 없는 대규모 데이터로 pretrain한 결과 사람이 사물을 인식하는 것과 거의 슷하게 물체를 구별하는 듯한 패턴을 보여줍니다. 학습된 DiNO가 만든 feature map을 보면 어떤 라벨 지침없이 단순히 2D 이미지만 가지고 학습했을 때 사진 속의 물체 패턴을 정확하게 인식하는 것을 볼 수 있습니다. 

 

이렇게 구별할 수 있는 feature map을 뽑을 수 있는 pretrain weight를 사용하면 finetuning은 다른 task로의 finetuning으로 확장했을 때 더 좋은 성능을 낼 수 있을 것입니다. 

 

그리고 여기서 더 흥미로운건 DiNO도 GPT와 마찬가지로 Scale up이 잘 된다는 것입니다. 2021년 DiNO v1부터 2025년의 v3까지 모델 크기를 키워오면서 성능도 준수하게 향상되는 모습을 보여주고 있습니다.

 

feature map이 점점 매끈하게 뽑히는 모습을 볼 수 있습니다. 

 

사실 모델 구조나 학습 방법이 작은 규모에서만 잘 동작하고 Scale을 높였을 때 그만큼 성능이 나오지 않는 경우가 다른 연구에서는 빈번한데 DiNO의 경우 v3까지 성능이 잘 향상되어온 것 같네요. 

 

이렇게 DiNO는 GPT의 학습 전략을 답습할 수 없었던 문제, 이미지 데이터로 pretrain이 어렵다는 문제를 잘 해결할 수 있어 보입니다. 메타는 실제로 컴퓨터 비전 관련 연구나 제품에 확실히 많은 기대를 걸고 있는 것으로 보입니다. 

 

비전 분야에서 GPT가 보여줬던 어떤 임팩트를 내 준다면, 비전 분야에서의 도약과 더 나아가서 언어와 이미지 멀티모델 AI에 대해서 더 큰 기대를 해볼 수 있을 것 같습니다.

 


2021년 DiNO v1의 등장 - Distillation + EMA

 

학습을 하기는 하는데 라벨로 학습하는 것이 아니라 고수(Teacher)에게 전달받습니다. 여기서 고수란 출력이 같은 모양인 다른 딥러닝 모델입니다. 고수가 뱉은 출력을 정답이라 믿고 이 출력과 같아지도록 학습하는 방식이 Distillation입니다. 이 때 보통 학습해서 변화하는 모델을 Student model이라고 하고, 고수 모델을 Teacher model 이라고 합니다.

 

 

그러면 Student model 학습 때는 라벨이 필요가 없겠죠?
그저 Teacher model의 출력만 보고 그걸 토대로 학습할 수 있습니다.
하지만 이 distillation에는 한계가 있습니다. 웬만하면 teacher model 이상으로 좋은 성능이 나오지는 않는다는 것이죠.

다음으로 사용하는 잡기술은 EMA(Exponential Moving Average)입니다.
EMA는 이동 평균을 통해서 학습 과정에서 들쭉날쭉 변하는 weight를 안정적으로 잡아줍니다. 많은 Vision task에서 학습 중인 원래 모델보다 더 좋은 성능을 보이는 경우가 많습니다. 이 말인 즉슨 학습하는 과정중에서 학습 중인 모델 자기 자신보다 더 뛰어난 모델이 존재한다는 뜻입니다.

 

Centering Sharpening

Dino에서 자기 자신보다 뛰어난 EMA teacher로부터 전수받아서 자기 자신도 발전시키고, 그 직후에 ema 모델도 조금 더 향상되고 이 과정을 반복한다고 했습니다. 하지만 문제가 있다고 했는데 이건 collapse라는 요행의 늪에 빠지기 쉽다고 했습니다.

collapse가 뭐냐면 학습 과정에서 모델이 loss 숫자를 줄이는데, 입력의 특성을 배워서 줄이는게 아니라 학습 설계의 빈틈으로 요행을 써서 loss를 줄이는 방법을 의미합니다.

mode collapse는 한 숫자만 만들어도 학습 설계에 문제가 없는 상태

 

그래서 loss는 낮아지지만 모델을 학습해서 활용하고자 했던 목적은 제대로 수행하지 못합니다. 그래서 이번에는 dino가 무슨 collapse에 빠지고 이 collapse를 어떻게 피하는지 알아보겠습니다.

 

첫 번째 방법은 centering입니다.

일단 centering이 뭔지 보기 전에요 centering으로 풀고자 하는 collapse가 무슨 증상인지부터 보겠습니다. dino 모델은 라벨은 정해주지 않았지만 일단 출력으로 뭔가인 것 같다는 classification을 한다고 했습니다.

 

그래서 모델의 출력에 softmax를 해서요 뭔가 일 것 같다는 확률을 출력합니다. 그런데 아까 했던 설명 dino는 자기 자신의 ema의 출력을 teacher로 삼는다고 했습니다. EMA는 현재의 모델과 과거의 모델을 가지고 만들어진다고 했는데요 하지만 만약에 과거와 현재의 항상 모든 입력에 대해서 같은 출력을 내왔다면 어떨까요 ?

예를 들어서 출력 벡터의 3번째만 0.99 나머지는 아주 작게 이런 출력을요 항상 어떤 입력이 들어와도 이렇게만 출력을 내도록 모델이 요행을 부린다, 이러면 어떨까요 ? teacher의 출력이랑 같으니까 loss는 작은데요 어떻죠?

classification을 제대로 하는 모델은 아니겠죠? 더 중요한건 EMA는 어차피 자기 자신으로부터 만드니까요 새로 계산된 ema도 같은 출력을 낼 것입니다.

 

그래서 이 collapse를 해결하지 못하면 모델은 학습 과정에서 한 가지 출력에만 꽂혀서 제대로 학습되지 않을 것입니다.

이 collapse를 centring으로 해결합니다. teacher 역할의 EMA 모델에서 softmax 직전 벡터를 어떤 벡터로 빼줄 겁니다. 빼주는 벡터는요 minibatch 축의 자기 자신 평균입니다. 정확하게는 자기 자신 평균 자체도 EMA로 업데이트를 해서 EMA 벡터를 빼긴 합니다. 아무튼 핵심 의미는 자기 자신 평균을 빼는건데 이 행위의 의미는 뭘까요 ?

 

바로 특정 출력으로 쏠림을 방지한다는 것입니다. 아까의 collapse 상황처럼 계속 특정 출력에 쏠려있으면 이 평균 벡터도 특정 출력 위치에 쏠린 상태겠죠? 하지만 centering에서 이 벡터로 빼니까 출력이 하나로 몰리지 않고 분산되도록 퍼진 상태를 만듭니다. 그래서 이 centering을 통해서 입력이 서로 달라 보이면 다른 값의 벡터를 출력하도록 올바르게 학습시킵니다.

 

그런데 centering 만으로는 부족한데요, 반대 성질의 다른 collapse도 있기 때문입니다.

이번 collapse도 한 상태의 출력만 내긴 하는데요, 이번에는 그 출력이 전부다 고르게 분포할 경우입니다. 이게 무슨 말이냐면 이번에도 모델은 항상 같은 출력을 내는데요, 합 확률 1을 전체가 거의 같게 나눠가집니다.

그러면 이런 출력으로 계속 유지되는 teacher라도요 student가 그대로 따라하면 loss는 낮고 teacher는 변함이 없겠죠 ? 심지어 더 문제는요 centering은 이걸 해결해주지 못하고 이런 출력 평탄화를 더 가속화합니다. 벡터에서 약간이라도 큰 값이 있으면 centering에서 억제돼서 평평하게 바뀌는거죠.

 

그래서 이걸 해결하는 방법을 Sharpening이라고 부릅니다. sharpening은 teacher 모델에서 softmax의 logit에다가요 0.0x로 나누는 즉, logit을 곱셈 뻥튀기하는 방식입니다. 곱셈 뻥튀기를 하면 출력들의 조그마한 차이도 이 차이를 더 키우구요 여기에 softmax에는 exponential이 있으니까 차이가 한 번 더 벌어집니다. 이 sharpening으로 점점 더 평평한 분포가 되는 collapse를 해결해서요 어느 하나를 분명히 고르도록 만드는 효과를 냅니다.

centring과 sharpening을 적당히 먹이면은요 Dino가 collapse 요행에 빠지지 않습니다. sharpening으로 teacher 모델 출력이 어느 하나를 분명히 선택하게 해서요 의미없이 평평하게 분포하게 되는 걸 막습니다.

그러면 어느 하나를 분명히 고르긴 하지만요 sharpening만으로는 항상 같은 것만 선택할 수도 있죠? (sharpening만 쓰면 하나만 선택 -> 무작위성 제거 -> 엔트로피 0)

이 때 centering으로 하나만 고르는 상황을 억제합니다. 이렇게 학습된 dino는 서로 같은 입력에 대해서는 같은 출력을 내면서요 서로 다른 것은 다르다고 확신하도록 학습됩니다. 이렇게 dino는 ema로 자신을 학습하는 방식에 두 가지 안전 장치인 centering과 sharpening으로 모델을 ssl합니다.

 

다른 모델들은 예를 들어 SimCLR의 경우 다른 sample로부터의 repulsion으로 force 방향을 정하거나 MoCo의 경우 SimCLR + Momentum queue를 사용합니다. 모두 근본적으로 "output distribution이 degenerate해지는 것을 막는다"는 같은 목표죠. 차이는 제약을 (a) sample-sample 관계, (b) sample-teacher 관계, (c) sample-population statistics, (d) sample-cluster 관계 중 어디에 걸었느냐입니다. 


DiNOv2 and v3

Dino v2, v3는 스케일링 이슈, 다른 말로 v1 때보다 큰 규모로 학습할 때의 이야기입니다.
논문을 보면 여러 키워드들이 나와서 혼란스러운데요 크게 두 가지로 분류됩니다.

  1. DiNO에다가 다른 논문의 방법론을 차용했다.
  2. 타 논문이랑 다른 방법을 사용하거나 직접 방법을 고안했다.

2는 Data Curation과 Global vs Local로 나뉩니다.

우선 Data Curation은 쉽게 말해서 정제입니다. 웹에서 수집한 데이터가 너무 날 것이라서 입니다. 모델 사이즈를 키울건데, overfitting이 발생하지 않도록 하려면 데이터도 많이 필요하죠 ? 그래서 이미지 수집을 엄청해서 이미지는 많이 모였습니다.
그런데 문제가 있는 것은 중복과 의미없는 데이터가 너무 많습니다.

 

먼저 중복을 보면, 유명한 짤은 똑같은 짤들이 여러 블로그와 여러 사이트에서 쓰고 그러죠? 문제는 이걸 그냥 모은 상태 그대로 학습에 쓰면, 모델이 유명한 짤에 weight를 더 많이 주게 됩니다. 반대로 희소한 데이터의 경우 상대적으로 중복이 별로 없을테니까요, 겹치는 경우가 별로 없어서 가중치가 적을겁니다. 그런데 이걸 하나씩 가중치를 설정해줄 수 없으니 여기서 사용하는게 Data Curation입니다.

 

Dino v2에서는 이 data curation에 Deduplication과 Retrieval을 사용했습니다.
Deduplication은 이미지별로 임베딩을 뽑아서 너무 똑같은 것들은 지웁니다. 그래서 중복을 방지하는 역할이고, Retrieval은 이미지를 기반으로 검색하는데요 잘 마련딘 데이터로 검색해서 같은 범주의 이미지들을 확보합니다.

 

이 둘의 효과는 뭘까요 ?
날 것의 대규모 데이터에서요 너무 겹치는 것들 혹은 단색 이미지처럼 의미없는 이미지도 걸러지게 됩니다. 그러면서 일반적인 공개 데이터셋들보다 더 큰 규모로 데이터를 확보할 수 있습니다.

 

Data curation은 v2 뿐만 아니라 v3에서도 하는데요, v2의 방법에 Clustering이 추가됩니다.
좀 더 디테일하게는 5 level clustering이라고 하는데요, 쉽게 말해서 학습시킬 때 이미지를 바로 랜덤으로 뽑는게 아니라 cluster를 랜덤으로 뽑고, 그 다음에 cluster에서 이미지를 뽑습니다.

 

그게 무슨 의미냐면 원래는 랜덤으로 샘플링했을 때, 모든 이미지가 같은 확률이죠?(샘플링)
하지만 어떤 종류의 이미지들은 많고 어떤 종류의 이미지는 적을 수 있는데요.
그러면 샘플이 많은 종류의 이미지로 모델이 편향될 수 있습니다. 그런데 cluster를 먼저 샘플링하면 이미지 종류마다 골고루 노출되니까요 균형잡힌 분포로 모델을 학습시킬 수 있습니다.

 

5 level cluster는 뭐냐면 cluster 내부에서 더 세세하게 이미지 임베딩을 큰 덩어리로 나누고 그 안에 덩어리끼리 또 나누는 방식으로 진행하는 것입니다. 이렇게 하면 각 cluster마다 균형잡힌 분포로 샘플링 됩니다. 만약 개랑 닭이 9:1 비율로 있어도 다른 클러스터에 있다면 비슷한 횟수로 모델에 사용되는 것입니다.

그 다음은 global과 local의 충돌입니다. 이건 Dinov3에서 언급합니다.

 

충돌을 성능으로 확인합니다. 학습 과정을 보니까요 classification은 계속 올라가지만 segmentation 능력은 peak를 찍고 떨어지고 있네요.

classification은 이미지를 전체적으로 봐야하니까 global representation 정보 기반입니다. 반면에 segmentation은 이미지의 디테일을 잘 잡아야 하니까요 local한 dense feature가 중요합니다.

그런데 segmentation 성능이 점점 떨어진다고 했죠 ?

 

왜 그런지 보니까요 학습 초반에는 patch가 자기 근처의 요소, 의미적으로 자기 자신이 속한 곳과 유사도가 높습니다. 학습 초반에는 꽃잎 패치가 자기들끼리 attention이 높게 잡히죠?

즉 segmentation이 잘 된다고 할 수 있습니다. 하지만 이 능력은 학습이 진행되면서 점점 떨어지는데요 이 때 고점 성능을 회복시키기 위해서 gram anchoring이라는 것을 사용합니다.

 

고점 상태의 모델을 teacher로 두고 이 teacher의 patch 별 출력을 뽑아서요 모든 patch간 내적이 현재 student와 같아지도록 만듭니다. 고점 상태의 모델은 patch간 상관관계가 깔끔하게 나올테니까요 논문에서는 dense feature가 high quality인 상황입니다. 그러면 student가 고점 상태의 teacher의 dense feature를 쫓아가면은요 나중에도 dense feature가 깔끔하게 회복되는 것을 확인할 수 있습니다. 신기한 점은 이 gram acnchoring은 초반이나 고점을 찍은 뒤에 바로 쓰지 않습니다. 이미 학습을 많이 시킨 후에 마지막에 잠깐 켜서 교정처럼 시킵니다.

 

DiNO Pretrain의 핵심

 

Multicrop은 다양한 crop으로 만드는 학습 전략.

ViT에 대해서 먼저 알아야 합니다. Vit, Vision Transformer에서는 3가지를 알면 됩니다.

  1. 이미지를 patch 단위로 쪼갠다.
  2. Transformer 구조로 이미지를 이해한다.
  3. Classification은 CLS token을 쓴다

우선 첫 번째 patch 단위입니다. ViT 이전에는 주로 pixel 단위 이미지를 입력했습니다. 그런데 vit의 transformer는 토큰처럼 의미 단위 취급을 위해서 이미지를 patch로 만듭니다. 이걸 한 샘플 당 정보의 크기 관점에서 보면 patch 단위가 pixel 단위보다 정보가 많죠 ?

 

pixel은 단순히 한 점이지만, patch는 의미 단위, NLP에서 subword같은 단위라고 볼 수 있습니다. 그래서 ViT에서는 의미 단위로 Attention 할 수 있도록 이미지를 Patch 단위의 2D 나열로 입력받습니다. 그리고 그 다음 Transformer 구조로 이미지를 이해한다는 점인데요, 그 중에서도 Encoder Only Transformer 형태로 Patch 단위로 self attention해서 이미지를 이해합니다.

 

아까 말했듯이 이미지를 patch 단위로 표현하고요, self attention은 patch 간의 상관관계를 분석합니다. 그리고 마지막 cls token은 BERT에서도 쓰는데, CLS token의 필요성을 설명하기 위해서 self attention 구조를 먼저 보겠습니다.

self attention을 잠깐 복습하자면

 

self attention은 입력과 출력이 같은 shape이고 그 shape는 patch의 나열입니다. self attention 출력의 각 patch는 전체 patch와의 상관관계가 한 차례 분석된 결과입니다. 하지만 이 구조에서는 classification 같은 task에 쓸 patch 정의가 어렵습니다. 왜일까요? 어떤 patch를 classification에 쓸 거라고 정해야하는데요 문제는 모델 설계 단계에서는 그걸(주요 patch를) 아직 알 수 없습니다.

 

심지어 더 최악은요 이미지 크기가 다르면 patch 개수도 다르니까요 출력이 일관된 구조인 상황도 아닙니다. 바로 그래서 cls token을 사용합니다. 이미지랑 상관없이 특정 task에 쓸 임시 patch를 두고 encoder layer stack의 마지막에 CLS token을 task에 사용합니다.

 

그러면 이 CLS Token은 어떤 이미지 입력에서든 존재해서 항상 task를 수행해왔죠? 그래서 task에 맞는 attention mapping이 되어 있을 것입니다. Inference 단계에서도 이 CLS Token은 attention mapping이 잘 되어있고 이 task를 잘 수행하기 위한 준비가 되어있습니다. 그래서 어떤 이미지가 들어오든 일관되게 task를 수행하기 위해서 이 task token의 역할로써 CLS token이 있습니다.

 

Appendix 

 

DiNO의 Gradient flow

 

반응형
M

minyoungxi

기술 트렌드, 연구, 일상을 탐구하는 개인 블로그입니다.