最適化アルゴリズム

Optimization(最適化)ステップでは、以下の最適化アルゴリズムを選択することができます:

 

 

Default (Gradient Descent)

これは勾配降下最小二乗法によるオプティマイザです。これがデフォルトのオプティマイザとして選ばれたのは、最適化タスクに多くのパラメータが含まれる場合に優れた性能を発揮するためで、マップとカーブを使用するような場合に適しています。

残差は最適化アルゴリズムにベクトルとして入力されるため、オプティマイザは100点のデータセットに対して100個の残差を取得します。これは計算コストが高くなりますが、良い最適化結果につながります。

残差はオプティマイザによって暗黙のうちに2乗されるので、参照値との差は常に最小化されます。最小化または最大化を行うには、最適化する低値と高値を明示的に指定する必要があります。

出力は0から1000の範囲です。最大化を行うには、最適化目標をminarg(y(x)-1000)と定義します。

ローカルな制限は、和の式の一部(W * Constraint)として最適化に含まれます。ASCMOにおいては、これをソフト制限と呼びます。このようなローカルな制限の重みは、制限が満足されるまで10回の反復ごとに増加します。

最適化実行中に制限違反が生じると、制限の重みが増加します。これでは不十分であり、最適化後も制限違反が存在する可能性があります。

用途:勾配降下最適化は、MOCAが扱う典型的な問題に対する理想的なアルゴリズムです。大量のメモリを必要としますが、高速で良好な結果をもたらします。他の最適化アルゴリズムは、以下に示すように特定の状況でのみ検討するようにしてください。

Respect Constraints (Gradient Descent)

これも勾配降下最小二乗法によるオプティマイザですが、制限が考慮されます。

オプティマイザは、制限をハード限界値として扱います。制限違反しない限りは、デフォルトのオプティマイザの方が好ましいでしょう。デフォルトオプティマイザで最適化した後に制限違反が認められた場合は、このアルゴリズムを使用します。

用途:この最適化アルゴリズムは、最適化実行後にローカル制限違反が発生した場合に役立ちます。まずデフォルトの最適化アルゴリズムを試行し、ローカル制限の重みを、たとえば、10、100、1000、...というように段階的に増加させていくことを推奨します。このアプローチに失敗した場合、本アルゴリズムが制限内で解を見つける可能性があります。

Gradient-free Optimizer

勾配を含まないオプティマイザは、最適化にシンプレックスアルゴリズムを使用します。このアルゴリズムは勾配に依存しないため、勾配降下アルゴリズムよりも多くの反復を必要とします。一般的に、勾配降下オプティマイザほど良い解は得られません。

この勾配なしオプティマイザは、関数/モデルの勾配が連続的でない場合に使用します。これは、モデルが数値やパラメータの固定小数点表現で実装され、信号が離散的である場合に起こります。また、モデルが64ビット浮動小数点数ではなく32ビット浮動小数点数で実装されている場合にも起こります。

用途:この最適化アルゴリズムは、内部で固定小数点表現を使用するなど、パラメータの小さな変化に敏感でない外部モデルに適しています。外部モデルが倍精度ではなく単精度(32ビット)を使用している場合は、有限差分係数を20,000に増やし、デフォルトのオプティマイザを使用することを検討してください。

Surrogate Optimizer (Global Optimization)

サロゲートオプティマイザは、グローバル最適解の探索を試みます。最初にサロゲートモデルを構築し、元の関数/モデルの代わりにそれを最適化します。これは、関数/モデルの評価に時間がかかるような場合に便利です。

用途:この最適化アルゴリズムは、時間がかかる外部モデルの評価に役立ちます。最適化のために、迅速に評価可能な代替モデルが構築されます。

Genetic Algorithm (Global Optimization)

遺伝的アルゴリズムは、グローバル最適解の探索を試みます。これは、自然淘汰とゲノム交換にヒントを得たものです。ランダムな解の候補(ここでは「集団」と呼びます)から開始します。詳細はWikipedia:Genetic Algorithmを参照してください。母集団のサイズがメモリ消費量に大きく影響します。多くの信号やデータを含む最適化タスクは、メモリ不足の問題を引き起こす可能性があります。母集団のサイズを小さくすることで、メモリを解放することができます。このアルゴリズムはすべての候補解をベクトル化するので、FMUモデルやTSimモデルのモデル評価を並行して実行することができます。

用途:この最適化アルゴリズムは、感度が低いモデルに適した勾配フリー最適化アルゴリズムです。主な目的は、特にデフォルトの最適化アルゴリズムがローカル最小値に陥る可能性がある場合に、グローバル最小値を見つけることです。このアルゴリズムはデフォルトの最適化アルゴリズムよりもメモリ使用量が少ない一方で、同様の結果を得るまでに時間がかかる場合があります。

Simulated Annealing (Global Optimization)

焼きなまし法は、グローバル最適解の探索を試みます。最適化はランダムな候補解から始めます。高い初期温度を使用するため、大きなパラメータ変更が可能です。何回かの反復により温度が下がるにつれてパラメータの変化が制限されるようになり、より正確な解を見つけることが可能になります。詳細はWikipedia:Simulated Annealingを参照してください。粒子の数がメモリ消費量に大きく影響します。多くの信号やデータを含む最適化タスクは、メモリ不足の問題を引き起こす可能性があります。粒子の数を減らすことで、メモリを解放することができます。

用途:この最適化アルゴリズムは、感度が低いモデルに適した勾配フリー最適化アルゴリズムです。主な目的は、特にデフォルトの最適化アルゴリズムがローカル最小値に陥る可能性がある場合に、グローバル最小値を見つけることです。このアルゴリズムはデフォルトの最適化アルゴリズムよりもメモリ使用量が少ない一方で、同様の結果を得るまでに時間がかかる場合があります。

Particle Swarm (Global Optimization)

量子群最適化は、グローバル最適解の探索を試みます。最適化はランダムな候補解(ここでは「粒子」と呼びます)から開始します。各粒子は位置と速度を持ちます。最適化は高速で始まり、何度か繰り返すうちに速度が低下して、より正確な解を見つけることができます。詳細はWikipedia:Particle Swarm Optimizationを参照してください。多くの信号やデータを含む最適化タスクは、メモリ不足の問題を引き起こす可能性があります。粒子の数を減らすことで、メモリを解放することができます。このアルゴリズムはすべての候補解をベクトル化するので、FMUモデルやTSimモデルのモデル評価を並行して実行することができます。

用途:この最適化アルゴリズムは、感度が低いモデルに適した勾配フリー最適化アルゴリズムです。主な目的は、特にデフォルトの最適化アルゴリズムがローカル最小値に陥る可能性がある場合に、グローバル最小値を見つけることです。このアルゴリズムはデフォルトの最適化アルゴリズムよりもメモリ使用量が少ない一方で、同様の結果を得るまでに時間がかかる場合があります。