논문 읽기

[CVPR2022 논문 간단 리뷰] Forward Compatible Few-Shot Class-Incremental Learning (FACT)

Haejiness 2022. 8. 9. 19:02

✏️ 본 포스트에는 논문 및 여타 개념에 대한 주관적 해석 및 설명이 포함되어 있습니다. 출처를 표시하지 않은 경우 모두 개인의 이해를 바탕으로 작성되었기 때문에, 공식적인 용도로 내용을 차용해가시는 것에 주의하시길 바랍니다! 그 외에 이해한 바에 대한 공유, 댓글을 통한 디스커션 모두 환영합니다 :)

 

이 논문은 혼자 이런 저런 생각을 하다가 문득 들었던 생각과 관련이 깊어, 학회 전부터 제일 관심있게 봤던 논문이다! 이걸 발견하고 학회에서 꼭 찾아가야지 생각하고 벼르고 있었는데 왜인지 포스터세션은 안 하신 것 같았다.

사실 논문 전부 꼼꼼하게 이해하지는 못했다. 아직 난 비교적 high-level에서 태스크를 다루고 있어서, 어떤 테크닉을 썼는지에 관해 상세한 내용에 공감하기보다 접근 자체에 흥미를 느끼는 중...ㅎㅎ

 

논문 링크 (CVPR, arXiv) | 깃헙

 

간단히 말하면, 이 논문에서는 컨티뉴얼 러닝 시 새로 들어올 task(class)를 대비해 임베딩 공간에 가짜 공간을 만들어놓는다.

 

기존의 FSCIL(Few-Shot Class-Incremental Learning)은 Base Session에서 학습되지 않은 클래스가 새롭게 들어와 prototype을 정의해줄 때, base session에서 학습한 클래스와 유사한 게 들어오면 분포가 겹치게 되기 때문에 prototype을 식별 가능하게 설정하는 것에 어려움을 느낀다. 결국 이미 학습된 클래스의 prototype과 새로 들어오는 클래스의 prototype을 떨어트려주는 게 분류의 핵심일텐데, 새로 들어올 클래스가 어떤 클래스일지 예상할 수 없기 때문에 들어오기 전에는 지금 있는 클래스들을 분류 잘하도록 해주는 게 최선일 수밖에 없는 거다.

그럼 '어떤 클래스가 들어오든 어느 정도는 준비된 상태'일 수는 없을까?

 


 

출처) Zhou et al., Forward Compatible Few-Shot Class-Incremental Learning (CVPR 2022)

 

본 논문의 메인 Figure 두개를 보면 이 논문에서 하고자 하는 말을 직관적으로 잘 이해할 수 있다.

 

목적

첫번째 Figure에서 보듯, Session 내의 클래스들이 학습될 때 임베딩 공간 상에서 더 압축적으로 분포하도록 빈 공간(Reserved)을 두며 학습하는 것이다. 한마디로 뒤에 들어올 임의의 클래스에 대한 대비를 하는 것.

 

방법

어떻게 대비하는지는 두번째 Figure(오른쪽 그림)에 나타나있다. 이들이 원하는 목적을 달성하기 위해 두가지 개념을 제안한다.

Virtual PrototypeVirtual Instance.

용어도 직관적이라맘에 든다!

 

Virtual Prototype은, 임베딩 공간에 virtual class를 만들어둔다고 생각하면 된다. 말 그대로 가상의 클래스를 가정하는 것이다.

이를 만드는 방식은, 학습할 때 각 Instance에 대해 Virtual Prototype(class)을 Pseudo Label로 부여해, Bimodal distribution이 되도록 유도한다. 이렇게하면 실체가 없는 Virtual Prototype이 관할하는 구역이 생기면서, 임베딩 공간에 빈공간을 마련하는 것이다.

 

Virtual Instance는, 실제로 들어올 법한 instance를 가정하는 방식이다. 여기서는 Manifold mixture이라는 방식을 사용하는데, 이것 역시 직관적인 방법이라 이해가 어렵지는 않았다! 서로 다른 두 클래스의 instance 사이의 공간은 분류하기 명확하지 않은 영역일 것이라는 전제로, 거기에 Virtual Instance를 정의하는 것이다. 

이 Virtual Instance는 가장 가까운 Virtual Prototype을 Ground truth(class)처럼 삼고, Virtual Prototype을 활용했던 것과 마찬가지의 방법으로 이번엔 가장 가까운 Real Prototype을 하나 Pseudo Label로 삼는다. 이를 통해 실제 Real Class가 너무 뭉쳐서 분포하지 않도록 제어해준다고 한다.

논문을 읽어보면 이러한 virtual loss의 작동 원리에 대해 더 자세하게 나와있는데, 나는 접근 자체가 간단하고 새롭다고 생각해 재미있게 봤다! Continaul Learning에서 점점 Forward Transfer의 중요성을 강조해가는 추세인 것 같고, 이게 그 측면에서 직접적으로 새로운 클래스로 관점을 돌리는 방식이라는 점에서도 신선했다.

 

 

CVPR2022의 논문 중 Forward Compatible Training for Large-Scale Embedding Retrieval Systems라는 것도 있었다. 다 읽어보진 않았고 초록만 훑어봤는데, 비슷한 맥락의 페이퍼인 듯했다.