AI 기본 지식

Vision 딥러닝 훈련 trend : pre-training -> fine-tuning

study_love 2025. 11. 26. 11:53

 요즘 특히 Computer Vision Task를 푸는 딥러닝 모델을 훈련시킬 때, 방대한 dataset에서 pre-text task를 푸는 pre-training을 끝내고 모델의 디코더 부분만 새것으로 갈아 끼워서 task specific dataset으로 fine-tuning시키는 훈련 방법이 거의 정설로 받아들여지고 있다. 이렇게 훈련하면 어떤 점이 좋은지 한번 알아보고, fine-tuning의 여러 방법들을 알아보도록 하자.  

Problem Statement

 만약 우리에게 task-specific한 data만 있어서, pre-training없이 바로 그 task를 잘 풀 수 있는 딥러닝 모델을 훈련시켰다고 생각해보자. 그러면 모델은 task-specific한 data 안에 있는 image들에 대해서만 task를 잘 풀 수 있을 것이다. 딥러닝은 근사함수일 뿐이므로, 당연히 dataset에 없었던 Image에 대해서는 좋은 prediction을 만들기 힘들다. 

Method

 딥러닝 모델은 첫 K개의 layer를 통과하면서 이미지의 좋은 feature vector를 만들고(이 K개의 Layer를 Encoder부분이라고 한다), 후의 N개의 Layer에서 그 feature vector를 이용해서 task를 풀도록 학습된다는 논리는 딥러닝 연구자들 사이에서 꽤나 잘 알려진 사실이었다. 

 따라서 라벨을 인공적으로 만들 수 있거나, 라벨을 얻기 쉬운 pre-text task를 만들어서 엄청나게 방대한 dataset으로 먼저 딥러닝 모델을 훈련시키면, 모델은 엄청나게 많은 image에 대해서 좋은 feature를 뽑을 수 있는 Encoder를 갖게 될 것이다. 이때 그 Encoder는 그대로 가져오고, 뒤의 N개의 Layer만 Weight를 초기화 한후, 우리가 풀고싶은 task를 풀도록 task-specific한 data에서 훈련시키면 모델은 다양한 이미지에 대해서 좋은 feature vector를 뽑아내는 방법은 pre-training때 배울 수 있고, feature vector로부터 task를 풀어내는 방법은 fine-tuning stage때 배울 수 있으니, 다양한 input이 들어와도 task를 잘 풀 수 있다고 생각할 수 있는 것이다. 

fine tuning

 모든 fine-tuning method들은 pre-training때 잘 훈련된 Encoder를 가져오고, 뒤에 N개의 task-specific Layer를 붙여서 훈련시킨다는 것은 동일하다. 이제 각각의 method들이 어떤 차이가 있는지 살펴보도록 하자.

fine tuning : full fine tuning

 첫 번째 fine tuning방법은 full fine tuning이다. 이 방법은 Encoder와 N개의 task-specific Layer모두 task specific data에서 훈련을 시킬 때 learnable하게 setting해주는 것이다. 즉 Encoder역시 수정될 수 있다. 이렇게 하게 되면 Encoder역시 task를 풀기에 최적화된 (Image->feature vector) extraction process를 배울 수 있다는 장점이 있다. 하지만 어떠한 경우에는 general하게 좋은 feature를 뽑도록 훈련되어 있던 Encoder가 task specific data에 너무 많이 overfitting되면서 기존의 일반화된 지식을 잃는 catastrophic forgetting이 일어날 수 있다. 

fine tuning : Linear Probing 

 두 번째 fine tuning방법으로는 Linear Probing 방법이 있다. 이 방법은 task specific data에서 훈련을 시킬 때 Encoder는 수정불가하게 얼려주고, N개의 task-specific Layer만 learnable하게 setting해 주는 것이다. 이렇게 하게 되면, Encoder가 일반화된 지식을 잃지 않는다는 장점이 있지만, feature extraction process가 task에 최적화되어있지 않아서 full fine tuning에 비해서 고점이 높지 않을 수 있다는 단점이 있다. 

fine tuning : PEFT(Parameter Efficient Fine Tuning)

 다음으로는 PEFT방법이 있다. 이 방법은 Encoder의 일부는 얼리고, 일부는 learnable하게 만들어서 Encoder가 어느정도 task에 최적화도 되면서 catastrophic foretting을 막을 수 있는 장점이 있다. 다른 게시물에서 LoRA와 같은 PEFT의 방법들에서 자세히 소개할 것이다.