참고 블로그
: https://inhovation97.tistory.com/31
: https://jeinalog.tistory.com/13
공부하며 다음 블로그들을 정리하였습니다.
사전 학습된 모델(pre-trained model)을 이용하는 것
즉, pre-trained된 backbone을 이용해 feature map을 뽑아내고 그 이후에 내 데이터에 맞게 fine-tuning을 진행하는 과정을 의미한다.
큰 데이터로 모델을 학습시키는 것은 오랜 시간과 연산량이 필요하므로, 일반적으로 이미 공개되어 있는 모델들을 import해서 사용함
(보통 timm에 많이 업데이트가 되어 있다.)
일반적으로 내 프로젝트와 맞게 재정의하기 위해서 원래 모델의 'classifier'을 없애는 것부터 시작한다.
그 이후에 내 프로젝트와 맞는 classifier을 추가하고,
새롭게 만들어진 모델을 다음 세 가지 전략 중 한 방법을 이용해 fine-tuning을 진행한다.
사전 학습 모델으 구조만 사용하면서, 내 데이터셋에 맞게 새로 학습
밑바닥에서부터 새로 학습하는 것이기 때문에, 큰 사이즈의 데이터셋과 좋은 GPU 필요
일반적으로 CNN 구조에서
낮은 레벨의 계층은 일반적인 특징을 추출하고, 높은 레벨의 계층은 구체적이고 특유한 특징을 추출하기 때문에
이러한 특성을 이용해서 신경망의 파라미터 중 어느 정도까지 재학습시킬지를 결정
convolutional base는 건들지 않고 그대로 두면서, feature extractor 메커니즘으로만 활용하고, classifier만 재학습시키는 방법

비교적 간단히 사용할 수 있는 3번 방법과 다르게
1번 2번 방법은 learning rate에 대해서 조심해야 할 필요학 있다.
이전에 학습한 내용들을 모두 잊어버릴 위험이 있기 때문에 작은 learning rate로 사용하는 것이 바람직하다.
지금 내가 하고 있는 연구와 어떻게 결합할 수 있을 것인가?
난 ViT이기 때문에 convolutional base와 classifier과 직접적인 관련은 없으나
learning rate를 작게 사용하거나 freeze시키는게 좋다는 insight는 배워갈 수 있을 것이다.