Hyperparameter

Daum·2021년 8월 16일
0

Deep Learning

목록 보기
2/5
post-thumbnail

📝 Hyperparameter 튜닝

모델 성능을 높이기 위해 모델을 구성하는 여러 요소 중에 최적의 요소 값을 찾아내는 과정이다.

모든 경우를 테이블로 만든 뒤 격자로 탐색하는 방식이다.
모든 하이퍼파라미터 후보들에 대한 일반화 성능을 확인하기 때문에 시간이 오래 걸리는 단점이 있다.

from sklearn.model_selection import GridSearchCV

# parameter
batch_size = [10, 20, 40, 60, 80, 100]
epochs = [30]
param_grid = dict(batch_size=batch_size)

# GridSearch
grid = GridSearchCV(estimator=model, param_grid=param_grid, n_jobs=1)
grid_result = grid.fit(X, Y)

print(f"Best: {grid_result.best_score_} using {grid_result.best_params_}")

하이퍼 파라미터 값을 랜덤하게 넣어보고 그중 우수한 값을 보인 하이퍼 파라미터를 활용해 모델을 생성한다.
GridSearch에 비해 시간은 적게 걸리지만, 랜덤하게 확인하기 때문에 정확도가 떨어질 수 있다.

from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint

# parameter
param_distribs = { 'n_estimators': randint(low=1, high=200), 'max_features': randint(low=1, high=8), }

# RandomSearch
random = RandomizedSearchCV(estimator=model, param_distributions=param_distribs, n_iter=10, cv=5, scoring='neg_mean_squared_error', random_state=42)
random.fit(X, Y)

3) Bayesian Methods

미지의 함수가 반환하는 값의 최대 또는 최소값을 짧은 반복을 통해서 찾아내는 최적화 방식이다.

[튜닝가능한 파라미터 옵션]

batch_size
training epochs
optimization algorithms
learning rate
momentum
activation functions
dropout regularization
hidden layer의 neuron 갯수

0개의 댓글