遺伝的アルゴリズムの詳細な説明と実装

遺伝的アルゴリズムの概要

遺伝的アルゴリズムは、自然進化理論にインスピレーションを得た検索アルゴリズムのファミリーです。遺伝的アルゴリズムは、自然選択と生殖のプロセスを模倣することで、検索、最適化、学習を含むさまざまな問題に対して高品質のソリューションを提供できます。同時に、それらは自然の進化に似ているため、特に多数のパラメーターと複雑な数学的表現を伴う問題の場合、従来の検索および最適化アルゴリズムが遭遇する障害の一部を克服できます。

ダーウィンの進化論のアナロジー

ダーウィンの進化論

遺伝的アルゴリズムは、自然に似たダーウィン進化論の簡略化されたバージョンです。
ダーウィンの進化論の原理は次のように要約できます。

  1. 変動: 母集団内の個々のサンプルの特性 (形質、属性) は異なる場合があり、これによりサンプルが互いにある程度異なります。
  2. 継承: 特定の特性は子孫に受け継がれます。これにより、子孫サンプルと親サンプルの間にある程度の類似性が生じます。
  3. 選択: 通常、個体群は特定の環境内でリソースを求めて競合します。環境によりよく適応した個体は生存において有利であるため、より多くの子孫を残します。

言い換えれば、進化は集団内の互いに異なる個体のサンプルを維持します。環境に適応した個体は、生き残り、繁殖し、その特性を次世代に伝える可能性が高くなります。このようにして、世代が経つにつれて、種は環境により適応していきます。進化の重要な推進力は、交叉、組換え、または交配、つまり両方の親の形質を組み合わせて子孫を生み出すことです。クロスオーバーは集団の多様性を維持し、時間の経過とともにより良い形質を融合させるのに役立ちます。さらに、偶然の変化を導入することにより、突然変異または突然変異(形質のランダムな変動)が進化において重要な役割を果たす可能性があります。

遺伝的アルゴリズムの対応する概念

遺伝的アルゴリズムは、特定の問題に対する最適な解決策を見つけようとします。ダーウィンの進化論は集団の個々の特性を保存しますが、遺伝的アルゴリズムはindividuals特定の問題に対する一連の候補解 ( とも呼ばれます) を保存します。これらの候補ソリューションは繰り返し評価され、次世代のソリューションの作成に使用されます。より優れたソリューションが選択される可能性が高く、その特性は次世代の候補ソリューション セットに引き継がれます。このようにして、世代を更新することで、一連の候補ソリューションが現在の問題をより適切に解決できるようになります。
遺伝子型
自然界では、生殖、繁殖、突然変異は、染色体を構成する遺伝子の集合である遺伝子型によって特徴付けられます。
遺伝的アルゴリズムでは、各個人は一連の遺伝子を表す染色体で構成されます。たとえば、染色体はバイナリ文字列として表すことができ、各ビットは遺伝子を表します。
染色体
人口
遺伝的アルゴリズムは、多数の個体 (個人)、つまり現在の問題に対する候補解の集合を維持します。各個人は染色体で表されるため、これらの人種の個人は染色体の集合として見ることができます。
候補ソリューションのセット

フィットネス機能
アルゴリズムの各反復で、個人は適応度関数 (目的関数とも呼ばれます) を使用して評価されます。目的関数は、最適化に使用される関数、または最適化によって解決しようとしている問題です。
より高い適応度スコアを持つ個体は、より優れたソリューションを表しており、繁殖用に選択される可能性が高く、その形質が次世代で発現される可能性が高くなります。遺伝的アルゴリズムが進行するにつれて、解の品質が向上し、適合度が増加します。満足のいく適合度の値を持つ解が見つかると、遺伝的アルゴリズムは終了します。

選択
集団内の各個体の適応度を計算した後、選択プロセスを使用して、集団内のどの個体を再生産して次世代を生み出すために使用するかを決定します。より高い値を持つ個体が選択され、その個体を継承する可能性が高くなります。遺伝物質を次世代へ。
適応度が低い個体を選択する可能性はまだありますが、確率は低くなります。このようにして、その遺伝物質は完全には廃棄されません。
クロスオーバー
新しい個体のペアを作成するには、通常、現在の世代から選択された親のサンプルの染色体の一部が交換 (交叉) されて、子孫を表す 2 つの新しい染色体が作成されます。この操作はインターリーブまたは再結合と呼ばれます。
クロス

