Introudction 

이전에서는 Unsupervised Domain Adaptation(UDA)의 방법이 많이 제안이 되었습니다. UDA의 3개의 paradigms으로 접근을 하는데 첫번째의 경우에서는 statistical moments를 다른 feature distribution을 가깝게 하는 방법과, 두번째의 경우에서는 adversarial training을 통해서 추가적인 discriminator를 만드는 방법 그리고 마지막으로는 다양한 regularization을 target network에 넣어 self-training또는 entropy를 조절 하는 방법이 있습니다.

위의 방법을 motivation으로 이번 paper에서는 Source free domain Adaptation(SFDA)에 적용을 하였습니다. 이전의 SFDA의 일반적인 방법으로는 pseudo label을 만들어서 feature strcuture이나 모델의 예측을 내어서 target domain에 대해서 나타내었지만 이는 decision bounday에 noisy가 많이 있는 단점이 있습니다. 

이를 통해 저자는 training에 label refinery할수 있는 Proxy based mixup(ProxyMixup)을 제안하였습니다. 이 방법의 경우 간단하게 source domain 과 traget domain에서 보지 못하였던 (unseen)데이터의 gap을 줄여주기 위해서 첫번째로 target domain에서 source image와 유사한 이미지를 뽑아내서어 proxy source domain에 만들어냅니다. 구체적으로 source classifier에 weight로 프로타입을 구하며 이를 중심으로 가까운 거리에 있는 image를 proxy source domain으로 구성하게 되어지게 되어집니다. 

Pseudo label의 신뢰도를 올리기 위해서 frequency-weighted aggregation pseudo-labeling strategy(FA)를 제안을 하였으며 이는 sharpening, re-weighted, aggreation을 사용하여 Pseudo label을 만든 방법이며 ambiguous한 것에 대해서는 sharen하고 reweight를 하는 방식으로 변경하고 aggregation를 적용하여 unlabel에 대해서 label을 적용하게 되어진다 

 

 

Method

Proxy Source Domain Construction by Prototypes

핵심 방법의 경우 SHOT의 paper와 모델과 유사하게 되어지며 source domain의 image는 접근 할 수 없음으로 source model의 weight를 바탕으로 prototype들을 뽑아내어지며 이를 바탕으로 proxy-domain을 만들어낸다. prototype과 마찬가지로 source classifier를 바탕으로 나온 target domain의 sample들도 함께 새로운 proxy-domain에 포함이 되어진다.

이떄 다른 점은 각 prototype과 가장 distance가 가까운 N개의 sample을 뽑아내고 class마다 똑같은 수의 sample를 찾아낸다. 그리고 같은 수의 sample맏 CE를 적용한다. 

 

Proxy Source Domain Construction by Prototypes (FA)

Pseudo labeling를 적용했을 경우에서는 noisy가 많으며 특히나 unsupervised에서는 domain에 대한 dsitribution을 모르기 때문에 class가 imbalance하게 다른 class로 예측이 되어지는 경우도 많다. 이를 완화하기 위해서 저자는 새로운 pesudo label refinery strategy를 제안하였다.

이 전략중 하나는 soft Pesudo label를 사용하여서 접근을 하였으며 각 sample주위의 예측값의 평균을 하여 label를 refine을 한다. 이렇게 뽑은 데이터를 바탕으로 sharping을 하여 probability의 비중을 키우게 되어집니다.  

 

 

Domain Alignment by Mixup Training

위의 proxy domain과 target domain에서 나온 sample들을 domain을 mixup을 하게 되어진다. 

이때 proxy domain과 target domain을 과 mixup을 하였을때 inter domain이라고 부르며 target domain과 target domain간의 mixup을 하는 건 intra domain이라고 부른다. 

 

Expermient

Office-home에 대한 결과는 다음과 같다. 

 

office-31의 경우도 다음과 같다. 

 

또한 기존의 pesudo label과의 차이를 비교를 하였으며 aggreation을 사용하고 난 전후의 성능 변화도 비교하였다.

 

Conclusion

이전의 방법과 비교하여 단순한 방법으로 적용을 하였으며 다른 domain으로 하여 mixup을 하였다는 novelty가 있음.

반응형

Introduction 

Transformer의 발전으로 인해서 NLP에서는 foundation modal 이 많아지고 있다. 

특히나 최근 Large Language Model(LLM)처럼 좋은 성능을 도출하는 모델이 많다. 

 

이렇게 고도화되어진 모델들을 downstream task로 하여 문제를 풀어내는데 특히나 vision에서도 많이 사용된다. 

