誕生、捕食、成長、交配、変異、そして進化。
進化的アルゴリズムに基づいた人工ニューラル ネットワークによる人工生命体が蠢く動画。
個々のドットが人工生命体の個体を表す。
他の個体を捕食すると少し強くなり、色が変化して行く。
食べずに居ると徐々に弱くなって行く。
捕食と同時に別の個体が誕生する。
新たに生まれる個体は、全体の中から沢山捕食した強い2個体の脳細胞ネットワークの遺伝子を交配させた上で偶に突然変異を加えた遺伝子を持っている。
ChatGPTなどのLLM(Large Language Model)系も、CNN(Convolutional Neural Networks)系の生成AIも、いわゆるDeep Learning(深層学習)系の機械学習(ML / Machine Learning)手法は、大量の正解データを読み込ませ、偏微分の連鎖律を利用した誤差逆伝播法により膨大なパラメーターを自動調整して適切な値を出力する関数を覚え込ませる仕組みである。
だがそれらの手法は正解データが無い対象は学習させる事が出来ない。
機械学習系にも多くの手法があり、正解データを必要としないものもある。
進化的アルゴリズム(EA / Evolutionary Algorithm)もその代表的なものの1つである。
進化的アルゴリズムの手法としてNEAT(NeuroEvolution of Augmenting Topologies)がよく知られているらしい。
私はPyTorchフレームワークによる誤差逆伝播法系のANN(Artificial Neural Networks / 人工神経回路)を多く構築したり実験したり、会社で画像検査機に利用したりして来た。
正解データが無くても学習が可能な人工知能を作りたくて、人間の脳の神経ネットワークの仕組みを参考にしたANNを平均と標準偏差を適応的にシフトさせた正規分布からサンプリングしたノイズと外部報酬から神経可塑性に基づいてパラメーターを調整させる方法も試したが、報酬が単調増加な課題は対応出来ても、報酬が非単調増加である遅延報酬課題などは全く学習させる事が出来なかった。
そこでこの度(2024年10月14日現在)、ChatGPT 4o with canvas(Beta版)という優れた対話型AIとの共同コーディングが可能なサーヴィスが展開されている事もあり、やや難しいが進化的アルゴリズムのプログラムの実験を行う事にしたのである。
因みに、ChatGPT 4o with canvasはかなり強力なサーヴィスであり、私単独では非常に長い時間を要するようなコーディングも普通の会話文でChatGPTに指示を出すだけでほぼ出来上がってしまう。
余り複雑でないプログラムならばバグも無くローカルの実行環境でそのまま走らせる事が可能である。
さすがに多くの編集を繰り返してコードの規模が大きくなって来ると修正が反映されなかったりコードが消えてしまったりと不具合が出て来たが、対話のスレッドを立て直すと続きの編集を行えるようになるので致命的な問題ではない。
進化的アルゴリズムの実装はNEATの仕組みを参考にしつつも独自のものとしてある。
実験中のコードはPythonスクリプトであり、動画の生成と表示にはOpenCVを利用している。
誤差逆伝播やオプティマイザーは使用していないので、PyTorchなどは利用していない。
コーディングと実験には時間が掛かるが、進展があったらこのページの動画をアップデートしようと思う。
2024年10月14日現在、漸くInnovation番号による全個体共通の遺伝子の管理の実装が完了し、AIエージェント個体の、生成、捕食、成長、交配、変異が機能するようになった段階である。
神経細胞とシナプスはランダムに増減し、強い個体の遺伝子が新個体に受け継がれるようになっている。
だがまだ単純な動作しか観察出来ておらず、他の個体を追い掛け回して捕食するなどの高度な機能は一切見られていない。
コメント