Pytorch

pretrained 모델 학습법

왕초보코딩러 2025. 1. 23. 20:54
728x90

 

strategy 1: 모델 전체를 학습하는 경우 (Full training)    
모델 전체 학습
데이터가 많은 경우 효율적

strategy 2: 일부만 학습시키는 경우 (Fine tuning)  
상위는 학습시키지 않고 프리징  
내 클래스와 pretrained가 비슷할 때  

starategy 3: 특징 추출 부분 고정 (Feature Extraction)  
분류기(FC layer)만 재학습


1. 전체 학습 (Full Training)

설명: 모델 전체를 학습시켜서 모든 가중치를 업데이트
장점: 데이터가 많을 때 좋음(처음부터 끝까지 내 데이터에 맞는 최적의 모델을 만들 수 있음)  
단점: 많은 데이터와 시간, 계산 자원이 필요(이미 잘 학습된 가중치를 처음부터 다시 학습시키기 때문에, 비효율적일 수 있음)  
사용 경우: 내가 가진 데이터가 매우 많고, pretrained 모델과 전혀 다른 도메인일 때

 

2. Fine Tuning

설명: pretrained 모델의 일부 가중치는 고정(Freeze)하고, 나머지 일부만 업데이트  
보통 상위 레이어는 Freeze하고 하위 레이어(특화된 레이어)만 학습  
장점: pretrained 모델의 일반적인 특징을 유지하면서, 특정 데이터셋에 맞춰 세부 조정을 할 수 있음, 학습 속도가 빠르며, 상대적으로 적은 데이터로도 효과적  
단점: pretrained 모델이 사용하는 데이터와 내 데이터의 차이가 크면 성능이 저하될 수 있음  
사용 경우: pretrained 모델과 내 데이터가 유사한 도메인일 때  
예: 고양이와 개 사진 분류 → 강아지 품종 분류

 

3. Feature Extraction

설명: pretrained 모델의 모든 레이어를 Freeze하고, 최상위 분류기(FC Layer)만 새로 학습  
기존 모델이 추출한 특징(feature)을 그대로 활용  
장점: 학습 속도가 매우 빠르고 작은 데이터셋으로도 학습이 가능  
단점: 내 데이터가 pretrained 모델의 도메인과 다르면 효과가 제한적  
사용 경우: 데이터셋이 매우 적거나, pretrained 모델과 내 데이터가 매우 유사할 때

 

프리징 (Freezing)

특정 레이어의 가중치가 업데이트되지 않도록 고정
불필요한 계산 낭비를 줄이고, 모델의 기존 특징을 유지
Fine Tuning과 Feature Extraction에서 사용됨

PyTorch 예시: param.requires_grad = False  

 

딥러닝 학습 방법 선택하는 법
: 데이터셋 크기, pretrained 모델과의 도메인 유사성

도메인 유사성
pretrained 모델의 학습 데이터와 내 데이터셋의 내용, 스타일, 특징을 비교해 판단 

도메인 유사성 판단 기준
클래스: 모델이 학습한 클래스와 내 데이터의 클래스가 유사한지
예: ImageNet은 일반적인 물체(강아지, 고양이 등)를 포함하므로, 강아지 분류처럼 유사한 도메인에 적합.
스타일: 이미지의 전반적인 특징(색감, 구조 등)이 유사한지
예: ImageNet 모델은 사진 스타일에 최적화되어 있으나, 의료 영상에는 맞지 않을 수 있음.
특징: 학습된 특징(엣지, 패턴 등)이 내 데이터셋에도 적용 가능한지

 


데이터 확인은 공식 문서와 논문을 통해

 

데이터 많음 -> Full training
도메인 유사 -> Fine tuning  
데이터 적음 + 도메인 유사 -> Feature Extraction