今月、私は2020 AutoMLでいくつかのプロジェクトをリセットし、より優れたオープンソースプロジェクトに基づいて、吸収に基づいて、スーパーパラメトリック最適化ライブラリを作成しましたUltraOpt
。このライブラリは、著者:,によって開発されたベイジアン最適化アルゴリズムが含まETPE
れ、より良い実行するよりも、アルゴリズムのベンチマークテストでは。分散コンピューティングへの適応性が高く、MapReduceと非同期通信の2つの並列戦略をサポートし、さまざまなコンピューティング環境に拡張できます。HyperOpt
TPE
UltraOpt
また、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
定義する(ハイパー記述言語を):
次に、辞書タイプのconfig
リターンを受け入れる超目的関数の品質を判断するためのパラメーターを定義しますloss
。つまり1
、クロス検証を差し引いて、正しい平均レートセットを検証します。私たちの目標は、loss
小さいほど良いものを最適化することです。
ハイパースペースと目的関数を定義した後、最適化は実際にコードの行である、とだけする機能と呼ばれることが必要です。UltraOpt
fmin
from ultraopt import fmin
result = fmin(eval_func=evaluate, config_space=HDL,
optimizer="ETPE", n_iterations=30)
print(result)
最適化プロセス中にプログレスバーが印刷され、完了後、印刷result
オブジェクトが最適化の結果を要約します。
result
オブジェクトのplot_convergence
メソッドを呼び出すと、フィッティングカーブが描画されます。
Facebookの視覚化ツールをインストールすると、hiplot
このハイパーパラメータ最適化の結果の高次元の相互作用図を表示できます。
アルゴリズムの選択とより安価な評価戦略を検討してください
オプティマイザーのセットからオプティマイザー(アルゴリズム選択)を選択してから、このオプティマイザーでハイパーパラメーター最適化を実行するかどうかを尋ねる友人がいるかもしれませんが、UltraOpt
そのようなアルゴリズム選択とハイパーパラメーター最適化問題を解決できCASH Problem
ますか()?答えはイエスです。まず、我々は解決策を定義CASH Problem
するとHDL
:
最初【随机森林,KNN】
にこれら2つのオプティマイザーのいずれかを選択し、次にこのオプティマイザーでハイパーパラメーター最適化を実行する必要があることがわかります。
このとき、小さなパートナーから質問がありました。前のケースでは、AutoMLの評価機能には完全なトレーニングと予測プロセスが必要であり、これには長い時間がかかります。つまり、コストが比較的高くなります。この問題を解決する方法はありますか?一部の大物は、単純で失礼な方法を提案しました。SuccessiveHalving(SH)は、少数のサンプルを使用して多数のハイパーパラメーター構成を評価し、次の反復で適切に機能するスーパーパラメーター構成を保持します。写真が示すように:
その後、SHに基づいてHyperBand(HB)を提案する大物もいましたが、読者の理解のために、今日はSHを例として取り上げUltraOpt
、より安価な評価戦略を採用しましょう。
评估代价
この影響要因を検討した後(または予算、予算と呼ばれる)、目的関数を再設計する必要があります。つまり、budget
パラメーターを追加し、対応する変更を加えます。
このコードは少し理解しにくいかもしれません。簡単に言えば、次の変更が加えられています。
- 評価コストを考慮してください(として定量化され
budget
、値の範囲は0〜1で、トレーニングサンプルのサンプリングレートを示します) - アルゴリズムの選択を考慮すると、アルゴリズムの選択
AS
の結果とHP
ハイパーパラメータの最適化の結果を表します。
次に、SHをサポートするために使用される反復ジェネレーターをインスタンス化します。
皿の準備ができたのでultraopt.fmin
、鍋に入れて煮込みます。
UltraOpt
多数の視覚化ツール機能が提供されており、最適化プロセスと最適化結果を表示できます。
HyperOptよりも強い理由
パフォーマンスの面で
私たちは、最適化アルゴリズムの比較実験を行った上Synthetic Benchmark
とTabular Benchmark
、そして結果は以下の通りであります:
- 合成ベンチマーク
- 表形式のベンチマーク
- 表形式のベンチマーク(HyperBandの評価戦略を検討してください)
機能的に
UltraOpt
設計思想は、オプティマイザと評価者が分離され、オプティマイザを中心に、それがサポートすることができ、すべてのブラックボックスの最適化ライブラリで唯一れるTPE
アルゴリズムとSMAC
アルゴリズムを同時に。将来的には、それがサポートされますMCMC-GP
と贝叶斯回归
、贝叶斯网络
など。、より多くのオプティマイザー。
またUltraOpt
、multi-fidelity
評価戦略(つまり、HyperBand、連続半減など)も分離されています。BOHBのHpBandSterライブラリのネイティブ実装と比較して、UltraOpt
マルチフィデリティ最適化とベイズ最適化をより自由に実行できます。 BOHBアルゴリズム。
次の表に、さまざまな観点からUltraOpt
他の最適化ライブラリと比較した場合の利点を示します。
使用中に問題が発生した場合は、問題からフィードバックをお寄せください。アイデアがあればプルリクエストも大歓迎です〜