突然変異
突然変異操作の目的は、母集団を定期的にランダムに更新し、染色体に新しいパターンを導入し、解空間の未知の領域での検索を促進することです。
突然変異は、遺伝子のランダムな変化として現れることがあります。突然変異は、1 つ以上の染色体の値をランダムに変更することによって実現されます。たとえば、バイナリ文字列のビットを反転するには、次のようにします。
突然変異

遺伝的アルゴリズム理論

遺伝的アルゴリズムを構築する理論的仮説 - 現在の問題の最適解は複数の要素で構成されており、そのような要素をより多く組み合わせると、問題の最適解に近づきます。
集団内の個体には最適解に必要な要素が含まれており、選択と交雑のプロセスを繰り返すことで個体はこれらの要素を次世代に伝え、場合によっては最適解の他の必須要素と組み合わせることができます。これにより、集団内のますます多くの個体に最適な解決策を構成する要素を含めるように指示する遺伝的圧力が生じます。

スキーマ定理

因子仮定のより正式な表現は、遺伝的アルゴリズムの基本定理としても知られるホランド スキーマ定理です。
この定理は、スキーマは染色体内に見られるパターン (またはテンプレート) であると述べています。各スキーマは、特定の類似性を持つ染色体のサブセットを表します。
たとえば、染色体のグループが長さ 4 のバイナリ文字列で表される場合、スキーマ 1 01 はこれらの染色体すべてを表します。ここで、左端の位置は 1、右端の 2 つの位置は 01、左から 2 番目の位置はis は 1 または 0 で、ワイルドカードを表します。
各スキーマには、次の 2 つのメトリックがあります。

  1. 順序: 固定数の数
  2. 長さの定義: 最も遠い 2 つの固定数値の間の距離
    次の表に、4 ビット バイナリ スキーマとその測定値の例をいくつか示します。
スキーマ 注文 長さの定義
1101 4 3
1*01 3 3
*101 3 2
**01 2 1
1*** 1 0
**** 0 0

集団内の各染色体は複数のスキーマに対応します。たとえば、染色体 1101 は、それらが表すすべてのパターンに一致するため、この表に表示されるすべてのパターンに対応します。染色体の適合度が高い場合、その染色体とそれが表すすべてのスキーマが選択操作を生き残る可能性が高くなります。この染色体が別の染色体と交差するか、突然変異を起こすと、一部のパターンは保存され、その他のパタ​​ーンは消滅します。低次のスキーマや定義の長さが短いスキーマは、生き残る可能性が高くなります。
したがって、スキーマ定理は、次数が低く、定義長が短く、適合度が平均を超えるスキーマの頻度が、世代が進むにつれて指数関数的に増加すると述べています。言い換えれば、遺伝的アルゴリズムが発展するにつれて、より効率的なソリューションの特性を表す、より小さく単純な特徴の構成要素が集団内にますます出現することになります。

遺伝的アルゴリズムと従来のアルゴリズムの違い

