본문 바로가기
Python_Tensorflow

[Machine Learning] Learning Rate ( 학습률 )

by 신입같은 3년차 2018. 7. 22.

머신러닝 단기집중과정 ( 손실줄이기 참고  )를 참고하였습니다. 이미지도 참고해서 사용하였고 저의 생각만 쉽게 이해할수 있도록 정리한것입니다.



처음 Machine Learning을 시작하면서 Kaggle의 SignLanguage를 해보려고 시도했었습니다.


처음으로 만들어본 허접한 코드는 [ https://github.com/zzdd1558/KaggleSignLanguage ]에서 볼수있습니다 ^^.. Dataset도 같이 있습니다.


만들면서 겪었던 이슈는 아무리 학습을 시켜도 Accuracy가 33% 이상을 넘지 않는다는 것이었습니다. 


 Train_data와 Test_data , Train_label , Test_label은 사이킷런의 train_test_split를 사용하여 85%는 Training_Data , 15%는 Test_Data로 추출하였는데 이상해서 찾아본 결과 


학습률( Learning Rate )를 0.01로 주었기 때문이었습니다. 0.001로 바꾼 순간 90%이상으로 Accuracy가 올라간것을 확인할 수 있었습니다 . 


이러한 이슈를 겪고난후 Learning Rate가 어떠한 영향을 미치는지 다시 알아보면서 이글을 찾게되었습니다.




학습률 ( Learning Rate )가 낮을경우  기존에 있던 시작점으로부터  기울기 * Learning Rate만큼 이동하는데 Learning Rate가 작다면 그만큼 천천히 내려가게 되어 학습하는 속도가 매우 오래 걸릴것입니다.


그럼 이와 반대로 Learning Rate가 높게 된다면 어떻게 될까요 . 당연히 안되겠죠? 이유를 알아보겠습니다.




Learning rate가 너무 크다면 최소값을 지나쳐버려 정확한 학습을 할수없게 됩니다.


저와 같은 초보자들이 본다면 그래서 최적의 Learning_Rate는 어떻게 찾는데??? 라는 생각을 할 수 있을거 같습니다.


이러한 방법에 대해 찾아봤는데 구글 디벨로퍼에서 찾아보니  [ 골디락스 ] 학습률이 있다고 합니다.. ( 저도 잘 모릅니다 , url걸어놨으니 영어잘하시는분이 보시면 될것같습니다. )


골디락스 학습률 테스트 ] 이글로 보았을때는 경사하강법에서 최저점에 도달하는 단계 수를 최소화하는 것이라고 설명되있는듯하다. ( 정확하지 않을수 있음., )


실무에서는 이렇게 단번에 테스트 되는 학습률( Learning Rate )를 찾기 힘들것같다는게 참고사항에 나와있다.


다른글들을 읽어봐도 직접 테스트해보지 않는이상 정확한값을 찾기는 어려울것 같다.


따라서 최적의 LearningRate를 찾고싶다면 다양한 Learning Rate를 상요해서 여러번 테스트하는것이 최선인것 같다 . 




반응형

댓글