Up 遺伝的アルゴリズム (genetic algorithm, GA) 作成: 2017-08-25
更新: 2017-08-29


  • 「遺伝的アルゴリズムによる進化」からの発見:
      進化にとっての重要度:
        自然選択 > 染色体交差 (遺伝子組換え) > 突然変異

  • 遺伝的プログラミング (John Koza)
      有用・高度な仕事をこなす!

  • Danny Hillis
    • 進化は,共進化
        生命は共生的な過程であり,生存競争する仲間が必要
        ──特に,宿主と寄生者の共進化
    • 「平衡状態」は見掛けであって,実際は遺伝子形成 (相互作用) が活発に起こっている
        遺伝子形成期は懐胎期 ──新しい表現型誕生がその先にある
        誕生という<断続>のメカニズムは,<正のフィードバック>の螺旋
        螺旋の急転回──短時間──が,<断続>の様相を呈する


  • 参考/情報サイト
  • 参考文献
    • Waldrop, M.Mitchell ; Complexity ─ The emerging science at the edge of order and chaos.
        Simon & Schuster, 1992.
        田中三彦・遠山峻征[訳]『複雑系』, 新潮社, 1996.
    • Levy, Steven Artificial life : The quest for a new creation.
        Pantheon Books, 1992.
        服部桂[訳]『人工生命──デジタル生物の創造者たち』, 朝日新聞社, 1996.


     Waldrop, M.M. 『複雑系』, 新潮社, 1996.
    pp.224-227

    自然界の試行錯誤の手法──自然選択──を見習う。

    どうしたらいいかわれわれに皆目見当がつかないようなことをコンピュータにやらせるには、プログラムを〈書く〉かわりに、プログラムを進化させればいい。
    遺伝的アルゴリズムとはそういうことをするものだ。

    遺伝的アルゴリズムが最適化問題を解く上で実際に有用かつ効率的な方法である

    適応に関する理論と実証

    その仕組みを理解するために、コンピュータの内部へと入ってみる。
    そこではプログラムが11010011110001100100010100111011:::のように、二進数の0と1のつながりとして表現されている。
    その形式では、プログラムはまるで一個の染色体で、それぞれの二進数は「遺伝子」みたいだ。
    そしてひとたびこの二進数コードを生物学的に考えはじめると、その生物学的類似性を使ってプログラムを進化させることができる。

    それぞれの染色体を一つのコンピュータ・プログラムとして走らせ、あらかじめ用意しておいた問題でテストし、どの程度うまくこなしたかの尺度である得点をそれに付す。
    生物学的にいえば、この得点は個体の「適応度」──繁殖の成功の確率──ということになる。
    適応度が高くなればなるほど、個体が遺伝的アルゴリズムにより選択され、遺伝子がつぎの世代へ移っていく可能性が高くなる。

    さらに、繁殖に十分適するものとして選択された複数の個体を取り出し、生殖作用により新しい世代の個体をつくり出す。
    残りは死滅させる。
    こうした遺伝子の有性生殖的交換によって生み出された子孫は、新しい世代サイクルの中で、あるいは子孫どうしで、あるいはそれらの親たちと、競い合っていく。
    ここが、遺伝的アルゴリズムとダーウィンの自然選択の決定的に重要な段階だ。
    もしその交換がなかったら、子孫はその親とまったく同じだったろうし、その個体群は停滞へと向かうにちがいない。
    劣勢な者は徐々に滅び、優勢な者にもなんら改善は見られないだろう。
    しかし実際には有性生殖的交換があるから、子孫はその親と類似しながらも異なっているのだ。
    しかも、ときおり優れてさえいる。

    そして、そうしたことが起こると、そういった改善が個体群全体に広がってその種を著しく改善していく見込みが十分ある。
    セックスによる遺伝子の交換は個体群に変異をもたらすだけでなく、同時にそれは、平均以上の適応度をもたらす遺伝子群──要するに、構成要素──ーを探り当てるひじように優れたメカニズムでもあるのだ。

    たとえばこのアルゴリズムを、ある複雑な関数の最大値を探す最適化問題に使ったとしよう。
    そしてそのアルゴリズムの内部の個体群のデジタル染色体が、たとえば 11####11#10###10とか##1001##11101t# のような特定のパターンの二進数遺伝子であるときひじように高い得点を取ると仮定しよう( # は「なんでもいい」という意味── 1でも0でもよいということ)。
    その場合、そういうパターンが構成要素として機能するはずだ。
    たぶん、それらがその関数の値が平均値を上回るような変数の範囲を指し示すからだ。

    しかし理由はともかく、そのような構成要素を含んでいる染色体はどんどん栄えて個体群全体に広がっていく傾向をもち、そういう要素を含まない染色体に取って代わる。
    さらに、デジタル染色体は生殖作用によって各世代ごとにその遺伝的素材を入れ替えることを許されているから、その個体群はつねに新しい構成要素を、そして既存の構成要素の新しい組み合わせを、つくり出していく。
    だから遺伝的アルゴリズムは、優れた構成要素を二重にも三重にも兼ね備えた個体をすばやくつくっていく。
    そしてもしそうした構成要素が協力して特別な利点を授けるなら、それを授けられた個体は、以前よりいっそう速く個体群全体に広がっていく。
    そしてその結果、遺伝的アルゴリズムは、急速に最適化問題の解に向かって収斂していく。

    生殖と交差が、遺伝子の構成要素の出現と共進化のメカニズムをもたらしていた。
    そしてまたそれが、すばらしい効率で個体群が可能性の空間を探索していくメカニズムになっていた。

    「生殖と交差、それに突然変異が存在すれば、平均以上の適応度を示すものならどんな小さな遺伝子群でも、そのほとんどは指数関数的にその数を増やしていく」