見出し画像

もう一つの遺伝的アルゴリズム:デジタルチェーン構造とピンホールワールド

私は、生命の起源についての独自研究をしています。手がかりの少ない生命の起源の謎について少しでも解き明かすために、進化や発展をする他の仕組みに働いているメカニズムとの類似点から知見や洞察を得るというアプローチを取っています。

これまでは、知能、社会などを対象にメカニズムの抽出を行ってきました。今回の記事では、生物、つまりDNAの進化に焦点を当ててメカニズムを考えていきます。

■遺伝的アルゴリズムの概説

遺伝的アルゴリズムは、生物のDNAの遺伝メカニズムのモデルを参考して考案されたコンピュータの計算処理手法です。

無数のパラメータの組合せの中から最適なパラメータを探し出す問題に、主に使用します。例えば、ある化学物質を生成するために、溶媒の温度、圧力、中に溶かしておく物質A,B,Cの濃度をどれくらいにすると、最も効率的な生成ができるかを求める、と言ったようなケースが考えられます。

この時、それぞれのパラメータをランダムに設定して最初のパラメータセットを作ります。次に、最初のパラメータセットから「子供」を作ります。「子供」は「親」とほとんど同じパラメータですが、少しだけ変更を加えます。このようにして、一つの「親」から複数の「子供」を作ります。

次に、それぞれの「子供」のパラメータで、化学物質の生産効率を調べ、生産効率が良かった「子供」が、次の世代ではより多くの子供を作り出す、と言った操作を行います。これにより、化学物質の生産面で、効率のよいパラメータを持った個体の特徴が次の世代に引きつがれ、次第に最適なパラメータに全体が近づいていくことができるようになります。

また、生物の遺伝子の突然変異のように、時々パラメータを大きく変更するような操作を加える場合もあります。これにより、意外なパラメータの組合せが実は最適だったというようなケースが見つけられる可能性もあります。

■デジタルチェーン構造

一般には、先ほど述べたような考え方が遺伝的アルゴリズムと、その応用モデルになります。一方で、実際の生物の進化は、この例とは異なります。

まず、生物の遺伝子は、アナログな数値パラメータの集合ではなく、DNAです。DNAは塩基の組合せの系列ですので、いわばデジタルなチェーン構造をしています。4種類の塩基が並んでいますので、仮にこの4種をA,B,C,Dという記号で表現すると、例えばABBDCABDAC・・・・といった、デジタルチェーン構造を持ったものです。

■スロープ型とピンホール型の探索

次に、適用対象ですが、先ほどの例では、最適なパラメータを見つけるという対象でしたが、DNAの場合はそれよりも複雑です。

◇ケース1:既に機能が発現していて、そのパラメータの中で最適なものを探索するケース。

これは例えばキリンの首の長さを思い浮かべてください。長さが足りなければ高い所の木の葉を食べることができませんし、長すぎるとバランスを維持したり敵から逃げたりするのに不都合でしょう。このため、ちょうど適した首の長さになるように進化したと考えられます。

このケースは、概ね先ほどの化学物質の例と同様のイメージで進化したと考えらえます。この場合、斜面をイメージすることができます。より斜面の低い方の個体が生存確率が高くなり、一番低いところまで進化が進んでいくイメージです。このため、スロープ型の探索と表現することにします。

◇ケース2:新しい機能の発現を探索するケース。

こちらのケースは、先ほどのような最適化とは異なります。例えばABBCCCDDDDという塩基の並びができれば新しい機能が発現するというようなものです。この場合、この並びのどこか1か所でも別の塩基になっていると、その機能は発現しません。

ピンポイントでその塩基の並びにならない限り、どんなに近くても遠くても機能が発現しない事には変わりません。このため、最適なパラメータに近い個体が増殖するという先ほどの例のような処理は起こりません。新機能の並びに合致しなければ、どの個体も子供を残す数は同じです。

少しパラメータが異なる子供を作る事を繰り返すことで、徐々に探索範囲を広げていきます。これを繰り返して、ある一点の答えが見つかるまで、探索するイメージです。スロープ型探索に対して、こちらはピンホール型の組合せ探索と表現することとします。

■スロープワールドとピンホールワールド

生物の場合は、その機能が発現した時の周囲の環境に依存して、その機能が役に立つかどうかが決まります。

その機能が発現した時に、その機能が役に立つような環境でなければ意味がありません。例えば水中で肺呼吸の機能が発現しても意味がありません。このため、世界との関わり合いの中で、最適なパラメータや、生存や繁殖に意味のある新機能を探索することになります。

