티스토리 뷰

Mini Project : Training an MLP on MNIST

 - 딥러닝은 이해하려 한다면 쉽지않을뿐더러, 실무에서 관습상 자연스레 사용하는 것들이 이론보다 앞서있는 경우가 많다.

 - 딥러닝이 처음인 경우 모델의 작동방식에 대한 직관을 키우기위해 여러 모델을 가지고 이런저런 시도를 해보는 것이 좋다.

 - 이번 미니 프로젝트에선 제공된 mnist_mlp.ipynb 파일을 바탕으로

 - 신경망을 수정하고 모델의 구성을 변경해보며 그 결과를 비교해볼 것임.


** 참고

 - over-fitting 이 감지되고있다는 판단의 근거는 validation loss와 training loss를 비교함으로써 알아낼 수 있다.

 - training loss가 validation loss보다 훨씬 낮은경우 그 모델은 over-fitting되었다고 판단할 수 있다.






Training an MLP on MNIST

 · 1. hidden layer의 노드 수를 증가시키고 감소시키며 over-fitting 또는 under-fitting의 근거 파악

 - 최초 디폴트값




- 노드의 수를 64로 줄였을 때




- 노드의 수를 2048로 늘렸을 때




 - 노드수 518 / training_loss : 0.0273 / validation_loss : 0.0975 

 - ( training_loss < validation_loss / abs(training_loss - validation_loss) = 0.0702)

 

 - 노드수 64 / training_loss : 0.1254 / validation_loss : 0.1100 

 - ( training_loss > validation_loss / abs(training_loss - validation_loss) = 0.0154)


 - 노드수 2048 / training_loss : 0.0417 / validation_loss : 0.1399

 - ( training_loss < validation_loss / abs(training_loss - validation_loss) = 0.0982)


 - 따라서 노드의 개수 518개를 기준으로 아래로 낮추게 될 경우 

 - 상대적으로 under-fitting, 올리게 될 경우 over-fitting이 되고있음을 확인할 수 있다.






 · 2. hidden layer의 수를 증가시키고 감소시키며 over-fitting 또는 under-fitting의 근거 파악

 - 디폴트값은 위 참고




 - hidden layer 2개추가(그에따른 dropout도 2개 추가)




 - hidden layer 2개제거(hidden layer 총 0개)




 - 노드수 518 / hidden_layer : 2개 / training_loss : 0.0273 / validation_loss : 0.0975 / Test_accuracy : 97.9700%

 - ( training_loss < validation_loss / abs(training_loss - validation_loss) = 0.0702)

 

 - 노드수 518 / hidden_layer : 4개 / training_loss : 0.0735 / validation_loss : 0.1569 / Test_accuracy : 98.0600% 

 - ( training_loss < validation_loss / abs(training_loss - validation_loss) = 0.0834)


 - 노드수 518 / hidden_layer : 0개 / training_loss : 0.2688 / validation_loss : 0.2663 /  Test_accuracy : 92.5100%

 - ( training_loss > validation_loss / abs(training_loss - validation_loss) = 0.0025)


 - 따라서 hidden layer의 개수를 기준으로 

 - layer의 개수를 늘리게 될 경우 Test_accuracy는 더 커지지만, 상대적으로 over-fitting

 - 줄이게 될 경우 Test_accuracy 감소 및 상대적으로 under-fitting이 되고있음을 확인할 수 있다.






 · 3. dropout 레이어 제거 후 over-fitting 여부 확인

 - 디폴트값은 위 참고




 - dropout layer 제거 후


 - 노드수 518 / hidden_layer : 2개 / dropout : 2개 / training_loss : 0.0273 / validation_loss : 0.0975 / Test_accuracy : 97.9700%

 - ( training_loss < validation_loss / abs(training_loss - validation_loss) = 0.0702)

 

 - 노드수 518 / hidden_layer : 2개 / dropout: 0개 / training_loss : 0.0102 / validation_loss : 0.1480 / Test_accuracy : 97.9100% 

 - ( training_loss < validation_loss / abs(training_loss - validation_loss) = 0.1378)


 - 따라서 dropout 레이어가 없는경우 Test_accuracy 감소, 상대적으로 over_fitting됨






 · 4. ReLU activation function 제거시 test accuracy에 어떤 영향을 미치는지?

 - 디폴트값은 위 참고




 - ReLU function 제거


 - 노드수 518 / hidden_layer(ReLU function activated) : 2개 / training_loss : 0.0273 / validation_loss : 0.0975 / Test_accuracy : 97.9700%

 - ( training_loss < validation_loss / abs(training_loss - validation_loss) = 0.0702)

 

 - 노드수 518 / hidden_layer(ReLU function deactivated) : 2개 / training_loss : 0.3206 / validation_loss : 0.2985 / Test_accuracy : 91.5600% 

 - ( training_loss > validation_loss / abs(training_loss - validation_loss) = 0.0221)


 - ReLU activation function 제거시 Test accuracy 감소, 상대적으로 under_fitting 됨






 · 5. pre-processing step 제거시 test accuracy에 어떤 영향을 미치는지?

- pre-processing step 주석처리


 - Test accuracy가 급감한 것을 확인할 수 있다.

 - 즉, pre-processing step에서 모든 픽셀을 255로 나눠줘 0과 1사이의 값으로 정규화 해 주는것은

 - 정확도와 직결되는 부분이라는 결론을 내릴 수 있다.






 · 6. 다른 optimizer를 사용했을때의 test accuracy에 어떤 영향을 미치는지?

 - stochastic gradient descent를 사용해보도록 하자.

 - optimizer를 SGD(stochastic gradient descent)로 변경


 - optimizer : RMSProp / Test_accuracy : 97.9700%

 - optimizer : SGD / Test_accuracy : 93.3400%


 - RMSProp 가 더 정확한 Test_accuracy를 도출해냄






 · 7. batch 크기를 증감하였을땐?

 - 디폴트 batch size = 128



 - batch 크기 512일 때




- batch 크기 32일 때


 - batch size = 128 / Test_accuracy : 97.9700%

 - batch size = 512 / Test_accuracy : 98.0100%
 - batch size = 32 / Test_accuracy : 97.5900%




 - 인자들이 모델의 정확도에 미치는 영향에 대해 더 알아보려면 아래

 - https://machinelearningmastery.com/grid-search-hyperparameters-deep-learning-models-python-keras/

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함