遺伝的アルゴリズムとはどのようなもので、どのような問題に適していますか?


16

私はこのサイトのいくつかの質問が遺伝的アルゴリズムに言及していることに気づきました。

私は前にこの言葉を聞いたことがありますが、これは私が今まで使ったものではないので、私はそれらがどのように機能し、何のために良いのかについてあまり知りません。私が知っているのは、それらが何らかの進化とランダムに変化する値を伴うことです。

基本的な原理を説明する実用的な例を含めて、簡単に説明していただけますか?

回答:


11

進化的アルゴリズムは、ダーウィンの自然selectionの原理に基づく最適化アルゴリズムのファミリーです。自然selectionの一部として、特定の環境には生存と繁殖を競う個体集団があります。これらの目標を達成する各個人の能力は、子供を持つ可能性、言い換えれば遺伝子を次世代の個人に渡す機会を決定します。 2つの目的。

世代を超えて継続的に改善されるこの原則は、問題の解決策を最適化するための進化的アルゴリズムによって採用されています。初期世代、異なる成る集団の個体はランダムに、または他の方法によって生成されます。個人は、多かれ少なかれ問題の解決策です。問題に関する個人の質はフィットネスと呼ばれ、解決する問題の解決策の妥当性を反映しています。個人の適応度が高いほど、その遺伝子型の一部またはすべてを次世代の個人に渡す可能性が高くなります。

個人は遺伝子型としてコード化され、**ビットベクトル(遺伝的アルゴリズム)または実ベクトル(進化戦略)など、任意の形状をとることができます。各遺伝子型は、個体を評価するとき、つまりその適合性が計算されるときに表現型に変換されます。場合によっては、表現型は遺伝子型と同一です:直接 コーディングと呼ばれます。それ以外の場合、コーディングは間接と呼ばれます。たとえば、長さ、高さ、幅で定義される直方体のサイズを最適化するとします。この例を単純化するために、これらの3つの量が0〜15の整数であると想定します。その後、4ビットの2進数を使用してそれぞれを記述できます。潜在的な解決策の例は、遺伝子型0001 0111 01010です。対応する表現型は、長さ1、高さ7、幅10の平行六面体です。

古い世代から新しい世代への移行中、バリエーション 演算子と呼ばれ、その目的は個人を操作することです。バリエーション演算子には2つの異なるタイプがあります。

  • 突然変異 オペレータの遺伝的変異と、同じ個体内の変動を導入するために使用されています、。
  • その 交叉 オペレータに使用される、繁殖から遺伝的交雑のように、少なくとも二つの異なる遺伝子型を横断します。

進化的アルゴリズムは、オペレーションズリサーチ、ロボット工学、生物学、ニュアンス、暗号化などのさまざまな分野で実証されています。さらに、複数の目的を同時に最適化でき、最適化する数学モデルのプロパティを想定していないため、ブラックボックスとして使用できます。唯一の本当の制限は計算の複雑さです。

ここに画像の説明を入力してください


こちらでご回答いただきありがとうございます!個人的にこれはAI SEにとって理想的な質問だと思いますが、基本的で「高レベル」であるため、OPと読者に、そのスタックに適した主題に関するより高度な質問のためにCross Validatedに指示することを恥じないでください。
デューク

8

遺伝的アルゴリズムは、問題に対して試行された多数の解決策をランダムに生成するアルゴリズムです。この一連の解決策は「人口」と呼ばれます。

次に、特定のフィットネス関数を使用して、これらのソリューションが問題をどの程度解決するかを確認しようとします。最適なフィットネス値を持つ試行されたソリューションは、新しい母集団を生成するために使用されます。これは、試行されたソリューションに小さな変更を加える(突然変異)か、既存の試行されたソリューションを組み合わせること(クロスオーバー)によって実行できます。

アイデアは、時間が経つにつれて、問題を解決するのに十分高い適応度の値を持つ、試行された解決策が現れるということです。

これのインスピレーションは進化論から来ました。最適なソリューションは存続し、生み出されます。

例1

