1.1 模擬育種法

農作物や家畜の品種改良にヒントを得て考案された計算の枠組が 「模擬育種法」です。 日本では「利己的遺伝子」の著者としても有名な、 英国の進化生態学者 リチャード・ドーキンス が 1986 年頃に作成した ブラインド・ウォッチメーカ というソフトウェアと 本*1が、 この手法の元祖です。

ドーキンスの ブラインド・ウォッチメーカ は、 Lシステムと呼ばれる植物の発達モデルの枠組を利用し、そのパラメータを 遺伝情報として品種改良を繰り返すシステムです。 ダーウィン進化論で唱えられた、突然変異と淘汰を繰り返すことで、 単純な形態から多様で複雑な形態が思ったより容易に作り出されることを 示すために作成されました。

まず、ランダムに作った遺伝子を、15個体分、用意します。 コンピュータの画面に、それぞれの遺伝情報に従って 形成される線画を同時に表示します。 その中から気に入った個体を選び、マウスを移動してクリックすると、 画面が、選ばれた個体の突然変異体に置き換わります。 これで1世代分の品種改良が進んだことになります。 この操作を何回か繰り返すうちに、様々な形態が現れます。 その形が昆虫のような生き物を連想させるので、ドーキンスは これらをバイオモルフと呼びました。

その後、カール・シムズやウィリアム・レイサムといった CG作家によって複雑なCG画像を容易に作り出す手法として応用 され、いくつかのCGアニメ作品が製作されました。

また、デザイン支援システムや画像検索、音楽への応用なども 様々な人々によって試みられました。これらの研究については、 人工知能学会誌の1998年9月号の 「対話型進化計算法の研究動向*2」 にまとめて紹介されています。

1.2 遺伝的プログラミング

ダーウィン進化説をヒントにした計算の枠組として、 遺伝的アルゴリズムが有名ですが、そのほかにも、進化戦略や 進化計画法なども独立に提唱されており、これらをまとめて「進化的計算法 (Evolutionary Computing)」と呼んでいます。

遺伝的プログラミング*3も進化的計算法の一種です。 ジョン・コウザを中心に発展してきた遺伝的プログラミングの手法は、 遺伝的アルゴリズムにおける遺伝子の表現を木構造に置き換えたものです。 LISP言語の関数表現や分類木などを遺伝子として考え、 その計算あるいは判定結果に対して適応度を与えます。 各個体は適応度に従って自動的に選択されます。 つまり、適応度の高い個体ほど高い確率で次世代へ子孫を残すことができる というわけです。

たとえば、sin(x+y)-cos(x-y) は、 図1.1 のような木構造で表すことができます。 図では下の方にある木の葉に相当する X や Y を「終端記号」、 枝別れの部分にある -, +, sin, cos を「非終端記号」と呼びます。 関数を遺伝情報とする遺伝的プログラミングでは、 終端記号は定数あるいは変数、非終端記号には関数名がきます。

進化的計算では、世代交代のときに、突然変異や交配を行なうことになります。 遺伝子の中からランダムに選んだ記号を別のランダムに選んだ記号で 置き換えることを突然変異とします。SBART では、終端記号が非終端記号に 置き換わったり、1引数関数が2引数関数に置き換わった場合には、ランダムに 生成される木構造で足りない部分を埋めています。 また、選ばれた2つの個体の遺伝情報を掛け合わせるには、 それぞれからランダムに選んだ部分木を交換します。

1.3 遺伝型と表現型

SBART では、カール・シムズのシステム*4に習って、 2次元画像の各PIXEL位置のXY座標から色を計算する関数を遺伝子とします。 ただし、SBART では、定数、変数、関数の値を全て3次元ベクトルとして扱います。

定数は (1.2, 1.2, 1.2) のように同じ数値の3つ組みです。 変数は (X, Y, 0), (X, 0, Y), (Y, X, 0), ... のように、X座標、Y座標、0 の順列で、 全部で6通りあります。 関数は1引数の −, abs, sin, cos, tan, log, exp, ... など。 2引数の +, −, ×, ÷, mod, min, max, などです。 ほとんどの関数は、3次元ベクトルの各要素の数値を、各々独立に計算して得られる 結果で構成される3次元ベクトルを値とします。つまり、 (1.2, 1.2, 1.2) + (X, Y, 0) の結果は (1.2+X, 1.2+Y, 1.2) となります。 ただし、min と max は、 min の場合は第1要素の値の小さい方、max の場合は大きいほうのベクトルを 値とします。例えば、max((1.2, 2.3, 3.4), (2.2, 2.1, 1.0)) の結果は 1.2 < 2.2 ですから (2.2, 2.1, 1.0) となります。

計算結果の3次元ベクトルの第1要素を明度(明るさ)、 第2要素を彩度(あざやかさ)、第3引数を色相とみなして各 PIXELの色を決めます。 表示される画像内の座標系は、図1.2 に示すように、縦か横の短いほうの辺の長さを2とし、中央に原点があるものとします。

遺伝型に対応する数式は、突然変異などでランダムに生成されますので、 0で割ったり、負の数に対して対数をとるなど、 普通の数学の通りに計算したのでは答えが出ない場合があります。 遺伝的プログラミングでは、 引数の絶対値を取ったり例外処理を入れて、 そのような場合にも何らかの値が出るようにします。 また、答えの数値の範囲が許容範囲を越えることも考えられます。 SBART では、計算された値をノコギリ型の関数で変換することで、 全ての値を許容範囲に納めるようにしています。 図1.3 に数式と、それに対応する画像の例を挙げておきます。


参考文献

  1. Dawkins, R. 1986. The blind watchmaker, Longman.
    リチャード・ドーキンス. 1993. ブラインド・ウォッチメイカー [上], [下], 中嶋 康裕, 遠藤 彰, 遠藤 知二, 疋田 努 訳, 日高 敏隆 監修, 早川書房.

  2. 高木 英行, 畝見 達夫, 寺野 隆雄. 1998. 対話型進化計算法の研究動向, 人工知能学会誌 13 [5] 692-703.

  3. Koza, J. R. 1992. Genetic Programming: on The Programming of Computers by Means of Natural Selection, MIT Press.

  4. Sims, K. 1991. Artificial Evolution for Computer Graphics, Computer Graphics, 25 [4].