概要
Phoenicsは、物理実験や負荷の高い計算など、評価コストの高い目的関数を最適化するアルゴリズムです。ベイズ最適化とベイズカーネル密度推定の考え方を組み合わせ、大域最適化のためのパラメータ点を提案します。その役割は次に評価する対象を提案することであり、目的値は実験または計算によって得られます。READMEには、逐次ワークフローと並列化可能なバッチワークフローが記載されており、周期パラメータと複数目的については個別の例が用意されています。
ドキュメントに記載されたPythonインターフェースでは、設定ファイルからPhoenicsのインスタンスを作成し、phoenics.choose(observations = observations) に先行する観測値を渡します。出力は提案されたパラメータの集合です。それらのパラメータを外部で評価した後、得られた観測値を次の提案サイクルに渡すことができます。このためPhoenicsは、実験室での実行システム全体ではなく、反復的な実験計画に用いる候補コンポーネントと位置付けられます。出典の抜粋では、設定や観測データの完全なスキーマは示されていないため、実装にあたってはリンク先の例から確認する必要があります。
複数目的の場合、設定で複数の目的が定義されていると、Phoenicsは自動的にChimeraを使用します。Chimeraは、重要度の階層と許容可能な性能低下の相対許容差を用いて、目的値を単一のスカラー値に変換します。また、他の単目的最適化器向けの単独ラッパーとしても提供されています。READMEでは、代替の確率モデリングライブラリとしてPyMC3とEdwardが挙げられ、Python 3.6と特定の過去の依存関係でテストされたと報告されています。READMEには、リポジトリが構築中であることも記されています。抜粋からは現在の環境との互換性は確認できず、定量的な性能結果も示されていません。
主な機能
- ベイズ最適化とベイズカーネル密度推定を組み合わせ、評価コストの高い目的関数の大域最適化を行います。
- ドキュメントに記載された `phoenics.choose(observations = observations)` インターフェースを通じて、先行する観測値に基づき新たなパラメータ点を提案します。
- 逐次最適化と並列化可能なバッチ最適化に対応し、それぞれ専用の例が用意されています。
- 専用の最適化例を通じて、周期パラメータへの対応が説明されています。
- 複数目的を含む設定では、目的の優先度と相対許容差を用いるChimeraを自動的に適用します。
- 複数の目的値をスカラー目的関数に変換し、他の最適化手法で使用できるラッパーとして、Chimeraを個別に提供しています。
用途
- 評価案:逐次例を使用し、測定結果を次のパラメータ提案に反映する反復的な化学実験計画ループを評価します。
- 評価案:並列に実行できる高コストの計算や実験について、バッチ提案を評価します。
- 評価案:明示的な優先度階層と許容可能な性能低下の許容差を設定し、Chimeraを用いた多目的実験計画を検討します。
- 評価案:文書に記載された仮想ロボットの自動較正例を、較正ワークフローの出発点として検討します。
使い方
- 公式READMEを読み、提案ループ、インストール方法、記載されている依存関係を確認します。Python 3.6でのテスト報告は過去の証拠として扱い、現在の互換性を確認したものとは見なさないでください。
- 独自の入力を準備する前に、逐次最適化の例またはバッチ最適化の例を選び、設定と観測データの表現を確認します。
- ドキュメントに記載されたセットアップ手順に従い、設定ファイルからPhoenicsのインスタンスを作成します。
phoenics.choose(observations = observations)に先行する観測値を渡し、提案パラメータ点を要求します。 - 実験または計算でそれらの点を評価し、目的値を記録して、新たな観測値を次の提案サイクルに戻します。まずは制御された例でこのワークフローを評価してください。
- 多目的の場合は多目的の例を参照し、優先度と許容差を定義します。パラメータに周期性の扱いが必要な場合は、周期パラメータの例を参照してください。