最適化における「ソルバー」とは正確には何ですか?


8

計算の最適化におけるソルバーの使い方に本当に戸惑っています。この用語が何を意味するのかをよく理解できるかどうかを確認するために、1か月間前後を見て回っていましたが、それでもまだ十分に理解していません。

機械学習などで最適化問題を解決したい場合、正確な計算手順をソルバーではなくアルゴリズムと呼びます。たとえば、2次プログラムがある場合、MATLABのQuadprog関数を使用してQPを解きます。

Quadprog関数は、単なるMATLAB関数またはスクリプトであるため、QPソルバーとは呼びません。Quadprogの背後にある正確なアルゴリズムをQPソルバーと呼ぶことはしません。勾配降下法、内点法、ニュートンラフソンであるかどうかは気にしません...それらはすべて私にとってアルゴリズムです。最後に、MATLABを唯一の目的ではないので、QPソルバーとしてMATLABを参照しません。したがって、最適化を日常的に使用しなければならないにもかかわらず、「ソルバー」という単語が私の日常の語彙から欠落しているようです。これは私をかなり混乱させ、専門用語に慣れていないように感じます。

したがって、私の推論では、アルゴリズムとMATLABはソルバーではありません。しかし、最適化の問題を解決するためにGurobiやYALMIPなどのソフトウェアをダウンロードしたとしたら、これらのソフトウェアはソルバーと呼ばれますか?私は、あなたが使用している「ソフトウェア」と同じトーンで、あなたが使用している「ソルバー」を参照している人をよく耳にします。最適化ソフトウェアとソルバーの違いは何ですか?

これは本当に初歩的な質問のように聞こえますが、MATLABでのみ最適化を行いました。


「ソルバー」は、独自のソリューションの問題のオプティマイザーを意味すると理解しましたが、おそらく私は誤解しています。
Sycoraxは、2016

一般に、最適化のソルバーは、エンジンの運転と同じです。グロビをソルバーと呼びます。これはエンジンのようなものです。MATLABは自動車のブランドのようなもので、環境全体の名前です。
Matthew Gunn

私は通常、ソフトウェアの説明に使用される「ソルバー」を聞きます。つまり、アルゴリズムの実装に適用されます。一般に、この用語は「明確な解決策」を伴う数学的問題のために予約されます。@Sycoraxが言うように、独自のソリューションで十分であり、Gurobiソルバーはこのクラスの問題に適しているようです。しかし、私は一意が必要だとは思いません。たとえば、ローカルとグローバルの両方の最適化問題には明確に定義されているが一意ではないソリューションがある可能性があります。
GeoMatt22

回答:


4

ソルバーは次のとおりです。

  • ソフトウェアパッケージ
  • 1つ以上のアルゴリズムを組み込んでいる
  • 1つ以上のクラスの問題の解決策を見つけるため

問題のクラスはその一部です。Xソルバーです。

そう

  • 私は、Gurobiを「MIP / LPソルバー」と呼びます。
  • そして、「MatlabはQPソルバーを組み込んでおり、Quadprog関数を介して公開します。」この場合、実際の「QPソルバー」は、スタンドアロン製品として存在する場合と存在しない場合があります。
  • コンコルド はTSPソルバーです
  • コンコルドには、LPソルバーであるQSoptが組み込まれています

この使用法は(たとえば)JuMPのドキュメントと一致していると思います

JuMPは、ジュリアに埋め込まれた数学的最適化のためのドメイン固有のモデリング言語です。現在、線形計画法、混合整数計画法、2次円錐計画法、半定計画法、非線形計画法など、さまざまな問題クラスに対して、多数のオープンソースおよび商用ソルバー(下記参照)をサポートしています。

JuMPがソルバーと呼ぶもののリストを次に示します。それらはどれもアルゴリズムではなく、すべて特定のプログラムです


5

