본문 바로가기

딥러닝 & 머신러닝/프로젝트

머신러닝 수업 프로젝트 (6) : 기법 비교 및 최종 실험, 결론, 사용 코드

E. 데이터 증강 기법에 대한 비교 실험

 

Table 8. 데이터 증강 기법에 대한 비교 실험
Figure 36. 데이터 증강 기법 비교 실험 시각화

 

Table 8과 Figure 36은 [A. 실험 조건]에서 설명한 기본적인 실험 조건 아래에서 PyramidNet에 데이터 증강 기법을 실험한 결과를 나타냅니다.  데이터 증강 기법의 경우 Basic과 Various로 구분됩니다. Basic은 Random Crop과 Random Horizontal Flip만을 사용한 것이고, Various는 Table 3의 모든 데이터 증강 기법을 사용한 것입니다.

 

결과적으로 Various 데이터 증강 기법을 사용했을 때 0.82737의 Test Accuracy로 Basic 방법보다 더 높은 결과를 보여주었습니다. 따라서 Table 3에 명시된 모든 데이터 증강 방법을 최종 모델에 사용했습니다.

 

F. 활성화 함수에 대한 비교 실험

 

Table 9. 활성화 함수에 대한 비교 실험
Figure 37. 활성화 함수 비교 실험 시각화

 

Table 9와 Figure 37은 각기 다른 활성화 함수 ReLU, Swish, Mish를 적용한 PyramidNet을 학습률 0.001, 배치 사이즈 32, Adam 옵티마이저를 사용해서 155epoch 동안 훈련 후 비교한 결과를 나타냅니다. 이때 Table 3의 모든 데이터 증강 기법을 사용했습니다.

 

한편 Swish 활성화 함수는 Mish와 비슷한 장점을 갖는 활성화 함수며, ReLU, Mish와 함께 그 성능을 비교하고자 선정했습니다. Swish 활성화 함수는 Figure 9에서 파란색 그래프로 나타납니다.

 

결과적으로 Mish 활성화 함수를 사용했을 때 0.85041의 Test Accuracy로 가장 높은 결과를 보여주었습니다. 따라서 Mish 활성화 함수를 최종 모델에 적용했습니다.

 

G. 최종 실험

 

지금까지의 각 실험 과정에서 구한 최적의 파라미터인 학습률 0.001, 배치 사이즈 32, Adam 옵티마이저를 PyramidNet에 적용하고, 여기에 Mish 활성화 함수, Table 3의 모든 데이터 증강 기법까지 적용해서 최고의 성능을 이끌어내고자 했습니다. 위 조건 하에 여러 epoch에서 모델을 훈련한 결과, 155epoch에서 0.85041의 Test Accuracy를 보였습니다. 이후 위 조건에서 학습률만 0.0025로 변경해서 155epoch 동안 훈련한 결과 0.85080의 Test Accuracy를 보였습니다.

 

이처럼 가장 높은 Test Accuracy가 도출된 두 모델을 입력 노드 수가 512개인 Fully Connected Layer에 연결시켜 앙상블하였고, 해당 모델을 200epoch 동안 훈련한 결과 최종적으로 0.86298의 Test Accuracy를 얻었습니다.

 

5. 결론

 

이번 대회에서는 여러 모델과 기술들을 활용하여 10개의 클래스를 가진 CINIC-10 이미지들을 높은 정확도로 분류하는 것이 그 목적이었습니다. 본 연구에서는 딥러닝 모델 DenseNet, Xception, PyramidNet을 대회의 규정에 맞게 그 파라미터 수를 줄여서 사용하했습니다. 또한 모델의 성능 향상을 위해 데이터 증강 방법, 라벨 스무딩, Mish 활성화 함수, 앙상블 기법을 사용했습니다. 결과적으로 같은 조건일 때 PyramidNet의 성능이 세 모델 중 가장 좋았으며, 사용한 방법들 또한 성능을 높이는 데 주요한 역할을 했습니다. 결과적으로 최종 점수 0.86298로 대회를 마무리했습니다.

 

본 연구에서 미흡한 점 및 보충해야 할 점은 다음과 같습니다.

 

첫째, 대회의 목적을 달성하기 위해선 처음부터 파라미터 수가 200만 개 이내인 모델을 찾아서 활용해야 했습니다. 본 연구에선 파라미터 수가 200만 개 이상인 DenseNet, Xception을 변형하여 사용했는데, 그렇기에 원 모델의 성능을 제대로 도출하지 못한 점이 아쉽습니다.

 

둘째, PyramidNet의 파라미터 수를 논문에서 제시한 대로 사용해보고, 200만 개에 가깝게 설계해서도 사용해봐야 했습니다. 본 연구에선 89만 개의 파라미터를 가진 변형 PyramidNet이 200만 개에 가까운 파라미터를 가진 다른 두 모델보다 월등한 성능을 보였습니다. 그 때문에 계속 파라미터 수는 고정하고 다른 하이퍼 파라미터들만 바꿔 가며 실험을 진행했는데, 모델 자체의 파라미터 수도 바꾸면서 실험했다면 더 좋은 결과를 얻을 수 있었을 것으로 예상됩니다.

 

