hyperparameter 개념 간단하게
1. hyperparameter와 parameter의 차이?
hyperparameter는 학습과정에서 control할 수 있는 parameter value를 의미하고 학습 전에 사람이 직접 설정해줘야함
parameter는 모델이 학습과정에서 자동으로 배워나가는 값
hyperparameter tuning이란 이러한 learning 알고리즘에서 hyperparameter를 최적화하는 과정임
2. hyperparameter optimization
model system의 매커니즘에 영향을 줄 수 있는 여러 요소들
batch_size, learning rate, loss, k-fold, dropout, regularization, optimizer, hidden layer 종류는 많음
hyperparameter가 어떤 것이 좋을지 반복하여 최적을 찾으려고함
그러나 hyperparameter는 변경할때마다 새로 학습해야하므로 최적을 찾기에 시간이 매우 많이 소요됨
grid search, random search 등이 있고 bayesian optimization을 주로 사용함
--------------------------------------------------------------------------------------------------------------------------------------------
예시)
hidden layer의 크기는 input,output layer의 크기보다 작아야하나?
꼭 그렇지는 않다. hidden layer의 크기는 적절하게 선택해야하는 hyperparameter이다.
보통은 연산을 효율적으로 하기 위해서 input보다 작게한다는데 크게하기도 하고 사람마다 다른가봄
--------------------------------------------------------------------------------------------------------------------------------------------------------
3. manual search
자동화된 tool을 사용하지 않고 손으로 직접 hyperparameter set 설정을 하나하나 바꿔가면서 test해보는 방식
4. grid search
test 가능한 모든 hyperparameter set 하나하나를 전부 test해보면서 어떤 hyperparameter가 성능이 좋은지 기록하는 방식이다
사람이 hyperparameter set을 직접 manual하게 설정해두고 거기서 가능한 모든 hyperparameter에 대해 모델 성능을 test해보는 것
manual search는 자동화된 도구 없이 찾는거고, grid search는 자동화된 tool로 사람이 설정해둔 범위 내에서 좋은 성능을 가지는 hyperparameter를 찾는 것
X1, X2가 hyperparameter고 초록색이 사람이 설정한 hyperparameter case임
예를 들어 각각 X1, X2가 0.1,0.2,..1.0으로 10개씩이면 총 10*10 = 100개의 조합 (X1,X2)에 대해 모두 model 성능을 테스트해보는 것
파란색 부분이 성능이 좋게 나온 부분이라고 함
test할 hyperparameter가 적으면 좋은 방법일 수 있지만 많아지면 시간이 너무 오래걸려 비효율적임
5. random search
탐색가능한 hyperparameter set을 사람이 설정하는 것이 아니라 랜덤하게 hyperparameter를 가지고와서 model 성능을 test해봄
랜덤하게 가지고 오는데 이게 맞는 것인가? 생각할 수 있지만 실제로 grid search보다 좋은 녀석들을 일반적으로 찾는다고 함
6. bayesian optimization
요새 대부분의 tool들이 이 방식을 제공함
grid search나 random search보다 효과적으로 찾음
bayesian optimization은 hyperparameter에서 validation data에 의해 평가되는 objective로 mapping하는 함수의 probabilistic model
결과가 불확실한 hyperparameter를 탐색하는 exploration과 optimum에 가까우리라 기대되는 hyperparameter를 찾는 exploitation의 균형을 찾고자함
처음에 random하게 hyperparameter를 선택하여 성능을 봄
이것을 반복하면서 이전 성능의 history를 통해 이전 성능에서 잘 나온 hyperparameter 영역을 조금 더 집중적으로 탐색함
성능이 잘 나오는 구간의 hyperparameter를 탐색하는 방식이라고 할 수 있음
오래하면 오래할수록 성능이 잘 나오는 구간을 보고 한번씩은 또 랜덤하게 선택함 그러면서 너무 한쪽으로만 쏠리지않도록 해주는 hyperparameter 탐색 방식
확실히 random search와는 다르게 model 성능이 좋은 부분을 집중적으로 탐색하고 있는 모습
'딥러닝 > 딥러닝 기초' 카테고리의 다른 글
결정을 기계에 맡기는 시대(deductive, inductive) (0) | 2024.05.09 |
---|---|
batch normalization 개념 간단하게 (0) | 2024.04.15 |
라그랑주 승수법 간단하게 (0) | 2024.03.01 |
gradient descent를 위한 gradient vector의 이론적 설명 간단하게 (0) | 2024.03.01 |
reproducibility를 위한 random seed (0) | 2023.12.11 |