산타와 일반 인물이미지를 활용하여 전이학습의 여부에 따른 학습결과를 비교합니다. 본 프로젝트는 커스텀 VGG19 네트워크를 활용한 2-Class 이미지 분류 모델을 구현하고 학습하는 실험입니다. 모델은 PyTorch 기반으로 작성되었으며, 학습 및 검증 데이터셋을 통해 성능을 평가합니다.
Python PyTorch torchvision CUDA (GPU) Matplotlib
모델은 기본적인 VGG19 구조를 따르며, 마지막 Fully Connected Layer를 2-Class 분류를 위해 수정하였습니다.
학습 함수는 다음 특징을 가집니다.
Optimizer 선택 가능 (SGD / Adam / RAdam)
Train / Validation Loss 기록
Validation Accuracy 측정
Epoch별 경과시간 출력
학습을 진행하는 과정에서 다음과 같은 현상이 반복적으로 관찰되었습니다.
Validation Accuracy가 약 0.5 수준에서 벗어나지 않음
Epoch 수를 늘려도 성능이 상승하지 않음
Loss 감소는 일부 관찰되나 Accuracy 상승과 일관되지 않음
추론 시 두 클래스의 예측 분포가 한쪽에 치우칠 가능성 존재
아래는 위와 같은 학습 결과가 발생한 원인에 대해 모델 관점 / 데이터 관점 / 학습 관점에서 분석한 추론입니다.
모델은 비교적 깊은 구조(VGG19)를 갖고 있으며, 입력 이미지가 특정한 통계적 분포(채널 평균/표준편차) 위에서 학습되었거나 그에 가까운 분포를 가정하는 경우가 많습니다.
하지만 실제 입력 데이터는
정규화 방식이 다르거나
색/밝기 변환이 강하게 적용되었거나
학습과 검증에서 서로 다른 변환이 적용되었을 가능성
이 존재하며,
이는 모델이 학습 데이터의 특징을 안정적으로 추출하기 어려운 환경을 만들었을 가능성을 의미합니다.
그 결과
Feature space의 분류 경계가 명확히 형성되지 못하고
Softmax 출력이 두 클래스 사이에서 크게 구분되지 않으며
Accuracy가 랜덤 추정에 가까운 값(0.5)에 수렴했을 가능성이 큽니다.
모델이 학습 과정에서 특정 클래스만 반복적으로 예측하는 경향을 보였다면 다음과 같은 상황이 발생할 수 있습니다.
출력 logits의 초기값이 한쪽 클래스 방향으로 치우쳐 있음
Loss 감소는 일어나지만 decision boundary가 이동하지 않음
데이터셋이 균형적인 경우에도 정확도는 약 50% 유지됨
이는 특히
학습 초반 gradient 업데이트가 불충분하거나
Learning rate와 Weight 초기화 조합이 모델의 early-stage 분류 경계 형성을 방해할 때
자주 관찰되는 현상입니다.
VGG19는
매우 깊고
파라미터 수가 많으며
처음부터 학습시키기 어려운 모델 구조입니다.
만약 데이터셋이 비교적 적거나 다양성이 제한적인 경우,
모델이 충분한 표현 학습을 진행하지 못하고
표현 학습이 되지 않은 상태에서 classifier가 분류를 시도하게 되며
결과적으로 일반화 능력이 매우 낮아집니다.
이 경우 Validation Accuracy가 일정 수준에서 정체될 가능성이 큽니다.
Optimizer / Learning rate 등 학습 정책은
Gradient의 크기
Parameter 업데이트 속도
Loss surface 탐색 경로
에 큰 영향을 줍니다.
SGD를 사용할 경우
초기 단계에서 gradient가 충분히 누적되지 않으면
경계 이동이 매우 느려지며
local plateau 상태에서 머물 수 있습니다
이때 Validation Accuracy 역시 랜덤 추정값 근처에 정체될 수 있습니다.
위 요소들이 복합적으로 작용하여,
모델이 두 클래스를 명확히 구분할 만큼의 안정적인 Feature Representation을 형성하지 못하고, 출력 확률이 특정 클래스 또는 균형 상태 근처에서 수렴하며 Validation Accuracy는 약 0.5 수준에 고착되었을 가능성이 높습니다.