[딥러닝 클래스 Review - ⑧] Hyperparameter optimization

[Hyperparameter Optimization]


머신러닝 뿐만 아니라 딥러닝에서 모델링(Modeling)을 할 때 중요한 부분하이퍼 파라미터(Hyper parameter)의 조정입니다.

하이퍼 파라미터에 따라 모델의 성능이 달라지기 때문에 파라미터 값을 조정하는건 중요한 역할을 합니다.


 하지만 하이퍼 파라미터는 분석자가 조정해서 사용해야 하므로 초기값을 어떤 값을 정해야하고 결과를 보고 어떻게 파라미터값을 수정해야 하는지에 대한 고민이 생기게 됩니다. 하이퍼 파라미터 값을 조정하는 방법으로 세가지가 있습니다.


첫번째로 분석자가 임의로 파라미터 값을 바꾸어 가면서 성능이 높은 모델을 찾아내는 방법이고, 이 외에 가장 많이 사용하는 방법으로 파라미터의 범위를 지정해주고 단계별로 적용해 가면서 가장 높은 성능 모델을 찾는 방식인 Grid Search가 있습니다. 마지막으로 랜덤으로 값을 넣어서 조정하는 Random Search방식도 있습니다.

 그러나 이런 방식으로 찾은 하이퍼 파라미터값이 모델에 가장 적합하다고 볼 수는 없습니다. 알고리즘적으로 탐색하는 방식이 최적화된 알고리즘이라 볼 수는 없기 때문입니다.


 이런 문제를 극복하는 방법으로는 이번 실습시간에 사용한 Bayesian Optimization 라이브러리를 적용하는 것입니다. 앞선 방법과는 다르게 Bayesian Optimization 방법을 사용하면 베이지안 최적화 알고리즘에 의해 가장 높은 성능을 가지는 모델의 하이퍼 파라미터를 모두 찾을 수 있습니다.


실습시간에 사용한 Bayesian Optimization은 베이지안 최적화 알고리즘에 따라 확률적 추정을 해주는 Surrogate Model을 GP Regression 모델로 설정합니다. 그리고 Acquistion Function을 사용해서 최적화된 하이퍼 파라미터값을 찾아나가는 과정을 설정해줍니다. 직접 코드를 통해 이론시간에 배웠던 내용이 어떻게 적용이 되는지 확인해 볼 수 있습니다.

 그리고 나서 Bayesian Optimization 라이브러리를 이용해서 딥러닝 모델에 사용된 학습률(learning rate)와 L2 규제 값을 구해 봤습니다. 이런 과정을 통해 내가 만든 모델에 가장 적합한 학습률과 L2 규제 파라미터값을 한 번에 구할 수 있습니다.