UltraOpt:HyperOptよりも強力なハイパーパラメータ最適化ライブラリ

今月、私は2020 AutoMLでいくつかのプロジェクトをリセットし、より優れたオープンソースプロジェクトに基づいて、吸収に基づいて、スーパーパラメトリック最適化ライブラリを作成しましたUltraOptこのライブラリは、著者:,によって開発されたベイジアン最適化アルゴリズムが含まETPE、より良い実行するよりも、アルゴリズムのベンチマークテストでは分散コンピューティングへの適応性高くMapReduce非同期通信の2つの並列戦略をサポートし、さまざまなコンピューティング環境に拡張できます。HyperOptTPEUltraOpt

また、UltraOpt初心者にもとても親切です。著者は、AutoML(自動機械学習)がゼロベースで何をしているのかをXiaobaiに理解させるために、特別に3週間かけて中国語のドキュメントを作成しました。UltraOptまた、非常に軽量で簡潔に使用でき、問題をより迅速に分析するのに役立つ視覚化ツール機能が多数あります。

スペースの制限により、この記事でUltraOptは主な機能を簡単に紹介するだけです。テキストのすべてのコードとリファレンスは、コードウェアハウスのREADMEおよび中国語のドキュメントに記載されていますこのプロジェクトがあなたに役立つと思うなら、UltraOpt用の小さな★スター注文することもできます


インストール方法:

pip install ultraopt

コードリポジトリ:https
//github.com/auto-flow/ultraopt

中国語のドキュメント:https
//auto-flow.github.io/ultraopt/zh/

目次

すぐに始めましょう

ハイパーパラメータの最適化に使用

まず、ランダムフォレストのスーパーパラメータ最適化のプロセスUltraOptを通して理解ます

最適化プロセスを開始する場合は、最初に2つのものを提供する必要があります。1)パラメーター空間と2)目的関数です。

まず、ハイパースペースを定義するハイパー空間では、。UltraOptあなたが使用することができますHDL定義する(ハイパー記述言語を):

HDL

次に、辞書タイプのconfigリターンを受け入れる超目的関数の品質を判断するためのパラメーターを定義しますloss。つまり1、クロス検証を差し引いて、正しい平均レートセットを検証します。私たちの目標は、loss小さいほど良いものを最適化することです。

eval

ハイパースペースと目的関数を定義した後、最適化は実際にコードの行である、とだけする機能と呼ばれることが必要ですUltraOptfmin

from ultraopt import fmin
result = fmin(eval_func=evaluate, config_space=HDL, 
			optimizer="ETPE", n_iterations=30)
print(result)

最適化プロセス中にプログレスバーが印刷され、完了後、印刷resultオブジェクトが最適化の結果を要約します。

結果

resultオブジェクトのplot_convergenceメソッドを呼び出すと、フィッティングカーブが描画されます

plot_convergence

Facebookの視覚化ツールをインストールすると、hiplotこのハイパーパラメータ最適化の結果の高次元の相互作用図を表示できます。

ここに画像の説明を挿入

アルゴリズムの選択とより安価な評価戦略を検討してください

オプティマイザーのセットからオプテ​​ィマイザー(アルゴリズム選択選択してから、このオプティマイザーハイパーパラメーター最適化を実行するかどうかを尋ねる友人がいるかもしれませんが、UltraOptそのようなアルゴリズム選択とハイパーパラメーター最適化問題を解決できCASH Problemますか)?答えはイエスです。まず、我々は解決策を定義CASH ProblemするとHDL

HDL2

最初【随机森林,KNN】にこれら2つのオプティマイザーのいずれか選択し、次にこのオプティマイザーでハイパーパラメーター最適化を実行する必要があることがわかります。

このとき、小さなパートナーから質問がありました。前のケースでは、AutoMLの評価機能には完全なトレーニングと予測プロセスが必要であり、これには長い時間がかかります。つまり、コストが比較的高くなります。この問題を解決する方法はありますか?一部の大物は、単純で失礼な方法を提案しました。SuccessiveHalving(SH)は、少数のサンプルを使用して多数のハイパーパラメーター構成を評価し、次の反復で適切に機能するスーパーパラメーター構成を保持します。写真が示すように:

その後、SHに基づいてHyperBand(HB)を提案する大物もいましたが、読者の理解のために、今日はSHを例として取り上げUltraOptより安価な評価戦略を採用しましょう

评估代价この影響要因を検討した後(または予算、予算と呼ばれる)、目的関数を再設計する必要があります。つまり、budgetパラメーターを追加し、対応する変更を加えます。

eval2

このコードは少し理解しにくいかもしれません。簡単に言えば、次の変更が加えられています。

  1. 評価コストを考慮してください(として定量化されbudget、値の範囲は0〜1で、トレーニングサンプルのサンプリングレートを示します)
  2. アルゴリズムの選択を考慮すると、アルゴリズムの選択ASの結果とHPハイパーパラメータの最適化の結果を表します。

次に、SHをサポートするために使用される反復ジェネレーターをインスタンス化します。

iter

皿の準備ができたのでultraopt.fmin、鍋に入れて煮込みます。

結果2

UltraOpt多数の視覚化ツール機能が提供されており、最適化プロセスと最適化結果を表示できます。

結果2

HyperOptよりも強い理由

パフォーマンスの面で

私たちは、最適化アルゴリズムの比較実験を行ったSynthetic BenchmarkTabular Benchmark、そして結果は以下の通りであります:

  • 合成ベンチマーク

合成ベンチマーク

  • 表形式のベンチマーク

表形式のベンチマーク

  • 表形式のベンチマーク(HyperBandの評価戦略を検討してください)

表形式のベンチマーク2

機能的に

UltraOpt設計思想は、オプティマイザと評価者が分離され、オプティマイザを中心に、それがサポートすることができ、すべてのブラックボックスの最適化ライブラリで唯一れるTPEアルゴリズムとSMACアルゴリズムを同時に。将来的には、それがサポートされますMCMC-GP贝叶斯回归贝叶斯网络など。、より多くのオプティマイザー。

またUltraOptmulti-fidelity評価戦略(つまり、HyperBand、連続半減など)も分離されています。BOHBのHpBandSterライブラリのネイティブ実装と比較して、UltraOptマルチフィデリティ最適化とベイズ最適化をより自由に実行できます。 BOHBアルゴリズム。

次の表に、さまざまな観点からUltraOpt他の最適化ライブラリと比較した場合の利点を示します

比較する

使用中に問題が発生した場合は、問題からフィードバックをお寄せください。アイデアがあればプルリクエストも大歓迎です〜

おすすめ

転載: blog.csdn.net/TQCAI666/article/details/112479277