본문 바로가기

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

머신러닝 수업 프로젝트 (1) : 초록 및 소개

저는 이번 경희대학교의 2020년도 2학기 '머신러닝' 대체 기말고사로 캐글 대회에 참여했고, 이번 게시물은 해당 대회의 결과에 대한 최종 보고서를 좀 더 보기 편하게 재작성한 것입니다.


 

 

0. 초록

 

이번 대회의 목적은 여러 딥러닝 모델 및 기법들을 사용해, 총 10개의 클래스를 가진 CINIC-10 테스트 데이터 90,000장에 대한 예측 정확도를 최대화하는 것이었습니다. 단, 이때 사용되는 모델은 pre-trained되지 않아야 했으며, 파라미터 수는 200만개 이하로 제한되었습니다.

 

본 연구에선 대회의 목적 달성을 위해 DenseNet, Xception, PyramidNet을 파라미터 수 200만 개 이하로 변형하여 사용했습니다. 성능 향상을 위해 활용한 기법은 데이터 증강(Data Augmentation), Mish 활성화 함수(Mish Activation Function), 라벨 스무딩(Label Smoothing), 앙상블(Ensemble)이 있습니다.

 

이러한 방법들이 결국 유의미한 성능 향상 효과를 가져왔으며, 결과적으로 해당 기법들을 모두 적용한 PyramidNet에서 주어진 테스트 데이터 셋에 대해 약 86.3%의 정확도를 보였고, 총 21팀 중 19등이라는, 다소 아쉬운 결과를 얻었습니다.

 

키워드: CINIC-10, DenseNet, Xception, PyramidNet, 데이터 증강, Mish 활성화 함수, 라벨 스무딩, 앙상블

 

1. 소개

 

Deep Convolution neural networks (DCNNs) [1]은 컴퓨터 비전(computer vision) 분야에서 높은 성능을 보입니다. 컴퓨터 비전 분야에 딥러닝을 적용하기 시작했던 LeNet[2]부터 AlexNet[3], ZF-net[4], VGG[5], GoogleNet[6], ResNet[7], Inception ResNet[8] 등은 각각 새로운 네트워크 구조를 제안해 성능을 향상시켰습니다. 특히, ResNet은 short connection을 기반으로 한 residual learning 방법을 제시함으로써, 후속 모델들의 더 깊은 네트워크 구조를 가능하게 했습니다.

 

이번 대회는 200만 개의 파라미터 수로 제한된 환경 속에서 모델의 분류 정확도를 향상시키는데 그 목적이 있습니다. 4개월간 머신러닝 수업을 수강한 학생들은 이론적인 지식을 넘어서서, 다양한 딥러닝 분류 모델과 최적화 기법들을 코드 레벨에서 이해하고 구현해야 합니다. 모든 공학이 그러하듯, 공학자는 의뢰인의 요구에 따른 제한 사항 속에서 최상의 결과를 제공해야 하며, 이를 위해 수많은 trade-off를 고려해야하고, 수십번의 시행착오를 거쳐야 합니다. 수강생들은 이번 대회의 목적 달성을 위해 여러 가지 모델과 활성화 함수, 손실 함수 및 하이퍼 파라미터 조정, 그리고 다양한 성능 향상 기법 등을 이용하여 최적의 결과를 얻고자 경쟁합니다.

 

데이터셋으로 사용한 CINIC-10[9]은 CIFAR-10[10]을 확장한 데이터셋으로, ImageNet[11]의 일부 이미지를 CIFAR-10 이미지와 동일한 사이즈(32x32, RGB)를 갖도록 down sampling하여 얻은 이미지들을 포함합니다. CINIC-10은 CIFAR-10과 동일하게 10개의 클래스(비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭)로 분류됩니다. CINIC-10은 총 27만 장의 이미지를 가지며, 훈련(train), 검증(validation), 테스트(test) 데이터셋이 각각 9만 장의 이미지를 가집니다. CIFAR-10의 훈련 데이터셋이 5만 장의 이미지이므로, CINIC-10은 이의 1.8배에 해당하는 훈련 데이터셋을 갖는 셈입니다.

 

대회를 위해 본 연구에서는 이미지 분류에 있어 높은 성능을 보이는 세 모델 DenseNet[12], Xception[13], PyramidNet[14]을 활용했습니다. DenseNet은 ResNet의 short connection에 기반해 더 밀도(dense)있는 connection 방법을 제안한 모델입니다. Xception은 기존 Inception 모듈[6]에 Depthwise Seperable Convolution 과 유사한 연산을 적용한 모델입니다. PyramidNet은 ResNet의 down sampling에 주목하여, 특정 layer에서만 이루어지는 down sampling을 모든 layer에 나눠서 하고자 제안된 모델입니다.

 

모델의 더 나은 성능을 위해 개발된 여러 기법들 또한 많이 존재합니다. 본 연구에서는 데이터 증강(Data Augmentation) [15], Mish 활성화 함수(Mish Activation Function) [16], 라벨 스무딩(Label Smoothing) [17], 앙상블(Ensemble) [18]을 사용했습니다. 데이터 증강은 기존 훈련 데이터와 비슷한 데이터를 생성해 훈련 데이터셋의 크기를 늘림으로써 과적합을 방지하는 기법입니다. Mish 활성화 함수는 ReLU[19] 활성화 함수의 장점은 취하고 단점은 해결한 활성화 함수입니다. 라벨 스무딩은 Hard 라벨(0 또는 1)을 Soft 라벨(0과 1 사이의 값)로 바꿈으로써 모델의 과잉 확신(over confidence) 문제를 해소하는 기법입니다. 앙상블은 여러 예측 모델을 결합하여 더 나은 성능을 얻고자 하는 모델 개선 방법입니다.

 

지금까지 설명한 데이터, 모델 및 기법들은 바로 다음 게시글의 '2. 관련 연구'에서 더 자세히 설명할 예정입니다.