대표적으로 downstream을 하기 위해서는 fine tuning을 사용하게 되어지는데 이때 문제가 발생이 되어진다. 

 

transformer를 사용하여 만든 VIT의 경우 Huge모델은 632만개의 파라미터가 사용하여 full fine tuning할때에서는 cost가 크게 발생한다는 것이다. 

저자는 이러한 문제를 위해서 효율적이고 효과적으로 downstream task를 trasnformer에 fine tunig 하는 방법에 대해서 방법을 제안한다. 

 

Related work

이전에 제안되었던 fine tuning의 방법에 대해서는 어떠한 방법들이 있는가 살펴보도록 하겠다. 

첨부되었던 위의 그림에서 보는것과 같이 (a)에 존재하는 이전의 tuning의 방법의 경우에서는 classifier head나 bias term에 subset만 학습하는 방법이 많이 사용되었다. 또는 adapter라는 영역 또는 추가적인 head를 넣어서 tuning을 하였는데 이러한 벙법은 under-perform 즉 성능이 기존의 방법보다 좋게 되어지진 않았다. 

 

이에 저자는 그림(b)에 보이는 방법처럼 transformer에 input부분을 수정하여 새로운 접근법을 제안을 하였다. 이 제안한 방법의 이름은 Visual Prompt Tuning(VPT)라고 불린다. 이 방법은 그림에서 적은 양의 learnable parameter만 사용하여 학습을 하고 transformer backbone의 경우에서는 학습할때 freeze를 하게 되어진다. 그리고 마지막 head에 부분에서는 learnable하게 사용하게 되어진다. 

 

이렇게 단순하게 접근을 하였을때 결과는 어떻게 되어질까? 저자는 24번의 recognition(classificaiton) task를 다른 도메인에서 실험을 하였으며 full tuning의 경우 20case에서 적용하여 비교분석을 하였다. 저자가 제안한 방법의 경우에서는 단 1%의 parameter만 학습이 되어졌으며 기존의 fine tuning의 방법에 비해 parmeter은 적고 성능의 차이는 적게 나타나는 것을 볼 수 있다.

 

그림(a)에서 보면 Related work로써 NLP에서 transfer learning을 하기 위해서 대푭적인 2가지의 방법이 기존에 존재하였다.

하나는 Adapters라는 방법이고 하나는 BitFit이라는 방법이다. 

Adaptaters라는 방법은 transformer layer안에 가벼운 modules들을 넣어서 학습하는 방식으로 module안에서는 nonlinear activation function과 linear up projection이 함께 들어있어 tuning을 하게 되어진다. 

Bitfit의 경우에서는 LLM tuning의 효과적인 technique들이 정리되어있다. 

 

계속해서 realted work를 보면 제목도 그렇고 prompting 이라는 표현이 자주 나온다. 이 표현은 한국말로 지시라는 단어표현인데 이 방법을 LLM에 적용하면 pretrained된 LLM에 task에 이해할수 있도록 Input text를 잘 넣어주는 역할이라고 보면 된다. 이에 최근에는 LLM에서 GPT-3같이 generalization이 잘된 model을 downstream-task에 few-shot, zero-shot transfer learning을 하는 방법이 있다. 최근에는 Prompting text를 잘 만들어주는 방법으로 task-specific하게 contious vector를 넣어주며 fine-tuing을 하는 방법이 있으며 이를 Prompt Tuning이라고 한다. 

이렇듯 prompt tuning의 장점은 적은 paramter로 optimize를 시키는 방법인데 vision-language model에서도 적용하고 있지만 vision과 language의 domain의 차이가 있어 연구가 많이 되어지고 있으며 이번 논문에서는 vision encoder에 prompt tuning을 적용하여 recognition task를 해결을 제안하는 방법이다. 

Method

Vision Transformer(ViT)

본격적으로 Visual-Prompt Tuning(VPT)에 기존이 되어지는 vision transformer(ViT) 방법에 대해서 보도록 하겠다.

기존의 ViT의 모델의 경우 image를 잘라서 embedding에 넣어서 recognition을 적용하여 진행을 하게 되어지며 

저자가 사용하였던 방법은 deep, shallow한 tuning의 방법을 제안하였다. 

 

 

VIT의 경우 N개의 layer로 되어있으며 patch로 잘라진 이미지($I$)와 positional encdoing이 들어가기 때문에 아래의 식과 같이 나온다 . $$e_o^j = Embed(I_j)$$

