Hello Computer Vision

Meta Pseudo Labels(2021) 논문리뷰 본문

Self,Semi-supervised learning

Meta Pseudo Labels(2021) 논문리뷰

지웅쓰 2024. 3. 28. 14:31

논문의 풀 제목은 글 제목에 적혀있다. https://arxiv.org/pdf/2003.10580.pdf

 

Introduction

여기서 제시하는 기존 Pseudo label의 문제는 잘못 만든 PL의 경우 악영향을 끼칠 수 있다는 것이며 이는 confirmation bias를 크게 할 수 있다는 것이다(여기서 말하는 PL의 경우 일반적인 SSL에서의 PL이 아니라 pre-trained 된 Teacher를 통해 만든 PL을 student에게 주는 PL을 말한다). 따라서 여기서 제시하는 해결점은 PL을 만드는 Teacher 모델도 추가적으로 훈련하는 것이다(기존 방식에서의 Teacher 의 파라미터는 업데이트 하지 않는다). 추가적으로 훈련하는 방식이 Novelty라고 할 수 있는데 이를 student 로부터 추가적으로 배운다고 한다. 그리고 최종 inference는 student 모델로 수행하며 SOTA를 달성했다고 한다.

 

Meta Pseudo Labels

teacher를 추가적으로 학습하는 것에 대해서 여기서는 student의 feedback을 받는다고 표현한다.

전체적인 프레임워크는 오른쪽과 같다. 추가적으로 다른 점은 teacher가 pre-trained 된 것이 아니라 같이 학습이 된다는 것이다. 그리고 notation이 여러개 나오는데, S, T는 각각 student, teacher network를 뜻하며 $ T(x, \theta_{T}) $는 teacher 모델의 prediction이다(soft label일 수도 있고 hard label일 수도 있다. 기존의 방식은 soft label을 사용하지만 여기서는 hard label을 사용한다고 뒤에서 언급된다).

여기서 student는 teacher 가 생산한 많은 수의 pseudo label을 받고 학습하는데 논문에서는 이를 dependency를 가지고 있다고 한다. 이를 $ \theta_{S} (\theta_{T})$로 표현하는데, teacher network에 대해 의존적이라는 것을 표현한 듯하고 이를 function of $ \theta_{T}$라고 한다. 이를 목적함수에 한번 대입해보자면, 

한번 풀어서 써보자면, 목적함수에 대한 $ \theta_{S} $를 줄이는 것이 최종목적인데 이는 $ \theta_{T} $에 의존적이다 라는 것을 표현했다. 그렇다면 기존의 pre-trained teacher로 학습한 것은 어떻게 학습되냐에 따라서 student의 줄일 수 있는 loss 한계가 있을 텐데 같이 학습함으로써 S도 줄일 수 있다라고 직관적으로 이해해도 무방할 거 같다. 이를 아래와 같이 표현한다.

한마디로 지금까지 한 말은 모두 teacher 또한 배워야 student도 잘 배울 수 있다는 것이다. 모델을 업데이트하는 공식을 한번 살펴보면,

student는 unlabeled 데이터에 대해 teacher가 준 pseudo label에 대해 학습한다(근데 여기서 thershold가 언급되지 않는데, appendix를 살펴보면 0.95로 설정한다). 

teacher 는 위와 같은 방식으로 업데이트 된다. 우선 labeled 데이터에 대해 loss가 발생하는 것을 알 수 있다. $ L_{l}$ 안에 있는 loss는 $ L_{u}$ 인데 이는 기존 student에서 발생했던 loss인데 이를 아마 feedback이라고 말하는 듯하다. 보면 labeled 데이터에 대해서는 teacher 의 network로 학습하는 것을 알 수 있으며 기존 student에서 발생했던 update를 활용해 teacher 모델을 업데이트 한다. 따라서 student 는 unlabeled 데이터에 대해서만 학습을 진행하고 teacher model은 이러한 feedback과 labeled 데이터에 대해서 업데이트 해서 최적화를 시킨다고 볼 수 있다.

pseudo code이다. appendix A에는 이렇게 하는 이유에 대한 수식적인 설명이 있는데 넘어가려고 한다. 먼저 S, T를 초기화한 후 T를 통해 만든 pseudo label을 통해 S를 훈련한다. 그리고 여기서 h는 gradient 벡터들 간의 내적이므로 스칼라임을 알 수 있는데 coefficient로 활용된다. 단순히 S의 gradient 가 아닌 한번 업데이트 나서의 gradient, 업데이트 전의 gradient가 곱해지는 것을 알 수 있다(보통 모든 훈련이 끝나고 같이 update를 진행했다면 여기서는 훈련이 끝나면 먼저 update를 진행하는 거 같다. 

이제 teacher를 업데이트 하는데, 먼저 unlabeled 데이터에 대해서 loss를 계산하는 것이 있는데 이 부분이 살짝 헷갈린다. 이 부분이 아마 본문에서 나왔던 student의 feedback 같은데 따로 student의 파라미터는 없기 때문이다. 아마 gradient의 내적값 coefficient를 feedback으로 표현한 듯 싶다. 두번째로는 labeled 데이터로 훈련을 하고 마지막으로는 UDA(Unsupervised Data Augmentation) 방식을 활용해 consistency regularization을 사용한다. 이렇게 3개의 gradient를 합해 teacher를 업데이트 하는 것이다.

 

기존의 방식과는 다른 방식이라서 새롭긴 했지만 결국 confirmation bias를 근본적으로 해결했는지는 의문점이다. 이렇게 생각한 이유는 단순히 pseudo label을 훈련하는 teacher network에 대해서 추가적으로 더 훈련을 진행한다가 여기서 제시하는 해결책이기 때문이다. 물론 student의 feedback이 여기서 얼마나 큰 영향을 주는지는 모르겠다. 

 

Result