もう少し詳しい説明
もう少し詳しい説明

 一般にニューラルネットワークを使った人工生命は、教師信号の入力が必要不必要に関係なく個体中にニューロン間の結合の重みを変化させるための学習アルゴリズムを持っています。
 ここで紹介する人工生命は、個体内にニューロン間の結合の重みを変化させるためのアルゴリズムを持っていませんが、系全体に遺伝的アルゴリズムを使うことによってニューロン間の結合の重みを変化させています。
通常の遺伝的アルゴリズムでは適応度評価基準が必要ですが、今回の手法には必要ありません。
 単体の人工生命には学習能力がなく、生まれてから死ぬまで能力は固定されていますが、世代が交替していく度に能力が改善されていきます。
 ここで紹介する手法は、個体が学習アルゴリズムを持たなくても遺伝的アルゴリズムと自然淘汰の原理を使うことによりニューロン間の結合の重みを変化させて人工生命が環境に対して進化していくことを示します。
 このプログラムでは餌を多く獲得した個体が遺伝子を子孫に残す確率が大きくなるような環境を作っています。
実際にプログラムを走らせると時間の経過に伴って全体的に餌の獲得率が大きくなることがわかります。
 この手法ではニューロン間の結合の重みを遺伝的アルゴリズムで使う遺伝子の要素と対応させています。
一つの個体ではニューロン間の結合の重みを24個使っているため、遺伝子の要素は24個になります。
 プログラムをスタートさせると、画面上に人工生命が10体表示されます。
人工生命は入力ニューロン8個、出力ニューロン3個をもっています。
1個の入力ニューロンは軸策により3個の出力ニューロンに結合しています。
つまり、ニューロン間の軸策は全部で3×8で24本になります。

●人工生命のふるまい

 プログラムがスタートするとランダムにニューロン間の結合の重みが決定されます。
人工生命は円形をしており8個の入力ニューロンは円の縁に等間隔に配置されています。
一つの入力ニューロンは3つの出力ニューロンに繋がっています。
入力信号を受けると入力ニューロンが発火しますが、一度に一つの入力ニューロンだけが発火します。
発火する入力ニューロンは、餌の一番近くにあるニューロンです。
発火する出力ニューロンは、発火した入力ニューロン繋がっている3つの出力ニューロンのうち一番値の大きいニューロンです。
3個の出力ニューロンはそれぞれ人工生命の右回転、無回転、左回転に対応しています。
人工生命は生まれてから死ぬまで、一定の速さで前進しつづけ、回転することによってのみ進行方向を替えます。
餌の方向にうまく回転して前進することで餌を獲得することができます。
 2世代目以降の人工生命の発生の仕方は2通りあります。
 第1の方法では、餌を3個獲得したら2つに分裂します。
その際、一体は変化しません。
もう一体は元の個体のニューロンの結合の重み24カ所のうち2カ所をランダムに交換します。
つまり、新しく生まれた人工生命は、元の個体と少しだけ異なる行動をします。
 第2の方法は2体の人工生命が出会うことで、複数点交叉が行われ新しい人工生物が1体生成されます。
その際、元の2体は変化しません。
 画面上の人工生命は10体に固定されていて、新しい個体が生まれると寿命の順番が回ってきた個体は死んでいきます。
人工生命は餌を獲得することで寿命を延ばすことができます。
つまり、餌を獲得する能力の小さい個体は子孫を残せないことになります。
逆に餌を多く獲得できる個体は自分の遺伝子を子孫に伝えることができます。
 このプログラムを一定時間走らせると、餌を獲得する能力の高い集団に自然淘汰されていきます。
このプログラムで求めなければならないものは一定の時間が経過した後のニューロン間の結合の重みです。
この例では非常に単純な生物を使っているので人工生命がどのように行動したら餌を効率よく獲得できるか予想できます。
前進方向に餌があれば回転しない。体の右半分の方向に餌があれば右回転。体の左半分の方向に餌があれば左回転するというものです。
実際にプログラムを走らせてみると、最終的にニューロン間の結合の重みはこの値に落ち着くことが分かります。
 個体の寿命には運の善し悪しが強く作用するため、能力の高い個体が最後まで生き残るとは限りません。
しかし、繰り返し試行すると解が一定の値に収束することがわかります。
 今回紹介した手法で、ニューラルネットワークの学習アルゴリズムと遺伝的アルゴリズムの適応度評価基
準方を使わなくても、系全体の環境を設定することで、ニューラルネットワークに学習をさせることが可能
なことがわかります。

◆戻る