본문 바로가기

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

머신러닝 수업 프로젝트 (5) : 모델 및 하이퍼 파라미터 비교 실험

4. 실험

 

A. 실험 조건

 

Figure 13. CINIC-10

이번 대회에서 사용한 데이터는 CINIC-10입니다.  CINIC-10은 32x32 크기의 RGB 이미지 데이터로 각각 90,000장의 훈련, 검증, 테스트 데이터로 구성되어 있으며 비행기, 자동차, 새, 고양이, 사슴, 개, 개구리, 말, 배, 트럭 총 10개의 클래스로 구성되어있습니다. Figure 13은 CINIC-10 데이터의 예시를 보여줍니다.

 

실험 환경은 구글 코랩(Google Colab)이며, 그에 따라 GPU는 Tesla K80 또는 Tesla P100을 사용하였습니다.

 

실험에선 우선 최적의 성능을 나타내는 모델을 탐색하기 위해 기본적인 실험 조건을 설정했습니다. 하이퍼 파라미터인 학습률(learning rate)은 0.001, 배치 사이즈 (batch size)는 64, 옵티마이저(optimizer)는 Adam[23], 훈련 횟수는 100epoch, 손실 함수(loss function)는 라벨 스무딩 기법이 활용된 Cross Entropy Loss로 설정했습니다. 이때 smoothing parameter는 0.1을 사용했습니다. 데이터 증강은 적용하지 않았습니다.

 

최적의 모델을 찾은 후, 학습률, 배치 사이즈, 옵티마이저 변경에 따른 해당 모델의 학습 정확도와 테스트 정확도를 측정, 비교하여 최적 하이퍼 파라미터 값을 모색했습니다. 옵티마이저 비교의 경우 SGD[24]는 neostrov를 사용했습니다. 이외에 언급하지 않은 하이퍼 파라미터는 모두 베이스 코드에 명시된 값을 사용하였습니다. 한편, 최적 모델 이외의 모델들에 대해서도 해당 실험을 진행하여 하이퍼 파라미터 변경이 모델의 성능에 미치는 영향을 다양하게 비교 분석하고자 했습니다.

 

추가적으로, 최적 모델에 대해서는 데이터 증강 기법의 효과 비교와 활성화 함수의 종류에 따른 성능 비교 또한 수행했습니다.

 

B. 모델간 비교 실험

 

Table 4. 모델간 비교 실험
Figure 14. 모델간 비교 실험 시각화

Table 4와 Figure 14는 [A. 실험 조건]에서 설명한 기본적인 실험 조건 아래에서 세 모델을 실험한 결과를 나타냅니다. 이때 Table 4의 train은 Last Top 1 Train Accuracy를 의미하며, test는 모델의 예측 결과를 제출했을 때 기록된 점수, 즉 Test Accuracy를 뜻합니다. 이후 나올 표들의 train과 test도 같은 의미를 가집니다.

 

결과적으로 PyramidNet의 Test Accuacy가 0.81637로, 다른 두 모델에 비해 현저히 높은 결과를 나타냈습니다. 이에 본 연구에서는 다양한 기법들을 적용할 최적 모델로 PyramidNet을 선정했습니다.

 

C. PyramidNet에서의 하이퍼 파라미터 비교 실험

 

Table 5. PyramidNet에서의 하이퍼 파라미터 비교 실험 결과

 

1. 학습률 비교

 

학습률은 모델의 훈련이 진행되는 동안 업데이트 되는 가중치 값의 양을 뜻하며, 모델의 성능에 중대한 영향을 미치는 하이퍼 파라미터 중 하나입니다.  따라서 실험을 통해 적절한 학습률을 찾고자 하였습니다.

 

 

Figure 15. PyramidNet에서의 학습률 비교 실험 시각화

 

학습률을 제외한 나머지 하이퍼 파라미터인 배치 사이즈는 64, 옵티마이저는 Adam을 사용하였으며, 100epoch동안 모델을 훈련했습니다. 다음으로 학습률은 0.1에서 0.0001까지, 즉 0.1부터 1/10씩 감소시켜 총 4가지의 학습률에서 성능 평가를 진행했습니다.

 

결과적으로 학습률이 0.001일 때 0.81637의 Test Accuracy로 가장 높은 결과를 보여주었습니다. 따라서 최종 모델의 학습률도 0.001로 설정했습니다. Table 5의 왼쪽 열과 Figure 15는 PyramidNet에서의 학습률 비교 실험 결과를 나타냅니다.

 

 

Figure 16, 17. PyramidNet에서 각 학습률에 따른 훈련 정확도 및 훈련 손실값 변화 그래프

 

Figure 16과 17은 각각 PyramidNet에서 4가지 학습률에 따른 훈련 정확도와 훈련 손실값 변화를 나타냅니다. 이때 두 그래프의 x축은 epoch를 나타내며, y축은 각각 훈련 정확도와 훈련 손실값을 나타냅니다. 이후 나올 그래프들의 x축과 y축도 같은 의미를 가집니다.

 

한편 해당 그래프만 분석해선 최적의 학습률을 결정하기 어려우므로, Table 5또는 Figure 15와 같이 최종 결과를 시각화해서 판단하는 것이 좋습니다.

 

2. 배치 사이즈 비교

 

배치 사이즈는 모델 훈련에서 한 번의 iteration동안 사용되는 훈련 데이터의 갯수를 의미합니다. 학습률만큼 성능의 큰 변화를 일으키지는 않지만, 중요한 하이퍼 파라미터 중 하나입니다. 따라서 배치 사이즈 또한 실험을 통해 그 최적값을 찾고자 했습니다.

 

 

Figure 18. PyramidNet에서의 배치 사이즈 비교 실험 시각화

 