その意味で、先ほどのケース1をスロープワールド型の探索、ケース2をピンホールワールド型の探索と呼びたいと思います。

これは水の流れをイメージすると分かりやすいと思います。

スロープワールドは起伏がある地形に水が流れるイメージです。水は自然に低い方へ流れ、やがて湖や池のような窪地に溜まります。そこが最適なパラメータとなります。

ピンホールワールドは、平面の地形です。起伏はありません。ただ、所々に小さな穴が開いています。水は最初の地点から、その平面の全方位に広がっていき、やがて近くの穴が見つかると、そこに流れ込んでいきます。これが新機能の発現になります。

■デジタルチェーン構造とピンホールワールド

ピンホールワールドで、新機能を発現するためには、スロープワールドの戦略は使えません。このため、基本的には当てずっぽうで見つけるしかありません。

例えば、最初の遺伝子がAAAAだとします。そして、その子供はこの遺伝子から少し異なる物になります。AAABとACAAや、前後に他の塩基が追加されて、AAAAAやAAAADのようなものも、できるかもしれません。

これらの子供の遺伝子は、特に生存に有利になったり、不利になったりしません。このため、どの遺伝子も次の世代にはそれぞれ同じ数の子供を作ります。このような形で、最初のAAAAという遺伝子から、多様な遺伝子が作られ、それが繰り返されることで、徐々に多様性が広がっていきます。

そうして広がっていった遺伝子の多様性の中で、特定の遺伝子配列が生存や生殖に有利になると、その遺伝子配列を持つ個体が割合としてどんどん増え、その遺伝子を持たない個体の割合はどんどん少なくなっていきます。

ある新機能のピンホールが見つかる手前で、そのようなことが起きると、いったんその形で遺伝子は収束していきます。しかし、そこからまた新しい機能を発現するための遺伝子の多様性の広がりが進みます。

やがて、その機能よりもシンプルな配列で実現できる機能や性質の発見が終わると、その次は、その新機能が見つかるまで遺伝子の多様性が広がっていくと考えられます。

このようにして、特に生存や生殖に有利にならない自由な遺伝子配列が、多様性を広げていって、新機能の発現に至る事になります。

■デジタルチェーン構造とピンホールワールドにおける合理的な戦略

この仕組みであれば、比較的単純な塩基配列で発現する機能から順番に見つかっていく傾向にあると考えられます。この点は、進化の効率を考えると、とても合理的です。

また、長めの塩基配列によって新しい機能が発現すると、それを環境の変化と捉えることができます。環境の変化によって、また新しいピンホールワールドが生まれたと考えることができます。その中で再び、より短い塩基配列の並びが意味を持った機能となる可能性があります。

このようにして新しい機能が発現した後でも、常に短い塩基配列から探索が進むことで、堅実にかつ効率的に新機能が探索されていきます。

■DNAの進化の補足1:OS、ミドル、アプリモデル

遺伝子がピンホールワールドを探索する際、生存や生殖に有利にならない自由な遺伝子配列部分が意味を持つという事を説明しました。

反対に、既に獲得した機能は、生存や生殖に有利に働いたり、必須であったりするため、その部分のDNAが変異してしまうと、その個体は繁殖が難しくなり、そのDNAは引き継がれ続けることは困難です。

この部分を私はソフトウェアに例えて、OSやミドルウェア部分に相当する部分と考えています。一方、生存や生殖に有利にならない自由な遺伝子配列部分は、ソフトウェアで言えばアプリ部分です。通常のコンピュータやスマホでは、アプリが止まってもOSが停止することはありません。それと同じです。

■DNAの進化の補足2:エラー訂正と冗長化による保護

OSやミドルウェア部分が変異しても、それが改良でない限り、変異版が残り続けることはないという説明をしました。とは言え、頻繁にOSやミドルウェア部分が変異するようでは、DNAが長くなればなるほど子孫の維持が困難になるというジレンマがあります。

そこで進化したDNAは、OSやミドルウェア部分が変異しないような仕掛けを持っています。それは主に、エラー訂正と、冗長化の仕組みです。

エラー訂正は、DNAの重要な個所が、部分的に破損や変異しても、自動的にその破損や変異部分を見つけて、補修する仕組みです。これをOSやミドルウェア部分に施すことで、その部分に変異が起きても、自動的に訂正されるようになります。

冗長化は、一つの種の遺伝子の中で、部分的なDNA配列を、何か所にも複製として持っておくことです。重要なDNA配列を複数持っておくことで、一部が破損や変異をして機能しなくなった時の影響を小さくできます。他の複製が機能することで、生物全体の機能としては問題なく動作するためです。