遺伝的アルゴリズムと、勾配ベースのアルゴリズムなどの従来の検索および最適化アルゴリズムとの間には、いくつかの重要な違いがあります。

  1. 集団ベースの
    遺伝的検索は、単一の候補ではなく、一連の候補解 (個人) に対して実行されます。検索中、アルゴリズムは現在の世代からの個人のセットを保持します。遺伝的アルゴリズムを繰り返すたびに、次世代の個体が作成されます。
    対照的に、他のほとんどの検索アルゴリズムは単一のソリューションを維持し、それを繰り返し変更して最適なソリューションを見つけます。たとえば、勾配降下法アルゴリズムは、現在の最急降下 (指定された関数の勾配の負の値) の方向に現在の解を繰り返し移動します。
  2. 遺伝的表現
    遺伝的アルゴリズムは、候補解に直接作用するのではなく、その表現 (またはコード) (染色体と呼ばれることが多い) に作用します。染色体は、交叉や突然変異を利用した遺伝子操作が可能です。
    遺伝的表現を使用することの欠点は、検索プロセスが元の問題領域から切り離されてしまうことです。遺伝的アルゴリズムは染色体が何を表しているのかを知りませんし、それを解釈しようともしません。
  3. 適応度関数
    適応度関数は、解決すべき問題を表します。遺伝的アルゴリズムの目的は、適応度関数を使用して得られた最高スコアを持つ個人を見つけることです。
    多くの従来の検索アルゴリズムとは異なり、遺伝的アルゴリズムは適合度関数で取得された値のみを考慮し、導関数やその他の情報には依存しません。これにより、数学的に導出することが困難または不可能な関数を扱うのに適しています。
  4. 確率的動作
    従来のアルゴリズムの多くは本質的に決定的ですが、遺伝的アルゴリズムが次の世代を生成するために使用するルールは確率的です。
    たとえば、選択された個体は次世代の作成に使用され、個体の適応度スコアが高いほど個体が選択される確率は高くなりますが、より低いスコアの個体を選択することも可能です。
    プロセスの確率的な性質にもかかわらず、遺伝的アルゴリズムに基づく検索はランダムではなく、ランダム性を利用して、結果を改善する可能性がより高い検索空間の領域に検索を向けます。

遺伝的アルゴリズムの長所と短所

アドバンテージ

  1. 大域最適
    多くの場合、最適化問題には極大値と極小値があります。これらの値は、周囲のソリューションよりも優れているが、最適ではないソリューションを表します。
    従来の検索および最適化アルゴリズムのほとんど、特に勾配ベースの検索および最適化アルゴリズムは、全体的な最大値を見つけるのではなく、極大値に陥る傾向があります。
    遺伝的アルゴリズムは全体的な最大値を見つける可能性が高くなります。これは、1 つの候補解ではなく一連の候補解を使用するためであり、多くの場合、交叉操作と突然変異操作により、以前の解とは異なる候補解が生成されます。集団の多様性を維持し、早期の収束(早期収束)を回避しようとする限り、全体的な最適解を生み出すことは可能です。
  2. 複雑な問題の処理
    遺伝的アルゴリズムは各個人の適応度関数スコアのみを必要とし、適応度関数の他の側面 (導関数など) から独立しているため、導出が困難または不可能な複雑な数学的表現を持つ関数を解くために使用できます。
  3. 数学的表現が欠如している問題への対処
    遺伝的アルゴリズムは、数学的表現がまったく欠如している問題に使用できます。これは、フィットネスが人工的に設計されているという事実によるものです。たとえば、最も魅力的な色の組み合わせを見つけるには、さまざまな色の組み合わせを試し、ユーザーにこれらの組み合わせの魅力を評価してもらいます。遺伝的アルゴリズムを適用して、意見に基づくスコアを適応度関数として使用してスコアの最適な組み合わせを検索します。適合度関数には数学的表現がなく、特定の色の組み合わせからスコアを直接計算することはできませんが、遺伝的アルゴリズムを実行することは可能です。
    遺伝的アルゴリズムは、2 人の個人を比較してどちらが優れているかを判断できる限り、各個人の適応度が利用できない場合でも処理できます。たとえば、ML アルゴリズムを使用してシミュレーション レースで車を運転し、次に遺伝的アルゴリズム ベースの検索を使用すると、ML アルゴリズムの異なるバージョンを相互に比較してどちらのバージョンが優れているかを判断することで、ML アルゴリズムを最適化および調整できます。
  4. ノイズ耐性
    問題によってはノイズが発生する場合があります。これは、同様の入力値であっても、結果として得られる出力値が毎回異なる可能性があることを意味します。これは、たとえば、異常なデータがセンサーから生成された場合や、スコアリングが人間の視点に基づいている場合に発生する可能性があります。
    この動作は多くの従来の検索アルゴリズムに干渉する可能性がありますが、遺伝的アルゴリズムは個人の交差と再評価を繰り返すため、一般にこれに対して堅牢です。
  5. 並列処理
    遺伝的アルゴリズムは、並列化と分散処理に適しています。適応度は各個人に対して独立して計算されます。これは、母集団内のすべての個人を同時に評価できることを意味します。
    さらに、選択、交叉、突然変異の操作は、それぞれ集団内の個体と個体のペアに対して同時に実行できます。
  6. 継続的な学習
    進化は決して止まらず、環境条件が変化しても、人々は徐々にそれに適応していきます。遺伝的アルゴリズムは、変化する環境でも継続的に実行でき、いつでも現在の最適なソリューションを取得して使用できます。しかし、要求される環境の変化速度は遺伝的アルゴリズムの探索速度よりも遅い。

