-
CIFAR-10 Classification을 수행하는 딥러닝 기반 네트워크의 성능을 향상시키는 프로젝트를 진행했습니다.
-
VGG(Visual Geometry Group)아키텍처VGG11,VGG16,VGG19를 각각 epoch 20회로 훈련시켰을 때 나타나는 과적합 현상을 해소하는 방안을 중점적으로 탐구했습니다. (weight_decay, Augmentation) 세 모델의 과적합을 모두 해소한 이후에는, 그 중 가장 성능이 높았던VGG16아키텍처를 사용하여 90% 정확도의 분류 성능까지 이끌어냈습니다. 아키텍처를 VGG16으로 선정한 이후에는 팀원들이 역할을 분담하여 optimizer 3종 (Adam, RMS prop, SGD with momentum)를 사용했을 때의 정확도를 비교하였고, 셋 중 가장 성능이 좋았던Adam을 Optimizer로 채택하게 되었습니다. -
4종의 Scheduler를 바꿔가며 성능을 비교했을 땐
CosineAnnealingLR Scheduler가 가장 우수한 성능을 보여 이를 채택하였고 -
Batch size 또한 16부터 128까지 바꾸어 성능을 비교하여 가장 정확도가 높은 모델을 제작하였던 64로 채택하였습니다.
-
이렇게 VGG16이라는 아키텍처를 기반으로 딥러닝 모델을 구성하는 다양한 파라미터들을 튜닝하는 방식으로 프로젝트를 진행한 결과, 92.28%의 분류성능을 갖는 VGG16 기반 CIFAR-10 Classification 모델을 제작할 수 있었습니다.
| 아키텍처 | 정확도 | epoch | Augmentation Type | Optimizer | Weight_decay | lr | Scheduler |
|---|---|---|---|---|---|---|---|
| VGG16 | 92.28% | 50 | Random Rotation Random Affine Random |
Adam | 0.00005 | 0.001 | CosineAnnealing w/ T_max = 50 |
- VGG16은 크기가 3x3으로 고정된 Convolution 필터를 사용한 것이 특징인 VGG 아키텍처의 일종입니다.
- 크기 2x2, stride 2 의 Maxpooling layer를 거치며 이미지 크기가 절반으로 줄어들고, 이후에 CBR (Conv+BatchNorm+ReLU) Block을 2~3회 거칩니다.
- 총 다섯번의 동일한 Max Pooling layer를 거치며 (HxWxC) = 1x1x512 크기의 텐서로 변환되는 것이 특징이며. (input_size : 32->16->8->4->2->1), 512개의 채널을 10개의 채널과 매칭하기위해 nn.Linear가 사용되었습니다.
- Validation Loss와 Training Loss를 비교할 수 있는 그래프를 제작하였습니다
- 훈련을 거듭하며 Training Loss는 줄어들고 있지만 실제 성능인 Validation Loss값은 오히려 점점 커지는 양상, 즉 OverFitting 현상을 확인할 수 있었습니다.
- 세 아키텍처 모두의 경우 Overfitting이 일어나고 있음을 확인했고, Validation Loss 개선을 위해 과적합 해소 방안을 탐구했습니다.

과적합 해소를 위해 다음의 방법을 시도해보았습니다.
- Augmentation
- L2 Regularization (weight_decay)
- DropOut 이 중 Augmentation과 L2가 탁월한 효과를 보였고, 최종 모델에 채택하였습니다.