■DNAの進化の補足3:ライブラリ

遺伝子内で、同じDNA配列が複数個所にコピーされるのは、冗長化のためだけではありません。様々な新機能で共通的に使えるような短めのDNA配列が存在すると考えられます。そのようなDNA配列が、短めとは言え別の機能のために偶然また同じように生成されるのを待つというのは効率が悪いです。

このため、有用なDNA配列は、変異の際に丸ごとコピーされるケースも存在したり、既存のDNA配列に上手く処理がつながるような形で活用されたりする仕掛けがあると考えられます。

これは、ソフトウェアで言えばライブラリです。変異時にコピーするのは静的リンク型のライブラリで、既存の配列に処理がつながるのは動的リンク型のライブラリのようなものです。

■DNAの進化の補足4:確率分布や重ね合わせ状態

ある生物種の全ての個体のDNAの多様性の分布を、確率分布のように捉えることができます。そして、世代が進むと、この確率分布が自己フィードバック的に遷移していくように見えます。

この視点から見ると、DNAのデジタルチェーン構造の多様性を、重ね合わせ状態と解釈できることを意味します。もちろん厳密には量子力学の重ね合わせ状態とは異なりますが、抽象化した数学的なモデルとしては、確率分布として共通的に理解することができます。

この視点で見ることの利点は2つあります。

1つは、遺伝的アルゴリズムを、量子コンピュータでの効率的な処理ができるアルゴリズムにできる可能性です。重ね合わせ状態の処理を得意とする量子コンピュータで遺伝的アルゴリズムを計算できれば、通常のコンピュータとは全く異なる速度で計算処理を行う事が可能になります。

2つ目の利点は、2つ以上の相互依存する新機能が発現するメカニズムの直感的な理解が可能になるという点です。

同一個体内の複数の新機能の組み合せが発現する場合や、複数の種の間での共生関係や共進化につながるような新機能が発現する場合があります。

相互作用する2つの機能がある場合、どちらが先に発現したのかと考えると上手く理解ができません。しかし、確率分布として理解すると、極めて稀な確率ですが、同時に2つの機能が発現するようなピンホールも存在することが直感的に理解できます。そして、長い年月の間に偶然そのピンホールに到達すると、そこに確率分布が集中していくことが理解できます。

■応用例

このデジタルチェーン構造のピンホールワールドとしての遺伝的アルゴリズムは、人工生命の研究への応用が考えられます。

この他に、文章生成にも応用することができるでしょう。文章も、文字と文字をつなげるデジタルチェーン構造を持っています。そして、特定の文字の並びにならないと全く意味をなさないという点で、ピンホールワールドでもあります。

1文字から初めて、そこに文字を足したり、既存の文字を置き換えたりすることを繰り返していけば、そのうちに意味を成す短文ができるでしょう。なお、このメカニズムは複数のコンピュータで並列計算が可能です。

そのような形で生成された文章の候補を、今であればチャットAIに提示すれば、意味を成す文章になっているかをチェックしたり、詩として点数をつけてもらうことで評価をすることができます。従って、短い詩であれば、このアルゴリズムを使う事で、機械的に自動生成できることになります。理論的には、長文であっても生成することが可能です。

また、このモデルを、生命の起源における、有機物の化学進化にも応用できる可能性があります。有機物も、分子が結合したデジタルチェーン構造を持つと考えることができるためです。

■まとめ

デジタルチェーン構造とピンホールワールドという観点が、実際のDNAの進化においては重要です。

ここでのポイントの1つは、生存や生殖に関係のない自由な遺伝子配列が、自由に多様性を広げていくというメカニズムです。収束していく傾向を持つスロープワールドとの対比を考えると、興味深いポイントです。

もう1つのポイントは、比較的単純な塩基配列で発現する機能から順番に見つかっていく傾向にあるという点です。貴重なピンホールを逃さず活用するという観点から考えても、合理的な戦略です。

この仕組みは、DNAの進化の説明や模擬だけでなく、同様にデジタルチェーン構造とピンホールワールドを持つ仕組みの説明や模擬にも応用できる可能性があります。

文章やプログラム生成なども対象にできると思います。そして、冒頭で述べたように、私が独自研究を行っている生命の起源、つまり有機物の化学進化にも、このメカニズムが応用されている可能性が高いと考えています。

■参照記事


サポートも大変ありがたいですし、コメントや引用、ツイッターでのリポストをいただくことでも、大変励みになります。よろしくおねがいします!