셋째, 더 다양한 성능 향상 기술들을 찾아서 공부하고 적용해봐야 했습니다. 데이터 증강 기법의 경우 본 연구에서는 pytorch 자체 메소드만을 이용했는데, cutout[27] 등의 기법이 있다는 것을 알게 되었습니다. 옵티마이저의 경우 SGD나 Adam 등 기본적인 것들만 사용했는데, SAM[28] 등의 기법이 존재한다는 것을 깨달았습니다. 규제 기법의 경우 Batch Normalization과 Dropout[29] 정도를 알고 있었는데, shake drop[30] 등의 기법이 있다는 것 또한 알게 되었습니다.

 

향후 대회 및 연구에서는 본 연구에서 사용한 모델 및 기법들뿐만 아니라, 이번 대회를 통해 새로이 알게 된 기술들 또한 활용하여 더욱 탁월한 성과를 이뤄낼 수 있도록 노력하겠다고 다짐했습니다.

 

6. 참고 문헌

 

[1] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to handwritten zip code recognition. Neural computation, 1989.

[2] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradientbased learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324, 1998.

[3] A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems, pages 1097–1105, 2012.

[4] M. D. Zeiler and R. Fergus. Visualizing and understanding convolutional networks. In Computer Vision–ECCV 2014, pages 818–833. Springer, 2014.

[5] K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556, 2014.

[6] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 1–9, 2015.

[7] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016.

[8] C. Szegedy, S. Ioffe, and V. Vanhoucke. Inception-v4, inception-resnet and the impact of residual connections on learning. arXiv preprint arXiv:1602.07261, 2016.

[9] L. N. Darlow, E. J. Crowley, A. Antoniou, A. J. Storkey, CINIC-10 is not ImageNet or CIFAR-10. arXiv preprint arXiv:1810.03505, 2018.

[10] A. Krizhevsky and G. Hinton. Learning multiple layers of features from tiny images. Tech Report, 2009.

[11] J. Deng, W. Dong, R. Socher, L.-J. Li, K. Li, and L. FeiFei. Imagenet: A large-scale hierarchical image database. In CVPR, 2009

[12] G. Huang, Z. Liu, and K. Q. Weinberger. Densely connected convolutional networks. arXiv preprint arXiv:1608.06993, 2016.

[13] F. Chollet, Xception: Deep Learning with Depthwise Separable Convolutions. arXiv preprint arXiv:1610.02357v3, 2017.

[14] D. Han, J. Kim, and J. Kim, Deep pyramidal residual networks, in CVPR, 2017.

[15] J. Wang, L. Perez, The Effectiveness of Data Augmentation in Image Classification using Deep Learning. arXiv preprint arXiv:1712.04621, 2017.

[16] Diganta Misra, Landskape, Mish: A self Regularized Non-Monotonic Activation Function. arXiv preprint arXiv:1908.08681v3, 2020.

[17] Rafael Muller, Simon Kornblith, Geoffrey Hinton, When Does Label Smoothing Help?. arXiv preprint arXiv:1906.02629v3, 2020.

[18] Balaji Lakshminarayanan, Alexander Pritzel, Charles Blundell, Simple and Scalable Predictive Uncertainty Estimation Using Deep Ensembles. arXiv preprint arXiv:1612.01474v3, 2017.

[19] V. Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In ICML, 2010.

[20] A. Veit, M. Wilber, and S. Belongie. Residual networks behave like ensembles of relatively shallow networks. In NIPS, 2016.

[21] Prajit Ramachandran, Barret Zoph, Quoc V. Le, SWISH: A Self-Gated Activation Function. arXiv preprint arXiv:1710.05941v1, 2017.

[22] S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML, 2015.

[23] D. P. Kingma, J. Ba, Adam: A Method for Stochastic Optimization. arXiv preprint arXiv:1412.6980, 2014.

[24] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to handwritten zip code recognition. Neural computation, 1989.

[25] John Duchi, Elad Hazan, and Yoram Singer. Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. Journal of Machine Learning Research, 12:2121–2159, 2011.

[26] T. Tieleman and G. Hinton. Divide the gradient by a running average of its recent magnitude. COURSERA: Neural Networks for Machine Learning, 4, 2012. Accessed: 2015- 11-05.

[27] T. D. DeVries, G. W. Taylor, Improved Regularization of Convolutional Neural Networks with Cutout. arXiv preprint arXiv:1708.04555, 2017.

[28] P. Foret, A. Kleiner, H. Mobahi, B. Neyshabur, Sharpness-Aware Minimization for Efficiently Improving Generalization. arXiv preprint arXiv:2010.01412, 2020.

[29] G. E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R. R. Salakhutdinov. Improving neural networks by preventing coadaptation of feature detectors. arXiv:1207.0580, 2012.

[30] Y. Yamada, M. Iwamura, T. Akiba, K. Kise, ShakeDrop Regularization for Deep Residual Learning. arXiv preprint arXiv:1802.02375, 2020.

 

사용한 코드는 아래에서 확인할 수 있습니다.

https://github.com/jhcha08/KHU_Machine_Learning/tree/main/ML_Competition