이렇게 patch embedding을 모으면 $E_i = \{ e_i^j \in \mathbb{R}^d | j \in \mathbb{N}, 1 \le j \le m\} $로 되어지게 되어지며  이때 i의 의미는 ViT의 i 번째 layer가 되어진다. 최종적으로 ViT의 모델을 수식화를 하게 되어지면 아래의 수식과 같이 되어진다. $$[x_i, E_i ] = L_i ([X_{i-1}, E_{i-1} ]), y = Head(x_N)$$

 

이러한 ViT의 구조는 Multihead Self-Attention (MSA)와 LayerNorm과 함꼐 Feed-Forward Network(FFN)로 구성이 되어있다. 

Visal-Prompt Tuning(VPT)

VPT-Shallow의 방법을 먼저 살펴보자. 이 방법의 경우 첫번째 Transformer layer($L_1$)에 Prompt($p$)를 함께 넣어서 학습을 진행하게 되어지는데 이수식은 아래와 같다. 

$$[x_1,Z_1 E_1] = L_1 ([X_{0},P, E_{0} ]), y=Head(X_N)$$

위의 수식과 유사한데 prompt만 넣어주게 되어지며 그로인해서 Z라는 embedding vector도 함께 나온다. 최종적으로 나온 feature를 head의 영역만 학습을 시키게 되어진다. 

 

VPT-Deep의 경우는 shallow랑 비슷하지만 중간에 Z의 embedding의 vector은 함께 학습이 되어지는 형태로 아래와 같은 수식으로 되어진다. 

$$[x_i,_, E_i] = L_i ([X_{i-1},P_{i-1}, E_{i-1} ]), y=Head(X_N)$$

 

Experiments

VPT의 경우 Transformer bacbone으로 되어있어서 downstream task로 사용이 될수 있다. 실험에서는 이러한 backbone의 부분을 변경을 하면서 실험을 하게 되어진다. 

총 4가지의 경우로 진행을 하였으면 다음과 같다. 

1. FULL : 모든 backbone과 classificaiton head의 파라미터를 업데이트함. 

2. Classification head : Classification에서 Linear layer혹은 k-layer의 paramter의 부분만 Update를 진행, Mlp-k를 추가함.

3. Backbone :'Side' network의 부분만 train을 시킴, Bias term만 시킴(distribution의 부분만 shift개념), Adapter처럼 Residual connection이 되어있는 부분만 update 

이러한 down stream task는 FGVC의 dataset에 넣어서 평가를 진행하였음.

적은 수의 파라미터만 가지고도 충분히 높은 성능이 나옴..

이를 통해서 결과는 다음과 같다. 

1. VPT-Deep의 경우는 Full fine-tuning보다 성능적인 면이나 파라미터의 수적인 부분에서도 향상이 있음. 

2. VPT-Deep의 파라미터들이 tuning에 대해서 모든 task에서 눈에 띄는 향상이 있음. 

3. VPT-shallow, VPT-Deep과의 차이에서 shallow의 경우 multi-task, fine-tuning에 좀더 paramter가 save가 많이 되어진다. 

 

이외에도 확실하게 많은 ablation을 평가를 하였는데 다음과 같다. 

tuning을 하였을때 Paramter를 prepend할껀지 concat할껀지 pixel로 만들껀지 많은 실험을 하였지만 

기존의 prepend형식으로 하는것이 좋았다. 

pixel로 prompt를 넣는 형식도 마찬가지로 prepend가 더 좋았으며 concat의 경우는 성능이 떨어짐을 볼 수 있다. 

 

이외에도 head의 부분에 대한 실험도 진행하였으며 head의 위치에 따른 성능의 차이가 나는것을 볼 수 있으며 제일 좋은 방법의 경우 Classification head에 넣는경우 눈에 띄는 성능이 나왔다. 

 

이외에도 다른 SEgmentation task에 대해서 prompt 를하여 fine tuning을 한결과 기존의 방법보다 잘나왔다. 

마찬가지로 Self-supervised learning도 마찬지로 학습되어지는 파라미터에 비해서 높은성능이 나옴을 볼 수 있다. 

Conclustion 

이 논문에 대한 더욱 자세한 설명은 링크에서 보는 것과 같이 읽어보면된다. 

최근의 놀라운 사실은 대부분의 vision이 이제는 prompt나 fine-tuning으로 가고 있다는 것이다. 결국 engineering처럼 모델을 fine-tuning을 하는것이 주된 업무가 되어지지 않을까싶다. 

 

 

 

반응형

+ Recent posts