optuna

김대경·2024년 2월 15일

pandas

목록 보기
3/3
  • optuna는 하이퍼파라미터 튜닝을 위한 오픈소스 라이브러리입니다. TPESampler는 Optuna의 하이퍼파라미터 최적화를 위해 사용되는 샘플러 중 하나입니다.
  • 이 샘플러는 Tree-structured Parzen Estimator(TPE) 알고리즘을 기반으로 하여, 이전 시도의 결과를 고려하여 새로운 하이퍼파라미터를 샘플링하는데 사용됩니다.
    TPE(Tree-structured Parzen Estimator)는 베이지안 최적화 알고리즘 중 하나로, Optuna에서 하이퍼파라미터 튜닝을 위해 사용됩니다. TPE는 목적 함수의 값을 최소화하기 위한 최적의 하이퍼파라미터 조합을 찾기 위해 확률 모델을 사용하는 방법입니다.

TPE 알고리즘의 기본 원리

  1. 사전 분포 모델링:
  • 각 하이퍼파라미터마다 사전 분포(기본적으로 균등 분포)를 설정합니다.

  • 사전 분포 모델은 해당 하이퍼파라미터의 가능한 값의 확률 분포를 나타냅니다.

  1. 분할 및 조건적 분포 모델링:
  • 현재까지 수행된 시도 중에서 목적 함수 값이 작은(좋은) 시도와 큰(나쁜) 시도로 데이터를 분할합니다.

  • 각 하이퍼파라미터의 분포는 좋은 시도와 나쁜 시도를 기반으로 새로운 확률 분포로 조건적으로 모델링됩니다.

  1. 샘플링:
  • 조건부 확률 분포를 기반으로 각 하이퍼파라미터에 대한 값을 샘플링합니다.
  • 목적 함수를 평가하여 그 값에 대한 정보를 얻습니다.
  1. 사후 분포 모델 업데이트:
  • 샘플링된 값과 해당 값에 대한 목적 함수의 결과를 사용하여 사후 분포를 업데이트합니다.

  • 새로운 데이터로 모델을 보완하여 더 정확한 확률 분포를 얻습니다.

  • 이 과정을 반복하여 목적 함수를 효과적으로 탐색하고, 최적의 하이퍼파라미터 조합을 찾습니다. TPE는 목적 함수의 평가 횟수가 적을 때에도 효과적으로 동작하며, 특히 차원이 높고 범주형 변수가 많은 경우에 유용합니다.

optuna

  • optuna는 범위가 지정된 하이퍼파라미터 탐색을 효과적으로 수행할 수 있는 라이브러리입니다.

  • 사용자가 정의한 목적 함수(objective function)를 최소화 또는 최대화하는데 사용됩니다.

  • 일반적으로 다음과 같은 과정을 거칩니다:

  • 하이퍼파라미터 공간 정의: 최적화할 하이퍼파라미터의 범위를 정의합니다.

  • 목적 함수 정의: 최적화할 대상 함수를 정의합니다. 이 함수의 출력을 최소화 또는 최대화하려고 합니다.

  • Optuna study 생성: 하이퍼파라미터 최적화를 위한 Optuna study를 생성합니다.

  • 하이퍼파라미터 최적화: optimize 메서드를 사용하여 최적의 하이퍼파라미터를 찾습니다.

import optuna

def objective(trial):
    x = trial.suggest_float('x', -10, 10)
    return (x - 2) ** 2

study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=100)

TPESampler

  • TPESampler는 Optuna에서 사용되는 샘플러 중 하나로, TPE 알고리즘을 구현한 것입니다. TPE는 기존 시도의 결과를 고려하여 하이퍼파라미터를 샘플링하는데 효과적인 알고리즘입니다.
from optuna.samplers import TPESampler

sampler = TPESampler(seed=42)
study = optuna.create_study(direction='minimize', sampler=sampler)
study.optimize(objective, n_trials=100)

여기서 seed 매개변수는 랜덤 시드를 설정합니다. 설정하지 않으면 각 실행마다 다른 결과를 얻을 수 있습니다.

이러한 코드는 Optuna를 사용하여 목적 함수의 최적화를 수행하는 예시입니다. 최적화된 하이퍼파라미터를 찾기 위해 study.best_params 등을 사용할 수 있습니다.

profile
성장중입니다!

0개의 댓글