1. 전이학습이란 ?
딥러닝으로 데이터셋에 대한 학습을 하다보면 신경망을 직접 개발자가 구성하는 경우도 있지만, 직접 아키텍처를 적용하기에는 많은 시간과 자원이 요구되기 때문에, 많은 경우에서는 미리 대형 소스로 사전학습한 모델을 가져와서 데이터에 맞게 조정을 해서 사용하곤 한다. 이를 전이학습(Trasfer Learning)이라고 한다. 이미 학습된 모델들은 일반적인 특성을 학습하고있는데, 초기부터 무작위로 학습하는 것보다 빠르고 안정적으로 수렴하고 과적합을 줄일 수 있다. 이미지분류와 NLP로 나뉘어서 다른 모델들을 사전학습에 많이 사용하는데, 다음과 같은 모델들을 주로 사용한다 :
이미지 분류 :
- ResNet50 : 잔차 연결(Residual)로 깊은 네트워크 학습이 가능한 표준 모델
- VGG16 : 구조가 단순하고 이해하기 쉬워 전이학습 베이스로 자주 사용
- EfficientNet : 컴퓨팅 효율과 성능 균형이 좋음(스케일링 기반)
- InceptionV3 : 다양한 크기 필터를 병렬로 사용해 멀티스케일 특징 추출에 강함
- ViT(Vision Transformer) 트랜스포머 기반으로 이미지 패치 단위 학습, 대규모 데이터에서 강력
NLP(언어모델) :
- BERT-base : 양방향 Transformer 인코더, 문장표현/분류/QA에 널리 사용
- RoBERTa : BERT 변형으로 더 긴 학습·데이터로 성능 개선.
- GPT-2 : 자가회귀(autoregressive) 생성 모델, 텍스트 생성·프롬프트 기반 작업에 적합.
- T5 : 텍스트를 모두 텍스트 문제로 변환하는 엔코더–디코더 프레임워크(다양한 태스크에 유연).
- DistilBERT : 경량화된 BERT 계열(속도/메모리 이점), 실무 배포에 유리.

2. 전이학습 기법
위처럼 사전학습된 모델을 불러와서 도메인에 맞는 지식을 모델에게 훈련시키는 전이학습을 하는데에도 여러 기법들을 사용하곤 하는데, 이 글에서는 크게 이미지 분류 모델에서의 전이학습 기법들 3가지를 소개해볼까 한다. Feature Extraction, Fine-Tuning(프리징), Full Fine-Tuning이다. 또한 전이학습을 수행할 때, 마지막 분류기를 본래 타겟 클래스의 개수에 맞게 바꿔주어야 한다.
1) Feature Extraction
이미지 분류 모델에서의 사전학습 모델의 구성은 크게 BackBone(특징을 추출하고 학습하는 부분)과 분류기로 이루어져 있는데, 백본 부분을 고정하고, 분류기만 새로 학습시키는 방식이 feature extraction 방식이다. 사전학습 모델이 학습한 일반적 특징을 재사용하여 적은 데이터와 계산으로 성능을 얻을 수 있는데, 필요한 데이터세트도 적고 학습에 필요한 시간도 적어 간단하게 수행할 수 있다. 하지만 사전학습 모델이 학습한 도메인과 타겟 데이터의 도메인이 많이 다르다면, 성능의 한계에 부딪힐 수 있다는 단점이 있다.
Feature Extraction을 위해서 수행하는 절차는 다음과 같다.
사전학습 모델을 로드 후 ->
#BackBone 프리징
for param in model.parameters():
param.requires_grad = False
# classifier 계층만 프리징을 해제
for param in model.classifier.parameters():
param.requires_grad = True
위 코드처럼 분류기에만 프리징을 해제하고, 학습률과 epochs를 아주 작게 해 train을 하면 분류기에 대한 전이학습이 끝나게 된다.
2) Fine-Tuning(Freezing)
프리징이라고도 불리는 Fine-Tuning은, 가중치를 조정하긴 하되 원하는 계층을 선택적으로 고정하여 전이학습을 진행하는 미세조정 전략이다. Feature Extraction과 달리 백본의 가중치도 업데이트하여 타겟 도메인에 특화된 표현을 얻을 수 있는데, 입력 데이터에 가까운 계층일 수록 일반적 특성에 대한 가중치를 가지고 있고, 출력에 가까운 계층, 즉 깊은 계층일수록 세밀한 특성에 대한 가중치를 가지고 있는데, 주로 출력에 가까운 층의 가중치를 조절한다.
#일단 모든 BackBone에 대해서 프리징
for param in model.parameters():
param.requires_grad = False
# classifier 계층 프리징을 해제
for param in model.classifier.parameters():
param.requires_grad = True
#출력에 가까운 상위 3개의 블록만 프리징 해제
for i in range(-1, -4, -1):
for param in model.features[i].parameters():
param.requires_grad = True
위와 같이 모든 백본에 대해서 프리징 후, 분류기와 특정 계층만 프리징을 해제하여 전이학습을 진행하는 절차를 거치게 된다.
3) Full Fine-Tuning
사전학습된 모델의 구조만 사용을 하고 모든 계층에 대해서 전이학습을 진행하는데, 사전학습된 표현을 타겟 도메인에 완전히 적응시켜 최대 성능을 얻을 수 있다는 장점은 있지만, 학습 시간이 매우 오래걸리고 계산/메모리 비용이 상승하게 된다. 분류기만 출력 클래스 개수에 맞추어서 조정해주고, 바로 학습을 진행하게 된다.

위의 그림을 참고하면 더 이해가 쉬울 듯 하다.
'My IT > Article' 카테고리의 다른 글
| [My IT : Article] 코딩 테스트에서 자주 썼던 메소드 모음 / 간단 설명 (max/min, sorted, itertools, collections, bisect, heapq) (1) | 2026.04.09 |
|---|---|
| [MY IT : Article] 객체 인식 모델 : Single-Stage, Two-Stage (0) | 2026.04.07 |
| [My IT : Article] 이미지 데이터 전처리 - 표준 전처리, 데이터 증강 (0) | 2026.03.30 |
| [My IT : Article] CNN Layer, AutoEncoder (0) | 2026.03.23 |
| [My IT : Article] PyTorch vs TensorFlow, Tensor(PyTorch) vs Array(Numpy) (1) | 2026.03.17 |