Optuna 시각화

Optuna 시각화 (Visualization)

Optuna는 optuna.visualization에 다양한 시각화 기능을 제공해서 최적화 결과를 시각적으로 분석하게 해 줘요. 이 모듈은 Plotly를 필요로 해요.

출처: Quick Visualization for Hyperparameter Optimization Analysis

$ pip install plotly

# Jupyter Notebook에서 실행한다면
$ pip install nbformat

Matplotlib을 선호한다면 pip install matplotlib로 설치하고, 예제에서 optuna.visualizationoptuna.visualization.matplotlib로 바꾸면 돼요.

시각화 함수들

각 함수는 study를 인자로 받아 최적화 결과를 그려요.

  • plot_optimization_history(study) — 최적화 이력 시각화
  • plot_intermediate_values(study) — 트라이얼들의 학습 곡선 시각화
  • plot_parallel_coordinate(study) — 고차원 파라미터 관계 시각화. params=["lr", "n_layers"] 같은 인자로 대상 파라미터를 고를 수 있어요.
  • plot_contour(study) — 하이퍼파라미터 간 관계 시각화. params 인자로 대상을 선택할 수 있어요.
  • plot_slice(study) — 개별 하이퍼파라미터를 슬라이스 플롯으로 시각화
  • plot_param_importances(study) — 파라미터 중요도 시각화. target 인자로 트라이얼 시간 같은 다른 대상의 중요도도 볼 수 있어요.
  • plot_edf(study) — 경험적 분포 함수(EDF) 시각화
  • plot_rank(study) — objective 값으로 색칠한 산점도로 파라미터 관계 시각화
  • plot_timeline(study) — 수행된 트라이얼의 최적화 타임라인 시각화

다중 목적 최적화(파레토 프론트) 시각화는 optuna.visualization.plot_pareto_front()를 써요.

생성된 그림 커스터마이즈

optuna.visualizationoptuna.visualization.matplotlib의 함수는 편집 가능한 figure 객체를 반환해요. Plotly 기반이면 plotly.graph_objects.Figure, Matplotlib 기반이면 matplotlib.axes.Axes죠. 이 객체를 해당 시각화 라이브러리의 API로 수정할 수 있어요.

fig = plot_intermediate_values(study)

fig.update_layout(
    title="Hyperparameter optimization for FashionMNIST classification",
    xaxis_title="Epoch",
    yaxis_title="Validation Accuracy",
)

Optuna Dashboard

Optuna Dashboard를 쓰면 최적화 이력, 하이퍼파라미터 중요도, 하이퍼파라미터 관계 등을 그래프와 표로 확인할 수 있어요. study를 RDB 백엔드로 영속화하고 다음 명령으로 대시보드를 실행해요.

$ pip install optuna-dashboard
$ optuna-dashboard sqlite:///example-study.db

더 알아보기