人工生命と蛾の隠蔽色の進化
探索像
蛾を捕まえる鳥などの捕食者の側でも、無作為に餌を探しているのではない。餌の多い餌場を記憶したり、餌の姿を記憶する。一度捕まえた餌と似た姿の餌を探すことを、探索像*searchimageという。我々人間も探索像ができる。都会の雑踏の中で知人を偶然見つけるよりも、ある特定の知人を捜す方が発見効率は高いだろう。
沢田佳久氏の作った自然選択体験ゲームSPXは、探索像を実感できるゲームである。あなた自身が天敵の鳥になったつもりで蛾を捉えまくる。初めは十人十色(10個体)の模様を持つ蛾の模型(人工生命)がいるが、8個体発見して「捕食」すると残り2個体が両親となり、「有性生殖」して、両親の模様を混ぜ合わせ、少し突然変異も加えた新たな模様をもつ子が10個体できる。残念ながら全部を取り尽くすことはできず、必ず残り2個体の時点で10個体の子を残す。(もっとも、全部食べてしまうと自分が「飢え死に」してしまうだろうが)現実の多くの生物と異なり、2個体に雌雄の別はなく、どの2個体が残っても子を残すことができる。(ゾウリムシの接合はこれに近い)当然、この10個体の兄弟姉妹はある程度、互いに似通っている。それに共通した特徴(たとえば全体の色合いとか、頭や尾部の模様など)を発見できれば、1世代目より2,3世代目の方が、むしろ発見効率が高くなるだろう。
しかし、発見しやすいものを捉えることは、発見しづらい子孫を残すことになる。苦は楽の種、楽は苦の種というわけである。このとき、たとえば頭が黄色いなどの特徴をもつ個体が多く、あなた(天敵)がそれを捉えまくるなら、頭が黄色い個体は生き残る確率(適応度)が低くなる。今まで捕まえた個体に共通する形質を学習して探索像ができるのだが、それは少なくとも前の世代の多数派の形質である可能性が高い。それに対して、他の個体とかけ離れた形質(模様)を持つ個体は天敵に見つかりにくくなる。このように、自分の子孫の残し易さ(適応度*fitness)が自分の形質(模様)だけでなく、他個体の形質にも左右される状況を、頻度依存淘汰*(frequencydependentselection)という。今の場合、多数派が不利で少数派が有利になるから、子の模様は必ずしも同じ模様ばかりにならずに、多様性が維持される。
それに対して、背景により近い模様を持つ個体が生き延びることも考えられる。もしも背景に完璧に模した個体が生き残れば、どの個体も似たような「完璧な隠蔽色」が進化するだろう。つまり、頻度非依存で環境に対して最適な形質が生き残る状況では多様性は失われ、頻度依存で他個体とは異なる形質が生き残る状況では多様性が維持される。SPXがどちらの状況をもたらすかは、天敵であるあなたの腕次第である。
遺伝的アルゴリズム
GeneticAlgorithm
SPXでは、蛾が2個体残った際に子孫を残す方法が説明されている。蛾の模様は8桁の数値で特徴化され、その数値を変えれば子の模様が変わる。子は各桁ごとに両親のどちらかの数値を受け継ぐか、確率10%の突然変異で親と無関係の数値に変わる。これが各桁ごとに独立に生じるため、8桁すべてで突然変異が生じない確率は0.9の8乗で43%に過ぎない。
このように、通常、遺伝的アルゴリズムでは有性生殖による両親の形質の混ぜ合わせ、突然変異による新たな形質への変化が考慮される。最後に2個体残したのは両親が必要なためだが、この人工生命には性別がないので3個体残しても、4個体残しても良い。ただし、全部残せば自然淘汰が全く働かないから進化は起きない。逆に1個体しか残さないと、子10個体の多様性が低くなり、概ね進化速度が極端に遅くなる。多様性を残すことは適応進化を速める秘訣の一つである。
SPXでは最終目標はない。しかし多くの遺伝的アルゴリズムの問題では、個体ごとに適応度という評価値が得られ、その高いものから順に生き残るようにする。こうして、より高い評価値を与える「答え」を探すのである。計算を続けても、評価値が増えなくなった時点で計算をやめる。しかしそれが最適解とは限らない。遺伝的アルゴリズムでも神経回路模型でも、局所最適解(localoptimum)といって、そこから少し変えただけでは改良にならないが、大きく変えるともっと良い答えが存在することがある。SPXの場合は特に評価値は計算しない。天敵であるあなたが捕まえるかどうかで評価が決まる。
また、実際の進化では親より子の方が性能が落ちる場合もある。突然変異の多くは有害だから親より性能が悪い。両親の遺伝子を混ぜ合わせることにより、両親の形質より悪い形質しか残らないことがある。SPXでも、それは起こり得る。しかし工学の解法としてはこれは好ましくない。だから、前の世代で最高の性能を持つ遺伝子は、最低一個体は突然変異も有性生殖もさせずに子の世代に受け継がせるように工夫されることがある。これは実際の生物にはないことだが、遺伝的アルゴリズムの研究者は柔軟に物事を考えているのである。
先のSPXでは8桁すべてが独立に両親のいずれかの数値を受け継ぐと仮定したが、2桁ごとに両親いずれかから受け継ぐと仮定することもある。このとき、一の位と十の位はくっついて遺伝するので、進化の結末が少し変わることがある。どちらが効率的かは、解く問題によって変わる。