木片から多くの形を切り取る最も効率的な方法を探していたと仮定します。できるだけ木材を無駄にしたくない。

あなたが試みた解決策は、木材の上にこれらの形状をランダムに配置することです。適合性は、この配置に従って形状を切断した後に残っている木材の量によって決まります。
残っている木材が少ないほど、解決策はより良いものになります。

例2

多数の点を通過する多項式を見つけようとしていると仮定します。試みた解はランダム多項式です。これらの多項式
適合度を決定するには、それらが与えられた点にどの程度適合するかを決定します。(この特定のケースでは、おそらく最小二乗法を使用して、多項式がどの程度ポイントに適合するかを決定します)。多数の試行にわたって、ポイントに十分に近似する多項式が得られるまで、ポイントによりよく適合する多項式が得られます。


ただし、ソリューションの意味は何ですか?特定の問題に関する実用的な例を教えてもらえますか?
幻滅したラーカー

@InquisitiveLurker例を追加しました。明確でない場合はお知らせください。回答を更新させていただきます。
SLバース-モニカの復活

6

この回答では、他の回答に加えて、どのように使用するかの実用的な例を要求します。それらは、遺伝的アルゴリズムが何であるかを説明する非常に良い仕事によるものと思われます。したがって、これは例を示します。

ある特定の入力からいくつかの出力を生成するニューラルネットワーク(それらは唯一のアプリケーションではありませんが)があるとします。遺伝的アルゴリズムはこれらの集団を作成し、どの出力が最適であるかを確認することで、集団のメンバーを繁殖させて殺します。最終的に、これが十分に複雑な場合、これによりニューラルネットワークが最適化されるはずです。

これは私が作成したデモンストレーションです。コーディングが間違っているにもかかわらず、理解に役立つ可能性があります。http://khrabanas.github.io/projects/evo/evo.html 進化ボタンを押して、目標をいじりましょう。

単純な遺伝的アルゴリズムを使用して、どの集団が生き残るかを繁殖、突然変異、決定します。入力変数がどのように設定されているかによって、ネットワークはそれらにある程度の近さを得ることができます。

遺伝的アルゴリズムは、RGBを取り込むことで出力色を生成するような「ニューラルネットワーク」を作成しようとしています。まず、ランダムな母集団を生成します。次に、母集団からランダムに3人のメンバーを取得し、適合度が最も低いメンバーを選択して、母集団から削除します。適合度は、2乗した最上位の目標の差+ 2乗した最下位の目標の差に等しくなります。次に、残りの2つを一緒に繁殖させ、死亡したメンバーと同じ人口に子供を追加します。交配が起こると、突然変異が起こる可能性があります。この突然変異は、値の1つをランダムに変更します。

サイドノートとして、それがどのように設定されているかにより、多くの場合、完全に正しいことは不可能ですが、それは相対的な近さに達します。


6

ここには、遺伝的アルゴリズムとは何かを説明し、応用例を示した多くの良い答えがあります。私はそれらが何のために良いのかについてのいくつかの一般的な目的のアドバイスを追加していますが、あなたがそれらを使うべきでない場合もあります。私の口調が厳しいように思えるのは、「不適切」セクションのいずれかのケースでGAを使用すると、一流のジャーナルから即座に論文が却下されるためです。

まず、あなたの問題は最適化の問題でなければなりません。最適化しようとしている「フィットネス関数」を定義する必要があり、それを測定する方法が必要です。

