|
Optunaはオープンソースのハイパーパラメータ最適化フレームワークです。フレームワークに依存せず、あらゆる機械学習・深層学習フレームワークで使用できます。この記事では、表形式のデータを例に、Optunaを用いてPyTorchモデルのハイパーパラメータを調整する方法を説明します。 Optuna は Python の pip コマンド(例:`pip install Optuna`)を使ってインストールできます。あるいは、`conda install -c conda-forge Optuna` を使って Anaconda ベースの Python ディストリビューションをインストールすることもできます。 ご覧のとおり、基本的な Python 言語で数行のコードを書くだけで、あらゆるニューラル ネットワークの実験を作成して実行できます。 OPUTNAはシンプルなAPIベースの実装を備えており、ユーザーは最適化するメトリクスと調査するハイパーパラメータ空間を定義できます。最適化プロセスは、単一の関数を呼び出すだけで実行されます。確率的探索、グリッドサーチ、ベイズ最適化など、幅広い最適化アルゴリズムをサポートしています。さらに、連続値、整数値、カテゴリカルハイパーパラメータ、そして複雑な依存関係を持つハイパーパラメータの最適化もサポートしています。 オプトナの簡単な紹介まず、Oputna フレームワークの基本的な用語について学びましょう。 トライアル: - トライアルは、対象関数を評価するプロセスです。対象関数に渡されるこのオブジェクトは、パラメータの候補の取得、トライアルステータスの管理、カスタムトライアルプロパティの設定/取得のためのインターフェースを提供します。 スタディ: 1つのスタディは1つの最適化タスク、つまり一連の実験に対応します。このオブジェクトは、新しい実験の実行、実験履歴へのアクセス、そしてスタディ自体のユーザー定義プロパティの設定/取得のためのインターフェースを提供します。 Studyクラスには、新しいStudyオブジェクトを作成するための重要なメソッドcreate_studyが含まれています。その主要なパラメータは次のとおりです。
PyTorchモデルOptna のハイパーパラメータ検索に対応するには、次のようなさまざまなパラメータに基づいて異なる PyTorch モデルを返す関数が必要です。 ハイパーパラメータには、In_Features、N_Layers、DropOut、N_output が含まれます。 Trial は、Oputna によって合格した Trial 実装です。 目的関数目的関数は、最適化したいハイパーパラメータから構成されます。この例では、前述のモデルのハイパーパラメータに加えて、learning_rate、weight_decay、そして様々な最適化パラメータを最適化する必要があるため、以下のように定義します。 トレーニングループ学習ループはOptunaの最も重要な構成要素です。以下の例では、目的関数を定義するパラメータ辞書をパラメータ化しています。 勉強前述の通り、Optunaの研究ではデータセットに対して複数回の試行を実施し、損失関数としてRMSEを用いたため、RMSEを最小化することが目標でした。本研究では、TPESampler.Tree構造の推定器を使用しました。 結果表示データセットが非常に小さかったため、実験は25ループで終了しました。詳細は以下の通りです。RMSEを0.058に最小化する最適な実験とハイパーパラメータの組み合わせを以下に示します。 次の関数を使用して結果を視覚化することもできます。 optuna.visualization.plot_optimization_history(研究) optuna.visualization.plot_param_importances(研究) optuna.visualization.plot_slice(研究) optuna.visualization.plot_parallel_coordinate(研究) これで、Optuna を用いた PyTorch モデルのチューニングプロセス全体が完了しました。この記事のソースコードと完全な実行結果は、こちらでご覧いただけます。この例をチューニングしたり、学習したりしたい場合は、こちらのリンクをご覧ください: https://www.kaggle.com/code/averma111/pytorch-ps3e15-optuna |