制限

  1. 特別な定義が必要である
    遺伝的アルゴリズムを特定の問題に適用する場合、適応度関数と染色体構造、および問題に適用できる選択、交叉、および突然変異の演算子を定義する、適切な表現を作成する必要があります。
  2. ハイパーパラメータ調整
    遺伝的アルゴリズムの動作は、集団サイズや突然変異率などの一連のハイパーパラメータによって制御されます。遺伝的アルゴリズムを特定の問題に適用する場合、ハイパーパラメーターを設定するための標準ルールはありません。
  3. 計算量
    が多い 母集団のサイズが大きいと計算量が多くなり、良好な結果が得られるまでに時間がかかる可能性があります。
    これらの問題は、ハイパーパラメータの選択、並列処理、場合によっては中間結果のキャッシュによって軽減できます。
  4. 時期尚早な収束 ある
    個人の適応度が他の集団の適応度よりもはるかに高い場合、集団全体をカバーするのに十分なほど反復する可能性があります。これにより、遺伝的アルゴリズムが全体的な最大値を見つけるのではなく、途中で極大値に陥ってしまう可能性があります。
    これを防ぐには、種の多様性を保証する必要があります。
  5. 保証されていない解の品質
    遺伝的アルゴリズムの使用は、当面の問題の全体的な最大値を見つけることを保証しません (ただし、これは、特定の種類の問題に対する分析的な解法でない限り、ほとんどすべての検索および最適化アルゴリズムに当てはまります)。
    一般に、遺伝的アルゴリズムは、適切に使用されれば、妥当な時間内で適切な解決策を提供できます。

遺伝的アルゴリズムの応用シナリオ

  1. 複雑な問題の数学的表現: 遺伝的アルゴリズムは適応度関数の結果のみを必要とするため、区別するのが困難または不可能な目的関数を伴う問題、多数のパラメーターを伴う問題、および混合パラメーターを伴う問題タイプに使用できます。
  2. 数式のない問題: 遺伝的アルゴリズムでは、小数値が取得できるか、2 つの解を比較する方法がある限り、問題の数学的表現は必要ありません。
  3. ノイズの多いデータに関する問題: 遺伝的アルゴリズムは、センサー出力から得られたデータや人間のスコアリングに基づいたデータなど、矛盾している可能性のあるデータに対処できます。
  4. 時間の経過とともに変化する環境への影響: 遺伝的アルゴリズムは、変化に適応する新しい世代を継続的に作成することで、ゆっくりとした環境変化に対応できます。

ただし、問題に既知の特殊な解決策がある場合は、既存の従来の方法または分析方法を使用する方がより効果的な選択肢になる可能性があります。

遺伝的アルゴリズムのコンポーネント

遺伝的アルゴリズムの中心となるのはループです。選択、交叉、突然変異の遺伝的演算子が順番に適用され、個体が再評価され、停止条件が満たされるまで継続されます。

アルゴリズムの基本的な流れ

次のフローチャートは、基本的な遺伝的アルゴリズム プロセスの主な段階を示しています。

Created with Raphaël 2.3.0 开始 创建初始种群 计算种群中每个个体的适应度 选择 交叉 突变 计算种群中每个个体的适应度 满足终止条件? 选择适应度最高的个体 结束 yes no

初期集団を作成する

初始种群是随机选择的一组有效候选解(个体)。由于遗传算法使用染色体代表每个个体,因此初始种群实际上是一组染色体。

计算适应度

适应度函数的值是针对每个个体计算的。对于初始种群,此操作将执行一次,然后在应用选择、交叉和突变的遗传算子后,再对每个新一代进行。由于每个个体的适应度独立于其他个体,因此可以并行计算。
由于适应度计算之后的选择阶段通常认为适应度得分较高的个体是更好的解决方案,因此遗传算法专注于寻找适应度得分的最大值。如果是需要最小值的问题,则适应度计算应将原始值取反,例如,将其乘以值(-1)。

