이 논문은 ICLR'21에 publish 된 논문으로 2023.10.24 기준 525개의 citation을 기록중이며 😲
현재 다양한 분야에서 쏟아져 나오고 있는 TTA 계열 논문들에게 많은 영감을 준 논문이다.
코드는 여기서 확인할 수 있다. 👉 https://github.com/DequanWang/tent
알고리즘 자체는 굉장히 간단하고 그에 비해 여러 task/model에서 골고루 좋은 성능을 보인다.
Introduction
일반적인 deep neural network은 dataset shift (domain shift) 현상이 발생할때 대개 큰 성능 하락을 보인다고 한다. 여기서 dataset shift란 training data와 test data가 다른 현상을 말하는데 SVHN --> MNIST 같은 시나리오를 상상할 수 있겠다.
이 논문은 dataset shift를 완화할 수 있는 source-free test time adaptation 알고리즘을 제시하는데 기존에도 이런 세팅이 없었는지는 모르겠으나, 1) target domain의 unlabeled data와 2) pretrained model on source domain 만 주어진다고 한다.
이 논문에서 제시하는 알고리즘의 이름은 TENT (Test Entropy Minimization) 으로 이름 그대로 test samples 을 evaluate하는 도중에 Shannon entropy를 minimize하도록 모델을 update한다 (Inference, Adapatation은 batch-wise로 진행된다).
기존의 self-supervised learning 은 proxy task을 잘 정해야 성능이 올라가는데, TENT는 그에 비해 간단한게 장점이라고함.
Methodology
TENT는 모델 parameter 전체를 전부 update하는게 아니라 channel 별로 feature scalining/shifting만 수행한다. 아래 Figure에서처럼 먼저 normalization을 한뒤 learnable parameter ($\gamma, \beta$)로 transformation을 하는데 그 과정이 마치 Batch Normalization과 유사하다. 이 방법을 통해 TENT는 전체 parameter의 1% 미만을 update 한다고 한다.
목적함수는 Shannon Entropy이며, 모든 layer에 대한 $\gamma, \beta$를 학습한다고 한다. TTA setting 이다보니 딱히 termination 조건이 존재하지 않으며 원하는 만큼 test data에서 evaluation/adaptation을 진행할 수 있다고 한다.
Experiments
Baseline으로는 기존에 비슷한 세팅에서 자주 사용되는 알고리즘들을 선택했다 (구체적으로 아래와 같다).
[1] RG : Adversarial domain adaptation
[2] UDA-SS : Self-supervised domain adaptation
[3] TTT : Test-time training
[4] BN : Test-time batch normalization (BN parameter만 update하는 방식이다, 근데 무슨 loss로?)
[5] PL : Pseudo-labeling
아래 Table을 보면 알 수 있지만 Tent의 TTA 세팅이 가장 적은 harsh 한 조건에서 가장 좋은 성능을 보인다.
Qualitative results. 아래는 TENT의 효과를 visualize하기 위해서 각 layer의 features를 Gaussian으로 후처리해서 (아마도?🤔) plot한것이다. 모든 subfigure에서 똑같이 나타나는 뒷부분은 source domain에서의 feature distribution이고 앞부분이 이제 methods에 따라 바뀌는 target domain에서의 adapted feature distribution이다. Source나 BN과 달리 TENT의 adapted feature distribution이 Oracle (Test data로 train된 모델)의 feature distribution과 비슷한걸 볼 수 있다.