良い:

  • クロスオーバー関数は定義が簡単で自然です。特定の種類のデータを扱う場合、クロスオーバー/突然変異関数は簡単に定義できます。たとえば、2つの候補文字列をスプライシングして新しい文字列を取得することにより、文字列(たとえば、DNAまたは遺伝子配列)を簡単に変異させることができます(自然が遺伝的アルゴリズムを使用する理由です!)。あるツリーのブランチを別のツリーのブランチで置き換えることにより、ツリー(系統樹や解析ツリーなど)もスプライスできます。シェイプ(飛行機の翼やボートのシェイプなど)は、シェイプにグリッドを描画し、親からの異なるグリッドセクションを組み合わせて子を取得することにより、簡単に変更できます。通常、これは、問題が異なる部分で構成されていることを意味し、個別のソリューションからのパーツをまとめることが有効な候補ソリューションです。
    • つまり、座標が特別な意味を持たないベクトル空間で問題が定義されている場合、GAは適切な選択ではありません。GAとして問題を定式化するのが難しい場合、それは価値がありません。
  • ブラックボックスの評価:候補者にとって、フィットネス関数がコンピューターの外部で評価される場合、GAは良いアイデアです。たとえば、エアトンネルで翼の形状をテストする場合、遺伝的アルゴリズムを使用して、試してみるのに適した候補形状を生成できます。
    • 例外:シミュレーション。フィットネス機能がノズル設計のパフォーマンスを測定しており、各ノズル形状の流体力学をシミュレートする必要がある場合、GAが適切に機能する可能性があります。また、物理システムを時系列でシミュレートし、操作の過程でデザインがどの程度うまく機能するかに関心がある場合にも機能します。移動パターンのモデリング。しかし、偏微分方程式を制約条件として使用する方法は、文献などで開発されています。PDEは最適化を制約しているため、これは将来変更される可能性があります。

適切ではありません:

  • 関数の勾配計算できます。関数の勾配にアクセスできる場合、勾配降下を行うことができます。これは一般にGAよりもはるかに効率的です。勾配降下法は(GAと同様に)局所的最小値に問題があるかもしれませんが、これを軽減するために多くの方法が研究されています。
  • 閉じた形のフィットネス関数を知っています。その後、おそらく勾配を計算できます。多くの言語には自動差別化をサポートするライブラリがあるため、手動で行う必要さえありません。関数が微分可能でない場合は、部分勾配降下法を使用できます。
  • 最適化の問題は、線形プログラムや2次プログラムのような既知の形式です:GA(および一般的なブラックボックス最適化手法)は、評価する必要のある候補の数の点で非常に非効率的であり、可能な限り回避するのが最善です。
  • ソリューションスペースが小さい:サーチスペースを効率的にグリッド化できる場合、最適なソリューションが見つかったことを保証でき、ソリューションスペースの等高線図を作成して、さらに探索する必要がある領域があるかどうかを確認できます。

最後に、GAを検討している場合は、進化戦略の最近の研究を検討してください。私はCMA-ESに偏っています。これは、従来のGAではできない方法で、フィットネスのランドスケープの勾配の概念をとらえる優れたシンプルなアルゴリズムだと思います。


CMA-ESは、解を実数値のベクトルとして表現できる問題に適しています。
NietzscheanAI

5

別の答えに見られるように、遺伝的アルゴリズム(GA)を適用するために必要なのは、クロスオーバーと突然変異の影響を受ける形式で問題の潜在的な解決策を提示することだけです。理想的には、フィットネス機能は、単に「干し草の山の針」であるのではなく、ソリューションの品質に関する何らかのスムーズなフィードバックを提供します。

以下に、遺伝的アルゴリズム(および実際のメタヒューリスティック)が適している問題の特性をいくつか示します。

  • NP完全-問題の可能な解の数は指数関数的ですが、解の適合性のチェックは比較的安価です(技術的には、入力サイズに時間多項式があります)。
  • ブラックボックス-解決すべき問題について特に情報に基づいたモデルを持っていなくても、GAは適切に機能します。これは、これらのアプローチが問題を解決するための「迅速なプロトタイピング」アプローチとしても有用であることを意味します。

しかし、目的のための彼らの広範な使用にもかかわらず、ノートではガスが実際にあることではない機能オプティマイザ - GAメカニズムは、いくつかの遠くの高品質なソリューションを見つけることを期待して探索空間の「辺境」領域を探索するのではなく、周りの多くのクラスタ化しない傾向があります「フィットネスランドスケープ」で簡単に達成できるピーク。

GAの適用可能性の詳細は、有名な初期の論文「遺伝的アルゴリズムの問​​題を難しくしているのは何ですか?」

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