选择、交叉和变异

将选择,交叉和突变的遗传算子应用到种群中,就产生了新一代,该新一代基于当前代中较好的个体。
选择(selection)操作负责当前种群中选择有优势的个体。
交叉(crossover,或重组,recombination)操作从选定的个体创建后代。这通常是通过两个被选定的个体互换他们染色体的一部分以创建代表后代的两个新染色体来完成的。
变异(mutation)操作可以将每个新创建个体的一个或多个染色体值(基因)随机进行变化。突变通常以非常低的概率发生。

算法终止条件

在确定算法是否可以停止时,可能有多种条件可以用于检查。两种最常用的停止条件是:

  1. 已达到最大世代数。这也用于限制算法消耗的运行时间和计算资源。
  2. 在过去的几代中,个体没有明显的改进。这可以通过存储每一代获得的最佳适应度值,然后将当前的最佳值与预定的几代之前获得的最佳值进行比较来实现。如果差异小于某个阈值,则算法可以停止。

其他停止条件:

  1. 自算法过程开始以来已经超过预定时间。
  2. 消耗了一定的成本或预算,例如CPU时间和/或内存。
  3. 最好的解已接管了一部分种群,该部分大于预设的阈值。

其他

精英主义(elitism)

尽管遗传算法群体的平均适应度通常随着世代的增加而增加,但在任何时候都有可能失去当代的最佳个体。这是由于选择、交叉和变异运算符在创建下一代的过程中改变了个体。在许多情况下,丢失是暂时的,因为这些个体(或更好的个体)将在下一代中重新引入种群。
但是,如果要保证最优秀的个体总是能进入下一代,则可以选用精英主义策略。这意味着,在我们使用通过选择、交叉和突变创建的后代填充种群之前,将前n个个体(n是预定义参数)复制到下一代。复制后的的精英个体仍然有资格参加选择过程,因此仍可以用作新个体的亲本。
Elitism策略有时会对算法的性能产生重大的积极影响,因为它避免了重新发现遗传过程中丢失的良好解决方案所需的潜在时间浪费。

小生境与共享

在自然界中,任何环境都可以进一步分为多个子环境或小生境,这些小生境由各种物种组成,它们利用每个小生境中可用的独特资源,例如食物和庇护所。例如,森林环境由树梢,灌木,森林地面,树根等组成;这些可容纳不同物种,它们生活在该小生境中并利用其资源。
当几种不同的物种共存于同一个小生境中时,它们都将争夺相同的资源,从而形成了寻找新的,无人居住的生态位并将其填充的趋势。
在遗传算法领域,这种小生境现象可用于维持种群的多样性以及寻找几个最佳解决方案,每个解决方案均被视为小生境。
例如,假设遗传算法试图最大化具有几个不同峰值的适应度函数:
いくつかのピークを持つフィットネス関数

遺伝的アルゴリズムの傾向は全体的な最大値を見つけることであるため、ほとんどの個体は一定期間後に最も高いピーク付近に集中します。これは、現在の世代の個人を表す x 印の位置を使用して図に示されています。
しかし、場合によっては、グローバル最大値に加えて、他の (またはすべての) ピークを見つけたいことがあります。この目的を達成するために、各ピークをニッチとして考えることができ、その高さに比例してリソースが提供されます。次に、これらの資源を占有している個体間で共有(または分配)する方法を見つけます。理想的には、これにより種がそれに応じて割り当てられるようになります。最高峰には最も多くの報酬が得られるため、最も多くの人々が集まり、その他の峰はその資源を減らすことになります。報酬を少なくすることで、種の数をそれに応じて増やすことができます。
ニッチの例

共有メカニズムを実装する 1 つの方法は、各個人の生の適応度値を (その個人に関する) 他のすべての個人の距離の合計で割ることです。もう 1 つのオプションは、各個人の生の適応度を、その周囲のある半径内にある他の個人の数で割ることです。

遺伝的アルゴリズムの演習

奥深いフレームワークを使用して、遺伝的アルゴリズムの Hello world —— OneMax 問題を実装すると、コードはリンクを実現します

おすすめ

転載: blog.csdn.net/LOVEmy134611/article/details/111639624