ソルバーは決定システムのための正確な数値の答えを見つけるためのルーチンです。たとえば、ルートを見つけるためにNewton-Raphsonを使用する場合。システムが過剰決定されている場合、一般的には、回帰などの近似解を使用します。一般に、回帰をソルバーとは呼びませんが、予測可能な言語は誤用される可能性があり、概算の多くのルーチンは、大まかにソルバーと呼ばれます。たとえば、CUTEr最適化ソフトウェアパッケージには、少なくとも一部が過剰決定システム用で、一部がソルバーであるアルゴリズムが含まれているため、簡単に言うと、「ソルバー」をダウンロードしています。ソルバーと回帰メソッドの両方が最適化メソッドの例です。


なぜシステムを決定する必要があるのですか?過小評価できないのでは?例えば。ほとんどの線形システム解法ルーチンを呼び出すと、解が返されます。x+y=1
Matthew Gunn

@MatthewGunnおそらく、ただし、場合、乱数はを生成するため、乱数ジェネレータを使用できます。ここで、乱数ジェネレータを「ソルバ」と呼ぶことができると思います。しかし、認めると思いますが、それは一気にそうなります。通常、ソルバーは乱数を使用する場合、乱数を使用してより有機的な処理を行います。x+y=1xy
カール

2
ソルバーがソリューションを提供します。問題が「SOLVE」の場合、は解であり、その解(またはその他の解)を返す可能性があります。言い換えると、Pythonは未決定のシステムを解くことができるため、線形システムソルバーではありませんか?x+y=1x=1,y=0lstsq
Matthew Gunn

@MatthewGunn加えて、決定的なシステムを解くように回帰の反復法をプログラムできますが、それらは主に過決定システムで使用されるため、ソルバーにはなりません。
カール・

1
はい、私はつまらないと言って同意し、そのことをお詫び申し上げます。答えを書いている場合、「決定されたシステム用」というテキストは含めません。そうでなければ、素晴らしい答えです!。(例えば、1つの他の例...のためのソルバーブール充足可能性問題は、ほとんどのソリューションを多数持っており、目標は、(それらの問題で、システムはほとんど常に未定です)、単にそれらのいずれかを見つけることです。
マシュー・ガン

1

私は通常、ソフトウェアの説明に使用される「ソルバー」を聞きます。つまり、アルゴリズムの特定の実装に適用されることを意味します。たとえば、これはsolverとタグ付けされSciComp.SE質問のほとんどに当てはまるようです。

一般に、この用語は「明確な解決策」を伴う数学的問題のために予約されているようです。Sycoraxのコメントで指摘されているように、独自のソリューションは「十分に定義された」十分と見なされます。(Gurobiソルバーはこのクラスの問題のようです。その価値のために、Gurobiは私にとってソルバーのスイートまたはライブラリのように見えます)。

しかし、私はユニークさが必要だとは思いません。たとえば、ローカルとグローバルの両方の最適化問題には、明確に定義されているが一意ではないソリューションがある場合があります(たとえば、関数は、グローバル最小)。f[x]=sin[πx]2f[k]=0kZ

「最適化ソルバー」ではなく「方程式系ソルバー」について議論しているように思われるこの回答には同意しません。たとえば、線形最小二乗では、線形代数問題は過剰決定されますが、最適化問題は凸型であり、(非縮退の場合)一意の解を伴います。また、その回答にリンクされているWikipediaの「ソルバー」ページには、その例の中に「線形および非線形最適化の問題、最短パスの問題、最小スパニングツリーの問題」がリストされています。


コメントに応えて、私は「回帰」の場合の意味を明らかにします。

機能所定の、方程式系の解によって指定された であるAベクトルすべての成分がゼロになるようにします。機能に応じて、の寸法に応じて、何の解決策は、単一のユニークなソリューション、または多数の溶液(典型的には無限に多くの)は存在しないことができる零空間の。場合に線形である、すなわち、いくつかのために次にいいえない限り、解は存在しますF:RnRm

F[x]=0
xRnmF[x]FFFF[x]=AxbARm×n,bRmmrank[A]n

一方、与えられた目的関数実行可能なセットについては、最適化の解決策であるに依存します指定される 問題 は、すべてのに対してになるようなベクトルです。EF:RnR ΩFRnF

ϵ=minxΩFEF[x]
xΩFEF[x]EF[y]yΩF

「最小二乗」最適化では、関数は二乗の合計です。最も一般的な2つの最小二乗問題は次のとおりです。1) ここで、は過剰決定の連立方程式に対応し、および2) ここで、は劣決定の方程式のシステム。EF

