인공지능 AI

[인공지능/AI] Hyperparameter Tuning (Optimization) 하이퍼파라미터 튜닝 (최적화)

Hyperparameter?

하이퍼파라미터는 머신러닝 모델의 성능을 향상하기 위한 것이다.
기존 변수가 아니라 자동 설정되는 변수다.
최적화하여 모델의 에러를 줄이는 등 머신러닝 학습 성능을 향상시킨다.

종류들로는 두 가지 관점에서 볼 수 있는데 model related와 optimization related의 관점이 있다.

Model Related

Number of hidden layer

MLP에는 ~10개 층(2,3개 넘어가면 효율이 굳이 더 좋아지는 것 같진 않다.)

최근 CNN에는 ~152, ~1000 개 층까지 학습이 된다.

 

Number of hidden unit

~1024 정도 층까지 시도해볼 수 있다.

 

Activation Function

sigmoid와 tanh는 gradient vanishing 문제가 발생해서
ReLu등을 활용해 볼 수 있다.



Optimization Related

Type of Optimizer

ADAM, AdaDelta, RMSProp 등

Learning Rate

gradient할때 iteration마다 얼만큼 빠르게 혹은 느리게 이동할지 결정하는 계수
예로 1e-5 ~ 1e-1
Log scale로 보통 바꿔서 계산한다.

L2 coef

1e-5~ 1e5

Dropout rate

0~1사이 값(0.1~0.5정도)

Batch Size

전체 데이터를 몇 개의 그룹으로 나눠서 학습할때 나누는 그 크기

최대한 키운다. (GPU out of memory에러 뜨면 줄인다.)

Epoch

학습 반복 횟수.
neural-network에서 train set에서 epoch 늘릴수록 에러가 줄어든다.
Validation set에서 epoch 늘릴수록 에러 감소하다가 어느 지점에서 다시 증가한다.
이는 train set에 대한 overfitting 문제가 발생한 것이다.
그래서 딱 그 에러가 최소인 epoch의 지점값을 찾아주면 된다.

 


최적의 HyperParameter 찾기

Grid Search

사전에 아는 지식으로 설정.
그 범위 내에서 일정 간격으로 점을 정하여 그 점들에 대해 각 조합으로 직접 에러를 구한다. 4개로 학습하여 나머지 1개에 대해 에러를 계산. 평균에러가 최소가 되는 조합을 찾아 그 하이퍼파라미터로 error-function 최적화를 한다.

Random Search

마찬가지로 사전에 아는 지식으로 설정
모든 경우를 보지 않고 랜덤으로 골라서 최적값을 찾는다. 랜덤하게 두 값 에러 비교, 최소를 선택. 그 후에 또 다른 값 골라 비교, 최소를 선택. 이 과정 반복. 정확도는 떨어져도 시간복잡도를 줄이는 장점이 있다.