현업에서 딥러닝 모델을 돌리다 보면
initialization 값(여기서 initialization 값이란 모델에 처음으로 배정되는 weight 값들을 말한다) 때문에 스트레스를 받는다.
왜그런가하면 일반적인 딥러닝의 하이퍼파라미터인 learning rate와 batch size, epoch 등을 결정했다고 하더라도 처음에 배정된 initialization 값에 따라 모델 결과가 돌릴때 마다 다르게 나오기 때문이다.
(이는 XGBoost나 SVM과 같은 하이퍼파라미터에 deterministic한 모델들과는 다른 특징이다.)
그리고 그 영향력은 생각보다 쎄다. 어쩌면 모델의 성능에서 가장 영향력이 크다고 알려진 learning rate보다 영향력이 클지도 모른다..
그렇기 때문에 optuna 등으로 하이퍼파라미터 서치를 할때, initialization 값을 고정시켜놓고 learning rate나 batch size 같은 하이퍼파라미터를 찾는게 더 바람직할 수 있다.
하지만 그렇다고 하더라도 initialization 값을 하나로 고정시켜놓고 딥러닝 모델을 최적화하는것은 딥러닝의 기능을 완전 극대화하지 못할 수 있다.
왜냐하면 딥러닝 모델이란 기본적으로 수많은 weight들로 이루어져 있으며, loss function 역시 상당히 고차원함수일것이 분명하기에 수많은 local optimal point들이 존재할 것이기 때문이다. 우리가 어떤 initialization 값으로 시작하느냐에 따라 똑같은 learning rate 와 batch size더라도 모델 성능이 천차만별로 바뀌는 것이다.
따라서 실제로 딥러닝 모델을 사용할 때는 여러 initialization 값들을 try 해볼 필요는 있다. 즉 하나의 initialization 값으로 최적의 learning rate와 batch size를 찾은 후에 (물론 validation 기준으로) 이것을 여러 initialization 값에 반복하여 여러 모델 후보들을 만들어 놓는다. 그리고 그 후에 test 성능 기준으로 최적 모델을 선정(여러 initialization 값을 기반으로 만들어진 validation을 거친 모델들 가운데)하는것이 바람직하다. (이에 대한 간단한 실험적 증명도 나중에 기회가 되면 포스팅해볼 예정이다)
아무튼 initialization value의 힘은 생각보다 어마어마하므로, 딥러닝 모델링 시에는 이를 꼭 염두에두고 모델을 사용해야 딥러닝의 효과를 극대화할 수가 있다.
'데이터 사이언스 > 머신러닝 & AI' 카테고리의 다른 글
SHAP value에 대하여 (이론편) (2) | 2024.10.10 |
---|---|
회귀문제에서 Random Forest, SVM, XGBoost 튜닝하는법 (in python) (1) | 2022.10.08 |
크로스엔트로피와 최대가능도추정량(MLE)간의 관계 (0) | 2022.08.17 |
엔트로피, 크로스엔트로피, 쿨벡라이블러 다이버전스 (0) | 2022.08.15 |
딥러닝과 머신러닝, 그리고 모수적 방법과 비모수적 방법이란 ? (0) | 2022.08.15 |