EF[x]=F[x]2 , ΩF=Rn
F
EF[x]=x2 , ΩF={yRn F[y]=0}
F

Matlabなどの一般的な線形代数プラットフォームでは、linsolve()などの便利な関数でこれらの3つの異なる数学問題を「内部」で組み合わせることができます。ただし、LAPACKなどの低レベル(「ソルバー」)ライブラリはサポートしません。

明確化の最後の2つのポイント:

  • 「ソルバー」は通常、明確に定義された抽象化された数学問題に対応します。たとえば、「統計的推論」や「成功した予測」はそのような問題ではありません。言語では計算科学、あなたが確認するソルバを、あなたは、検証モデルを。

    • ユニーク/非ユニークまたは正確/近似のアイデアは完全に明確ではありません。方程式の平方システムの場合にのみ焦点を当てるとします。これにより、ほとんどの競合ポイントが削除されます。この分野での「反復解法」の話はどこにでもあります(たとえば、Google Scholarで約600,000ヒット)。したがって、「ソルバー」の事実上の定義には、このクラスのアルゴリズムが含まれている必要があります。これは、定義上、本質的に不正確です。

しかし、線形通常最小二乗。解は一意である可能性がありますが、エラー推定は最小です。これは、多くの場合不適切であり、一般にモンテカルロシミュレーションを使用した二変量生成方程式と一致しません。エラー。OLS(x)OLS(y)y
カール

線形OLSを呼び出すのは悪いことだと思います。近似は、誤解を招く神話を永続させるため、通常は「解決策」とは見なされない制限された条件下でのみ有効です。y
カール・

@Carl更新して、わかりやすく説明しました。私はあなたのコメントを完全に理解していませんが、統計的推論や機械学習予測などの「応用科学」問題の解決に言及しているようです。私の経験では(計算科学ではかなり広い)、「ソルバー」は純粋に数学的な問題を解決するためのソフトウェアを指すために使用されます。ソルバーを検証できますが、これはモデルの検証とは異なります。応用科学の問題が選択した数学的問題の仮定を満たさない場合、検証の失敗はソルバーが原因ではありません。
GeoMatt22

あなたは一つのスマートなクッキーです!それを疑わないでください。私はあなたの答えを読み、可能であれば貢献します。上記のコメントでは、ソルバーは簡単に検証でき、回帰はそれほど簡単ではありません。「応用されていない科学とは何か」という逆説を暗示しています。科学は仮説を検証した結果であり、証明または試行錯誤によるものです。回答、すべての科学が適用されます。
Carl

V&Vの用語は標準的なものです。たとえば、検証、検証、および計算工学と物理学における予測機能です。「簡単に言うと、検証とは、計算モデルの解の精度を評価することです。検証とは、計算シミュレーションの精度を実験データ。検証では、シミュレーションと現実世界の関係は問題ではありません。検証では、計算と現実世界の関係、つまり実験データが問題になります。」
GeoMatt22

0

私が思うソルバーで見つけようとする追加オプションエクセルの「値」、そこにあるように、いくつかの実行可能解を解決するための同様の機能から来ているソルバー単語ようにといくつかのより多くの等式と不等式の制約。mathematicaでは関数solveは同じことをする。Xf(X)=Y

英語(特に米国のメディアのおかげ)は、「クラッカー」〜「ハッカー」のようにコピーされる間違いによって進化する傾向があります。ソルバーも同様です。実際の最適化アルゴリズムの名前を隠すのに十分なほど抽象的です。多くの場合、実際の実装は、純粋に単一のアルゴリズムではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.