배치 사이즈를 제외한 나머지 하이퍼 파라미터인 학습률은 0.001, 옵티마이저는 Adam을 사용하였으며, 100epoch동안 모델을 훈련했습니다. 다음으로 배치 사이즈는 32부터 2배씩 증가시켜 32, 64, 128, 256까지 총 4가지의 배치 사이즈에서 성능 평가를 진행했습니다.

 

결과적으로 배치 사이즈가 32일 때 0.81985의 Test Accuracy로 가장 높은 결과를 보여주었습니다. 따라서 최종 모델의 배치 사이즈도 32로 설정했습니다. Table 5의 가운데 열과 Figure 18은 PyramidNet에서의 배치 사이즈 비교 실험 결과를 나타냅니다.

 

 

Figure 19, 20. PyramidNet에서 각 배치 사이즈에 따른 훈련 정확도 및 훈련 손실값 변화 그래프

 

Figure 19와 20은 각각 PyramidNet에서 4가지 배치 사이즈에 따른 훈련 정확도와 훈련 손실값 변화를 나타냅니다. 해당 그래프만 확인하면 PyramidNet은 배치 사이즈의 영향을 거의 받지 않는 것처럼 보여, 역시 구체적 시각화를 통해 최적 배치 사이즈를 찾는 것이 좋습니다.

 

3. 옵티마이저 비교

 

옵티마이저는 신경망의 예측 손실 값을 줄이기 위해 가중치 및 학습률과 같은, 신경망의 속성 값을 변경하는데 사용하는 알고리즘입니다. 본 연구에서 사용한 옵티마이저는 SGD, AdaGrad[25], RMSProp[26], Adam입니다.

 

SGD는 가장 널리 사용되는 옵티마이저 중 하나로, 가중치의 gradient 값을 이용해 손실 함수가 기울어진 방향으로 가중치 값을 갱신하여 최적값에 도달하겠다는 아이디어를 구현한 것입니다. 그러나 손실 함수의 모양이 복잡한 경우 학습이 정체될 수 있다는 단점이 있습니다. Adagrad는 고정된 학습률 값이 너무 크거나 작아서 학습이 잘 안되는 경우를 방지하기 위해 학습률 적응 기법을 사용한 것입니다. 그러나 이 방식을 사용하게 되면 학습이 진행됨에 따라 학습률이 0에 가까워져 학습이 더 이상 진행되지 않는 문제가 발생합니다. RMSprop은 앞서 설명한 Adagrad의 단점을 보완하기 위해 지수 이동 평균을 사용한 알고리즘입니다. Adam은 Adagrad에 momentum 아이디어를 합친 것으로, 매개변수 공간을 효율적으로 탐색하는 기법을 사용한 알고리즘입니다.

 

 

Figure 21. PyramidNet에서의 옵티마이저 비교 실험 시각화

 

옵티마이저를 제외한 나머지 하이퍼 파라미터인 학습률은 0.001, 배치 사이즈는 64를 사용하였으며, 100epoch동안 모델을 훈련했습니다. 다음으로 옵티마이저는 SGD, AdaGrad, RMSProp, Adam 총 4가지를 사용하여 성능 평가를 진행했습니다.

 

결과적으로 옵티마이저가 Adam일 때 0.81637의 Test Accuracy로 가장 높은 결과를 보여주었습니다. 따라서 최종 모델의 옵티마이저도 Adam으로 설정했습니다. Table 5의 오른쪽 열과 Figure 21은 PyramidNet에서의 옵티마이저 비교 실험 결과를 나타냅니다.

 

 

Figure 22, 23. PyramidNet에서 각 옵티마이저에 따른 훈련 정확도 및 훈련 손실값 변화 그래프

 

Figure 22와 23은 각각 PyramidNet에서 4가지 옵티마이저에 따른 훈련 정확도와 훈련 손실값 변화를 나타냅니다. 해당 그림에서 Adam과 RMSProp의 경향이 매우 비슷해 두 그래프가 겹쳐보입니다. 역시 구체적 시각화를 통해 최적의 옵티마이저를 찾는 것이 좋습니다.

 

D. 기타 모델에서의 하이퍼 파라미터 비교 실험

 

앞서 B. 모델간 비교 실험에서 사용된 모델인 DenseNet, Xception에 대해서도 하이퍼 파라미터 비교 실험을 진행해보았습니다.

 

Table 6. DenseNet에서의 하이퍼 파라미터 비교 실험 결과 
Figure 24~29. DenseNet에서 각 하이퍼 파라미터에 따른 훈련 정확도 및 훈련 손실값 변화 그래프

 

Table 6는 DenseNet에서의 하이퍼 파라미터 비교 실험 결과를 나타내며, Figure 24~29는 DenseNet에서의 각 하이퍼 파라미터의 변화에 따른 훈련 정확도 및 손실값 변화 그래프를 나타냅니다. 

 

Table 7. Xception에서의 하이퍼 파라미터 비교 실험 결과
Figure 30~35. Xception에서 각 하이퍼 파라미터에 따른 훈련 정확도 및 훈련 손실값 변화 그래프

 

Table 7은 Xception에서의 하이퍼 파라미터 비교 실험 결과를 나타내며, Figure 30~35는 Xception에서의 각 하이퍼 파라미터의 변화에 따른 훈련 정확도 및 손실값 변화 그래프를 나타냅니다.  

 

결과적으로, DenseNet에서는 학습률 0.001, 배치 사이즈 64, Adam 옵티마이저를 사용하는 것이 가장 성능이 좋고, Xception에서는 학습률 0.01, 배치 사이즈 32, Adam 옵티마이저를 사용하는 것이 가장 성능이 좋다는 것이 밝혀졌습니다.