探索と利用のバランスを調整するために、Hyperopt はどのような設定を提供しますか? コードに「bandit」や「bandit_algo」のようなものがありますが、説明はありません。
誰かがコードサンプルを提供できますか?
助けてくれてありがとう!
探索と利用のバランスを調整するために、Hyperopt はどのような設定を提供しますか? コードに「bandit」や「bandit_algo」のようなものがありますが、説明はありません。
誰かがコードサンプルを提供できますか?
助けてくれてありがとう!
オプティマイザ アルゴの魔法のラッパー関数である hyperopt partial() を見つけました。これにより、さまざまな戦略と E/E の間でバランスをとることができます。
Partial は、ランダムに選択されたサジェスト関数の結果を返します。たとえば、ランダム検索、アニール、tpe を使用して検索するには、次のように入力します。
fmin(...,
algo=partial(mix.suggest,
p_suggest=[
(.1, rand.suggest),
(.2, anneal.suggest),
(.7, tpe.suggest),]),
)
パラメータ "p_suggest": (確率、提案) ペアのリスト。対応する確率に比例して、suggest 関数の 1 つから提案を行います。sum(probabilities) は 1.0 [に近い] でなければなりません。
アルゴリズムの進行をさらに厳密に制御したい場合は、ハイパーオプト オプティマイザーのアルゴリズムがステートレスであるという事実を利用して、新しい fmin への入力として提供できる試行オブジェクトを返してプロセスを続行できます。次に、max_evals を 1 にして fmin を呼び出し、プロセスをループで処理することができます。したがって、各反復間で「試行」と「アルゴリズムの提案」を変更できます。
最善の策として、Bergstra らの論文を読んでください。アル。1 2および3。bandit_algo が何であるかについては 100% 明確ではありませんが、論文の 1 つが Gaussian Process と Tree of Parzen Estimator の代替方法として言及していることを除いて、おそらくこれら 2 つと同じ方法で使用できますか?
私の推測では、文書化されていない場合、まだ完成していない可能性があります。Github で問題を提起してみてください。私が見たところ、開発者はかなり反応が良いです。
編集:この論文を見ると、これらのバンディット アルゴリズムは、他のアルゴリズムが継承する基本クラスである可能性があります。