すべての最適化問題に対して効率的な単一のソルバーは存在しません。そのため、問題と特定のニーズにできるだけ合致したソルバーを選択することが重要です。もちろん、汎用性の高いソルバーを適用することも選択肢の一つですが、その場合、基礎となるアルゴリズムによっては、パフォーマンスが低下することがあります。
最適化問題を特定のカテゴリーに分類するためのさまざまな基準があります。主な基準は以下の通りです:
- 目的関数の種類
- 制約の種類
- 問題のサイズ
- データの滑らかさと利用可能な導関数情報
各基準について以下で説明し、最適化問題のクラスを特定するために必要な情報を提供します。セクション5ではアルゴリズムの基本的な特性を紹介します。
2.1 目的関数の種類
最適化問題において、目的関数の種類は問題の性質を大きく左右します。特に、目的関数に特定の構造が存在する場合、ソルバーはその特性を活用することで、より効率的に解を導き出すことができます。以下では、代表的な目的関数の種類とその特徴について説明します。
例えば、二乗和目的関数に特化したソルバーは、同じ問題を一般的な非線形目的関数として扱う場合と比較して、より優れたパフォーマンスを発揮します。このため、代表的な目的関数の種類とその特徴を理解することは、効率的な問題解決において重要な役割を果たします。
目的関数が存在しない最適化問題は、定数目的関数、つまり
線形目的関数は、すべての変数に関して線形である関数です。したがって、次のような形式で表現できます:
ここで、
二次目的関数は、線形関数を二次項で拡張したものです:
ここで、
ここで、
一般的な非線形目的関数は、特別な構造を持たない任意の
損失関数の和の形式の目的関数には特別な考慮が払われます。例えば:
ここで、
2.2 制約の種類
最適化問題における制約は、解の探索空間を定義する重要な要素です。しかし、すべての最適化問題に制約があるわけではありません。 ここでは、無制約問題から始めて、様々な種類の制約とその数学的表現について詳しく見ていきます。
まず、最適化問題には必ずしも制約がつきものではありません。決定変数
一方、決定変数
またはベクトル表記で:
ここで、
この境界形式は、nAGの数理最適化ソルバーにおける線形制約と非線形制約に採用されています。ただし、ルーチンに無限大の境界を渡す際、特定の閾値(通常は
線形制約は、すべての変数に対して線形である制約関数として定義されます。例えば、
ここで、
二次制約は、変数の集合の二次関数として標準形式で次のように定義されます:
ここで、
ここで、
線形制約は非線形制約の定義に含めることが可能ですが、ここでも計算効率の観点から、これらを区別することが推奨されます。
一般的に使用される2つの二次錐(二次、Lorentzまたはアイスクリーム錐としても知られる)があります:二次錐と回転二次錐です。これらは以下の不等式によって定義されます:
二次錐:
Kmiq≜ 回転二次錐:
ここで、
行列制約(または行列不等式)は、行列演算子の固有値に対する制約です。より厳密には、
ここで、
nAGの数理最適化ソルバーで許可されている行列制約には2つのタイプがあります。1つ目は次のように定式化される線形行列不等式(LMI)です:
2つ目は双線形行列不等式(BMI)と呼ばれ、次のように記述されます:
ここで、すべての行列
2.3 典型的な最適化問題のクラス
目的関数と制約の特定の組み合わせにより、様々なクラスの最適化問題が生じます。以下に一般的なものを示します。ソルバーを選択する際は、常に問題を最も適切にカバーする定式化を考慮することが推奨されます。
詳細については、Dantzig (1963)、Gill et al. (1981)、Fletcher (1987)、Nocedal and Wright (2006)、Chvatal (1983)などの代表的な文献を参照してください。
線形計画法(LP)問題は、線形目的関数、線形制約、および単純な境界を持つ問題です。次のように書くことができます:
二次計画法(QP)問題は、線形制約と単純な境界で定義される集合上で二次目的関数を最適化します。目的関数の凸性に応じて、凸QPと非凸QP(または一般QP)に分類されます。
二次制約付き二次計画法(QCQP)問題は、二次計画問題に二次制約の集合を加えて拡張したものです。目的関数と二次制約の凸性に応じて、凸QCQPと非凸QCQP(または一般QCQP)に分類されます。
非線形計画法(NLP)問題は、一般的な非線形目的関数
二次錐計画法(SOCP)問題は、線形目的関数、線形制約、単純な境界、および1つ以上の二次錐で構成されます。SOCP問題は次のように表現できます:
ここで、
半正定値計画法(SDP)は通常、線形半正定値計画法を指し、線形目的関数、線形制約、および線形行列不等式を持つ問題です:
この問題は、二次目的関数と双線形(実際には二次)行列不等式で拡張できます。これを双線形行列不等式付き半正定値計画問題(BMI-SDP)と呼びます:
最小二乗法(LSQ)問題は、通常の制約の下で二乗和の形式の目的関数を最小化する問題です。残差関数
が線形の場合:線形最小二乗法 が非線形の場合:非線形最小二乗法
NLPと同様に、制約の有無や種類によって特殊なケースが生じます:
- 無制約最小二乗問題
- 境界制約付き最小二乗問題
- 線形制約付き最小二乗問題
この形式の問題は、データ適合(DF)において非常に一般的です。以下に例を示します。
時刻
測定の不正確さやプロセスがモデルに完全に従わない可能性を考慮すると、各測定におけるモデルと測定値の適合誤差の二乗和を最小化するようなモデルパラメータ
これは、
LSQ問題が少数の異常値や極端な観測値の影響を受ける場合、より一般的な非線形データ適合(NLDF)問題へと自然に拡張できます。この場合、二乗和はHuber関数やQuantile関数などのより広範な損失関数に置き換えられます。したがって、一般化モデルは次のように表現されます:
ここで、
- LASSOでの
ノルム - リッジ回帰での
ノルム - エラスティックネット回帰での上記2つの組み合わせ
有用な損失関数には以下のようなものがあります:
ノルム ノルム- Huber関数
- Cauchy関数
- Arctan関数
- SmoothL1関数
- Quantile関数
各損失関数の詳細な定義と特性については、nAGライブラリルーチンe04gnf 一般的非線形データフィッティングソルバーのセクション11を参照してください。
フィッティングパラメータに境界制約やより複雑な非線形制約などの特定の要件がある場合、問題に制約を加えることが可能です。
2.4 問題のサイズ、密問題と疎問題
最適化問題の規模やデータ構造は、ソルバー選択に大きく影響します。ここでは、問題のサイズに基づく分類と、密問題・疎問題の概念について説明します。
問題の規模は、ソルバーを選択する際に重要な要素となります。サイズは通常、変数の数
しかし、問題のサイズだけでなく、データとその構造を考慮することがしばしばより実用的です。典型的に、大規模問題ではすべての変数が互いに相互作用するわけではありません。制約の一部(または全部)がすべての変数を含むことはあり得ますが、多くの制約は変数の小さな異なる部分集合にのみ依存することが一般的です。これにより、データ表現に多くの明示的なゼロが生じ、それをとらえてソルバーに渡すことが有益となります。このような場合、問題は疎と呼ばれます。
データ表現は通常、以下のような疎行列の形式をとります:
- 線形制約行列
- 非線形制約
のヤコビ行列 - 目的関数のヘッシアン
一般的な疎行列フォーマットには、以下のようなものがあります:
- 座標記憶(CS)
- 圧縮列記憶(CCS)
これらの詳細については、nAGライブラリ F11 チャプターイントロダクションのセクション2.1を参照してください。
疎問題の対極にあるのが密問題で、行列は一般的な全体フォーマットで保存され、構造は仮定も利用もされません。密問題を疎ソルバーに渡すことは通常小さなオーバーヘッドしか生じませんが、大規模な疎問題に密ソルバーを使用することは推奨されません。これは著しいパフォーマンスの低下とメモリの過剰使用につながります。
2.5 導関数情報、滑らかさ、ノイズ、および導関数フリー最適化(DFO)
ほとんどの古典的な最適化アルゴリズムは、導関数情報に大きく依存しています。これは必要十分条件(セクション4参照)や各反復での探索方向の計算(セクション5参照)において重要な役割を果たします。したがって、可能な限り非線形目的関数と非線形制約の正確な導関数を提供することが重要です。
特に明記されていない限り、非線形関数は十分に滑らかであると仮定されます。ソルバーは通常、解から離れた場所に孤立した不連続性がある場合でも最適化問題を解きますが、問題のより滑らかな表現が存在するかどうかを常に検討すべきです。典型的な例は、
これにより、一階導関数の不連続性を回避できます。多数の不連続点が存在する場合、e04cbf Nelder-Mead法による導関数不要の非線形最適化ソルバーやE05章のe05saf 粒子群最適化、シンプルインタフェース、e05sbf 粒子群最適化、詳細インタフェースなどの確率的アルゴリズムといった代替手法の適用が必要となります。
関数の一階偏導関数のベクトルは勾配ベクトルと呼ばれ、以下のように表されます:
二階偏導関数の行列はヘッシアン行列と呼ばれます:
そしてベクトル値関数
関数が滑らかであっても導関数が利用できない場合、変数の微小な摂動に対する関数値の変化である有限差分を用いて近似することができます。多くのnAGの数理最適化ソルバーは、この手法を用いて勾配の欠落要素を自動的に推定します。摂動の大きさの選択は、近似の精度に大きく影響します。摂動が小さすぎると、浮動小数点演算での桁落ちにより近似精度が低下する可能性があり、逆に大きすぎると有限差分と導関数の乖離が大きくなります(最適なバランスについてはnAGライブラリルーチン[e04xaf]/e04xaa 勾配ベクトルおよび/またはヘッセ行列計算](https://support.nag.com/numeric/nl/nagdoc_latest/flhtml/e04/e04xaf.html)を参照してください)。
さらに、有限差分法は
導関数フリー最適化(DFO)は、導関数ベースの最適化アルゴリズムに代わる手法です。DFOソルバーは導関数情報を必要とせず、有限差分による近似も行いません。その代わりに、領域全体で関数値をサンプリングし、それに基づいて次の探索点を決定します(例えば、サンプリングした点を通る二次モデルを用いるなど)。このため、サンプル点同士が近すぎることがなく、関数のノイズによる相対誤差の影響を受けにくくなります。
有限差分が計算可能な場合でも、関数評価回数が少ないためDFOが有効な場合があります。特に
2.6 目的関数に対する境界制約付き最小化
これまで説明してきたすべての問題カテゴリーにおいて、
2.7 多目的最適化
複数の目的関数を同時に最適化する必要がある問題があります。これらは多目的、多基準、または多属性最適化と呼ばれます。制約条件が線形で、全ての目的関数が線形の場合は、目標計画法という用語も使用されます。
現在のライブラリには、この種の問題を直接扱うルーチンは含まれていませんが、nAGライブラリのE04章とE05章のルーチンを利用して、これらの問題に対処することが可能です。