遺伝的アルゴリズムは、最適化手法の1つの形式です。多くの場合、関数の最適化には確率的勾配降下法とその導関数が最適な選択ですが、遺伝的アルゴリズムが依然として使用されることもあります。たとえば、NASAのST5宇宙船のアンテナは、遺伝的アルゴリズムを使用して作成されました。
一般的な勾配降下法よりも遺伝的最適化法の方が適しているのはいつですか?
遺伝的アルゴリズムは、最適化手法の1つの形式です。多くの場合、関数の最適化には確率的勾配降下法とその導関数が最適な選択ですが、遺伝的アルゴリズムが依然として使用されることもあります。たとえば、NASAのST5宇宙船のアンテナは、遺伝的アルゴリズムを使用して作成されました。
一般的な勾配降下法よりも遺伝的最適化法の方が適しているのはいつですか?
回答:
遺伝的アルゴリズム(GA)は経験則的に多くの場合に適切な答えを提供するのに優れたヒューリスティックのファミリーですが、特定のドメインに最適なオプションとなることはめったにありません。
デリバティブベースのアルゴリズムに言及しますが、デリバティブがない場合でも、GAよりも優れたパフォーマンスを発揮するデリバティブのない最適化アルゴリズムがたくさんあります。いくつかのアイデアについては、これとこの回答を参照してください。
多くの標準最適化アルゴリズムに共通するのは(導関数なしの方法でも)、基礎となる空間が滑らかな多様体(おそらくいくつかの離散的な次元を持つ)であり、最適化する関数がある程度うまく機能しているという仮定です。
ただし、すべての関数が滑らかな多様体で定義されるわけではありません。グラフまたは他の離散構造に対して最適化する場合があります(組み合わせ最適化)-ここでは専用のアルゴリズムがありますが、GAも機能します。
複雑で離散的な構造にわたって定義された関数に進むほど、特に遺伝演算子が最適に機能する表現を見つけることができる場合(より多くの手動調整とドメイン知識が必要)、より多くのGAが役立ちます。
もちろん、将来はGAを完全に忘れ、離散空間を連続空間にマッピングする方法を開発し、連続表現にある最適化機構を使用する可能性があります。
勾配降下法が単一基準の最適化専用である場合、遺伝的手法は多基準の最適化に適しています。勾配降下法を使用すると、導関数が存在し、最適解が1つしかない場合に最小関数を見つけることができます(ローカルミニマを除く場合)。遺伝的アルゴリズムは、多基準問題で使用でき、それぞれが最初の母集団から進化した母集団の個人を支援する連続した解決策につながります。最適化する値は個人の表現型であり、いくつかの表現型が存在する場合があります。一般に、各表現型の優れた価値を同時に持っている個人はいないため、解決策は1つだけではありません。最終母集団の個体は、すべて最適化のソリューションであり、「パレートフロント」の一部であり、「パレートランク1」としてマークされます。個人。これは、各表現型で同じパフォーマンスを持っている他のすべての個人と比較して、少なくとも1つの表現型が他の表現型よりも優れていることを意味します。
どの意味でベストですか?
私の経験では、GAは最も実用的なオプティマイザーの1つです。より正確なアルゴリズムの多くは、数学の世界で実際の問題を形式化するのに時間と労力を必要としますが、GAは複雑なルールと制約を持つコスト関数を処理できます(GAは特定の計算ではなく、実行アプローチによって関連付けられます)。このプロセスは簡単であり、探索的作業のために多くのアプローチを試すことができます。
また、繰り返されるタスクに適した将来の実行のために、アルゴリズムに過去のソリューションを再注入する可能性も高く評価しています。
概念的には、遺伝的アルゴリズムは関数のハッシュマップで表すことができ、Clojureのような関数型言語に適しています。Clojureは大きな結果を非常に迅速に達成できる言語でもあります。
遺伝的アルゴリズムはネストすることもできます。1つのGAのコスト関数をGAにすることができます。これらのアルゴリズムは最新のハードウェアとインフラストラクチャを活用しており、非常に大きな母集団を計算できるため、単純な突然変異/選択操作でも良好な結果を得ることができます。
波動関数の最小値を見つけるなどの単純な問題でも、GAはそれほど悪くなく、許容できる時間内に適切な精度を達成できます。
分析ソリューションの実行時間と精度は速いかもしれませんが、分析ソリューションを作成するために必要な時間は、期待される利点を上回ることがあります!そうするとき ?少なくともメタ最適化のために、私にはほぼ毎回。