「進化」というのは,生物が過酷な自然環境の中で生き延びていくため,味方にした強力な武器であるといわれています.「進化」の柱は,自然選択と突然変異の組合せです.自然淘汰は,生物が生きている環境に適合しない個体は次の世代に子孫を残しづらいということですから,それだけでは,そのときの自然環境に適合した個体ばかりになってしまい,進化は頭打ちになってしまいそうです.その後,自然環境が変化すると頭打ちになった生物は,その環境に適合しませんから死に絶えてしまいます.したがって,中には,より不利になったり有利になったりする固体が現れてもよいという許容誤差が必要になります.それを実現しているのが突然変異です.不利な個体は,子孫を残せないように自然選択が働き,その形質はそこで途絶えますが,たまたま有利になった個体は,子孫を残せるように自然選択が働き,その形質を伝えていくことができます.自然界には若干の遺伝的な浮動を許容する懐の深さがあるため,可能となる仕組みです. また,進化とは,何も生物学的な現象であるとは限りません.自然現象はもとより社会の仕組みや,人の行動,人の考え方すべての領域において「進化」の仕組みがあるように思われます.Richard Dawkins は,1976年に自著『利己的な遺伝子』において,「ミーム」と名づけた概念を「文化の伝達や複製の基本単位である」と定義しています.したがって,文化の範疇である言語や行動様式,絵画,建築,音楽,理論,概念などあらゆる非物質的な存在の中に,非物質的な遺伝子であるミームを見出すことができることになります。そのような多様なミームが,多くの人の心や考え方に取り込まれていき,その概念がある意味で強力になっていったときに,流行や集団行動が生まれてきます.ミームにとってはこの成長と広がりが「進化」となります.ここでは,ミームの進化が人間にとって役立つことかどうかは言及されていません.ミームは善悪両面を持っていて,その両方の意味で「進化」してしまいます.世の中の悲惨な事件が繰り返されるのも,悪玉ミームが少なからず取り込まれていき,そのうちそれが特定の考え方を持った宿主にであったときに,破壊的な行動になってしまうのかもしれません.ナチスの台頭は悪玉ミームの大規模な集団感染とも考えられます.さらに,問題なのは,ミームは概念であって,一度形成されたら物理的なウィルスと異なり絶滅させることはできません. しかしながら,そのようなミームの特性を理解することにより,善玉ミームを積極的に作り出していくことも可能です.文化の進歩と評されるものは,その結果とも解釈できます. ミームに限らず,あたりを見回してみると,進化という考えを適用できる事柄を発見することができます.私たちが物事に習熟することも,いくつかの方法(多様性)を試行錯誤(評価)し,その結果を積み重ねたり交配(改良)させたりして,目的の方法にたどりついています.車のデザインも進化と考えることができます.メーカーはボディの基本形,車のエンジンの配置,ドライブの仕組み,色や装備といった多くの因子(遺伝子)を組み合わせたり(交配:交叉),閃きからの変更(突然変異)を行ったりして,ニューモデルをまとめあげます.この後,社内評価を行い市場へ投入します.その売れ行きや評判を次のモデル開発に役立てます. このように進化の考え方は多くの局面で適用できます.本書で扱う,遺伝的アルゴリズム(GA:Genetic Algorithm)と遺伝的プログラミング(GP:Genetic Programming)は,それを具体的に実現するツールであると考えられます.ツールであるからには,その使い方を伝えなければなりません.基本的な考え方はシンプルなので,すぐに伝えることができますが,いざ,問題が与えられてそれをGAやGPで解く場合に,最初のアプローチがわからないということがよくあります.私たちが,問題を解く場合,問題を理解し,状況を分析し,情報を集め,段階を追って問題を分割し明確に解けるレベルまで落とし込んで,求めた解を再構成します.これが,私たちが慣れ親しんできた,問題の解き方です.ところが,GAとGPでは,その方法がそのまま適用できそうにはありません.確かに,「問題を理解し,状況を分析し,情報を集め」までは必要なステップです.しかし次の段階が違ってきます.どうも,残りのステップは,「解を(再)構成する」ところから考えていく必要がありそうです.つまり,GAやGPでは,遺伝子に解の表現を与えてやらなければなりません.そのことを遺伝子コーディングと呼んでいて,特にGAでは,重要な作業となります.解の表現を与えるということは,言い換えると,解がどのように構成されるのかということが解っているということでもあります. (中略) 本書では,前著『遺伝的アルゴリズムと遺伝的プログラミング ―オブジェクト指向によるフレームワークの構成とその応用』で作成したフレームワークの改良版をベースにしています.GAとGPのベースとなるフレームワークの説明に関しては,前著に詳しく説明してありますので,そちらを参照してください.フレームワークについては,本書では,改良点のみを説明します. なお,GPのフレームワークについては,定義関数を容易に取り扱えるように大幅な改良を施しています.前著の段階では,定義できる関数の集合は1種類でしたが,本書では,複数の関数集合を扱えるようにしています.これにより,関数の表現力が増し,扱える領域が広がっています. 本書は3部構成としています.第1部は遺伝的アルゴリズムの応用です.第1章「GAの解説を兼ねて,式の因数分解を解いてみよう」,第2章「ゲームで勝つ方法」,第3章「隣り合ったものは別の色で――グラフ彩色」,第4章「これだけの荷物を何台の配送車で配達できる?――Vehicle Routing Problem」の4つの応用を試みます.第2部は遺伝的プログラミングの応用です.第5章「GPの解説を兼ねて,どれくらい連続して素数を生成できるか試してみよう」,第6章「うるう年の判定は4年ごと!?」,7章「多くのデータから「なぜ」を見出そう――データマイニング」,第8章「GPにもっと意味を――型付きGPフレームワーク」,第9章「多くのデータから意味を探ろう――改良した動物分類」,第10章「数値データを含んだ分類――あやめの分類」の6つの章がありますが,8章はGPフレームワークの改良について解説し,他の5つの章で応用を試みます.第3部はカオスの応用で,第11章「カオスを利用した予測の可能性について」としています. 遺伝的アルゴリズムや遺伝的プログラミングが実際の問題にいかに適用しやすいかを,本書を通じて納得していただければ幸いです. |