情 ★報 ★科 ★学
遣伝的 プログラミング 伊庭斉志 著
東京電機大学 出版 局
R 〈日本複 写 権 セ ン ター 委 託 出版 物 ・特 別扱 い〉 本 書 の 無 断複 写 は,著 作権 法上 での 例 外 を除 き,禁 じられ て い ます 。 本 書 は,日 本 複 写権 セ ン ター 「出版 物 の複 写 利 用 規程 」 で 定 め る特 別 許諾 を必要 とす る出版 物 で す。 本 書 を複写 さ れ る場合 は,す で に 日本 複 写 権 セ ン ター と包括 契 約 を され て い る方 も事 前 に 日本 複 写権 セ ン タ ー(03-3401-2382)の 許 諾 を得 て くだ さい。
まえ が き
研 究 の 客 観 性,理
解,自
え た と し た ら,こ
れ ほ ど ば か げ た こ と は な い.む
ど,人
然 の 連 係 の 知 識 と い う もの が,自
間 は 自然 の 生 き た 事 実 に 対 し て よ り深 く,よ
ラ ー ト ・ロ ー レ ン ツ 著,日
高 敏 隆 訳:ソ
然 の 驚異 へ の 喜 び をそ こ な うな ど と考
しろ そ の 逆 な の だ.自
然 につ い て知 れ ば知 る ほ
り 永 続 的 な 感 動 を お ぼ え る よ う に な る.(コ ン
ロ モ ン の 指 輪,早
川 書 房,1982)
筆 者 が 遺 伝 的 プ ロ グ ラ ミ ン グ(の 前 身)を 知 り,興 味 を覚 え た の は 遺 伝 的 ア ル ゴ リズ ム(GA)を
知 って ま もな くの こ と,1990年
的 プ ロ グ ラ ミ ン グ(GP)と GAな
頃 で あ っ た .当 時 は まだ 遺 伝
い う用 語 は定 着 して お らず,構 造 的GA,木
ど と呼 ば れ て い た.人 工 知 能 を研 究 して い た 筆 者 に は,「GAは
を 目指 して い る」 と見 て い た た め(今 は そ うで は な い),GAが な く思 え た.そ
こ で,GAで
知 識 表 現,プ
考 え て,拡 張 を試 み て い た の で あ る.ち て来 られ てい たNASAのPhilip
最適化 のみ
い さ さか 飽 きた ら
ロ グ ラ ム,概 念 木 な ど を扱 え ない か と ょ う ど そ の 頃,電 総 研 の 客 員 研 究 員 と し
D. Laird氏
らス タ ン フ ォー ド大 学 のJohn Koza氏
型表 現 の
に筆 者 の研 究 を話 した と こ ろ,氏 か
を紹 介 され た. 1991年 の 正 月休 み にKoza
の テ ク ニ カ ル レポ ー トを読 ん だ と きの 感 動 を今 も覚 え て い る.そ の レポ ー トは 後 にJohn Kozaの
大 著 に つ な が る もの で あ っ た.
John KozaをGPの
創 始 者(KozaのGPと
唱 え る む き が な い こ と も な い.GP的 た し,ま
た,AIの
分 野 で もGP的
か 提 案 さ れ て い る.た
し て,現
な 発 想 は す で にGAの な 発 見 学 習 手 法 はAMを
だ し,Kozaが
シ ス テ ム の 配 布 な ど でGPの
言 う 人 も い る)と
す る に は異 論 を
研 究 の 当 初 か らあ っ は じめ と し て い く つ
研 究 者 間 の ネ ッ ト ワ ー ク 作 り やFTPに
よる
研 究 発 展 の 一 翼 を に な っ た こ と は ま ち が い な い .そ
在 で はGPはGAやEC(evolutionary
computation)の
中で一大勢力
に な りつ つ あ る.そ
の 中 心 の 1 つ はKoozaが
教 授 を つ と め る ス タ ン フ ォ ー ド大 学
で あ る.
本 書 で は こ う した背 景 をふ まえ て,GPの GPの
基 礎 か ら応 用 に至 る まで を解 説 す る.
特 徴 を ま と め る と,次 の よ う に な る.
1 .
GPは
プ ロ グ ラ ム を進 化 させ る もの で あ る.
2.
GPに
よ って,ロ
ボ ッ トの プ ロ グ ラ ム や 人 工 知 能 の 問題 解 決 ・推 論 ・学 習 の
た め の プ ロ グ ラ ム が 進 化 的 に(創 発 的 に)自 動 生 成 され る. 3.
GPはGAの
考 え方 に 基 づ い て い る.そ の 違 い は, GAが
指 す の に対 し,GPは 4.
主 に最 適 化 を 目
記 号 処 理 的 な プ ロ グ ラ ム 生 成 を 目的 と して い る.
ニ ュ ー ラル ネ ッ トワー ク は数 値 的 な処 理 を行 うの に 対 し,GPは
記号 的なプ
ロ グ ラ ム に よ る処 理 を実 現 す る. 現 在 日本 で は,GAが
あ る程 度 認 知 され た に もか か わ らず, GPは
及 して は い な い.こ れ は 欧 米 や ヨ ー ロ ッパ のGA/GPの
まだ 広 く普
研 究 比 率 か ら考 え る と不
思 議 な こ とで あ る.そ の 一 因 は,日 本 語 に よ る指 導 書 が あ ま りない こ とに あ ろ う. ま た,GPの
説 明 を す る と よ く聞 か れ るの は次 の よ う な 質 問 ・批 判 で あ る.
1.
GPはLISPで
2.
GPで
な くて は解 け ない もの が あ る の か?
3.
GPは
探 索 効 率 が悪 い.
4.
GPの
理 論 は あ るの か?
これ に対 して,筆
あ り, LISPを
1.
知 ら な い か ら で き な い.
GPはLISPを
者 は次 の よ う に答 え る こ と に し て い る. 知 ら な く と も十 分 使 え る.本 書 の 第 1部 で は C 言 語 に よ る
入 門が あ る.そ の他 の 言 語 に よ るGPも 2.
入手 可 能 で あ る.
プ ロ グ ラ ム の 自動 合 成 を大 規 模 に行 え る手 法 は 今 の とこ ろGP以 と思 わ れ る.第
2部 の応 用 例 を 見 れ ば,決
してGPが
外 に ない
オ モ チ ャ 問題 の み を
扱 っ て い る の で は な い こ とが 理 解 で き よ う. 3.
GPの
探 索 能 力 向 上 の た め の 拡 張,並
列 化 な どが 提 案 さ れ,初 期 のGPに
比 べ て 能 力 は 飛 躍 的 に 向 上 して い る. 4.
これ は確 か に問 題 で あ る.し か しな が ら,GAの
場 合 と同様 に,い
くつ か の
理 論 的 研 究 が な され つ つ あ る. 本 年 は ち ょ う どGP元 会 議(Genetic
年 と い っ て も よ い.そ
Programming
れ はGPに
1996 Conference,
関 す る は じめ て の国 際
GP96)が
で 開 催 さ れ る か ら で あ る.こ
れ に よ り,ま
ち ろ ん,多
関 心 を 持 っ て も ら え る こ と を 期 待 す る.そ
く の 人 々 がGPに
も本 書 に よ っ てGPへ
こ で は,C 言 語 とLISP言
1部 はGPの
れ ば,そ
のため に
語 で のGPシ
シス テ ム を実 際 に使 う実 習 で あ ス テ ム の詳 細 な動 作 例,応
へ の 解 決 例 を説 明 して あ る.ぜ ひ 自 分 でGPを さて,実 際 にGPの
研 究が進展 する ことは も
の 読 者 の 興 味 が 喚 起 さ れ れ ば 幸 い で あ る.
本 書 は 2部構 成 とな って い る.第 る.そ
す ま すGPの
ス タ ン フ ォ ー ド大 学
用問題
動 か して試 して ほ しい.
プ ロ グ ラ ム を動 か して み て,次 の よ う な疑 問 が 生 じた とす
れ は 当 然 の こ とで あ る.
●GPで
は どの よ うな 問 題 が 解 け る の か?
●GPを
実 世 界 の 問 題(Real-world
●GPの
効 率 は ど の くらい(他
pr0blem)に
応 用 で き る の か?
の手 法 に比 べ て)よ
い の か?
こ の こ とに対 す る解 答 の い くつ か は 第 2部 で 目 にす る こ とが で き るで あ ろ う.そ こ で はGPの Kozaは
さ ま ざ ま な応 用 例 題,お 新 し く拡 張 さ れ たGP(多
Next Generationと と な っ て い る.言
呼 び,自
の よ う なThird れ る.
分 筆 者 ら の を ふ く め た 現 在 のGP研
2弾)の
究 に お い て もThird Generationを
究)を
ら の 2冊 目 の 本 の ビ デ オ の 副 題 もNext Generation
う ま で も な く,Next Generati0nと
ト レ ッ ク 」 の 新 シ リ ー ズ(第 て い る.GP研
よ び,最 近 の研 究 例 を紹 介 して い る.
は 人 気 テ レ ビ ドラ マ 「ス タ ー ・
こ と で あ る.現 Generationが
育 て る こ と,こ
在 で は 第 3弾 が 人 気 を博 し
活 躍 す る こ と を 期 待 す る.そ れ こ そ が 本 書 の使 命 で あ る と思 わ
次
目
まえが き
序章
は じめ に
1
0.1
本書 の構 成
1
0.2
付 録GPシ
0.3
FTPと
3
ニ ュ ー ス グ ル ー プ に つ い て
4
遺 伝 的 プ ログ ラ ミ ング の基礎
第 1部 第 1章
ス テ ム の 動 か し方
GP入
門
13
1.1
GAの 基礎 知識
13
1.2
GAか
らGPへ
18
1.3
GPの
実 行 例
27
第 2章
C言 語 に よるGPシ
2.1
概 要
2.2
sgpcの
ス テ ム
43
43 ア ル ゴ リズ ム
2.2.1
startup
2.2.2
run
_gp_system
47
47 48
2.2.3
generations
49
2.2.4
集団 の初 期化
52
2.2.5
適合度 の計算
58
2.2.6
終了条件 の判定
2.2.7
checkpoint処
2.2.8
breed
60' 62
理
_new_populationと
世 代 交代
例題 への適 用
2.3
2.3.1
REGRESSION
2.3.2
SIN
62 66
67 70
2.4
応 用例 題 ―人工蟻 の探 索
72
2.5
拡 張機 能
87
2.5.1
複 数の集 団の処 理
2.5.2
steady
2.5.3
demes
LISP言
第 3章
88 88
state
89
語 に よ るGPシ
ステム
91
3.1
概 要
91
3.2
GPシ
94
3.3
ス テ ム の ア ル ゴ リズ ム
3.2.1
kernel.lisp-GP本
3.2.2
editオ
96
体
108
ペ レー タ
110
例 題へ の適用 3.3.1
REGRESSION
3.3.2
MAJORITY-ON
111 115
3.4
応用例題 ―人工蟻 の探 索
118
3.5
拡張機 能
124
3.5.1
自動 的関数定義(ADF)
3.5.2
高 速 化eval
136
124
第 2部
遺 伝 的 プ ログ ラ ミング の応 用
第 4章
GPの
応 用 にあ た って
第 5章
GPの
応 用
147
ロ ボ ッ ト プ ロ グ ラ ミ ン グ へ の 応 用
5.1
147
5.1.1
ロ ボ ッ トの プ ロ グ ラ ム とGP
5.1.2
頑 強 な ロ ボ ッ ト ・プ ログ ラム の生 成
147 148
人工生命 へ の応 用
5.2
156
5.2.1
人工 生命 と創発
5.2.2
餌 を巣 に運 ぶ蟻の行動 の進 化
5.2.3
餌集 め行動 の進 化
156 157
164
シ ス テ ム 同 定 問 題 へ の応 用
5.3
シ ス テ ム 同 定 問題 と は
5.3.2
時系列 予測問題
5.3.3
GPを
169
5.3.1
169 170
拡 張 した シス テム:STROGANOFF
分子生物 学へ の応用
5.4
分 子生物学 入門
5.4.2
膜 貫通領域 の分類
5.4.3
メ モ リ付 きGP
5.4.4
評価 方法
5.4.5
GPに
181 182 185 186
よ る分 類 実 験
GPの 最近の研究 自動 的関数 定義
174 181
5.4.1
第 6章 6.1
141
187
193
193
6.2
6.3
6.4
6.1.1
自動 的関数定義 とは
6.1.2
Automatically
6.1.3
Module
6.1.4
ADFとMAの
6.1.5
Collective
MDLに
193
Defined
197
Acquisition:MA
198
性能比 較 ADF
195
Functions:ADF
for subroutine
acquisition:COAST
199 204
基 づ くGP
6.2.1
MDL基
準 に よ る適 合 度 評 価
6.2.2
GPに
よ る決 定 木 の探 索
6.2.3
MDL基
準 に よ るGPの
204 206
適 合度計算
212 213
型 付 きGP 6.3.1
デ ー タ型 と は
6.3.2
GPに
213
お け る型
215
並列GP
220
6.4.1
並列GA
6.4.2
並列GPの
6.4.3
AP 1000+上
6.4.4
並列GPの
6.4.5
構 造的 多様 性 に よる検 証
220
実装例
222
で の 並 列GP
比較 実験
223 226 228
演習問題 の解答
235
参考文献
246
索引
254
付 録:CD-ROMに
あ とが き
つ い て
258 261
序章 は じめ に
0.1
本書 の構成
第 1部 で は 遺 伝 的 プ ロ グ ラ ミ ン グ(Genetic 基 礎 に つ い て,実
Programming,以
際 の シ ス テ ム を 動 か す こ と を とお して 説 明 す る.こ
1.GPの
ア ル ゴ リ ズ ム に つ い て 理 解 す る.
2.GPの
実 際 の シ ス テ ム の 操 作 法 お よび 動 き方 を理 解 す る.
3.さ ま ざ ま な応 用 にGPを とい う こ とで あ る.本 に 示 した.第
下GPと
略 す)の
こ で の 目 的 は,
適 用 す る技 法 を 身 に つ け る.
書 を読 み 進 め るべ き順 番 を,フ
ロ ー チ ャ ー トに して 図0.1
1部 を読 む た め の必 要 最小 限 の条 件 は,C 言 語 お よ び そ の 開 発 環 境
に つ い て ひ と通 り理 解 して い る か,も
し くはLISPに
つ い て の 基 礎 知 識 を有 して
い る こ とで あ る.こ の い ず れ に も該 当 しな い場 合 は,適 切 な 参 考 書 に よ り,C ま た はLISPの
基 礎 知 識 を 身 に つ け る こ とを お勧 め す る.
第 1部 で はCD-ROMの LISP版
のGPシ
す るの か,も
版 のGPシ
ス テ ムお よび
ス テ ム)に 基 づ い て 説 明 を行 う.読 者 は 自分 が C で プ ロ グ ラ ム し くはLISPで
とす る か で),第 LISPお
中 に収 め られ て い るGP(C
2章,も
よ び C でGPを
プ ロ グ ラ ム す るの か に 応 じて(ま
た は ど ち らを得 意
し くは 第 3章 に進 まれ る の が よ い.た
だ し,実 際 に は
行 う場 合 に そ れ ぞ れ の 長 所 お よ び欠 点 が あ る(表0.1).
図0.1
本 書 を読 む た め の フ ロ ー チ ャ ー ト
表0.1
C でGPシ
C 版 のGPとLISP版
のGPの
比較
ス テ ム を開 発 す る と,そ の 処 理 ス ピー ドが 速 い とい う利 点 が あ るが,
プ ロ グ ラム の進 化 を扱 う よ う な高 度 な プ ロ グ ラ ミ ング は 困 難 で あ る と い う欠 点 を 持 つ.一 方,も
と も とGPがLISPの
こ とか ら もわ か る よ う に,LISPは
プ ロ グ ラ ム の進 化 シ ス テ ム と して 誕 生 した 高 度 な プ ロ グ ラ ミン グ に適 して い る 一 方 で,処
理 ス ピー ドが コ ン パ イ ル し て も C に比 べ て 遅 い とい う欠 点 を持 つ.し い ず れ か 一 方 のGPシ
ス テ ム を 学 習 した後 で,も
たが って,
う一 方 の 言 語 でGPシ
ス テムを
習 得 す る こ と を強 く推 奨 す る.そ れ に よ り両 方 の 長 所 が 理 解 で き,読 者 自 らGP を応 用 ・開発 す る場 合 に役 立 つ で あ ろ う.
0.2
付 録GPシ
GPに
限 ら ず,コ
ス テム の動 か し方
ン ピ ュ ー タ の シ ス テ ム や ア ル ゴ リ ズ ム を 理 解 す る に は,実
に 使 っ て み る の が 一 番 で あ る.そ
こ で,付
属 のCD-ROMか
らGPの
シ ス テ ム を,
手 元 に あ る コ ン ピ ュ ー タ に 読 み 出 し て 動 か し て み て ほ し い.CD-ROMの C 版 のGPシ
ス テ ム と, LISP版
のGPシ
際
ス テ ム が 収 め ら れ て い る.そ
中に は れぞれの
シ ス テ ム の 詳 し い 説 明 は 後 の 章 に 譲 る と して,こ
こ で は まず,適
パ イ ル な ど行 っ て 実 行 し て み て ほ しい.ま
デ ィ レ ク ト リの 中 に あ るReadme
た,各
と い う フ ァ イ ル や そ の 他 の ド キ ュ メ ン トを 読 ん で み よ う.こ の エ ラ ー が 起 こ っ た り,イ はCD-ROMが
コン
の時 点 で コ ンパ イ ル
ン タ プ リ タ で 正 常 に 動 か な くて も,あ
正 し く動 作 す る こ と を 確 認 し て み よ う(な
当 にmakeや
わ て ず に,ま
お, CD-ROMの
ず 詳細
は258ペ
ー ジ を 参 照 して ほ し い).
例 え ば,C
版 のGPに
を 実 行 し て み る.こ
お い てREGRESSIONと
の と き コ ン パ イ ル が 正 常 に 終 わ っ た 後 に,gpcと
ク ト コ ー ドが で き る は ず で あ る.こ
gpc
1 4 none
い う デ ィ レ ク ト リ に 行 き, make い うオ ブ ジ ェ
のgpcを,
99
と し て実 行 す る と,結 果 は 図0.2の
よ うに な る で あ ろ う.た だ し,図 は 実 行 の 一
例 で あ り,必 ず し も同 じ表 示 で は な い(計 算 機 や 乱 数 の 発 生 状 況 に よ り結 果 は 異 な る はず で あ る).な セ ミ コ ロ ン(;)の
お 図 で は,ユ ー ザ が 入 力 した コマ ン ドに下 線 を引 い て い る. 後 ろは 説 明 の た め に後 に 筆 者 が 付 け 加 え た もの で あ る.コ メ
ン トは 必 要 に 応 じて,コ い.こ
メ ン トす べ き箇 所 の 前 か 後 ろ に 付 け る の で注 意 して ほ し
の 説 明 法 は以 下 で も同 様 に用 い る.
図0.2は 何 が しかGPが
行 っ て い る処 理 を示 す.な お, LISP版
のGPの
み を学
び た い 読 者 も,こ の C の 部 分 に 関 して は 同 じ よ う に実 行 して い た だ きた い.な ぜ な ら ば,こ の 例 をGPの
ア ル ゴ リズ ム の 説 明(第
1章)に
用 い る か らで あ る.た
だ し,そ れ は概 念 的 な説 明 で あ る の で,C の こ と を知 らな くて も安 心 して ほ しい. 正 常 に 付 属 のGPシ
ス テ ム が 読 者 の コ ン ピ ュ ー タで 動 作 す る こ とが わ か れ ば,
そ れ で こ の 節 は終 わ りで あ る.こ
こで 実 行 した 複 雑 な振 舞 い,そ
れがGPの
エッ
セ ンス で あ る.こ の 意 味 を次 章 か ら説 明 す る.
0.3
FTPと
ニ ュー ス グル ー プにつ い て
ネ ッ トワ ー ク に加 入 して い る ユ ー ザ は,GPに
つ い て の最 新 の 話 題 をニ ュ ー ス
グ ル ー プ に加 入 し て手 に 入 れ る こ とが で き る.さ
ら に,ア
て い る 共 用 の コ ン ピュ ー タ にFTPす
る こ とに よ って,有
フ トを手 に入 れ る こ とが で き るで あ ろ う.も う した機 会 を活 用 す る こ とを お勧 め す る.
メ リ カ の大 学 で 管 理 し 用 な情 報 やPDSの
ソ
し上 の こ とが 可 能 な読 者 は,ぜ
ひこ
図0.2
GPの
実 行例
. まず,FTPに
つ い て 説 明 す る. GPの
ソ ー ス,論
文,最
新 の 情 報 の た め のFTP
サ イ トの ア ド レ ス は, ftp.io.com で あ る.こ
こ の,
/pub/genet
ic-programming
と い う デ ィ レ ク ト リ に,GPに い う デ ィ レ ク ト リ に はGPに め ら れ て い る の は,こ 版)で
あ る.お
も な 入 手 可 能 な ソ ー ス を 表0.2に
示 す.さ
で あ ろ う.さ 問 さ れ,専
ら に,こ
変形
ら に,papersと
関 連 し た 最 近 の 論 文 が 収 め られ て い る.ま
見 る こ と で, GPに
収
の プ ロ グ ラ ム(の
関 し て の し ば しば よ く尋 ね ら れ る 質 問(Frequent
あ る.FAQを
の 下 のcodeと
関 連 し た い くつ か の ソ ー ス が あ る.CD-ROMに
こ か ら入 手 し た C 版 お よ びLISP版
デ ィ レ ク ト リ に は,GPに はGPに
関 連 し た 情 報 が 収 め ら れ て い る.こ
い う
た, FAQ-GP
Asked Questions)で
関 す る 疑 問 の い くつ か を 解 決 す る こ と が で き る
の よ う なFAQは
し ば し ばGPの
ニ ュ ー ス グ ル ー プ で も質
門 家 が 解 答 し て い る.
【 演 習 問題 1】 FTPに
よ り, papersの
ア ウ ト し な さ い.こ
デ ィ レク トリか ら次 の フ ァ イ ル を取 っ て きて プ リ ン ト
の 論 文 は ど う い う も の か.
1.GP.feature.discovery.ps.Z 2.ICGA93.Donut.ps.Z
GPの
ニ ュ ー ス グ ルー プ は ス タ ン フ ォー ド大 学 で 管 理 さ れ て い る.こ
の メ ー リ ン グ リス トへ の 参 加 方 法 を 簡単 に書 い て お く.こ う したGPの
こでGP メー ル グ
ル ー プ に参 加 す る こ とで,日 夜 交 わ され て い る盛 ん な 議 論 や 最 新 の研 究 の 話 題 な ど の情 報 が 手 に 入 る と思 わ れ る.ま
た,GPに
関 す る ソー ス や さ ま ざ まな マ シ ン
で の 実 行 方 法 な どの 情 報 も入 手 で き る.GPの
メ ー リ ン グ リ ス トに加 入 した い 場
合 は,電 子 メ ー ル に よ り,
表0.2
FTPサ
イ トにあ るGP関
連 の ソ ース例(96年
genetic-programming-REQUEST〓cs.stanford.edu
と い う ア ド レ ス あ て に, subscribe
genetic-programming
end と い う メ ッ セ ー ジ を(他
に 何 もつ け ず に)送
メ ー ル グ ル ー プ を や め た い 場 合 は, unsubscribe
genetic-programming
end を 送 る.こ help
の ほ か に,
る.
4月現 在)
end
を送 る と利 用 可 能 な コ マ ン ドの一 覧が 送 られ て くる.こ れ らの 処 理 は い ず れ も 自 動 的 に な さ れ て い る. な お,GPに ucla.edu,
関 連 し てAlife(人 UCLAで
管 理)やGA(遺
Request〓AIC.NRL.NAVY.MIL)の
工 生 命,ア
ド レ ス はalife-request〓cognet.
伝 的 ア ル ゴ リ ズ ム,ア
ド レ ス はGA-List-
メ ー リ ン グ リ ス ト も 存 在 す る.こ
し て 加 入 で き る の で 試 み て い た だ き た い. ま た,GPに edu/ koza/で
関 す る ホ ー ム ペ ー ジ のURLはhttp://www-cs-faculty.stanford. あ る.可
能 な 読 者 は 利 用 し て 情 報 を 得 て ほ し い.
れ ら も同様 に
第 1部
遺 伝 的プログラミングの基 礎
第 1章 GP入 GAの
1.1 GA(遺
門
基礎知識
伝 的 ア ル ゴ リズ ム, Genetic Algorithms)は,進
化 論 的 な 考 え方 に基
づ い て デ ー タ を操 作 し,最 適 化 の 問題 や 学 習,推 論 を扱 う手 法 で あ り,近 年 盛 ん に研 究 され て い る.GPはGAの 本 節 で はGPの
理 解 に必 要 なGAの
み を解 説 す る の で,よ 94]な GAで
拡 張 とい う意 味 で, GAの
考 え 方 を多 く用 い る.
基 礎 知 識 を説 明 す る.こ こ で は 必 要 最 小 限 の
り詳 し く知 りた い 読 者 はGAの
教 科 書(例
え ば拙 著[伊 庭
ど)を 参 照 して い た だ き たい. 扱 う情 報 は, PTYPEとGTYPEの
伝 子 コ ー ドと もい い,細
胞 内 の 染 色 体 に 相 当す る)は 遺 伝 子 型 の ア ナ ロ ジ ー で,
低 レベ ル の局 所 規 則 の 集 合 で あ り,GAの は表 現 型(発
現 型)で
造 の 発 現 を表 す.環
二層 構 造 か らな る. GTYPE(遺
あ り,GTYPEの
境 に 応 じてPTYPEか
そ の た め適 合 選 択 はPTYPEに
オ ペ レー タの操 作 対 象 とな る. PTYPE 環 境 内 で の発 達 に伴 う大 域 的 な行 動 や構 ら適 合 度(fitness value)が
依 存 す る(図1.1).表1.1は
生 物 とGAで
決 ま り, の 表現
の 対 応 で あ る.こ こ で は,GAのGTYPEと
して 1次 元 の ビ ッ ト列 を考 え,そ れ
をバ イ ナ リ表 現 で 変 換 し た もの をPTYPEと
して い る.
こ の 表 現 を も と に,GAの
基 本 的 な 仕 組 み を説 明 し よ う(図1.2).何
匹 か の魚
図1.1GTYPEとPTYPE
生物
GA
遺伝子型(染 色体 の集 まり) 例:TT,Tt,tt,…
伝 子 コ ー ド)
例:000,001,010,011,…
表 現 型(遺 伝 子 型 の発 現) 例:高 性(TT,Ttの 個 体) 倭性(ttの
GTYPE(遺
個 体)
PTYPE(GTYPEの
変 換 結 果)
例:0,1,2,3,… バ イ ナ リ表 現 の 変換 値
適合度 例:生
適合度
き残 りや す さ
例:目
遺伝子
的関数値
遺伝子
例:T,t
例:0,1
表1.1
生 物 とGAの
比較
が い て集 団 を構 成 す る.こ れ を世代 tの 魚 とす る.こ の 魚 は各 々GTYPEと 遺 伝 子 コー ドを有 し,そ れ が 発 現 したPTYPEに
応 じて 適 合 度 が 決 ま っ て い る.
適 合 度 は 図 で は 四 角 の な か の数 値 と して示 され て い る.こ
こで は適 合 度 は大 きい
もの ほ ど良 い と し よ う.こ れ らの 魚 は生 殖 活 動(recombination, を行 い,次 の 世 代t+1の
して
reproduction)
子 孫 をつ く り出 す.生 殖 に際 して は適 合 度 の 大 きい もの
ほ ど よ りた くさ ん の子 孫 をつ く りや す い よ うに,そ
して適 合 度 の小 さい もの ほ ど
死 滅 しや す い よ う にす る(こ れ を生 物 学 用 語 で選 択 も し くは淘 汰 とい う).図 で は 生 殖 に よ っ て 表 現 型 が 少 し変 わ っ て い く よ うす が 摸 式 的 に 描 か れ て い る.こ の 結 果,次
の 世代t+1で
の各 個 体 の 適 合 度 は,前 の世 代 よ り も良 い こ とが 期 待 され,
集 団 全体 と して見 た と きの 適 合 度 が 上 が っ て い る で あ ろ う.同 様 に して,t+1世 代 の 魚 た ちが 親 と な っ てt+2世
代 の 子 孫 を生 む.こ
れ を 繰 り返 して い く と,世
代 が 進 む につ れ しだ い に 集 団 全 体 が 良 くな っ て い く,と い うの がGAの
基 本的 な
仕 組 み で あ る. こ こで,選 択 につ い て 簡 単 に 説 明 し よ う.適 合度 の 大 きい もの ほ ど よ り多 産 で あ り,適 合 度 の小 さい もの ほ ど死 に や す い よ うに 選 び た い.そ れ を 実 現 す る 最 も 単 純 な 方 法 は,適 合 度 に比 例 した面 積 を有 す る ルー レ ッ ト(重 み 付 け ル ー レ ッ ト と呼 ぶ)を つ く り,そ の ル ー レ ッ トを回 して 当 た っ た 場 所 の個 体 を 選 択 す る とい う もの で あ る.こ の 方 式 をル ー レ ッ ト方 式 とい う. 生 殖 の 際 に は,GTYPEに
対 して 図1.3に
示 す オ ペ レ ー タ が 適 用 さ れ,次
の世
図1.2GAの
し くみ
代 のGTYPEを
生 成 す る.こ こで は 簡 単 の た め に, GTYPEを
1次 元 の 配列 と し
て表 現 してい る.各 オペ レ ー タ は遺 伝 子 の 組 み 換 え,突 然 変 異 な どの ア ナ ロ ジー で あ る . これ らの オ ペ レ ー タの適 用 頻 度,適 用 部 位 は 一 般 に ラ ンダ ム に 決 定 され る.
図1.3GAオ
ペ レー タ
ラ ンダ ムに初 期 世代 の集 団M(0) を生成 す る.
現 在 の 集 団M(t)内
の 各 個 体mに
対 して適 合 度 μ(m)を 計 算 す る.
μ(m)に 比例 す る確 率 分 布 を用 い て, M(t)か
ら個 体mを
選 び 出 す.
選 び 出 され た 個 体 にGAオ を作 用 させ て,次 M(t+1)を
図1.4GAの
適合度 計算
選択
ペ レー タ
の世 代 の集 団
生 成 す る.
ア ル ゴ リズ ム
生殖
GAの
基 本 的 な 流 れ を ま とめ る と,次 の よ う に な る(図1.4).
GTYPEの
合M(t)={gt(m)}を
あ る世 代 tに お け る個 体 群 とす る.各
現 型PTYPE
対 して,環 境 内 にお け る適 合 度(fitness)ut(m)が
pt(m)に
さ れ る.GAオ
ペ レー タ は,一 般 に 適 合 度 の大 き なGTYPEに
結 果 生 成 され た 新 た なGTYPEは
適 合 度 の 小 さ なGTYPEと
々のgt(m)の
表 決定
適 用 され,そ
の
置 き換 え られ る.
以 上 に よ り,適 合 度 に よ る 選 択 を 実現 し,次 の 世 代(t+1)のGTYPEの M(t+1)={gt+1(m)}が
集
集合
生 成 され る.以 下 同様 に して これ らの 過 程 は 繰 り返 さ
れ る.
【 演 習 問題 2】 GAの
技 法 と して,次 の もの を説 明(理 解)し
な さい.な
お,こ れ ら はGPに
お い て も 同 様 に用 い られ る. トー ナ メ ン ト選 択 方 式
1.
2.
ラ ン ク選 択方 式
3.
エ リー ト戦 略
GAか
1.2 GPは,
GAの
らGPへ 遺 伝 子 型(GTYPE)を
し た もの で あ る.こ
拡 張 し,構 造 的 な 表 現 を扱 え る よ う に
こで の 構 造 的 表 現 とは,グ
ラ フ構 造 や 木 構 造 の こ と を い う.
まず は じめ に,な ぜ こ の よ う な表 現 を扱 う必 要 が あ る の か を考 え て み よ う. 例 と して,エ
キ スパ ー トシ ス テ ム や 学 習 な どの 人 工 知 能 の 問題 に,GAを
す る こ と を考 え よ う.そ の た め に は ど うす れ ば よい で あ ろ う か? 能 で は 記 号 的 な 構 造 表 現,特 目す る.こ 図1.5と
応用
まず,人 工 知
に グ ラ フ構 造 や 木 構 造 が しば しば 登 場 す る こ と に注
れ は知 識 表 現 と して グ ラ フ構 造 が 便 利 で あ る か らで あ ろ う.例 え ば,
図1.6に
人 工 知 能 の シ ス テ ム で しば し ば 用 い ら れ る 知 識 表 現 を示 す.図
1.5は フ レー ム(Frame)と
呼 ば れ る概 念 を表 現 す る言 語 に よ って,ジ
人 の 関 係 を 記 述 した もの で あ る[Winston92,p.188].こ
こ で, akoは
ャッ ク と変 集合 間の包
図1.5
フ レー ムに よ る概念 木
図1.6 構 文解 析 の木
含 関 係(akind
of), isaは 要 素 が 集 合 に 帰 属 す る こ と(isa)を
れ を 用 い て 人 工 知 能 で は さ ま ざ ま な 推 論,学 い ら れ る 導 出 木 で あ る[Barr81,p.308],“the
習 を 試 み る.図1.6は
は こ れ は0.2節
で 実 行 し たsgpc1.1の
した が っ て,複 雑 な数 式 や 概 念,関 こ の こ とか ら,グ ラ フ構 造(特
ら に,図1.7は
出 力(図0.2)の
い う文 章 を
数式 の木表現 で 一 部 で あ る.
係 な どを 木構 造 で 表 現 で きる こ とが わか る.
に 木 構 造)を 扱 え る よ うにGAの
こ とは 意 義 の あ る こ とで あ り,GAの
機 械 翻訳 で用
boy ate the apples"と
句 構 造 文 法 で 解 釈 し た 結 果 が 記 述 さ れ て い る.さ あ る.実
述 べ て い る.こ
手 法 を拡 張 す る
適 用 範 囲 の 拡 大 につ な が る と思 わ れ る.
(b)
(a)
図1.7 数式 の木 構 造
GAを ぶ.つ
構 造 的 表 現 に拡 張 した 枠 組 の こ と をGP(遺 ま りGPは,従
来 のGAの
伝 的 プ ロ グ ラ ミ ン グ)と 呼
欠 点 を次 の よ うに 補 う こ と を試 み る もの で あ る
[伊庭93]. 1.探 索 の た め の 的 確 な 部 分 構 造 の 把 握 2.問 題 の 表 現 形 式 に基 づ い た 効 果 的 な探 索 の 実 現 3.よ り高 次 の 知 識 の適 応 的 な学 習 シ ス テ ム の 構 築 構 造 的 表 現 の た め のGA手 はJohn
Kozaで
の ぼ る)大
述 べ た よ う に,GPの て い る.こ
GPで で あ り,
あ る. GPの
著[Koza92]と
研 究 者 が 参 集 し,本
法 を,“Genetic
Programming”
基 本 的 な 枠 組 み は 1冊 の 分 厚 い(800ペ
し て ま とめ ら れ て い る,現
家 のGAを
と して確 立 した の
在, Kozaの
も と に 多 数 のGP
凌 駕 す る に ぎ わ い を 見 せ て い る.ま
メ ー リ ン グ リ ス トが 作 成 さ れ,日
の よ う な 背 景 を ふ ま え て,以
下 で はGPの
ー ジに も
た,0.3節
で
夜 盛 ん な論 議 が 交 わ され 基 礎 に つ い て 説 明 す る.
は 木 と呼 ば れ る構造 表 現 を扱 う.木 は サ イ ク ル を持 た ない グ ラ フの こ と
の よ う な構 造 をい う.木 構 造 は か っ こ つ きの 表 現 で 記 述 で き,例 え ば 上 の 木 は,
(A(B) (C(D))) も し くは 簡略 化 して,
(AB (CD)) とな る.こ の 表 記 法 を(LISPの)S
式 表 現 とい う.以 下 で は 木 構 造 と S式 を同
一 視 す る.な お この よ うな 木構 造 に 関 して,以 ● ノ ー
ド:記
● 根(ル
号A,B,
C, Dの
こ と
ー ト):A
● 終 端 ノ ー ド:B,D(終
端 記 号,葉
● 非 終 端 ノ ー ド:A,C(非 ● 子 供:A ● 親:C
下 の 用 語 を用 い る.
と も い う)
終 端 記 号, S 式 の 関 数 記 号 と もい う)
に とっ て の 子 供 はB,C(関
数 A の 引 数 と もい う)
に と って の 親 は A
「子 供 の数 」,「引 数 の数 」,「 孫 」,「 子 孫」,「先 祖 」 な ど とい う言 葉 も適 宜 使 用 して い く.そ れ らの 意 味 は容 易 に想 像 が つ くの で説 明 は 省 略 す る.詳 は グ ラ フ 理 論 の 用 語解 説(例 木 に対 す るGAの
し く知 りた い 読 者
え ば[伊 庭93]の 付 録 な ど)を 参 照 して ほ しい.
オペ レー タ と して,以 下 を導 入 す る(図1.8).こ
ト列 を対 象 とす る従 来 のGAオ
ペ レー タの 自然 な拡 張 で あ る.
Gmutation
ノ ー ドの ラ ベ ル の 変 更
Ginversion
兄弟 の並 べ換 え
Gcrossover
部分木 の取 り換 え
これ らの オ ペ レー タ を木 構 造 に適 用 した例 を図1.9に 記 述 す る と次 の よ うに な る.た
れ らは ビ ッ
示 す.こ の 適 用 を S式 で
だ し,オ ペ レー タの 適 用 部 位 には 下 線 を付 した.
(a)Gmutation
(b)Ginversion(兄
(c)Gcrossover
図1.8木
(ノ ー ドの ラ ベ ル の 変 更)
弟 の 並 べ 換 え)
(部 分 木 の 取 り 換 え)
構 造 上 のGAオ
ペ レ― タ
(a)Gmutation
(b)Ginversion
(c)Gcrossover
図1.9
LISPの
S 式 への適 用 例
Gmutation
(+xy) (+xz)
Ginversion
(progn(incfx)(setqx2)(print
(progn(setqx2)(incf
Gcrossover
な お,厳
x))
x)(print
x))
(progn(incf
x)(setq
x 2)(setq
y x))
(progn(decf
x)(setq
x(*(sqrt
x)x)(print
(progn(incf
x)(sqrt
x)(setq
(progn(decf
x)(setq
x(*(setq
密 に 言 え ばGmutationに
x))
y x)) x 2)x)(print
x))
は 次 の 種 類 が あ る(図1.10).
1.終 端 ノ ー ドか ら非 終 端 ノ ー ドへ の 突 然 変 異(図1.10(a))
新 しい部 分 木 の生 成 を伴 う 2.終 端 ノ ー ドか ら終 端 ノ ー ドへ の 突 然 変 異(図1.10(b))
ノ ー ドラ ベ ル の付 け換 えの み 3.非 終 端 ノ ー ドか ら終 端 ノ ー ドへ の 突 然 変 異(図1.10(c))
部分木 の削除 を伴 う 4.非 終 端 ノ ー ドか ら非 終 端 ノ ー ドへ の 突 然 変 異 Case
1
新 しい 非 終 端 ノ ー ドと,古 い 非 終 端 ノ ー ドの 子 の 数 が 同 じ場 合 (図1.10(d))
ノ ー ドラベ ル の付 け 換 えの み Case 2
新 しい 非 終 端 ノ ー ドと,古 い 非 終 端 ノー ドの 子 の 数 が 異 な る場 合 (図1.10(e))
部 分 木 の 生 成 ・削 除 を伴 う オペ レー タの適 用 の割 合 は 確 率 的 に制 御 され る.
(a)
(b)
(c)
(d)
(e)
図1.10Gmutationオ
以 上 の 準 備 の も とにGPの
ペ レ ー タ
ア ル ゴ リズ ム は次 の よ う に な る.
Step1
ラ ン ダム に木 構 造GTYPE{gt(i)}を
Step2
各GTYPE{gt(i)}の {ft(i)}を
表 現 型PTYPE{pt(i)}に
適 合 度 の 大 きなGTYPEに
Step4
取 り 出 し た ペ ア に 対 し てGcrossoverを
Step5
対 して 適 合 度
求 め る.
Step3
GTYPEと
構 成 す る.
対 して 一 定 数 の ペ ア を取 り出 す. 適 用 し,適
合 度 の小 さ な
置 き換 え る.
各GTYPEに
関 し て,ラ
ン ダ ム にGinversion,
Gmutationを
適 用 す る. Step6
以 上 に よ っ て 求 め られ た新 しいGTYPEを,次 と し て,Step2へ
戻 る.
の 世 代 の{gt+1(i)}
た だ し,適
合 度 は 大 き い も の ほ ど 良 い と し て い る.こ
タ の 違 い を 除 い て1.1節 て い た だ き た い.し
で 述 べ たGAの
の ア ル ゴ リ ズ ム は,オ
ペ レー
た が っ て,GPで
ア ル ゴ リズ ム と同 一 で あ る こ と に注 意 し はGAの
知 見 の 多 くをそ の ま ま用 い る こ と
が で き る.
GPで
は 次 の 5 つ の 基 本 要 素 を設 計 す る こ とで,さ
ま ざ まな応 用 例 題 へ の 適 用
が 可 能 に な る. 1.
非 終端 記 号(以 下 F で表す) 非 終 端 ノ ー ドで 使 う 記 号.LISPの
2.
終 端 記号(以 下 T で表 す) 終 端 ノ ー ド(葉)で
3.
適合度
4.
パ ラ メー タ
交 叉,突 5.
S式 で の 関 数.
使 う 記 号.LISPの
然 変 異 の起 こ る確 率,集
S式 で の ア トム.
団 サ イズ な ど.
終 了条件
Step1の SUBTREEを
ラ ン ダム な 木 構 造 の 生 成 は, T と F が 与 え られ た と き,次 の 手 続 き 呼 ぶ こ とで な され る.
手続 きSUBTREE: 1.TUFか
ら 1つ の ノ ー ド x を ラ ン ダ ム に 取 り出 す.
2.x∈Tな
ら x を 返 し て 終 わ り.
3.x∈Fな
ら x の 引 数 の 数 を n と す る.そ
し て,
SUBTREEをcallし
て そ の 結 果 をa1と
す る.
SUBTREEをcallし
て そ の 結 果 をa2と
す る.
SUBTREEをcallし
て そ の 結 果 をanと
す る.
最 後 に(xa1a2…an)と
い う 部 分 木 を 返 し て 終 わ り.
した が っ て,木 構 造 は再 帰 的 に生 成 され る こ とが わ か る.た だ し,こ の ま まで は 非 常 に深 い 木 を得 る こ とが あ る た め,後 述 の よ うに木 の 生 成 を適 切 に制 御 す る
必 要 が あ る. 次 節 で は,GPの
1.3 GPの
実 行 例 を簡 単 な例 題 に よ りみ て み よ う.
GP の 実 行例 実 行 を 記 号 当 て は め(Symbolic
Regression)を
記 号 当 て は め 問 題 と は 次 の よ う に 定 義 さ れ る.未 力 変 数 を{x1,…,xn},出
例 に し て 説 明 す る. 知 の 関 数 f が あ る.f
力 変 数 を y とす る.
(1.1)
y=f(x1,…,xn)
こ の と き,入
力 と 出 力 値 の ペ ア ー(x1,x2,…,xn;y)を
か を 知 り た い(同 1.2の
定 し た い),も
い く つ か 観 測 し, f が 何
し く は f を 近 似 し た い(図1.11).例
よ う な 観 測 値 を 得 た と し よ う.た
りn=1,x1=X)と
の入
だ し,こ
え ば,表
の 場 合 入 力 変 数 は X の み(つ
ま
す る.
y=f(X) こ の と き,f ば,+2,-2,*2,%2な
を 近 似(同
定)す ど.こ
る の に,使
っ て よ い 関 数 が 与 え ら れ て い る.例
こ で,+,-,*,%は
子 の 後 の 数 字 は 引 数 の 数 で あ る.た す よ う に 拡 張 し て あ る.ま
(1.2)
だ し,%は
通 常 の 四 則 演 算 を 示 す.演
え 算
0で割 っ た 場 合 に 1を値 と して 返
た 変 数 や 定 数 と し て は,
{X,R}
(1.3)
を用 い る.た だ し,X は 入力 変 数, R は乱 数 発 生 器 に よ り与 え られ る何 らか の実 数 値 で あ る.し た が っ て,
や
図1.11
表1.2
y=f(x1,…,xn)の
イ メ ー ジ
記 号当 て はめ問 題の デ ー タ
な ど は 正 しい 式 で あ る(こ
れ ら の 木 表 現 は 図1.7に
示 さ れ て い る).一
方,
や
は 誤 っ た式 で あ る.第 数COSを
1の 式 で は-の
用 い て い る.
で は,GPを
用 い て 記 号 当 て は め 問 題 を 解 い て み よ う.式
こ と を 考 え る と,GPの る.ま
た,適
ま,入
力Xiに
をyiと
引数 が 違法 で あ り,第 2の 式 で は未 定 義 関
で はN=10と
探 索 オ ペ レー タ を そ の ま ま当 て は め 式 の 探 索 に適 用 で き
合 度 は 式 の 当 て は め の 誤 差E(error-of-fit)と
す る.た
対 す る S 式(つ
ま りGPの
だ し,i=1,2,…,Nで な る.以
が 木 表 現 で 表 され る
遺 伝 子)の
し て 定 義 で き る.い
予 測 出 力 をyi,正
しい 出 力
あ る. N は デ ー タ の 数 で あ り,こ
の例
下 で は 次 の 式 を適 合 度 計 算 に採 用 す る.
(1.4) 当然 小 さい もの ほ ど成 績 が よい.E=0.0と
な る もの が 正 解 で あ る.た だ し,実
際 に は デ ー タ を訓 練 例 とテ ス ト例 に分 け,学 習 を訓 練 例 で行 い,学 習 結 果 を テ ス
ト例 の 成 績 で 評 価 す る.こ れ は過 学 習 を避 け,で
きる だ け 一 般 的 な 式 を獲 得 した
いか らで あ る.
【 演 習 問題 3】 図1.7(a)の
木 構 造 に つ い て 適 合 度 を 計 算 し な さ い.
さ て,GPで
記 号 当 て は め を 実 行 し て み よ う.GPで
る た め に,sgpc(C
版 の ソ ー ス)を
1.REGRESSIONデ
次 の よ う に 変 更 し て ほ しい.
ィ レ ク ト リ 内 のdefault.inと
population_size
の 実 行 の よ うす を 詳 し く見
い う フ ァ イ ル の 変 更.
= 1024
と い う 行 を, population_size
とす る.こ 2.makeの
= 8
れ はGPの
集 団 数 を 8 と 設 定 し て い る(以
前 は1024で
あ っ た).
再 実 行.
まず,REGRESSIONデ
ィ レ ク ト リ と,そ
の 親 の デ ィ レ ク ト リ か ら 見 え るlib
デ ィ レ ク ト リ 内 の オ ブ ジ ェ ク ト コ ー ド を す べ て 消 去 す る(rm*.oコ ド).そ make
の 後 でREGRESSIONデ
マ ン
ィ レ ク ト リ に 戻 り,
DEBUG=1
の よ う にmakeを
しな おす.こ れ は 各個 体 を すべ て 表 示 して実 行 す るモ ー ド
の指 定 で あ る. こ の 間 の 修 正 例 を 図1.12に
gpc
14none
示 す.こ
の 後 でgpcを0.2節
と 同 じ く,
99
と して 実 行 して み よ う.こ こ で,2 番 目 のパ ラ メ ー タ ④
は,何 世 代 目 までGP
を実 行 す る か を指 定 す る.ま た,最 後 のパ ラ メ ー タ(99)は,乱
数 発 生 器 に与 え
る シ ー ドで あ る.実 験 を 繰 り返 す に は 適 切 に シー ドを変 え る必 要 が あ る.
図 1.12
実 行 し て み る と,今 Generation
修 正例
度 は 詳 細 な 実 行 過 程 が 表 示 さ れ る(図1.13).こ
0 Population
Best-of-gen
fitness:
Best-of-gen
tree:
は,世
sgpcの
代 0(初 期 世 代)で
0 Avg
Std
Fitness:
こで
1218.625854
1.429165
の 平 均 適 合 度(Avg
た 個 体 の 適 合 度(Best-of-gen
fitness)お
Std Fitness),一 よ び,そ
番成績 の良 かっ
の 木 構 造(Best-of-gen
tree)を
pop=
は,こ
示 し て い る.ま
た,
0 standardized
= 1.429165,
adjusted
= 0.411664,
の 世 代 で の 個 体 の 適 合 度(standardized)な
体 は 適 合 度 の 良 い(小 き た い.他
さい)順
た め テ ス トデ ー タ は 訓 練 デ ー タ そ の も の(つ Fitnessと
たValidation
た,実
今 ま で に 得 ら れ た 最 良 個 体 の デ ー タ(何
time= Best
よ び 木 構 造)が
6.790000 tree
だ し,こ
ま り表1.2)と
し て 表 示 さ れ る も の は,そ
同 じ値 の は ず で あ る.ま
fitness,お
れ らの個
に ソ ー ト して 表 示 さ れ て い る こ と に 注 意 して い た だ
各 世 代 で の 最 良 個 体 の テ ス トデ ー タ で の 成 績 を 示 す.た
fitnessと
= 0.587093
ど の 情 報 で あ る.こ
の 表 示 に つ い て は 次 章 で 説 明 し よ う.ま
て,Validation
norm
Fitnessは, の 例 で は簡 単 の
し て い る.し
たが っ
の 世 代 のBest-of-gen
行 の 最 後 に は,実
行 に か か っ た 時 間 と,
世 代 目 に 得 ら れ た かgen,そ
の適合 度
次 の よ う に 表 示 さ れ る.
seconds
for pop#0
found
こ の 実 験 を とお して,木
on gen
1, VALIDATED
構 造 が 変 形 され,世
fitness
= 0.443806:
代 か ら世 代 へ と受 け継 が れ て い
くの が わ か る で あ ろ う.そ し て,世 代 ご との 最 良 個 体 の 適 合 度(Best-of-gen fitness)を
見 て い る と,次 第 に成 績 が 良 くな っ て い くの が 観 察 で き る,残 念 な
が ら この シ ス テ ム に は,ど の よ うなGPオ れ な い.そ
ペ レー タが 適 用 され た か の 表 示 は な さ
れ で も各 世 代 の木 の よ うす を 見 て い る と,成 績 の 良 い 木(の 一 部)が
次 第 に受 け 継 が れ,広 こ こ で,第
ま っ て い くの が 見 て とれ る.
t世 代 の 個 体 の う ち適 合 度 が 第 i番 目 に 良 い もの をGt(i)と
この と き,例 え ば 第 0世 代 の 個 体 のG0(1)とG0(2)を 体G1(1)とG1(8)が G0(2)の
親 と して,第
書 く.
1世 代 の個
交 叉 に よ り生 み 出 され て い る.交 叉 の箇 所 は 図 のG0(1)と
部 分 に示 して あ る.ま
た,G1(3)はG0(1)の
コ ピ ー で あ る.こ れ は 交
叉 や 突 然 変 異 の 適 用 を受 け ず に,そ の ま ま次 世 代 に受 け継 が れ た個 体 で あ る.こ の ほか に も突 然 変 異 の み を受 け た個 体 な どが 見 い 出 せ る で あ ろ う. 次 章 以 降 で このGPシ
ス テ ム の 振 舞 い につ い て詳 し く説 明 しよ う.
図1.13
sgpcで
の 実 行例
【 演習 問題 4】 1.
以 下 の パ ラ メー タ を さ ま ざ まに変 えて,記 号 当 て は め の実 験 を観 察 しな さい. (a) 集 団 数(default.inフ (b) 最 大 世 代 数(gpcコ
ァ イ ル 内 のpopulation_size)
マ ン ドの 第 2引数)
(c) 乱 数 の シ ー ド(gpcコ
合 度 が0.0と
マ ン ドの 第 4 引 数)
2.
解 答 の 表 現(適
な る 木)を 得 る こ とが あ る か.
3.
木 構 造 内 の 実 数 値 R は どの よ う に生 成 さ れ,受 け 継 が れ て い くの か.実 行 結 果 の観 察 か ら推 定 しな さい.
第 2章 C 言 語 に よ るGPシ
2.1
ステム
概要
本 章 で は,C
言 語 に よ るGPシ
に よ り構 築 さ れ たPDSシ
ス テ ムsgpc1.1を
ス テ ム(正
説 明 す る.こ
確 に は フ リ ー ウ エ ア)で
本 的 な 動 作 は す で に 前 章 ま で に 説 明 し た.makeに
れ はWalterら
あ る. sgpc1.1の
よ りで き たgpcと
基
い う オブ ジェ
ク ト コ ー ドに ,
gpc lnnonem
の よ う にパ ラ メ ー タ を与 え てGPを
実 行 す る . こ こで n は実 行 す べ き世 代 数, m
は乱 数 発 生 器 に与 え る シー ドで あ る. 他 の パ ラ メ ー タ はdefault.inフ 容 を 図2.1に はdefault.inを 味 で あ る.他
デ フ ォー ル ト と し て(他 の フ ァ イ ル(例
たい場合 は
gpc
ァ イ ル に 納 め ら れ て い る. default.inの
示 す . こ の フ ァ イ ル は 各 々 の 問 題 ご と に 作 成 す る.gpcの
l n myparam
m
え ばmyparam)を
に 指 定 が な い の で)読
内
引 数 のnone み 込 む と い う意
パ ラ メ ー タ フ ァ イ ル と して 指 定 し
:69> cat default.in
内 容 を見 る
seed=11287 population_size
;乱
数の シー ド
;集
団 数
;初
期 に 生成 され る木 の最 大深 さ
= 1024
steady_state
=0 ;steady
_Stateフ
max_depth_for_new_trees=6 max_depth_after_crossover=17
;交
叉 で 生成 される 木の 最 大深 さ
m ax_metant_depth=4 ;突
然 変 異で 生成 され る木 の最 大 深 さ
grow_method=CROW ;木
の 生成 規 則
selection_method
= FITNESSPROP ;選
択 方式
tournament_K=6 ;ト
ー ナ メ ン トサ ィ ズ
deme_search_radius_sigma=1.0
;demoの
crossover_func_pt_fraction=0.1;非 crossover_any-pt_fraction
parsimony_factor
場 合の 探索 半径
終 端 ノ ー ドで の 交 叉 の 確 率 =0.7 ;非
fitness_prop-repro_fraction
終 端 お よ び 終 端 ノ ー ドで の 交 叉 の 確 率
=0.1;コ
ピーの み の確 率
=0.00000 ;適
合度 の 変換 係 数
図2.1default
と す る.当
ラ グ
in内
然myparamはdefault.inと
の パ ラ メ ー タ
同 様 の記 述 が な され て い な くて は な ら
な い.
gpcの
第 1引数 の 1は 集 団 の 数 で あ る(集 団 数 と混 同 し ない よ うに). sgpcで
は複 数 の 集 団 を扱 え る.例 団 は集 団数 を100と
え ば,第
1番 目 の 集 団 は集 団 数 を50,第
して 同 時 に実 験 が で きる.こ れ につ い て は2.5節
2番 目 の 集 で説明する.
そ れ まで は 常 に引 数 と して 1を与 え る こ と にす る の で,無 視 して 構 わ な い . 次 にsgpcの の 基 本(共
フ ァ イ ル 構 成 に つ い て 説 明 す る.libデ
通)ル
ー チ ン が 定 義 さ れ て い る . 表2.1にlibデ
ル 内 の 主 な 関 数 の 一 覧 を 示 す.こ が 呼 ぶ 標 準 的 な 補 助 関 数 で あ る.そ い.そ
は,問
ど.こ
ため
ィ レ ク ト リの フ ァ イ
の 中 のqsort.c,random.c,malloc4.cはGP れ らの働 きは 容 易 に想 像 が つ くの で 説 明 しな
の 他 の 関 数 の 詳細 は 次 章 で 説 明 す る .
sgpcで ADFな
ィ レ ク ト リ に はGPの
題 ご と に 1つ の デ ィ レ ク ト リ を 設 定 す る . 例 え ば, REGRESSION,
れ ら の デ ィ レ ク トリ に は 共 通 して,
-rw-r--r--
1 iba
3412
Aug
4
1993
-rw-r--r--
1 iba
358
Feb
8
18:48
Makefile default.in
表2.1
libデ
ィ レ ク ト リの フ ァ イ ル 内 の 主 な 関 数(そ
の 1)
とい うフ ァ イ ル が あ り,問 題 固有 の 定 義 関数 を含 む. 読 者 がsgpcを
自 らの 課 題 に適 用 す る場 合 に は,デ
ィ レ ク トリを 作 成 し,上 述
表2.1
libデ
ィ レ ク ト リの フ ァ イ ル 内 の 主 な 関 数(そ
の 2)
の フ ァイ ル を用 意 して 問題 固 有 の 関 数 を定 義 す る.こ れ に よ り最 低 限 の 修 正 の み で さ ま ざ まな 応 用 にGPを よ う.
適 用 で きる.そ
の例 を2.4節 で具 体 的 に 示 す こ と に し
2.2
sgpcの
sgpcの
ア ル ゴ リズ ム
メ イ ン ル ー チ ン はgpc.cと
とrun_gp_systemと 代 交 代)を
い う フ ァ イ ル に あ る. mainの
い う 関 数 を 順 に 呼 び,こ
行 う.以
中 でstartup
れ が 各 々 初 期 化 とGPの
実 行(世
下 順 番 に各 関 数 の 処 理 を説 明 す る.
startup
2.2.1
startupは
各 種 の パ ラ メ ー タ の 設 定 や そ の 表 示 を 行 う.こ
数 がgetparams.c内
に あ る.ま
た, GPを
の た め に呼 ば れ る関
途 中 か ら 実 行 す る こ と も で き る.
【演習 問題 5】 sgpcを 途 中 か ら実 行 す る た め の起 動 法 を説 明 しな さ い.
startup内
で の 重 要 な 処 理 は,
問題 に 応 じ た初 期 化(2.3節
1.
で 説 明 す る)
make_function_table(*numpops,
*pop);
make_terminal_table(*numpops,
*pop);
define_fitness_cases(*numpops,*numgens,*pop); 2.
集 団 の メモ リ領 域 確 保 allocate
_populat
ions(*numpops,*pop);
で あ る. こ こ で 集 団 を保 持 す る デ ー タ 構 造 に つ い て 説 明 す る . こ れ はgpc.h内 れ て い る 大 域 変 数POPで
あ る . 図2.2を
の 数 で あ り,本 節 で は 1 と す る.POP[0]の
に定 義 さ
参 照 して い た だ き た い. NUMPOPSは 指 す 構 造 体popstructの
中 の 主 な情
報 は次 の よ う に な る . typedef
struct
popstruct
int population_size; int max_depth_fornew_trees; int
max_depth_after_crossover;
集 団
{
;集 団数 ;初 期 に生成 され る木 の最 大深 さ ;交 叉で 生成 され る木 の最 大深 さ
;突 然 変異 で生 成 され る木 の最 大深 さ ;木 の 生成 規則 ;選 択 方式
int max_mutant_depth; int grow_method; int selection_method; int tournament_K; float
crossover
;ト ー ナ メ ン ト サ イ ズ _func_pt_fraction;
;非 終 端 ノ ー ドで の 交 叉 の 確 率
float
crossover_any_pt_fraction;
;非 終 端 お よ び終 端 ノー ドでの交 叉 の確 率
float
fitness
;コ ピ ー の み の 確 率
float
*standardized_fitness;
float
*adjusted_fitness;
float
*normalized
int
tree
_prop_repro_fraction;
_fitness;
*fitness
;ソ ー ト した 順 位
_sort_index;
**population;
;現 時 点 の個体 集 団 ;子 供 の個 体 集団 ;世 代 の 中で の一番 良 い個 体
tree **new_population; tree
*best_of_generation;
tree
*best_of_run;
int
best_of_run_gen;
;生 の適 合度 ;変 換 した適 合度 ;正 規 化 した適合 度
;過 去 に 見 つ か っ た 中 で 一 番 良 い 個 体
float
best_of_gen_fitness;
float
best_of_run_fitness;
function_table_entry terminal_table_entry int
function_table_size;
int
terminal
_table_size;
;一 番 良 い個 体 が見 つ か った世代 ;世 代 の 中で の一番 良 い個体 の 適合 度 ;過 去見 つ か った最 良個 体 の適 合度 *function _table; ;非 終 端記 号 の表 *terminal _table; ;終 端 記号 の 表 ;非 終端 記 号 の数 :終 端記 号 の数
} pop_struct;
こ れ ら の パ ラ メ ー タ の 多 くがdefault.in(図2.1)と い た だ き た い . つ ま り,default.in内 れ る.populationな
2.2.2
で 指 定 され た 値 が こ の構 造 体 内 に 設 定 さ
ど に 格 納 さ れ る の がtree(の
で 述 べ る よ う に,こ
のtreeがGPの
同 一 で あ る こ と に注 意 して
ポ イ ン タ)で
あ る.2.2.4節
木 構 造 を表 現 す る.
run_gp_system
run_gp_systemで
は,
1.
generations
2.
report_on_run
の 順 に 関 数 を 呼 ぶ.generationsでGPの て 実 行 が 終 わ る とreport_on_runで の 情 報 な ど)を
出 力 し て 終 了 す る.
世 代 交 代 を 行 い,終
了 条 件 が 満 た され
最 終 レ ポ ー ト(過 去 に 見 い 出 さ れ た 最 良 個 体
図2.2集
2.2.3
団 の 構 造 体popstruct
generations
い よい よGPの
世 代 交 代 ル ー チ ン の登 場 で あ る.以 下 で は,簡 単 の た め 次 の こ
と を仮 定 す る. 1.
集 団 の 数 は 1(変 数numpops=1,以
下 の 多 くの リ ス トでp=0)
2.
steady state機
3.
deme機
能(2.5.2節)は
能(2.5.3節)は
こ の と きgenerationsは
用 い な い(変
用 い な い(変
数demesを
stateを
0 に 設 定)
次 の よ う に 簡 単 に な る で あ ろ う(図2.3).
図2.3generationsの for(g=start_gen;g
if(g){;も
数steady
処理の流れ 大 世 代 数 ま で 繰 り返 す
し初 期 世 代 で な か っ た ら世 代 交 代 の 処 理 を す る
breed_new_population(pop,p,0,0,0,pop[p].steady_state); free_population(pop,p); load_new_population(pop,p); }else{;初 期 世 代 の と き初 期 化 の 処 理 を す る initialize_populations(numpops,pop); evaluate_fitness_of_populations(numpops,numgens,pop,p);
0 に 設 定)
if
(pop[p].parsimony_factor>
0.0)
add_parsimony_to_fitness(pop,p);
}
;適 合度 を計 算 す る zero_fitness_of_populations(numpops,pop,p); evaluate_fitness_of_populations(numpops,numgens,pop,P); if
(pop[p].parsimony_factor
> 0.0)
add_parsimony_to_fitness(pop,p);
normalize_fitness_of_population(pop,p); ;適 合 度 に 従 い 集 団 を ソ ー トす る sort_population_by_fitness(pop,p);
;一 番 良 い世代 を記録 して表 示 す る pop[p].best_of_gen_fitness
=
pop[p].standardized_fitness[pop[p].fitness_sort_index[0]]; pop[p].best_of_generation
=
copy_tree(pop[p].population[pop[p].fitness_sort_index[0]]); report_on_generation(g,pop,p); ;テ ス トデ ー タ で の 成 績 を評 価 す る valperf
=
validate_fitness_of_tree(numpops,
numgens,
pop,
p,
pop[p].population[pop[p].fitness_sort_index[0]]); printf("\nValidation
Fitness=
%f\n",
valperf);
;過 去 に見 い出 され た最 良個 体 を保 持 す る if(!g){ pop[p].best_of_run_fitness
= valperf;
pop[p].best_of_run
=
copy_tree(pop[p].population[pop[p].fitness_sort_index[0]]); pop[p].best_of_run_gen
= 0;
} else
if
(valperf
< pop[p].best_of_run_fitness)
pop[p].best_of_run_fitness free((char
= valperf;
*)pop[p].best_of_run);
pop[p].best_of_run pop[p].best_of_run_gen
= copy_tree(pop[p].best_of_generation); = g;
}
free_tree(pop[p].best_of_generation); ;CHECKPOINT_FREQUENCYの if (CHECKPOINT_FREQUENCY)
周 期 な ら表 示 を す る {
{
if (g&&
!(g%CHECKPOINT_FREQUENCY))
checkpoint(numpops,
numgens,
{ demes,
demerows,
demecols,
pop,
g);
} }
;終 了 条件 の 判定 if(terminate
_early(numpops,numgens,pop))break;
};実 行 の終 了 以 下 こ のgenerationsの
2.2.4
処 理 の 流 れ に 従 っ て 関 数 を 説 明 し て い こ う.
集団の初期化
initialize_populationで う.そ
こ で まず,各
は 集 団 の 初 期 化 と し て, GPの
個 体 の 木 構 造(の
る.treeはgpc.h内
1.
ノ ー ド)を 表 す 構 造 体treeに
に 定 義 さ れ,こ
2.4).nodetypeに
応 じ て,こ
れ が 1つ の ノ ー ドで あ る と 考 え ら れ る(図
と き
終 端 ノ ー ドで あ り 定 数 か 変 数 を 示 す.idに こ の 番 号 の 意 味 はsetup.c内
2.
あ るtermの
に 書 か れ て い る(2.3節).ま
あ るfuncは
え ば,子
供 の 数(つ
関 数 の 種 類 で あ る.こ
自 分 の 子 供 を 指 す.関 ま り 引 数 の 数)が
t->type.func->arg[0];1
番 目 の 引 数(子)
t->type.func->arg[1];2
番 目 の 引 数(子)
t->type.func->arg[n-1];n
番 目(最
後)の
の 場 合union
数 に よ っ て 子 供 の 数 は異 な
n 個 の 関 数 の ノ ー ド tの 場 合,
tree*t;
と な る.
た,unionの
と き
非 終 端 ノ ー ドで あ り関 数 を 示 す.idは
る.例
は 変 数 か 定 数 を 示 す 番 号 が 入 る.
指 す 先 に 自 分 自 身 の 値 が 入 る.
nodetypeがFUNCTIONの
のtdataで
つ い て説 明 す
の 構 造 体 の 情 報 は 次 の よ う に な る.
nodetypeがTERMINALの
tdataで
木 構 造 の 生 成 を行
引 数(子)
構造体 tree
*t
木の 構 造体tree
図2.4
次に 例を 示 す . 関数 と変数,定 数 のidを 関数 の 一覧
変数,定 数 の一 覧
引数の数
id
表示
0
SIN
1
0
1
*
2
1
y
+
2
2
定数
z
この と き,y×sin(x+y)と
次の ように する.
id
表示 x
い う 式に 相 当 す るS式,
(*y(SIN(+xy))) の木 表 現(tree*t)を
図2.5に
示 す . 例え ば x の ノー ド は,
t->type.func->arg[1]->type.func->arg[0]->type.func->arg[0]
で 参照 で き る.同 だ き た い.そ
じ 変 数 y も 異な る ノ一 ド で 実現 されて い る こ と に 注意 し てい た
れ ら は,
図2.5
木構造の例
t->type.func->arg[0], t->type.func->arg[1]->type.func->arg[0]->type.func->arg[1] で あ る.valptrやargvalsに
は 評 価 値 が 代 入 さ れ る(2.2.5節).
【 演 習 問題 6】 x+1.0と
い う式 は ど の よ う に 表 現 さ れ る か?
以 上 の 準 備 を も と に,initialize_populationを 団 数 分 ラ ン ダ ム な 木 をcreate_random_treeで
み て い く.こ の 関 数 で は,集 生 成 す る.こ
の と きの 木 の 生 成 の
仕 方 に 次 の も の が あ る(図2.6).
FULL
最 大 深 さ まで 必 ず 成 長 させ る.
GROW
ラ ン ダム にあ る ノ ー ドが 終 端 に な る か 否 か を決 定 す る.
RAMPED
集 団 内 の 個 体 ご とに 木 の 成 長 方 式 を変 え る.
図2.6
木の生成規則
い ず れ の 場 合 も 木 の 最 大 深 さ は,default.in内
のmax
_depth_for_new_trees
で 定 義 さ れ て い る. create_random_treeの
引 数 は 次 の よ う に な る.
第 1引 数pop
集 団へのポ イ ンタ
第 2引 数 p
集 団番 号(集
第 3 引 数max_depth
生 成 され る木 の最 大 深 さ
第 4 引 数root_p
根 の と き 1,他
は 0.根 の と き は 必 ず 非 終 端 ノ ー ドが
生 成 さ れ る.こ
の た め 定 数 や 変 数 の み の 木 は 生 成 され
団数 で は な い.こ の 節 で は常 に 0)
な い.
FULLの
第 5 引 数full_P
と き 1
以 下 にcreate_random_treeの
主 な 部 分 を 示 す.た
だ し,次
の こ と に注 意 して
い た だ き た い. 1.random_int(n)は
0 か らn-1ま
で の 整 数 の 乱 数 を 出 力 す る.
2.function_arity(t)は(tree*t)の if(max_depth<=0){;最
引 数 の 数 を 返 す. 大 の 木 の 深 さ に達 して い た と き
;終 端記 号(定 数 か変数)を 生成 す る t = create_tree_node(p,
TERMINAL,
random_int(pop[p].terminal_table *(t->type.term->valptr) return
}else
while
_size+ALLOW_CONST));
= (*(terminal
t;;木
の ポ イ ン タ t を 返 す
if(root_p|
|full_p){;関
_constant_generator(t)))();
数 記 号 を発 生 す る場 合
(!pop[p].function_table[choice
=
random_int(pop[p].function_table t=create_tree_node(p,
FUNCTION,
choice);;関
_size)].enabled); 数 記号 を ラ ンダム に選 ぶ
;子 の 部分 木 を再帰 的 に生 成 す る for
(i=0;
i
t->type.func->arg[i] create
i++)
_random_tree(pop,
} return
t;;木
{
=
の ポ イ ン タ tを返す
p,
(max_depth-1),
0, full_p);
}else{;関
数 ノ ー ドか 非 終 端 ノ ー ドを 発 生 す る
choice
=
random_int(pop[p].function_table
_size
+
pop[p].terminal_table_size+ALLOW_CONST); if(choice<pop[p].function_table_size){;関
While
数
ノ ー
ド の と き
(!pop[p].function_table[choice].enabled) choice
= random_int(pop[p].function_table_size);
t = create_tree_node(p,
FUNCTION,
choice);
;子 の 部分 木 を再 帰 的 に生 成す る for
(i=0;
i
t->type.func->arg[i]
i++)
{
=
create_random_tree(pop,
p,
(max
_depth-1),
0, full_p);
} return
t;;木
}else{;終
の ポ イ ンタ tを返 す
端 ノ ー ドの と き
t = create_tree_node(p,
TERMINAL,
*(t->type.term->valptr)
= (*(terminal
return
t;;木
choice-pop[p].function
_table_size);
_constant_generator(t)))();
の ポ イ ン タ tを返す
} }
create_tree_node関 生 成 す る.そ valptrに
数 が,タ
イ プ(FUNCTIONかTERMINAL)に
応 じ て ノ ー ドを
の 後 終 端 ノ ー ド の 場 合 は,terminal_constant_generator関
数 を
設 定 す る.
ALLOW_CONSTは 数 を 使 用 で き る.後 に 入 っ て い る.そ
定 数 を 使 用 す る か を 決 め る フ ラ グ で あ る.こ 述 す る よ う に,定
数 は 常 にpop[p].terminal_tableの
最後
こ で,
t = create_tree_node(P,
TERMINAL,
pop[p].terminal_table_size);
と し てcreate_tree_nodeを
呼 べ ば,定
が 1 の と き,random_intの
出 力 に よ り,前
か め て ほ し い.
れ が 1の 場 合 に 定
数 が 生 成 さ れ る こ と に な る. ALLOW_CONST 述 の よ う に な る場 合 が あ る こ と を確
適合度の計算
2.2.5
木 が 生 成 され る と適 合度 を計 算 す る.木 の 適 合 度 は,集 団番 号 p,個体 番 号 iに 対 して pop[p].standardized_fitness[i]
pop[p].adjusted_fitness[i] pop[p].normalized_fitness[i] に お さ め ら れ て い る.こ い ほ ど よ く,逆 要 が あ る.適 1.
こ でadjusted_fitness,normalized_fitnessは
にstandardized
_fitnessは
小 さい ほ ど よい こ とに 注 意 す る必
合 度 の 処 理 は 次 の 順 に な さ れ る.
zero_fitness_of_populations関
数
す べ て の 適 合 度 を0.0に 2.
大 き
す る.
evaluate_fitness_of_populations関
数
問 題 ご と に 定 義 さ れ た 関 数 でstandardized_fitnessを
計 算 す る(詳
細は
2.3節). 3.
add_parsimony_to_fitness関
default.inフ す る.こ for
数
ァ イ ル 内 のpazsimony_factorが
0 で な い と き次 の 処 理 を
れ は よ り小 さ な プ ロ グ ラ ム を 優 先 す る こ と で あ る.
(i=0;
i<pop[p].population_size;
i++)
pop[p].standardized_fitness[i]
{
+=
((float)count_crossover_pts(pop[p].population[i])) *pop[p].parsimony
_factor;
} た だ し,count_crossover_ptsは
木 の ノ ー ドの 数 を 返 す 関 数 で あ る(2.2.8.2
節). 4.
normalize_fitness_of_population関 次 の 式 に 従 っ て 正 規 化 を 行 う.
数
た だ し,Σadjusted_fitnessは
全 集 団 のadjusted_fitnessの
合 計 を
示 す. 5.
sort_population_by_fitness関
数
normalized_fitnessに
従 っ て 個 体 を ソ ー
pop[p].fitness_sort_indexに sort_index[0]が
お さ め ら れ る.こ
一 番 良 い 個 体 の 番 号 で あ る.つ
[pop[p].fitness_sort_index[0]]が 6.
トす る.ソ
ー
トの 結 果 は 配 列
こ で, pop[p].fitness ま り,pop[p].population
一 番 良 い 個 体 と な る.
表 示 な どの処理 一 番 良 い 個 体 の情 報 を保 持 す る. pop[p].best_of_gen_fitness
=
pop[p],standardized_fitness[pop[p].fitness_sort_index[0]]; pop[p].best_of_generation
=
copy_tree(pop[p].population[pop[p].fitness こ こ でcopy_treeは
_sort_index[0]]);
木 構 造 を コ ピ ー す る 関 数 で あ る.次
に,一
番 良 い個 体
に つ い て テ ス トデ ー タ で の 成 績 を 評 価 す る. valperf validate
= _fitness_of_tree(numpops,
numgens,
pop,
p,
pop[p].population[pop[p].fitness_sort_index[0]]); さ ら に,こ
の世 代 で の最 良個 体 が過 去 に 見 い 出 され た最 良 個 体 よ り も良 か っ
た 場 合,best_of_runと
し て 情 報 を 保 持 す る.
evaluate_fitness_of_populationsは standardized_fitnessに
問 題 ご と に 定 義 さ れ た 関 数 で あ り,
値 を 設 定 す る .こ
う 関 数 を S 式 の 値 を 求 め る の に 用 い る.evalで evaluate_treeを
呼 ぶ. evaluate
_treeの
の と き, eval.c内
のevalと
い
は木 を再帰 的 に評価 す る の に
処 理 は 次 の よ う に な る.
1.tree*tがTERMINALな
return
ら ば そ の 値(valptrの
指 す 先)を
返 す.
(*(t->type.term->valptr));
2.FUNCTIONの
と き,引
数 の 値 を,
for(i=0;i
type.func->argvals[i] evaluate
= _tree(t->type.func->arg
[i]);
} で 再 帰 的 に 評 価 し,argvalsに
代 入 す る. function_arity(t)は
ド t の 引 数 を 求 め る マ ク ロ で あ る.そ
return
関数 ノー
の 後 で,
(*(function_code(t)))(t->type.func->argvals);
に よ り値 を 計 算 し て 返 す.こ
こ でfunction_code(t)は
t の 関数 の 定 義 を
取 り 出 す マ ク ロ で あ る. 例 と し て,図2.5でx=3.1415,y=0.0の に な る.こ
と き の 値 を 求 め る と,図2.7の
こ で 変 数 の 値 は 各 々 のvalptrの
指 す 先 に 入 っ て い る.順
よう
々 に木 の 下
か ら値 が 計 算 さ れ る こ と を確 か め て い た だ き た い.
2.2.6
終了条件の判定
終 了 条 件 が 満 た され て実 行 が 終 わ る と,report_on_runで
最 終 レポ ー ト(過 去
に 見 い 出 され た最 良 個 体 の情 報 な ど)を 出力 して 終 了 す る.こ こ で終 了 条件 とは 次 の こ と を指 す. 1.実 行 す べ き最 大 世 代 に ま で 達 した と き 最 大 世 代 はgpc起
動 時 の 第 2引 数 で 設 定 す る.
2.目 的 とす る 個 体 が 得 られ た と き terminal_earlyで
判 定 す る.こ
の 関 数 は 問 題 ご と に 定 義 さ れ る(2.3節).
{
x=3.1415 y=0.0
の とき
図2.7
y×sin(x+y)の
計算
2.2.7
checkpoint処
checkpointの
理
世 代 の と き,デ
ー タ の ダ ン プ,表
示 な ど の 処 理 を行 う(演
習 問
題 5参 照).
2.2.8
breed_new_populationと
breed_new_populationは for(i=0,
世 代 交 代 生 殖 の 処 理 を 行 う.こ
fraction=random_float(1.0);;乱
数fractionの
i<pop[p].population_size;;iは i += incr,
;最
fraction
初 の 親parent
parent1
if
の 関 数 の 主 な 部 分 を 次 に 示 す.
1の
発 生
す で に 生 成 した 子 供 の 数 = random_float(1.0))
{
選 択
= find_tree(pop,p,demes,nrows,ncols,&worst_index1,&best_index1);
((i
< (pop[P]・population_size-1))
(fraction
&&
<
(pop[p].crossover_func_pt_fraction +pop[P].crossover_any_pt_fraction)))
{
;交 叉 を行 う場 合 ;第
2 の 親parent2の
parent2
選択
=
find_tree(pop,p,demos,nrows,ncols,&worst_index2,&best_index2); if (fraction
< pop[P].crossover_func_pt_fraction)
{
;関 数 記号 で の 交 叉 crossover_at_func_pt(pop,
parent
1, parent2,
&offspring1,
&offspring2);
}else{ ;任 意 の ノ ー ドで の 交 叉 crossover_at_any_pt(pop,
parent
1, parent2,
&offspring1,
&offspring2);
} ;子 供 を保 持 す る pop[p].new_population[i]
= offspring1;
pop[P].new_population[i+1]
= offspring2;
incr=2; } else
if (fraction
<
(pop[P].crossover-func-pt-fraction + pop[p].crossover
_any_pt_fraction
+ pop[P].fitness_prop_repro_fraction))
{
表2.2交
0か ら 1ま で の 乱 数fractionを 然 変 異 を 行 う.こ
叉 と突 然 変異 の 確率
生 成 させ,こ
の 値 に 応 じ て 表2.2の
よ う に 交 叉,突
の よ う に して 生 成 さ れ た 新 し い 子 供 はpop[P].new_population
の 配 列 に 保 持 さ れ る.generationsで
はbreed_new_populationの
次 の 関 数 に よ り 世 代 交 代 が 行 わ れ る. 1.free_population関
数:親
の構 造 体 を 開放 す る
実 行 の 後 に,
2.load_new_population関
数:new_populationに
をpopulationヘ
コ ピ ー す る.
以 下 で は,breed_new_populationの
2.2.8.1
保持 され た子 供 の木 構 造
流 れ を 順 に 見 て い く.
find_tree
親 と な る 候 補 を 選 び 出 す 関 数 で あ る.selection.c内 法 に は 次 の も の が あ り,default.in内
に 定 義 さ れ て い る.選
のselection_methodパ
択
ラ メ ー タで定 義
す る. selection_methodパ
処理する関数
ラ メ ー タ
TOURNAMENT
選択方式 トーナ メ ン ト方 式
find_tree_using_tournament
重 み つ きの ル ー レッ ト方式
find_tree_using_fitnessprop
OVERSELECT
FITNESSPROP
random_float_with_overselect
(良 い もの を重 視 す る)
find_tree_using_fitnessprop
ル ー レッ ト方 式
トー ナ メ ン ト方 式 の 場 合 の トー ナ メ ン トサ イ ズ はtournament_kパ 定 め る.find_treeは
2.2.8.2
上 の 選 択 方 式 に 応 じ て 選 ば れ た 個 体 の 番 号 を 返 す.
交 叉
crossover_at_any_ptに
つ い て 説 明 す る.こ
れ は,任
意 の ノ ー ドで 親p1とp2
を 交 叉 す る.こ
の た め に ま ず,count_crossover_pts関
能 点 を 求 め,そ
れ の 中 か ら ラ ン ダ ム に 1つ を 選 び(xpt1,xpt2),そ
じ た 部 分 木 をget_subtreeで count_crossover_ptsで ば れ るxpt1とxpt2は は 0 か らn-1ま copy_treeで
ラ メー タで
求 め る(st1,st2).た
= st1;
示 す よ う に, よ り選
叉 に よっ て 親 の 構 造 を壊 さ な い た め に
親 の 木 構 造 を コ ピ ー す る.pointer_to_subtreeに
よ り部 分 木 ポ イ ン タ をst1ptr,st2ptrと
*st2ptr
の 番 号 に応
根 が 0で あ る こ と に 注 意 す る 必 要 が あ る(random_int(n)
子 孫o1,o2に
= st2;
だ し.図2.8に
交叉可
は 縦 型 に 数 え た 点 の 数 を 返 す が, random_intに
で の 整 数 乱 数 を 返 す).交
*st1ptr
数 でp1とp2の
し て 求 め る.こ
の 後 で,
図2.8
交 叉 点の カ ウ ン ト
図2.9 交 叉 の様 子
と し て 部 分 木 を 交 換 す る(図2.9).validate_crossoverに の 制 限(max_dept_after_crossover,default.in内 と を チ ェ ッ ク す る.も う に 戻 し て)終
よ り,o1,o2が で 定 義)を
し超 え て い た らo1,o2は
各 々p1,p2と
深 さ
超えていないこ
し て(交
叉が ない よ
す べ て の ノ ー ドの 数 を 数 え, random_intに
よ りそ の
了 す る.
【演習 問題 7】 関 数crossover_at_funct_ptの
2.2.8.3
振 舞 い を 説 明 し な さ い.
突 然変 異
count_crossover_ptsで
中 か ら ラ ン ダ ム に 1つ を 選 び 出 す(mpt).こ (stptr).次
newst
れ を部 分 木 を指 す ポ イ ン タ に 直 す
に,
= create_random_tree(pop, t->pop,
pop [t->pop].max_mutant-depth,
0, 0);
に よ り新 しい 部 分 木 を生 成 す る.こ の と き生 成 され る 木 の 最 大 の 深 さ は,default.in で 定 義 さ れ て い る パ ラ メ ー タmax_mutant_depthに random_tree関 free_treeで
数 の 第4,5引
よ り決 ま る.ま
た, create_
数 に 木 の 成 長 の よ う す が 規 定 さ れ て い る.最
後 に,
古 い 部 分 木 の メ モ リ ー を 解 放 し,
*stptr=newst;
に よ り新 し く生 成 され た木 を つ なげ て突 然 変 異 を終 え る.
2.3 例 題 へ の 適 用 sgpcを
さ ま ざ ま な 問 題 に 適 用 し て み る.そ
デ ィ レ ク ト リ を 作 成 し,2.1節 デ ィ レ ク ト リ でmakeす
の た め に は ま ず,問
題 ご と に 新 しい
で 述 べ た 5 つ の 基 本 的 フ ァ イ ル を 用 意 す る.こ
る こ と で,問
題 に 応 じ た オ ブ ジ ェ ク トコ ー ドgpcが
の で き
る は ず で あ る.こ
の た め の 中 心 と な る フ ァ イ ル はfitness.cとsetup.cで
こ れ ら の フ ァ イ ル に 収 め ら れ て い る 主 な 関 数 を 表2.3に
示 す.そ
あ る.
れ らの 関 数の 多
くは 問 題 に よ ら ず 共 通 し て い る.
表2.3
以 下 で は,ま
2.3.1
fitness.cとsetup.cの
ずREGRESSIONを
フ ァ イ ル 内 の 主 な 関 数
例 に し て,こ
れ ら の 関 数 の 作 り方 を み て い こ う.
REGRESSION
この 問 題 の 定 義 はl.3節 た デ ー ダ に対 して,下
で 説 明 した.す
な わ ち,y=x2/2と
い う式 か ら発 生 し
の 記 号 を用 い て 当 て はめ 式 を求 め る もの で あ る.
こ の た め にま ず,define_fitness_casesで タ を 次 の よ う に 作 成 す る.こ
適 合 度 計 算 に 用 い る(X,y)の
こ で p は集 団 番 号 であ る(以
下 で はp=0).
デー
木
t に つ い て の 適 合 度 計 算 は,evaluate_fitness_of_individualで
次 の よ
う に 行 う.
float
for
sum = 0.0;
(j=o;
j
j++)
{
load _terminal_set_values(pop,p,&(fitness sum
+= xabs(fitness
_cases_table[P][j]));
_cases_table_out[P][j]-eval(t));
} return
sum;
こ こ でload_terminal_set_valuesは の 時 点 の 値 を セ ッ トす る.こ 2.2.5節
変 数(X)にfitness の 後 でeval(t)を
で 説 明 し た とお り に 求 め ら れ る.そ
table_out[P][j])と
あ り,小
の 値 と 正 解(fitness
_cases_
累 積 す る .し た が っ て,正
さ い ほ ど成 績 が 良 い よ う な 適 合 度 が 得 ら れ る.
validate_fitness_of_treeは
テ ス トデ ー タ で の 成 績 を 評 価 す る が,前
よ う に こ れ は 訓 練 デ ー タ の 成 績(つ 結 果)と
し て,そ
の 差 の 絶 対 値(xabs)をsumに
解 の 木 の 適 合 度 が0.0で
_cases_table[P][j]
呼 ぶ こ と で ,木 構 造 tの 式 の 値 が
ま りevaluate_fitness
述 の
_of_individualの
同 じ で あ る.
次 にsetup.cの
書 き方 を 説 明 す る.ま
は 関 数make_function_tableで
ず,関
数 記 号 の 設 定 で あ る.こ
次 の こ と を 行 う.
1.使 用 す る関 数 記 号 の 数 の 設 定 pop[P].function_table_size
= 5;
2.各 関 数 記 号 の 設 定 例:pop[P].function_table[0].arity pop[P].function_table[0].macro pop [P].function_table[0].enabled pop[P].function_table[0].printname
= 2; = FALSE; = TRUE; = "+";
の ため に
pop[p].function_table[0].code
= plus;
3.各 関 数 記 号 で呼 ぶ 関 数 の 設 定 例:GENERIC
plus(args)
GENERIC
*args;
{;文 字 どお り 「plus」 とい う関 数 を実 現 す る return
args [0]+args
[1];
} た だ し,GENERICはMakefile内 =float)
. libの
でfloatにdefineさ
下 のgpc.h内
れ て い る(TYPE
でGENERICはTYPEと
し て#defineさ
れ
て い る こ と に 注 意 し て い た だ き た い.
各 関 数 記 号 の 設 定 内 容 は 次 の よ うに な る. 内容
項 目
引数の数
arity
説明 関 数 の 引 数 の 数.マ
(2.3.2節
FALSEの
使 用 フ ラグ
enabled
(関
表示
printname code
関数の定義本体
次 は 終 端 記 号(定
取 り 出 せ る.
Ifな どのマ クロ を定 義 した い と きTRUEと
マ ク ロ
macro
ク ロfunction_arity(t)で
す る.
参 照)
とき この 関数 は使 用 しない.
数create_random_tree参
照)
表示 すべ き文字 列 を与 える. 関 数 へ の ポ イ ン タ.マ
数 と変 数)の
ク ロfunction_code(t)で
設 定(make_terminal_table)で
取 り 出 せ る.
あ る.こ
以 下 の よ う に す る.
1.使 用 す る終 端 記 号 の数 の 設 定 pop [P].terminal_table_size
= 1;
2.各 終 端 記 号 の 設 定 例:pop[P].terminal_table[0].val=0; pop[P].terminal_table[0].printname
= "X";
pop[P].terminal_table[0].constant_generator
random_constant;
=
れは
こ こ でrandom_constantは
乱 数 の 発 生法 を 与 え る 関 数 で あ る.乱
pop[p].terminel_table[Pop[P]・terminal_table_size].val pop [p].terminal_table
数 は常 に
= 0;
[pop [p].terminal_table_size].printname
= FORMAT;
Pop[p],terminal_table[PoP[P].terminal_table_size].constant_generator
=
random_constant;
の よ う にterminal_tableの
最 後 に 納 め ら れ, ALLOW_CONSTが
1の と き こ れ を
度 用 で き る.
2.3.2
SIN
こ れ はy=sin(x)に
対 し て の 証 号 当 て は め を 求 め る 問 題で あ る.使
号 は 次 の も の で あ る.ま
た,訓
練 デ ー タ の 数 を201と
し,テ
用 す る記
ス トデ ー タ は 訓 練
デ ー タ と 同 一 と す る.
変 数,定 数 の 一 覧
関 数 の一 覧 id 0
表示 +
1
2 3
こ こ でATGはtanの
引 数の 数
id
表示
2
0
X
2
1
定数
2
%
2
4
IFLTE
4
5
ATG
2
逆 関 数(arctangent)で
あ る.IFLTEは
(IFLTExyab) と して 用 い る 4引 数 関 数 で る.こ
のIFLTEが
れ はx<yの
,x<yの
と き a を, x〓yな
ら ば b を返 す 関 数 で あ
マ ク ロ と し て 定 義 さ れ て い る こ と に 注 意 し て い た だ き た い.そ と き に は b の 評 価 を し な い よ う に,x〓yの
と き に は a の評 価 を
し な い よ う に し た い か ら で あ る.
SINの
実 行 結 果 の 一 部 を 図2.10に 示 す.各
自実 行 して 確 か め て い ただ きた い.
図2.10
SINの
実行 結果
【 演 習 問題 8】 ADF,Donutの
プ ロ グ ラ ム を 実 行 し て み な さ い.こ
れ は ど の よ う な 問 題 か.
【演習 問題 9】 sgpcに 次 の便 利 な機 能 を追 加 して み よ う. 1.crossoverやmutationが
ど の 位 置 に 適 用 さ れ た か を 表 示 す る 機 能.
2.最 良 個 体 を各 世 代 ご とに 表 示 す る の で は な く,今 まで よ り “良 い” もの が 見 い 出 さ れ た 世 代 に の み 表 示 す る機 能.
2.4 応 用例 題 ― 人工 蟻 の探 索 こ こで 応 用 例 と して 人 工 蟻 の探 索 を実 験 して み よ う(図2.11).こ
れ は人 工 生
命 の 簡 単 な 練 習 問 題 で あ る. こ の 問 題 は 次 の よ うな もの で あ る.図2.12に 89箇 所 の餌(図
示 す よ うな32×32の
の灰 色 部 分)が あ る.こ の 中 で 人 工 蟻(以 下Antと
マ ス 目上 に 呼 ぶ)は
自分
図2.11
人工 蟻 の イ メー ジ
の 限 られ た エ ネ ル ギ ー の範 囲 内 で 餌 の 探 索 が で きる.Antは
向 き を変 え つ つ 前 方
に 一 歩 ず つ 進 む.斜 め に は進 め な い.ま た,壁 を越 え て 進 む こ と はで き ない.Ant は セ ンサ を 持 ち,自 分 の 前 方 に餌 が あ るか 否 か が わ か る.Antが に エ ネ ル ギ ー を 1単 位 消 費 す る.エ
ネ ル ギ ー は 有 限 な の で,Antは
動 作 を行 うた び で きるだけ効
率 的 に餌 を探 索 す る必 要 が あ る.最 適 経 路 を濃 い灰 色 で 図 に示 す.た だ し,Ant は 左 上 の 位 置 か ら出 発 す る. こ こでAntの 非 終 端(関
数)記
行 動 プ ロ グ ラ ム をGPで
生 成 して み よ う.こ の た め に次 の よ うに
号 と終 端 記 号 を定 め る.
図2.12
Antの
世界
適 合 度 は 次 の よ う に評 価 す る. 1.Energy=400, Worldな
food=0と
ど)の
す る.さ
動 か す. FORWARD,LEFT,RエGHTと
を 評 価 し た ら,Energy=Energy-1と
3.も し,Antの 4.Energyが 5.2
た め の 環 境(以
0 な ら,89-foodを
い う終 端 記 号
す る.
位 置 に 餌 が あ れ ば, food=food+1と
に も ど る.
下に述べ る
初 期 化 を す る.
2.プ ロ グ ラ ム に 従 っ てAntを
ら に, Antの
適 合 度 と し て 返 す.
し 餌 を 消 す.
適 合 度(standardized_fitness)は を 返 す.こ
Antの
こ で89は
小 さ い も の ほ ど よ く な る よ う に,89-food
餌 数 で あ る.
世 界 を次 の よ う に 実現 す る.
#define
World
_Horizontal
#define
World
_Vertical
32 32
unsigned
short
int
World[World
unsigned
short
int
ConstantWorld[World
こ こ でConstantWorldは
_Horizontal][World_Vertical]; _Horizontal][World_Vertical];
オ リ ジ ナ ル な 世 界 で あ り,WorldはAntが
験 環 境 で あ る.ConstantWorldに の 位 置 な ど の 情 報 を 読 み 込 む(関
は 外 部 の フ ァ イ ル か らGPの
にConstantWorldをWorldに
数CreateWorld) コ ピ ー す る(関
.Antの
動 き回 る 実 初 期 化 の 際 に餌
適 合 度 を求 め る た び
数CreateTrai1).こ
れ らの 配 列
に は 次 の い ず れ か の 値 が 設 定 さ れ て い る.
0
餌 な し
1
餌あ り
配 列 の 中 の 値={
2 正 解の軌跡 3 Antが Antは
struct
次 の 構 造 体 で 実 現 し,大
域 変 数glbAntが
歩 い た軌 跡 実 際 のAntに
Ant
{ unsigned
int
x,
;x 座 標
y,
;y 座 標
Moving,
;自 分 の 向 き
Energy;
;エ ネ ル ギ ー
}; extern
struct
Ant
glbAnt;;Antを
表 す 大 域 変 数glbAnt
な る.
た だ し,Antの Movingは
最 初 の 位 置(図2.12の
左 上)をx=y=0と
す る.Antの
方向
下 図 の よ う に す る.
こ こ で*がAntで
あ る.そ
TurnRightとTurnLeftは
して 上 向 き が 1,右 向 き が 0 な ど と な る.し
た が っ て,
次 の よ う に 実 現 で き る.
int TurnRight()
{ if(glbAnt.Energy==0)return
0;
glbAnt.Moving=(glbAnt.Moving+3)%4; glbAnt.Energy--; return
0;
} int TurnLeft()
{ if(glbAnt.Energy==0)return
0;
glbAnt.Moving=(glbAnt.Moving+1)%4; glbAnt.Energy--; return
0;
}
例 え ば,TurnRightで た,こ
はMovingが
れ ら の 関 数 を 1 回 実 行 す る こ と にAntの
注 意 し て い た だ き た い.さ 一 方
0 → 3→ 2→
,MoveForwardは
1 → 0 と 変 わ っ て い く.ま
エ ネ ル ギ ー が 1つ ず つ 減 る こ と に
ら に 餌 を 取 る こ と は な い の で 0 を 返 す よ う に して あ る.
次 の よ う に す れ ば よ い.
int MoveForWard()
{ if(glbAnt.Energy==0)return
0;:エ
ネ ル ギ ー が な い な ら終 わ り
switch(glbAnt.Moving)
;自 分 の 向 き に応 じて
{
;右 向 きな ら右 に進 む
case 0:MoneRight(); break; case
1:MoveUp();
;上 向 きな ら上 に 進 む
break; case
;左 向 きな ら左 に進 む
2:MoveLeft();
break; case 3:MoveDown();
;下 向 きな ら下 に 進 む
break;
} ;エ ネ ル ギ ー を減 らす
glbAnt.Energy--; return(IsFoodHere());
;餌 を 見 つ け た な ら 1 を返 す
}
この 関数 に 必 要 なMoveRightな
どは 次 の よ うに 定 義 で き る.な お こ こ で は 左
上 が 座 標 原 点 で あ り,x 座 標 は右 向 き,y 座 標 は 下 向 きで あ る こ とに 注 意 して い た だ き たい(図2.12). void MoveRight()
{ if(glbAnt.x<World_Horizontal-1)
glbAnt.x++;
} void MoveUp()
{ if(glbAnt.y>0)
glbAnt.y--;
} void MoveDown()
{ if(glbAnt.y<World_Vertical-1)glbAnt.y++; } void
MoveLeft()
{ if(glbAnt.x>0)glbAnt.x--;
} int IsFoodHere()
{
if(World[glbAnt.x][glbAnt.y]==1)
;餌 がAntの
位 置 にあ る とき
{ World[glbAnt.x][glbAnt.y]=3;
;Antの
return
;1 を 返 す
1;
} else{
軌 跡 を 3 と し て残 す
;餌 がAntの
World[glbAnt.x][glbAnt.y]=3;
:Antの
return
;0 を 返 す
0;
位 置 に ない とき
軌 跡 を 3 と して 残 す
} }
IsFoodHereで
は,Antの
号 の 処 理 に 用 い るAntの
軌跡
③
をWorldに
残 し て い る.さ
ら に,非
セ ン サ は 次 の よ う に 書 け る.
int IsFoodAhead()
{
;自 分 の 前 に 餌 が あ る と き 1,な い 時 0 を 返 す. switch(glbAnt.Moving)
;自 分 の 向 き に 応 じて
{ case
0:return
IsFoodRight();
;右 向 きな ら右 に餌 があ る か調べ る
case
1:return
IsFoodUp();
;上 向 き な ら 上 に餌 が あ る か 調 べ る
case
2:return
IsFoodLeft();
case
3:return
IsFoodDown();
;左 向 きな ら左 に餌 が あ る か調べ る ;下 向 きな ら下 に餌 が あ る か調べ る
default:return
0;
} }
;右 に餌 が あ るか?
int IsFoodRight()
if((glbAnt.X<World_Horizontal-1)&&
(World[glbAnt.x+1][glbAnt.y]==1)) return else
1;
return
0:
} ;上 に餌 が あ るか?
int IsFoodUp()
{ if((glbAnt.y>0)&&
(World[glbAnt.x][glbAnt.y-1]==1)) return else
}
1;
return
0;
終 端記
;左 に餌 があ る か?
int IsFoodLeft()
{ if((glbAnt.x>0)&&
(World[glbAnt.x-1][glbAnt.y]==1)) return else
1;
return
0;
}
;下 に餌 があ る か?
int IsFoodDown()
{ if((glbAnt.y<World_Vertical-1)&&
(World[glbAnt.x][glbAnt.y+1]==1)) return else
1;
return
0;
} 以 上 は 補 助 関 数 と し てant.c内 次 にfitness.cを 関 数 を 呼 ぶ.適
説 明 し よ う.ま
に 定 義 さ れ て い る. ず,define_fitness_cases内
でCreateWorld
合 度 計 算 は 次 の よ う に な る(evaluate_fitness_of_individual
関 数).
float
rawfitness=0.0;
CreateTrail();
;Worldの
ResetAnt(Evals);
;Antの 初 期 化 rawfitness+=Translate(t);
while(glbAnt.Energy!=0) return(float)(num_of_food-rawfitness);
Antの
エ ネ ル ギ ー を ま ずEvals(=400)と
Translateを
実 行 す る.こ
Translateの
定 義 は 次 の よ う に な る.
float
初 期化
;num_of_food=89,全
セ ッ ト し,そ
れ が 0に な る まで 関 数
の 関 数 が 木 構 造 に 応 じて,Antの
Translate(t) tree*t;
{ float
ans;
if((t->nodetype)==FUNCTION);関
switch(t->id) {
餌 数
数 ノ ー ドの と き の 処 理
軌 道 を 生 成 す る.
case 0:return((float)If_Food_Ahead(t->type.func->arg[0],
t->type.func->arg[1])); case
1:return((float)Prog2(t->type.func->arg[0],
case
2:return((float)Prog3(t->type.func->arg[0],
t->type.func->arg[1])); t->type.func->arg[1], t->type.func->arg[2])); } else
if ((t->nodetype)==TERMINAL)
;終 端 ノ ー ドの と きの 処 理
switch(t->id) { case
0:return((float)TurnRight());
;ant.cの
case
1:return((float)TurnLeft());
;ant.cの
関数 を呼 ぶ
case
2:return((float)MoveForward());
;ant.cの
関 数 を呼 ぶ
関数 を呼 ぶ
} else{ printf("error return
in TranslateROOT!!\n");
0;
} } つ ま り,Translateは る.こ
木 構 造 の プ ロ グ ラム に応 じて 実 行 を行 う イ ン タプ リ タで あ
の 関 数 を 1回 呼 ぶ ご と に 木 構 造 の プ ロ グ ラ ム に 従 っ てAntが
そ の 間 に 出 会 っ た 餌 の 数 を 返 す.非
動 く.そ
終 端 記 号 の 場 合 の 処 理 関 数 はant.cに
し て, 書 かれ
て い る.
setup.cに
はAntの
使 う関 数(非 終 端)記 号 と終 端 記 号 が定 義 され て い る.さ
ら に,関 数 記 号 の と きの 処 理 が 次 の よ うに定 義 され る. float
If_Food_Ahead(tr1,tr2)
tree*tr1,*tr2;
{ if(IsFoodAhead()) return
Translate(tr1);
else return
Translate(tr2);
;ant.cで
定 義 され てい る関 数
;目 の 前 に餌 が あ れ ばtr1を ;目 の 前 に餌 が な け れ ばtr2を
} float
Prog2(tr1,tr2)
tree*tr1,*tr2;
{ return(Translate(tr1)
;2 つ の 引 数 を 順 に 処 理 す る
実行 実行
+Translate(tr2)); } float
Prog3(tr1,tr2,tr3)
tree*tr1,*tr2,*tr3; { float
ans1,ans2,ans3;
ans1=Translate(tr1); ans2
;3 つ の 引 数 を 順 に 処 理 す る
= Translate(tr2);
ans3 = Translat
e(tr3);
return(ans1+ans2+ans3); }
で は,Antを
実 行 して み よ う.こ
の と きlibデ
ィ レ ク ト リ で,次
の 2つ の 点 を
変 更 して ほ しい . 1.treegen.cフ
ァイ ル
*(t→type.term→valptr)=(*(terminal
_constant_generator(t)))();
を コ メ ン トに 修 正 す る(2 箇 所 あ る こ と に 注 意.2 と).
こ れ でterminal_constant_generatorを
2.gpc.hフ
箇 所 と も コ メ ン トす る こ 呼 ば な い よ う に す る.
ァ イル
#define
ALLOW_CONST
0
とす る.こ れ は定 数 の 終端 記 号 を 用 い な い た め の 宣 言 で あ る. こ う し て 再 びmakeし
て ほ し い. ant.cを
コ ン パ イ ル して リ ン ク す る こ と を忘 れ
な い よ う に. gpcを
実 行 す る と,図2.13の
を示 した後,世
よ う に ま ず オ リ ジ ナ ル の 環 境(ConstantWorld)
代 ご との 最 良個 体 の プ ロ グ ラ ム とそ の 軌 跡 を表 示 す る.表 示 され
る地 図上 の 数字 の 意 味 は 前述 した とお りで あ る.例 えば,筆 者 の シス テ ム で は,集 団 数2000で129世 世 代(0 世 代),100世 図2.14(a),(b),(c)に
代 目に 正 解 の プ ロ グ ラ ム を獲 得 した.そ の 実 行 過 程 で の 初 期 代 目 お よび129世 示 す.図
代 目(正 解 獲 得 時)の 最 良 個 体 の軌 跡 を
で 黒 い 部 分 がAntの
歩 い た 軌 跡 で あ る.
(
図2.13
Antの
実 行結 果
(b)
(a)
(c)
図2.14
2.5
最 良個 体 の軌 跡
拡張機能
sgpcは 以 上 述 べ た 基 本 的 処 理 の 他 に,い
くつ か の 拡 張 した 機 能 を有 して い る.
こ れ らの 詳 しい 説 明 は 第 1部 の 範 囲 を超 え るの で,以 下 で は 簡 単 に そ の 内 容 と使 い方 を紹 介 す る.興 味 あ る 読 者 は,プ ロ グ ラ ム を詳 細 に 読 む か,Walterら (FTP先
のpapersな
ど,0.4節)を
参 照 し て い た だ き た い.
の論文
複数の集団の処理
2.5.1 sgpcで
は複 数 個 の集 団 を 同 時 に処 理 で き る.こ れ はGPの
の 拡 張 に 有 効 で あ る.複 数 の 集 団 を動 か す に はgpcの
並 列 化(6
.4節)へ
起動時 に
gpcnmF1F2...Fns と す る.こ
こ で n が 集 団 の 数,F1か
らFnは
用 の フ ァ イ ル で あ る.default.inで
n個 の 集 団 各 々 に 対 す る パ ラ メ ー タ
よ い な らnoneと
な る.ま
た, m は 世 代 数,
sは 乱 数 の シ ー ドで あ る. こ の と き,n 個 の 集 団 で 独 立 にGPの 数 は 大 域 変 数NUMPOPSに
処 理 が 行 わ れ,表
(p=0;
と あ る の は,す
2.5.2
p<numpops;
steady
p++)
state機
ル ー チ ンの 中 に しば しば
{
べ て の 集 団 に 関 し て,順
steady
団の
セ ッ ト さ れ, POP[0],POP[1],…,POP[NUMPOPS-1]が
各 集 団 を保 持 す る デ ー タ構 造 で あ る.libの for
示 が な さ れ る.集
々 に処 理 を行 う こ と を示 して い る.
state 能 を用 い る こ とが で き るの は ,
1.ト ー ナ メ ン ト選 択 の と き 2.次 に 述 べ るdeme機
能 の とき
の い ず れ か で な く て は な ら な い.steady_stateはdefault.inの steady_state=1と
す る こ と で 利 用 で き る.こ
の と き に は,世
パ ラ メ ー タを 代 交 代 と選 択 の
際 に次 の よ う な処 理 が 行 わ れ る. 1.生 成 さ れ た 子 供 をnew_populat の 子 供 でpopulationを こ る.例
え ば,breed
一 旦 置 く こ と は せ ず に,い
置 き 換 え る.こ _new_population関
free_tree(POP.[P].population[worst POP[P].population[worst_index1]
ionに
き な りそ
れ に よ り世 代 交 代 が よ り動 的 に 起 数 内 で,
_index1]); = offspring1;
の よ う に な る.こ
こ でworst_index1は
トー ナ メ ン トの 対 象 と な っ た 個 体
の 中 で 最 も成 績 の 悪 い 個 体 で あ る. 2.find_treeで while
親 の 候 補 を 選 び 出 す 場 合 に,
(steady_state
&&
(POP[P].population[worst_index1]
parent1= find_tree(pop,p,demes,nrows,ncols,&worst の よ う に す る.上
== parent1))
_index1,&best_index1);
述 の よ う にworst-index1は
トー ナ メ ン トの 対 象 と な っ
た個 体 の 中 で 最 も成 績 の 悪 い個 体 で あ る. こ の よ う な複 雑 な選 択 方 式 が ど の よ う な効 果 を持 つ の か,各
自 さ ま ざ ま な例 題
で 観 察 して い た だ き た い.
demes
2.5.3
こ れ は 集 団 を い くつ か の サ ブ 集 団(deme)に
辺)に
分 け,生
殖 をdeme内(と
その周
限 定 して行 う とい う もの で あ る.こ の 考 え 方 は 実 際 の 生物 の 進 化 モ デ ル と
して 妥 当 な もの で あ り,盛 ん に研 究 され て い る.さ ら に,GP(やGA)の
並列化
を 実 現 す る ため の モ デ ル と して も類 似 の もの が 提 唱 され て い る. deme機
gpc
能 を 用 い る に は,
-d nrow
ncol
と し て 起 動 す る.こ
n m F1 F2...
こ で,n
集 団 はnrow×ncolの
pop_struct
**grid
Fn s
か ら s ま で は 前 述 の パ ラ メ ー タ で あ る.こ
マ ス に 分 け ら れ る.マ
ス はgridと
い う変 数 で 実 現 す る.
= GRID;
各 マ ス 内 に は 集団数/(ncol×nrow)個 の 個 体 が 入 る(図2.15)・ demesと
こ う した 初 期 化 はset_up_
い う 関 数 で な さ れ る.
生 殖 の 際 に は 次 の よ うにgridを if (demes)
順 々 に世 代 交代 して い く.
{
for(i=0;i<demerows;i++){
の と き,各
;demerows=nrowで
あ る
for(j=0;j<demecols;j++){
;demecols=ncolで
あ る
breed_new_population(grid[i][j],p,demes,demerows,demecols, pop[p].steady_state); } } } そ し て,親
は 1つ のgrid内(と
そ の 周 辺)か
using_demesとcannonical_selectで
ら選 択 す る.こ
な さ れ る.詳
の 処 理 は, find_tree_
細 は この 2つ の 関数 を読 ん
で ほ し い.
図2.15demesの
よ うす
【演習 問題10】 breed_new_populationやfind_tree_using_demesな
域 変 数POPと
が と もに使 わ れ て い るが,な ぜ か?
ど で は 引 数 のpopと
大
第
シス テ ム
言 語 に よ る GP
LISP
3.1
3章
概要
本 章 で はLISPに
よ るGPシ
ス テ ム を説 明 す る.こ の シ ス テ ム はKozaら
によっ
て 作 成 され た もの で あ る. シ ス テ ム の 基 本 フ ァ イル の構 成 を以 下 に 示 す.
こ こ で 大 文 字 の フ ァ イ ル 名 の フ ァ イ ル は,例 で あ る.こ
れ ら に つ い て は3.3節
め ら れ て い る.そ rule.lispで
の 他,必
題 に 関 す るGPの
で 説 明 す る.GPの
サ ン プ ル フ ァ イル
本 体 はkernel.lispに
納
要 な 補 助 関 数 の フ ァ イ ル がeval. lisp, edit.lisp,
あ る.
initfinal.lspは い て ま ずGPシ シ ス テ ム(Sun4,
筆 者 が 作 成 し た 起 動 用 の フ ァ イ ル で あ る.こ ス テ ム を 実 行 し て み よ う.な Lucid v.4.1)を
お,以
基 に し て い る.そ
の フ ァイ ル を用
下 の 説 明 は 筆 者 の 有 す るLISP の 他 のLISPシ
ステムにおい
て も 最 小 限 の 変 更 を 加 え る こ と で 同 じ よ う に 実 行 で き る と 思 わ れ る.ま テ ン トの 違 い は,.lispが
本 来 のKozaのGPシ
た,エ
クス
ス テ ム の フ ァ イ ル で あ り,.lsp
は 筆 者 が 独 自 に 作 成 し た フ ァ イ ル で あ る こ と を 示 す. LISPを gppと
起 動 し た 後 でinitfinal.lspの
い う 関 数 を 実 行 し て み よ う.こ
で あ る.す
る と,GPシ
た 例 を 図3.1に
示 す.こ
れ がGPに
して, test
れ は デ モ ンス トレー シ ョ ン用 の プ ロ グ ラム
ス テ ム が 動 き 始 め る は ず で あ る.こ
か の サ ン プ ル は 第 1章(あ ま た,実
フ ァ イ ル を ロ ー ドす る.そ
の よ う に して実 行 し
よ る 処 理 の 一 例 で あ る.特
る い は 第 2章)で
に,最
初 の い くつ
説 明 し て い る の で 見 覚 え が あ ろ う.
行 の 際 に 示 さ れ る い くつ か の パ ラ メ ー タ に 注 意 し て い た だ き た い.こ
れ ら は 図3.2の
よ う に な る.
図3.1LISPで
以 下 で は,こ
のGPシ
の実 行 の よ うす
ス テ ム の ア ル ゴ リ ズ ム を 説 明 す る.
図3.2GPの
パラメータ
【 演 習 問題11】 各 自 のLISPシ mark.lspを
ス テ ム で 関 数 を コ ン パ イ ル し,実 行 し て み よ う.さ
ロ ー ド し て そ の 中 に あ るtime‐test‐gppと
数 を 実 行 して み よ う.こ
れ はGPシ
ら に, bench-
い うbenchmark用
の関
ス テ ム の標 準 的 なベ ン チ マ ー ク と して 用 い ら
れ る.
3.2
GPシ
ス テ ム の ア ル ゴ リズ ム
GPシ
ス テ ム 本 体 の フ ァイ ル お よび そ の 関 数 の 一 覧 を表3.1に
こ れ らの 処 理 を説 明 す る.な
お,LISPに
お い て は 次 の 用 語 が(少
示 す.以
で は)同 一 で あ る こ とに 注 意 す る必 要 が あ る.
下では
な くと も本 章
表
3.1
GPシ
ステ ム本 体の ファ イル とその 関数
●木 構 造 ● プ ログラム ● S式
3.2.1
(Sexpression)
kernel.lisp-GP本
体
まず,こ の ファイルの 最初 に定 義 され た大域 変 数 を見 て み よ う.構 造体individual が 各個 体 を 表 す. (defstruct
individual
;遺 伝 子 で あ る プ ロ グ ラ ム
program
(standardized-fitness
0)
(adjusted-fitness
(hits
;変 換 後 の適 合 度
0)
(normalized-fitness
0)
;正 規 化 され た 適 合 度 ;正 解 の 回数
0))
こ の 後 に は 大 域 変 数 と し て,GPの of-run-individual*,*generat さ れ て い る.GPの
;生 の 適 合 度
パ ラ メ ー タ お よ び 最 良 個 体 の デ ー タ(*bestion‐of‐best-of-run-individual*)が
パ ラ メ ー タ は 実 行 の 最 初 に 表 示 さ れ る(図3.2).
定 義
関 数run-genet
ic-programming-systemがGPの
実 行 ル ー チ ン で あ る.こ
の 関 数 の 引 数 は 次 の よ う な 意 味 を 持 つ.
引数名
意味
problem-function
問題名
seed
乱 数 の シー ド
maximum-generations size-of-population
最大世代数 集団数
seeded-programs
初 期 世代 の プ ロ グラ ム(オ プ シ ョナ ル変 数)
run-genetic-programming-systemの
(multiple-value-bind
関 数 の 主 な 流 れ を,以
(function-set-creator
terminal-set-creator fitness-cases-creator fitness-function
parameter-definer termination-predicate) (funcall
;problem-functionのfuncall
problem-function)
(multiple-value-bind
(function-set
argument-map)
(funcall
function-set-creator)
;関 数 ノ ー ドの 設 定
(funcall
parameter-definer)
:パ ラ メ ー タの 設 定 ;パ ラ メ ー タの 表 示
(describe-parameters-for-run maximum-generations (let
size-of-population)
((terminal-set
(funcall
terminal-set-creator)))
;終 端 ノ ー ドの 設 定 (let ((population (create-population
;初 期 世 代 の 生 成
size-of-population terminal‐set (let
function-set
argument-map
((fitness-cases
seeded-programs))) (funcall
fitness-cases-creator))
;訓 練 デ ー タ の 生 成 (new-programs
(make-array
(execute-generations population
new-programs
maximum-generations
(report-on-run) (values
population
実 行,世
fitness-cases fitness-function
termination-predicate argument-map
size-of-population)))
;GPの
function-set terminal-set)
;最 終 的 な表示 をす る fitness-cases)))))))
代交 代
下 に 示 す.
problem-functionをfuncallし,そ
こ でbindさ
し て い く こ と で 初 期 化 の 処 理 が な さ れ,図3.3に れ ら の 具 体 例 は3.3節
れ た 変 数 を さ ら にfuncall 示 す 変 数,関
数 が 得 ら れ る.こ
で 示 す.
図3.3funcallの
よ う す
run-genetic-programming-systemで
の 重 要 な 処 理 は, create-population
関 数(集
団 の 初 期 化)とexecute-generations関
数(世
代 交 代)で
3.4).以
下 の 表 に 関 数 の 引 数 と な る 変 数 を ま と め て お こ う.次
行 わ れ る(図
節以 降で はこれ ら
の 処 理 を 順 に 説 明 す る. 引数名
意味
size-of-population
集団数
function-set
関 数 記号 の リス ト
argument-map
関 数 の 引 数の リス ト
terminal-set
終 端 記 号の リス ト
seeded-programs
初 期 集団 と して 与 え るプ ロ グラ ム
population
集団の配列(親)
nea-programs
集 団 の配 列(子 供)
fitness-cases
訓練 デ ー タの 配列
maximum-generations fitness-function
最大世代数 適合度の評価関数
termination-predicate
終了条件
図3.4run-gp-systemの
3.2.1.1
create-populat
ion:初
処 理
期集 団 の生成
S 式 の プ ロ グ ラ ム を ラ ン ダ ム に 生 成 し 集 団 数(size-of-population)の populationに で あ る.新
(setf
入 れ て 返 す.こ
こ で, populationの
し い プ ロ グ ラ ム(new‐program)を
(aref
population
(make-individual
と し てpopulationに
配列
要 素 は 構 造 体individual
生 成 し た ら,
individual-index) :program
代 入 す る.た
new-program))
だ し,新
し い プ ロ グ ラ ム の 生 成 時 に は,次
の
2 つ の 特 別 な 処 理 を す る. 1.
seeded-program(プ
ロ グ ラ ム の リ ス ト)が
与 え ら れ て い る 場 合 は,こ
ロ グ ラ ム を 生 成 し た も の(new-program)と に はindividual-index番
目 のseeded-programの
す る.つ
の プ
ま り, new-program 要 素(つ
ま り(nth
individual-index (cond
seeded-program))が
((< individual-index (setf
(aref
設 定 さ れ,そ
(length
population
seeded-programs))
individual-index)
(make-individual (incf
の 後 で,
:program
new-program))
individual-index))
と な る. 同 じ プ ロ グ ラ ム を 生 成 し な い よ う に す る.こ
2.
の ため の チ ェック をハ ッシ ュ表
(*generation-0-uniquifier-table*)を
用 い て 行 う.
S式 の 生 成 規 則 に は次 の もの が あ る. *method
成長の仕方
木 の 最 大深 さ
:full
FULL
*max-depth-for-new-individuals*
:grow
GROW
:ramped-half-and-half
FULL&GROWが
パ
-of-generation*
ラ メ ー タ
FULLとGROWに
つ い て は 図2.6を
*max-depth-for-new-individuals* 半々
参 照 し て い た だ きた い. : ramped-half-and-half
の場 合 は,ち ょう ど半 分 ず つFULLとGROWが る よ う に す る.特
に,木
の 深 さ は,個 体 番 号
混 ざ り,木 の最 大 深 さが 一様 分 布 に な
(individual-index),
木の最大深 さ
最小深 さ(minimum-depth-of-trees)
(*max-depth‐for-new-individuals*),
の パ ラ メ ー タ に 基 づ い て 次 の よ う に 計 算 す る.た
最 小 深 さ+{個
一様 分 布
だ し,%は
体 番 号%(最 大 深 さ-最
割 っ た 余 り を 示 す.
小 深 さ)}
(3.1)
【演習 問題12】 initfinal.lspを
(defun
ロ ー ド後,
define-parameters-for-REGRESSION
()
(setf*number-of-fitness-cases*10) (setf
*max-depth-for-new-individuals*
(setf
*max-depth-for-individuals-after-crossover*
(setf
*fitness-proportionate‐reproduction-fraction*
4) 17) 0.1)
(setf
*crossover-at-any-point-fraction*
(setf
*crossover-at-function-point-fraction*
(setf
*max-depth-for-new-subtrees-in-mutants*
(setf
*method-of-selection*
(setf
*method-of-generation*
0.2) 0.2) 4)
:fitness-proportionate) :ramped-half-and-half)
(values) ) と定 義 しな お し, (print-population (run-genetic-programming-system ,'REGRESSION
と してGPシ
1 .0 1 20))
ス テ ム を実 行 して み な さ い.
各 個 体 の 木 構 造 は,create-individual-programで
ラ ン ダ ム に 生 成 さ れ る.
こ の 場 合 に は 次 の 補 助 関 数 を 用 い る. 1.choose-from-terminal-set関
数
終 端 記 号 を ラ ン ダ ム に 1 つ 選 び 出 す . た だ し,も random-constantが
選 ば れ た 場 合,-5.0か
:integer-random-constantが
ら5.0の
選 ば れ た と き-10か
し:floating-point範 囲 の 実 数 値 乱 数 を, ら10の
範囲の整数値
乱 数 を 発 生 す る. 2.create-arguments-for-function関
数
再 帰 的 に木 構 造 を 生 成 す る. create-individual-program関
数 の 第 5 引 数 は ル ー トノ ー ドの と き t で あ り,
そ れ 以 外 で はnilと
な る.こ
れ は,ル
ー ト ノ ー ドの と き 必 ず 関 数 記 号 を 発 生 させ
る こ と を 意 味 し,定
数 や 変 数 の み の プ ロ グ ラ ム を 生 成 し な い よ う に して い る.
execute-generations
3.2.1.2
execute-generations関
数 は 世 代 交 代 の 処 理 を 行 う.こ
の 関数 の 主 な部 分 を
以 下 に 示 す.
;最 大 世 代 数 までdoル (do
ー プ を繰 り返 す
((current-generat
ion 0 (+ 1 current-generat
;current-generationは ((let
;(aref
ion)))
世 代 数
((best-of-generation
population
0)は
(funcall
(aref
population 0)))
最 良個体で ある
;終 了 条 件 の チ ェ ッ ク を す る
termination-predicate
current-generation
maximum-generations (individual-standardized-fitness (individual-hits
best-of-generation)
(when(>current-generat
best-of-generation))))
ion
(breed-new-population
0);生
殖,世
population
new-programs
argument-map
;適 合 度 の 評 価,集
代 交代 の 処 理
terminal-set))
団 の ソー ト
(zeroize-fitness-measures-of-population
population)
(evaluate-fitness-of-population population
fitness-cases
fitness-function)
(normalize-fitness-of-population (sort-population-by-fitness
population) population)
;世代 で の最 良個 体 の保持 (let
((best-of-generation
(aref
population
0)))
funct
ion-set
(when
(or
(not
*best-of-run-individual*)
(> (individual-standardized-fitness
*best-of-run-individual*) (individual-standardized-fitness best-of-generation))) (setf
*best-of-run-individual*
(copy-individual
best-of-generation)) (setf
*generation-of-best-of-run-individual*
current-generation)))
;世 代 ご との 表 示 (report-on-generation 以 下 で は,こ
3.2.1.3
current-generation
の 関 数 の 流 れ に 沿 っ てGPの
population)))
処 理 を 説 明 す る.
適 合 度 の計 算
木 が 生 成 さ れ る と適 合 度 を計 算 す る . 木 の 適 合 度 は個 体 番 号 iに対 して, (individual-standardized-fitness
(aref
(individual-adjusted-fitness
(aref
(individual-normalized-fitness (individual-hits
(aref
i))
population
(aref population
population i))
population
i))
i))
に お さ め ら れ て い る . こ こ でadjusted-fitness,normalized-fitnessは い ほ ど よ く,逆 し い.適 1.
にstandardized-fitnessは
2.
小 さい ほ ど よ い こ と に注 意 して ほ
合 度 の 処 理 は 次 の 順 に 行 わ れ る.ま
た, hitsは
zeroize-fitness-measures-of-population関 す べ て の 適 合 度 を0.0に evaluate-fitness-of-populat
大 き
正 解 し た 回 数 を 保 持 す る. 数
す る. ion関
数
問 題 ご と に 定 義 さ れ た 適 合 度 評 価 関 数 でstandardized-fitnessを
計 算
す る(詳 3.
細 は3.3節).
normalize-fitness-of-population関
数
次 の 式 に 従 っ て 正 規 化 を 行 う.
た だ し,Σadjusted-fitnessは
全 集 団 のadjusted-fitnessの
合計 を
示 す. 4.
sort-population-by-fitness関
数
normalized-fitnessに を 置 き換 え る.ソ 0))が 5.
従 っ て 個 体 を ソ ー ト し,直 ー トの 結 果,0
番 目 の 個 体(つ
接populationの
ま り(aref
配列
population
一 番 良 い 個 体 と な る.
表示 な どの処理 一 番 良 い 個 体 の 情 報 を 保 持 す る(best-of-generation)
.さ ら に,こ
の世 代
で の 最 良 個 体 が 過 去 に 見 い 出 さ れ た 最 良 個 体 よ り も 良 か っ た 場 合,*best-ofrun-individual*と
し て 情 報 を 保 持 す る.
evaluate-fitness-of-populationは,問 数fitness-functionを
題 ご と に定 義 され た適 合 度 評 価 関
用 い て,次
の よ う にstandardized-fitnessとhits
に 値 を 設 定 す る.
(multiple-value-bind (funcall
(standardized-fitness
hits)
fitness-function (individual-program
individual)
fitness-cases) (setf
(individual-standardized-fitness
individual)
standardized-fitness) (setf
(individual-hits
individual)
こ の と き 引 数 と して 与 え ら れ るfitness-function関
hits))
数 をfuncallし
て プログ
ラ ム の 適 合 度 を 求 め る.fitness-functionはstandardized-fitnessとhits の 2 値 を 返 す こ と に 注 意 し て い た だ き た い.
3.2.1.4
breed-new-populationと
世 代 交 代
breed-new-populationは
(let
生 殖 の 処 理 を 行 う.こ の 関 数 の 主 な 部 分 を次 に 示 す.
((population-size
(do ((index
(length
population)))
0)
(fraction
0(/index
((>=index
population-size)));fraction値
population-size));集
の 計 算
団 数 分 繰 り返 す
(let ((individual-1 (find-individual ;第
population)))
1 番 目 の 親individual-1を (cond
((and
見 つ ける
(< index
(- population-size
1))
(
*crossover-at-any-point-fraction*))) ;交 叉 をす る と き (multiple-value-bind
(new-male
new-female)
(funcall (if(
;2 種 類 の 交 叉 が あ る
*crossover-at-function-point-fraction*) 'crossover-at-function-points 'crossover-at-any-points) individual-1 (find-individual ;子
population));第
供 はnew-male,new-femaleで
2の 親 あ る
(setf
(aref
new-programs
index)
(setf
(aref
new-programs
(+ 1 index))
new-male)
new-female)) (incf
index
2))
((< fraction (+ *fitness-proportionate-reproduction-fraction*
*crossover-at-function-point-fraction* *crossover-at-any-point-fraction*)) ;交 叉 も突 然 変 異 も しな い と き,コ (setf
(aref
new-programs
(incf
index
1))
(:otherwise
;突 然 変異 をす る と き
ピーの み
index)
individual-1)
(setf
(aref
new-programs
(mutate
(incf
index
(index
(setf
terminal-set))
親 の 集 団(population)に
(individual-program
(aref
new-programs
値 に 応 じ て 交 叉,突
れ た 新 し い 子 供 は,new-programの populat ionヘ
代 交 代)
population
index))
index))))
然 変 異 を 行 う(表2.2).こ
の よ う に して 生 成 さ
配 列 に 保 持 さ れ る.最
後 に,子
供 の木構造 を
コ ピ ー し て 世 代 交 代 が 行 わ れ る.
以 下 で は,breed-new-populationの
3.2.1.5
コ ピ ー す る(世
population-size)
(aref
fractionの
function-set
argument-map
1)))))
;子 の 集 団(new-programs)を (dotimes
index)
individual-1
流 れ を 順 に 見 て い く.
find-tree
親 と な る 候 補 を 選 び 出 す 関 数 で あ る.選 *method-of-selection*で
択 法 に は 次 の も の が あ り,パ
ラメー タ
定 義 す る.
*method-of-selection*パ
ラ メ ー タ
処理 する関数
(選択 方 式) find-individual-using-tournament-selection
:tournament
(ト ーナ メン ト方式) :fitness-proportionate-with-over-selection
find-fitness-proportionate-individual
(重み つ きの ルー レッ ト方式,良
random-floating-point-number-
い もの を重 視 す る)
with-over-selection find-fitness-proportionate-individual
:fitness-proportionate
(ル ー レ ッ ト方 式)
トー ナ メ ン ト方 式 の 場 合 の トー ナ メ ン トサ イ ズ は,*tournament-size*パ メ ー タ で 定 め る.find-treeは
ラ
上 の 選 択 方 式 に 応 じて 選 ば れ た 個 体 の プ ロ グ ラ ム
を 返 す.
3.2.1.6
交叉
crossover-at-any-pointsに maleとfemaleを
交 叉 す る.こ
つ い て 説 明 す る.こ
れ は,任
意 の ノ ー
の た め に ま ず, count-crossover-points関
ドで 親
数 でmaleとfemaleの
交 叉 可 能 点 を 求 め,そ
び(male-point,female-point),そ
れ の 中 か ら ラ ン ダ ム に
の 番 号 に応
(male-fragment,female-fragment)と
そ
の 部
subtree-pointer,female-subtree-pointer)を
1つ を選
じ てget-subtreeで 分 木 へ
の ポ
求 め る .こ
部 分 木 イ ン
タ(male-
のget-subtree
関 数 は,
(get-subtree
tree
と し て 呼 ば れ,indexで
pointer-to-tree
index)
与 え ら れ た 番 号 の 部 分 木 を 返 す.こ
ら 右 へ 深 さ 優 先 で つ け ら れ た 番 号 で あ る(図3.5).交 な い た め に,copy-treeで
親 の木 構 造 を コ ピ ーす
る.そ
の 後 で,
(setf
(first
male-subtree-pointer)
female-fragment)
(setf
(first
female-subtree-pointer)
male-fragment)
femaleが
よ り,交
換 後 のnew-male,new-
深 さ の 制 限(*max-depth-for-individuals-after-crossover*)
を 超 え て い な い こ と を チ ェ ッ ク す る.も は 各 々male,femaleと
し て(交
し 超 え て い た らnew-male,new-female
叉 が な い よ う に 戻 し て)終
図3.5
了 す る.
部 分 木 のindex
【演習 問題13】 関 数crossover-at-function-pointsの
左 か
叉 に よ って 親 の 構 造 を壊 さ
子 孫new-male,new-femaleに
と し て 部 分 木 を 交 換 す る.validate-crossoverに
こ でindexは
振 舞 い を 説 明 し な さ い.
突然 変 異
3.2.1.7
count-crossover-pointsで
す べ て の ノー
ド の 数 を 数 え, random-integer
に よ り そ の 中 か ら ラ ン ダ ム に 1 つ を 選 び 出 す(mutation-point).こ を 指 す ポ イ ン タ に 直 す(subtree-pointer).次
れ を部 分 木
に,
(create-individual-program function-set
argument-map
terminal-set
*max-depth-for-new-subtrees-in-mutants*
に よ り新
し い 部 分 木 を 生 成 す る.こ
t nil)))
の と き生 成 さ れ る 木 の 最 大 の 深 さ は パ ラ メ ー
タ*max-depth-for-new-subtrees-in-mutants*に
(setf
(first
よ り 決 ま る.そ
subtree-pointer)
し て,
new-subtree)
に よ り新 し く生 成 され た 木 をつ な げ て 突 然 変 異 を終 え る.
3.2.2 GPの
editオ
ペ レー タ
途 中 で プ ロ グ ラ ムが 不 必 要 に 大 き くな り,探 索 の 効 率 を 下 げ る こ とが あ
る.editオ
ペ レー タはGPに
よ っ て 生 成 され た 木 構 造 を整 理 して エ デ ィッ トす る
た め に用 い られ る.こ の オペ レー タが 有 効 な の はeditに
よ りプ ロ グラ ム の 意 味 的
に不 要 な 部 分 を取 り除 け る か らで あ る.例 え ば,次 の よ う な S式 を考 え よ う. (and
nil
(numberp
x))
こ れ は x の い か ん に か か わ らずnilで
(or nil(numberp
た,
x))
は 簡 単 化 し て(numberp
x)に
な る.
こ の よ う な 簡 単 化 を行 う の がeditオ に は ま ず,変
あ る.ま
ペ レ ー タ で あ る. editオ
換 規 則 を 書 か な くて は な ら な い.こ
ル と し て 表 現 さ れ る.rule.lispに
ペ レー タ を 用 い る
れ は一 種 の プ ロ ダ ク シ ョ ンル ー
は ブ ー ル 関 数 の 場 合 の 変 換 規 則 が 示 し て あ る.
変 換 規 則 は次 の 形 で 表 現 さ れ る.
こ こ でSexが
条 件 部 を満 た す と き 帰 結 部 を 実 行 す る.特
る マ ク ロ と し てreplace-sexpressionが
例 えば,先
に, Sex全
用 意 さ れ て い る.
ほ どの 2つ の 例 の変 換 規 則 は次 の よ うに な る.
体 を置 き換 え
こ れ ら の ル ー ル は*boolean-rules*と
い う 名 の ル ー ル ベ ー ス に リ ス トの 形 で 蓄 え
られ る 。 GPの 1.
中 でeditオ
ペ レ ー タ を 使 う に は 次 の よ う に す る.
ル ー ル ベ ー ス を 作 成 す る. 例 え ば,rule.lspを
ロ ー ドす る と*boolean-rule*と
い う ルー ルベ ー ス が
で き る. 2.
edit-top-level-sexpressionと
い う 関 数 をeditし
常 新 し い プ ロ グ ラ ム(new-program)が (setf
た い と き に 呼 ぶ.通
初 期 化 や 生 殖 で 生 じ た と き に,
new-program (edit-top-level-sexpression
new-program*rule-base*))
と す る. edit-top-level-sexpression関
数 はedit.lisp内
際 に エ デ ィッ トす る の はedit-sexpressionで し,ま
ず 再 帰 的 にeditを
こ の 他def-edit-ruleマ る.ま
行 い,最
の 関 数 は S式 の 引 数 に 対
後 に 全 体 の S 式 をeditす
る. edit.lispに
ク ロ, replace-sexpressionマ
た,constant-expression-pは,引
価 さ れ る か を 判 定 す る.こ
あ る.こ
に 収 め ら れ て い る.実
は
ク ロが 定 義 され てい
数 の S 式 が 定 数(t
かnilな
の 関 数 を 問 題 に 応 じ て 定 義 す る こ と でeditオ
ど)に
評
ペ レータ
の 条 件 部 で 有 効 に 活 用 で き る で あ ろ う.
3.3 GPを
例題 への適用 例 題 に適 用 し よ う.こ の た め に まず,例 題 用 の フ ァイ ル を作 り,必 要 な関
数 を 用 意 す る.こ
こで 必 要 な 関数 と は以 下 の もの で あ る.
関数名
働き
define-terminal-set-for-??? define-function-set-for-???
終端記号の設定 関数記号の設定
define-fitness-cases-for-???
訓練 デー タの設 定
???-wrapper
出力 との イン タ フェ ース
evaluate-standazdized-fitness-for-???
適合度評価関数
define-parameters-for-???
パ ラ メー タの設 定
define-termination-criterion-for-???
終 了条件の関数
通 常???に は 問 題 名 を用 い て わ か りや す くす る.さ
らに,こ の 問 題 の メ イ ンの
関 数???を 次 の よ うに定 義 す る. (defun
???
(values
()
'define-function-set-for-??? 'define-terminal-set-for-??? 'define-fitness-cases-for-??? 'evaluate-standardized-fitness-for-??? 'define-parameters-for-???
'define-termination-criterion-for-???)) そ して 実 行 の と き に は, (run-genetic-programming-system'???乱
数 の シ ー ド 最 大 世 代 数
集 団数) と す れ ば よい.こ
の???がrun-genetic-programming-system関
数 内 でfuncall
さ れ て 適 切 に 初 期 化 の 処 理 が 行 わ れ る(図3.3).
以 下 で は,サ
3.3.1
ン プ ル プ ロ グ ラ ム を 用 い て具 体 的 に説 明 す る.
REGRESSION
こ れ は1.3節
で 説 明 し た 問 題 で あ る.こ の 問 題 の 定 義 フ ァイ ルREGRESSION.lisp
の 主 な 部 分 を 以 下 に 示 す.
;終 端記 号 の設 定 ;:flosting-point-random-constantは (defun
実 数値 乱 数 を使 用 す る指定
define-terminal-set-for-REGRESSION
()
(values'(x:floating-point-random-constant))) ;関 数 記 号 の 設 定(+-*%) ;関 数 記 号 の リス トと そ の 引 数 の リ ス ト (defun
define-function-set-for-REGRESSION
(values
'(+ - * %) '(2 2 2 2)))
()
;自 分 用 に割 算 を定義 す る (defun
% (numerator
(values
denominator)
(if (= 0 denominator)
1 (/ numerator
denominator))))
;訓 練 デ ー タの 構 造 体 (defstruct
REGRESSION-fitness-case
independent-variable
target)
;訓 練 デ ー タの 設 定 の 関 数 (defun
define-fitness-cases-for-REGRESSION
(let
(fitness-cases
()
x this-fitness-case)
;*number-of-fitness-cases*の (setf
数 の配 列 を用意 す る
fitness-cases
(dotimes
(make-array
(index
*number-of-fitness-cases*))
*number-of-fitness-cases*)
(setf
x (/ index
(setf
this-fitness-case
*number-of-fitness-cases*))
(setf
(aref
(setf
(REGRESSION-fitness-case-independent-variable
(make-REGRESSION-fitness-case))
fitness-cases
index)
this-fitness-case)
this-fitness-case) x);x (setf
の デ ー タ発 生
(REGRESSION-fitness-case-target
this-fitness-case) x*x*0.5の
(* 0.5xx))) (values
;出 力 イ ン タ フ ェ ー ス 関 数,通 (defun
REGRESSION-wrapper
(values
デ ー タ発 生
fitness-cases)))
常 は そ の ま ま返 す. (result-from-program)
result-from-program))
;適 合度 評価 関数 (defun
evaluate-standardized-fitness-for-REGRESSION (program
(let
(raw-fitness difference
standardized-fitness
value-from-program
(setf
raw-fitness
(setf
hits
(dotimes
fitness-cases) hits
x target-value this-fitness-case)
0.0)
0)
(index
*number-of-fitness-cases*)
(setf
this-fitness-case
(setf
X;訓
(aref
fitness-cases
index))
練 デ ー タ の xの 設 定
(REGRESSION-fitness-case-independent-variable this-fitness-case)) (setf
target-value;答
の設定
(REGRESSION-fitness-case-target this-fitness-case)) (setf
value-from-program
;
(REGRESSION-wrapper (setf (incf
difference
;誤 差 が0.01未 (when (setf
(abs
raw-fitness
program)))
(- target-value
value-from-program)))
difference)
満 な ら正 解 と し,hitsを
(< difference
0.01)
standardized-fitness
(values
プ ロ グラム の値 を求 め る
(eval
(incf
増やす
hits)))
raw-fitness)
standardized-fitness
2値 を返 す こ とに注意
hits)));
;パ ラ メ ー タ の 定 義 (defun
define-parameters-for-REGRESSION
()
(setf*number-of-fitness-cases*10) (setf
*max-depth-for-new-individuals*
(setf
*max-depth-for-individuals-after-crossover*
6)
(setf
*fitness-proportionate-reproduction-fraction*
(setf
*crossover-at-any-point-fraction*
(setf
*crossover-at-function-point-fraction*
(setf
*max-depth-for-new-subtrees-in-mutants*
(setf
*method-of-selection*
(setf
*method-of-generat
17) 0.1) 0.2) 0.2) 4)
:fitness-proportionate) ion*
:ramped-half-and-half)
(values))
;終 了 条件 の 関数 (defun
define-termination-criterion-for-REGRESSION (current-generation
maximum-generations
best-standardized-fitness
best-hits)
(values (or
(>=
current-generation
maximum-generations)
;最 大 世代 まで達 した か? (>=
best-hits
*number-of-fitness-cases*))))
;す べ て に正 解 したか? ;例 題 実行 の メイ ン関数 (defun
REGRESSION () 'define-function-set-for-REGRESSION
(values
'define-terminal-set-for-REGRESSION 'define-fitness-cases-for-REGRESSION
'evaluate-standardized-fitness-for-REGRESSION 'define-parameters-for-REGRESSION
'define-termination-criterion-for-REGRESSION))
訓 練 用 の デ ー タ を 保 持 す る の にfitness-casesと
い う 配 列 を 用 い て い る.ま
た,
プ ロ グ ラ ム の値 を求 め る の に は
(REGRESSION-wrapper
(eval
program))
とす る だ けで よい こ と に注 意 してい ただ きた い.C 言 語 の場 合 には 複 雑 な処 理(関 数eval_tree)が 図3.6はREGRESSIONの
必 要 で あ る こ と を考 え る とLISPの
効 用 が理 解 で き よ う.
実 行 の よ う す を 示 し た も の で あ る.な
の ベ ン チ マ ー ク で 実 行 し た の もREGRESSION関
数 で あ る.
お,演
習 問 題11
図3.6
3.3.2
REGRESSIONの
実 行例
MAJORITY-ON
こ れ は 3人 の 多 数 決 の 関 数 を求 め る問 題 で あ る.ブ
ー ル 関 数 合 成 の 問 題 と して
考 え る と,3 入 力 1出 力 の 次 の よ う な ブ ー ル 関 数 を求 め る こ と に な る.
この た め に まず,変 数 と関 数 を次 の よ う に指 定 す る. (defun
define-terminal-set-for-MAJORITY-ON
(values'(d2
d1 d0)));終
端 記 号 の リス ト
()
(defun
define-function-set-for-MAJORITY-ON
(values
'(and
()
and or not)
'(2 3 2 1)))
;関 数 記 号 の リ ス ト と そ の 引 数 の リス ト
そ の 後 に,適 合 度 評価 関 数 を以 下 の よ うに 定 義 す る. (defun
evaluate-standardized-fitness-for-MAJORITY-ON (program
(let
fitness-cases
(raw-fitness
hits
match-found
standardized-fitness
(setf
raw-fitness
(setf
hits 0)
fitness-case)
0.0)
;fitness-casesは
訓 練 デ ー タ
;*number-of-fitness-cases*は (dotimes
target-value
value-from-program
訓 練 デ ー タ の 数
(index
*number-of-fitness-cases*)
(setf
fitness-case
(aref
(setf
d0
(MAJORITY-ON-fitness-case-d0
fitness-case))
(setf
d1
(MAJORITY-ON-fitness-case-d1
fitness-case))
(setf
d2
(MAJORITY-ON-fitness-case-d2
fitness-case))
(setf
target-value;
(setf
value-from-program
(setf
match-found
(eq
target-value
(incf
raw-fitness
(if
match-found
(when
match-found
(incf
fitness-cases
index))
正解 の 設定
(MAJORITY-ON-fitness-case-target
fitness-case)) ;
(MAJORITY-ON-wrapper
プ ロ グラ ムの値 の評 価 (eval
program))) value-from-program)) 1.0
0.0))
hits)));
正 解 の と きhitsを 増 やす ;適 合 度 は 不 正 解 数 と す る(standardized-fitnessは 小 さ い も の ほ ど 良 い) (setf (values
standardized-fitness standardized-fitness
こ の ほ か の 関 数 はREGRESSIONと
(- 8 raw-fitness)) hits)))
同 様 で あ る.図3.7にMAJORITY-ONの
実行
の よ う す を 示 す.
【演習 問題14】 NON-HAMSTRUNG-SQUAD-CAR.lispと は ど ん な 問 題 か.
い う フ ァ イ ル を 実 行 し て み な さ い.こ
れ
【演 習問題15】 こ の シ ス テ ム に 次 の 便 利 な 機 能 を追 加 してみ よ う. 1.
crossoverやmutationが
ど の 位 置 に 適 用 さ れ た か を 表 示 す る 機 能.
2.
最 良 個 体 を各 世 代 ご と に表 示 す る の で は な く,今 まで よ り “良 い ” もの が 見 い 出 され た世 代 にの み 表 示 す る機 能.
図3.7MAJORITY-ONの
3.4
実 行 例
応用例題 ―人工蟻 の探索
こ こ で応 用例 と して人 工 蟻(Ant)の
探 索 を実 験 して み よ う.こ れ は2.4節 で説
明 した 人 工 生 命 の 簡単 な練 習 問 題 で あ る(図2.11). この 問 題 をGPで (defstruct
解 くた め,
Ant
x
;x 座 標
y
;y 座 標
Moving
;方 向
Energy)
;エ
をAntを
ネル ギ ー
表 す 構 造 体 と し,大
stantWorldとWorldと 境 と す る.こ
域 変 数glbAntを
実 際 の 蟻 と す る.さ
ら に, Con-
い う 2 次 元 配 列 を 各 々 オ リ ジ ナ ル な 世 界, Antの
動 く環
れ ら の 初 期 化 の 処 理 が 関 数CreateWorld,CreateTrai1,ResetAnt
で な さ れ る の は2.4節 初 期 化 の 処 理
と 同 様 で あ る.
は 関 数define-fitness-cases-for-ANT内
*number-of-fitness-cases*に define-termination-criterion-for-ANTで 実 行 を 終 了 す る た め で あ る.
で 行
は 餌 の 数 を 設 定 す る(こ
う.ま
の 例 で は89).こ
た, れ は
す べ て の 餌 が 見 つ か った と き に
;終 了 条件 の 判定 関数 (defun
define-termination-criterion-for-ANT (current-generation
maximum-generations
best-standardized-fitness
(declare
(ignore
(values
(or
;best-hitsは
best-hits)
best-standardized-fitness))
(>=
current-generation
(>= best-hits
GPの
maximum-generations)
見 つ け た 餌 の 数 を 示 す. *number-of-fitness-cases*))))
た め の 非 終 端 記 号,終 端 記 号 の設 定 関 数 を次 の よ う にす る.
;終 端 記 号 の設 定 (defun
define-terminal-set-for-ANT
(values
'(turnright
()
turnleft
moveforward)))
;非 終端 記 号 の設 定 (defun
define-function-set-for-ANT
(values
()
'(if-food-ahead
prog2
prog3)'(2
2 3)))
そ して,適 合 度 評価 は 次 の よ う にす る. (defconstant
(defun
Evals
400)
;
evaluate-standardized-fitness-for-ANT (program
fitness-cases)
(CreateTrail)
(ResetAnt (do
環境 の初期 化
;
Antの
Evals);
((rawfitness
(values (setq
rawfitness
rawfitness)
(+rawfitness
program)の
rawfitness)) (my-eval
program)))))
実 行 に よ っ てAntの
関数 の 評 価 を行 うこ
ず エ バ リ ュ エ ー タ を 書 こ う.
my-eval
(if (atom
0) ; エ ネ ル ギ ー が 0 まで
glbAnt)
(- num-of-food
重 要 な 点 は,(my-eval と で あ る.ま
初期 化
0.0))
((eq (ant-Energy
(defun
エ ネルギ ー の上 限
(tr)
tr)
(case tr (TurnRight (TurnLeft
;
終 端記 号 の とき
;3 つ の ケ ー ス に 分 け て 処 理 す る (TurnRight)) (TurnLeft))
(MoveForward(MoveForward)) (t (format
t " a
: error
terminal
case
in Translate\n"
tr)))
(case(car
リ ス トの と き
tr);
((If-Food-Ahead prog2 prog3) (eval
tr))
;
(t (format
上 の 3種類 な ら評価 す る
t " a
例 え ば,TurnRightと た,(prog2**)な
:error
nonterminal
case
in Translate\n"
tr))))))
い う シ ン ボ ル に 出 会 っ た ら(TurnRight)を
実行す る.ま
ど の リ ス トの と き は そ の ま ま 評 価 す る.こ
の た め に非 終 端 記
号 を マ ク ロ で 定 義 す る. (defmacro
If-Food-Ahead
‘(cond
(tr1
tr2)
((IsFoodAhead)
(my-eval',tr1)) (t(my-eval',tr2)))) (defmacro
Prog2
(tr1 tr2)
‘(+(my-eval'
(defmacro
,tr1)
Prog3 '
,tr1)
(my-eval
TurnRight
れ ら は2.4節
と同 様 なの
数 の 定 義 は 次 の よ う に な る.
() glbAnt)
0)
(return-from
TurnRight
0))
回 転す る
(setf(Ant-Moving
glbAnt)
(decf
glbAnt))
(Ant-Energy
ど を 定 義 す る.こ
え ば,TurnRight関
(if (eq (Ant-Energy
;向 き を 右 に90度
(my-eval',tr3)))
',tr2)
助 関 数 と し てTurnRightな
で 詳 細 は 省 略 す る.例 (defun
',tr2)))
(tr1 tr2 tr3)
‘(+ (my-eval
さ ら に,補
(my-eval
(mod
(+ (Ant-Moving glbAnt) ; エ ネ ル ギ ー を減 ら す
3) 4))
0)
以 上 の よ う に し て 定 義 さ れ るAnt用
で はGPで
の 関 数 フ ァ イ ル がANT2.lspで
あ る.
実行 して み よ う.ま ず,各 世 代 の最 良 個 体 の 軌 跡 を表 示 させ る た め
に次 の 変 更 をす る. 1.
validate-fitness-of-tree関 standardized-fitness-for-ANTと (配 列World)を
表 示 す る.
数
を 用 意 す
る.こ
同 様 で あ る が,最
れ はevaluate後 にAntの
軌 跡
2.kernel.lsp内
の 以 下 の 2箇 所 を 変 更 す る(新
(a)report-on-generation
関
best-individual)の (b)report-on-run関
数
数 に(validate-fitness-of-tree*best-of実 行 を 加 え る.
こ れ ら を 起 動 用 フ ァ イ ルinitfinal・lspに 行 の 結 果 を 図3.8に
を 示 し た 後,世
に(validate-fitness-of-tree
実 行 を 加 え る.
run-individual*)の
み る.実
フ ァ イ ル名newkernel.lsp).
示 す.ま
ず,オ
よ り ロ ー ド し, Antの
実 験 を して
リ ジ ナ ル の 環 境(ConstantWorld)
代 ご と の 最 良 個 体 の プ ロ グ ラ ム と そ の 軌 跡 を 表 示 す る.表
る 地 図 上 の 数 字 の 意 味 は2.4節
示 され
で 説 明 し た と お り で あ る.
【 演 習 問題16】 適 合 度 計 算 に お い て 関 数evalを
使 わ ず に,2.4節
のTranslate関
数 に な らい
記 号 解 釈 を 自 分 で 行 う よ う に し て み な さ い.
【演習 問 題17】 LISPの Right))を
ユ ー ザ に と っ て,シ
ン ボ ル(例:TurnRight)の
評 価 す る よ う にevalを
と き に 関 数(例:(Turn-
書 く の は 気 に 入 ら な い か も しれ な い.そ
す べ て 関 数 の 処 理 と す る エ バ リ ュ エ ー タ を 書 い て み な さ い.
こ で,
図3.8 ANTの
3.5
実 行例
拡張機能
KozaのGPは
前 述 の 基 本 的 処 理 の 他 に,い
くつ か の拡 張 した機 能 を 有 して い
る.以 下 で は,簡 単 に そ の 内容 と使 い方 を紹 介す る.た だ し,こ れ らの詳 しい説 明 は 第 1部 の 範 囲 を超 え る の で,興 味 あ る読 者 は プ ロ グ ラ ム を詳 細 に読 む か,Koza らの 論 文[Koza92,94]を
参 照 して い た だ きた い.
3.5.1
自動的関数定義(ADF)
Kozaら
は関 数 を 自分 自 身 で 定義 して,効 率 的 に利 用す る方 法 を最 近 研 究 して い
る[Koza94].こ
れ に は,探 索 の 過 程 で 木(LISPの
S式)が 莫 大 に な り探 索 効 率
が 劣 化 す る の を防 ぐ とい う 目 的 が あ る.自 動 的 関 数 定 義 の た め に拡 張 したGPの 遺 伝 子 コー ド(S 式)を 図3.9に 示 す.こ こ で,通 常 の関 数 定 義 は右 側 の 枝 に書 か れ て い る.一 方,左 側 の 枝 に はDEFUNを た 関数 を関 数 名ADFOと
用 い た定 義 部 が あ り,こ こで 定 義 され
して 右 側 の 定 義 内 で何 度 で も呼 ぶ こ とが で きる. GPの
図3.9 ADFの
実 行 に際 して は,左 側 のADF0の
木構 造
定 義 部 分 に も右 側 の通 常 の 定 義 部 分 と同様 に交
叉 や 突 然 変 異 を行 う.た だ し,ADF0の
定 義 部 分 はADF0の
定 義 部 分 ど う しで,
右 側 の 定 義 部 分 は右 側 の定 義 部 分 ど う しで 交 叉 を行 う とい う制 約 が あ る.ADFが 有 効 な の は 右 側 の表 現 を簡 約 化 で き る こ と に あ る.ま た,実 の 遺 伝 子 内 で複 数 個(ADF0,ADF1,…,ADFn)使 ADFを
用 い たGPシ
こ のlitlflet.lispを 定 義 さ れ て い る(印 (defstruct adfO
あ る.た
だ し,こ
見 て み る と, adf-programと 刷 部 分:print-functionは
い う構 造 体 が 次 の よ う に
省 略 し た).
adf-program adfi rpbO)
(make-adf-program;adf-programの ;adfOの
(create-program-branch
構 造体 の 生成
部分 の セ ッ ト ;木 構 造 の 生 成
adf0-function-set
adf0-argument-map
adf0-terminal-set
minimum-depth-of-trees
maximum-depth-of-trees
:adfl
;adflの
(create-program-branch
;各
individual-index
パ
ラ メ ー
タ
full-cycle-p)
部 分 の セ ッ ト ;木 構 造 の 生 成
adfl-function-set
adfl-argument-map
adfl-terminal-set
minimum-depth-of-trees
maximum-depth-of-trees
れ はADF
簡 略 版 で あ る.
こ の構 造 体 を用 い た初 期 集 団 の 生 成 は次 の よ う に な る.
:adfO
1つ
う こ とが あ る.
ス テ ム がlitlflet.lispで
用 に 改 良 し た 先 のkernel.lispの
際 に はADFは
individual-index
;各
パ
ラ メ ー
full-cycle-p)
タ
:rpb0
;プ ロ グ ラ ム 本 体 の セ ッ ト
(create-program-branch
;木 構 造 の 生 成
rpb0-function-Set
rpb0-argument-map
rpb0-terminal-set
minimum-depth-of-trees
maximum-depth-of-trees
individual-index
そ し て,breed-new-population関 adf1,rpb0の
以 下 で はADFの
数 記 号 を 設 定 す る.
()
終 端記 号 '(arg0
argl arg2)))
define-function-set-for-EVEN-5-PARITY-ADF0
;ADF0の (values
()
関数 記号 '(and
or nand nor)
'(2 2 2 2)))
define-terminal-set-for-EVEN-S-PARITY-ADFl
;ADF1の (values
()
終端 記号 '(arg0
arg1 arg2)))
define-function-set-for-EVEN-5-PARITY-ADF1
;ADF1の (values
(defun
()
関 数 記 号ADF0が
呼 べ るこ とに注 意
'(and
nor ADF0)
or nand
'(2 2 2 2 3)))
define-terminal-set-for-EVEN-5-PARITY-RPB0
()
;入 力 の変 数,本 体 の終端 記 号 (values
(defun
参 照).
偶 パ リ テ ィ 関 数 を 合 成 す る 問 題 で あ る.
define-terminal-set-for-EVEN-5-PARITY-ADF0
(values
(defun
詳 細 は,6.1節
EVEN-5-PARITY
;ADF0の
(defun
数 に よ りadf0,
れ に 対 して 交 叉 や 突 然 変 異 を 適 用 す る.他
適 用 例 を見 て い く(ADFの
こ こ で ま ず 終 端 記 号,関
(defun
full-cycle-p)))
ほ と ん ど 同 様 で あ る の で 説 明 は 省 略 す る.
こ れ は 5 ビ ッ ト(d4,d3,d2,d1,d0)の
(defun
パ ラ メ ー タ
数 で は, select-branch関
う ち 1つ を 選 び だ し,そ
の 処 理 はkernel.lispと
3.5.1.1
;各
'(d4 d3 d2 d1 d0)))
define-function-set-for-EVEN-5-PARITY-RPB0
;本 体 の 関 数 記 号,ADF0,ADF1が (values
'(and
()
呼 べ る こ とに注 意
or nand nor ADF0
ADF1)
'(2 2 2 2 3 3)))
こ こ でADF1で
はADF0関
ADF1,ADF0の
数 が 呼 べ る こ と に 注 意 し て い た だ き た い.ま
た,
引 数 の 数 は 3 と し て あ る.
こ の 後 に適 合 度 評 価 関数 を次 の よ う にす る. (defun
evaluate-standardized-fitness-for-EVEN-5-PARITY (program
;programは (let
fitness-cases)
構 造 体ADF-programで
(raw-fitness
hits
match-found
あ る
standardized-fitness
value-from-program
(setf
raw-fitness
0.0)
(setf
hits 0);正
解 の 回数
(setf
rpb0(ADF-program-RPB0
target-value fitness-case
prottram))
rpb0)
;本 体
(setf*adf0*(ADF-program-ADF0
program));ADF0を
セ
ッ
ト
(setf*adf1*(ADF-program-ADF1
program));ADF1を
セ
ッ
ト
(dotimes
(index
*number-of-fitness-cases*)
(setf
fitness-case(aref
(setf
d0
(EVEN-5-PARITY-fitness-case-d0
fitness-cases
index));訓 fitness-case))
(setf
d1
(EVEN-5-PARITY-fitness-case-d1
fitness-case))
(setf
d2
(EVEN-5-PARITY-fitness-case-d2
fitness-case))
(setf
d3
(EVEN-5-PARITY-fitness-case-d3
fitness-case))
(setf
d4
(EVEN-5-PARITY-fitness-case-d4
fitness-case))
(setf
target-value
(setf
value-from-program
(setf
match-found
(eq
(incf
raw-fitness
(if match-found
(when
match/found(incf
(defun (eval
(defvar
(arg0
*adf0*))
*adf1*)
value-from-program)) 1.0
0.0))
解 の と きhitsを
値 を 大 域 変 数*adf0*と*adf1*にsetfで
増 や す
rpb0)を
セ ッ トして
実 行 す る こ とで 適 切 に
ぜ な ら ば 次 の よ う に 宣 言 さ れ て い る か ら で あ る.
*adf0*) adf0
rpb0)))
hits)))
の 後 で 通 常 の よ う に(eval
関 数 が 評 価 さ れ る.な (defvaz
(eval target-value
(- 32 raw-fitness))
standardized-fitness
い る こ と で あ る.こ
ログ ラムの評 価
hits)));正
standardized-fitness
こ こ で 重 要 な の は,ADFの
タ
fitness-case))
;プ
(EVEN-5-PARITY-vrapper
(values
デ ー
;正 解 の 値
(EVEN-5-PARITY-fitness-case-target
(setf
練
arg1 arg2)
(defun
adfl
(eva1
(arg0
arg1 arg2)
*adf1*))
initfinal.lspを
ロ ー ド し てtest-gppを
メ ー タ や 訓 練 デ ー タ が 表 示 さ れ,ADFに の 実 験 と し て,次 (progn(defun
よ るGPの
る と まず,パ
実 行 が 始 ま る.ま
ず,最
ラ 初
の よ う な 正 解 の 関 数 が 示 さ れ る で あ ろ う. ADF0(ARG0
(values
ARG1
ARG2);ADF0の
(OR (AND ARG0
ADF1(ARG0
(values
ARG1
(NAND
定 義
ARG1)
(AND (NAND (defun
実 行 し て み よ う.す
ARG0
ARG0)
(NAND
ARG2);ADF1の
(OR (AND ARG0 (AND (NAND (OR (AND ARG0 (AND (NAND
ARG1
ARG 1)))))
定義
ARG1) ARG0
ARG0)
(NAND
ARG1
ARG1)))
ARG0)
(NAND
ARG1
ARG1))))))
ARG 1) ARG0
;本 体 の 定義 (values
こ こ でADFの 5-PARITYの
(ADF1
(ADF0
(ADF0 D0 D1 D0) (ADF0
呼 ば れ 方 に 注 意 す る 必 要 が あ る.ま
た,こ
D2 D3 D0) D0) D4 D0)))
の 関 数 が 実 際 にEVEN-
解 と な っ て い る こ と を 確 か め て ほ し い.
こ の 後 に,集 団 数100と
した ラ ンダ ム な 初 期 集 団 か らのGPの
読 者 は パ ラ メ ー タ を さ ま ざ ま に変 え て,ADFの
実 行 が み られ る.
実 行 を観 察 して ほ しい.
【演 習問 題18】 ADFは
本 当 に探 索 の 効 率 の 向 上 につ な が る だ ろ うか?
同 じ例 題 で 検 証 しな
さい.
人 工蟻 の探 索 問題
3.5.1.2
よ り一 般 的 な問 題 にADFを
適 用 してみ よ う.こ こで は例 と して,人 工蟻(Ant)
の 探 索 問 題 を再 び 扱 う.そ こ で まず,終 端 記 号,非 うに す る. (defun
define-terminal-set-for-ANT-ADF0
;ADF0の
終 端記 号
()
終 端 記 号 の設 定 関 数 を次 の よ
(values'(arg0
(defun
arg1
arg2)))
define-terminal-set-for-ANT-ADF1
;ADF1の (values
(defun
()
終 端記 号 '(arg0
arg1
arg2)))
define-function-set-for-ANT-ADF0
;ADF0の (values
(defun
()
関数記 号 '(if-food-ahead
prog2
prog3)
'(2 2 3)))
define-function-set-for-ANT-ADF1
;ADF1の (values
(defun
()
関数 記号 '(if-food-ahead
prog2
prog3)
'(2 2 3)))
define-terminal-set-for-ANT-RPB0
()
;本 体 の 終端 記号 (values
(defun
'(turnright
turnleft
moveforward)))
define-function-set-for-ANT-RPB0
()
;本 体 の 関 数 記 号,ADF0,ADF1が (values
'(if-food-ahead
呼 べ る こ と に注 意 prog2
prog3
ADF0
ADF1)
'(22333)))
こ こ でADFの
処 理 は 次 の よ う に す る.ま
る 関 数newbq-list-getを
書 く.こ
ず, ADFの
た め に リス トを変 換 す
れ はADFをdefmacroで
定 義 した い か らで
あ る. (defun
newbq-list-get
(if (atom
lst)
(lst)
lst
(cons'list (cons(list'quote(car (mapcar
lst)) #'newbq-list-get
(cdr
lst))))))
こ の 関 数 に よ り例 え ば, (PROG2
ARG0
(IF-FOOD-AHEAD
ARG1
ARG2))
は (LIST
(QUOTE
PROG2)
ARG0
(LIST
(QUOTE
IF-FOOD-AHEAD)
ARG1
ARG2))
と な る.つ ‘(PROG2
ま り こ れ は, , ARG0
, ARG1
(IF-FOOD-AHEAD
,ARG2))
と い う バ ッ ク ク ォ ー トの 記 法 を得 て い る の と 同 じ で あ る .こ で 引 数 の 受 渡 し が 適 切 に 行 え る.以
れ に よ り,defmacro
上 で マ ク ロ 定 義 の 用 意 が で きた .
次 に,適 合 度 の 定 義 部 分 を次 の よ う に変 更 す る. (defun
evaluate-standardized-fitness-for-ANT
;programは (let
(program
構 造 体ADF-programで (rpb0
adfp0
fitness-cases)
あ る
adfp1)
(setf
rpb0
(ADF-program-RPB0
(setq
adfp0
(newbq-list-get
(ADF-program-ADF0
program)) program)))
(setq
adfp1
(newbq-list-get
(ADF-program-ADF1
program)))
(eval‘(defmacro
adf0(arg0
arg1
arg2),adfp0));ADF0の
定 義
(eval‘(defmacro
adf 1(arg0
arg1
arg2),adfp1));ADF1の
定 義
(CreateTrail) (ResetAnt (do
Evals)
((rawfitness
((eq
(values
(setq
ADFの
0.0))
(ant-Energy
glbAnt)
(- num-of-food
rawfitness
0) rawfitness)
(+ rawfitness
rawfitness))
(eval
rpb0))))))
実現 の た め に重 要 な の は
(setq
adfp?
(eval
‘(defmacro
(newbq-list-get
の 部 分 で あ る.こ
adf?
(arg0
(ADF-program-ADF? arg1 arg2)
れ に よ り適 切 にADF関
program)))
,adfp?))
数 が定 義 され る こ とに 注 意 す る必 要 が
あ る. 他 の 部 分(validate-fitness-of-tree関 は3.4節
数 の 追 加, my-evalの
定 義 な ど)
と 同 様 な の で 省 略 す る.
起 動 フ ァ イ ルinitfinal.lspを る と,図3.10の
よ う にADFに
ロ ー ド して,関
数demoを
実 行 し て み よ う.す
よ る 探 索 が 実 行 さ れ る.
【演習 問題19】 ADFを を,ADFの
用 い たGPの
探 索 効 率(実 行 速 度 や 正 解 が 得 られ る まで の 世代 数 な ど)
な いGP(3.4節)やC版
のGP(2.4節)と
比 較 して み な さい .
図3.10
3.5.2
GPを
Antの
実行 例(ADFを
高 速 化eval 実 行 す る と き に 莫 大 な 時 間 が か か る の は,適
適 合 度 を 計 算 す る と き の プ ロ グ ラ ム の 評 価,つ fitness-for-???関
(setf
用 い た場 合)
に,
ま り,evaluate-standardized-
数 内の
value-from-program (???-wrapper
合 度 計 算 の 処 理 で あ る.特
; (eval
プ ロ グ ラ ム の値 の 評 価
program)))
で か な りの 計 算 時 間 を費 や して い る.こ の 部 分 に時 間 が か か るの は関 数evalが
一
般 的 な エ バ リュ エ ー タで あ り,特 定 の 問 題 に 関係 な い さ ま ざ まな処 理 をす る こ と に よ る.そ こで,こ
の部 分 を 問題 独 自に 作 り,eva1を
高 速 化 す る こ とが 考 え られ
る.こ
の た め の 関 数 がeval.lispフ
fast-evalで
あ る.た
だ し,こ
さ れ な く て は な ら な い.以 ;fast-eval内 (defmacro
心 と な る 関数 は
ス テ ム で 独 自 に定 義
場 合 のfast-evalの
主 要 部 分 を 示 す.
で呼 ばれ るマ クロ (length
()
expr)
(1(funcall
fef));引
(2(funcall
fef
(3(funcall
fef
数 な し
;1 引 数 の と き
(fast-eval
(4(funcall
(second
expr))))
;2 引 数 の と き
(fast-eval
(second
(fast-eval
(third
fef
(defconstant
(defun
の 関 数 は そ れ ぞ れ のLISPシ
下 に,Lucidの
fast-eval-fun
'(ecase
ァ イ ル に 定 義 さ れ て い る.中
expr))
expr))))
;3 引 数 の と き
(fast-eval
(second
(fast-eval
(third
expr))
(fast-eval
(fourth
expr))
expr))))))
*pseudo-macro-flag-position*
fast-eval
(declare
(expr)
(optimize
(cond((consp (let
20)
(speed
expr);関
3)
((function
(first
(if (eq 'quote (second (let
(safety
0)
(compilation-speed
0)))
数 の と き expr)))
function)
expr);quaote関
((fef
数の ときの処 理
(symbol-function
(if(logbitp(the
function)))
fixnum*pseudo-macro-flag-position*) (the fixnum
(system:procedure-ref fef system:procedure-flags)))
;マ ク ロ と 仮 定 して 処 理 (apply
(symbol-value
function)
(fast-oval-fun))))));マ ((symbolp
expr)(symbol-value
(rest
expr))
ク ロ以 外 の と き
expr));シ
ンボル の処理
(t expr)))
こ のfast-evalを
用 い て 定 義 し た 関 数 を, install-pseudo-macro関
り疑 似 的 マ ク ロ と して 登 録 す る.例 (defun
my-if-implementation
え ば,自
(condition
分 用 の 高 速IFを then-clause
数 に よ
次 の よ う に 定 義 す る. else-clause)
;fast-evalを (if
用 い てい る こ とに注意
(fast-eval
condition)(fast-eval
then-clause)(fast-oval
else-clause)))
こ の 後 で, (install-pseudo-macro
とす る.こ
'my-if
れ はmy-if関
#'my-if-implementation)
数 の 定 義 本 体 を#'my-if-implementationと
マ ク ロ と し て 登 録 す る こ と で あ る.そ for-???関
い う疑 似 的
して,evaluate-standardized-fitness-
数 の 定 義 を 次 の よ う に 変 更 す る と, GPの
適 合 度 評 価 にfast-evalが
呼 ば れ る こ と に な る.
(setf
value-from-program (???-wrapper
な お,こ
; (fast-eval
の 処 理 の 詳 細 やLucid以
や 各 自 のLISPの
プログラムの値 の評価 program)))
外 の シ ス テ ム 上 の 実 装 法 に つ い て は, eval.lisp
マ ニ ュ ア ル を 参 照 し て い た だ き た い.
第 2部 遺伝的プログラミングの応 用
第 4章 GPの
GPは
応用 にあた って
さ ま ざ ま な分 野 に応 用 さ れ,そ の 有 効 性 が確 か め られ て い る.表4.1に
主 な応 用例 の 一 覧 を示 す.表 か らわ か る よ う に,GPの
適 用 範 囲 は,AIの
問題 解
決 か ら,ロ ボ ッ ト,分 子 生 物 学 な ど の実 際 的 な問 題 まで 多 岐 に わ た っ て い る.こ れ らの 研 究 事 例 の 参 考 文 献 は[Koza94a]の
付 録 F を 参 照 して ほ しい.第
2部 の
第 5章 で は,こ の うち の 典 型 的 な研 究 成 果 を解 説 す る. GPで
は 木 構 造 に交 叉 と突 然 変 異 を適 用 す る こ とで 木 を変 形 し,LISP(S
式 の)
プ ロ グ ラム や概 念 木 な ど を探 索 す る.こ の 方 式 の 効率 や有 効 性 に つ い て は まだ不 明 な点 も多 い.GP研
究 の 現 状 で の 最 大 の 問 題 点 は計 算 量 で あ ろ う.例 え ば,Koza
ら の実 験 は 集 団 数 が4,000∼16,000と
な って い る.各 世 代 でLISPの
S式 の評 価 が
集 団数 分必 要 な こ と を考 え る と,こ れ は 通 常 の計 算 機 パ ワ ー の 限 界 に近 い.著 者 ら の経 験 で は,GPの よ れ ば,集
実 験 に は 実 行 が 数 日か か る と い うの も珍 し くな い.Kozaに
団数 の 多 さは グ ラ フ構 造 の 多 様 性(population
diversity)を
保持す
る ため で あ り,そ の 結 果,実 行 に 要 す る 世代 数 は比 較 的少 な くな っ てい る(10∼20 程 度).こ る方 式)と
れ は 通 常 のGAで
の 実 行 方 法(集
は対 照 的 で あ る.言
団数50∼100前
い換 え る と,GPの
後 で 世 代 を 多 く重 ね
実行で は各世代 での木構 造 の
評 価 の計 算 量 が 莫 大 に な り,実 行 が 非 常 に遅 くな る.そ こ でGPは し て い る の か?ラ
ン ダム サ ー チ よ り も賢 い の か?と
本 当に学習 を
い う よ うな 批 判 も 出 て くる
表4.1GPの
こ とに な る.以 下 で はGPの 例 え ば,第 る 関 数(正
研 究事例
探 索 の 際 の 問 題 点 に つ い て考 え て み よ う.
1部 で 説 明 した 記 号 当 て は め 問 題 を考 えて み よ う.こ こで 目的 とす
解)を
ピ タ ゴ ラ ス の 定 理,つ
ま り,
(4.1) とす る.図4.1を 型 的 なGPの
参 照 して い た だ き た い.こ の 図 は 正 解 の 木 を生 成 す るた め の典
交 叉 の 適 用 例 を示 す.こ
こ で次 の 点 に注 意 す る必 要 が あ る.
図 4.1 GPに
お ける交 叉
「交 叉 に よ り親 1と親 2か ら正 解 の 木 を得 る た め に は,有 効 な交 叉 点 は た だ 1 組(図
中 の 曲線 で 囲 ん だ部 分 木 の 交 換)し
ま た,こ
か な い.」
こ で親 1と親 2が 選 択 の 過 程 で 選 ば れ るか ど うか も 自明 で は な い.親
1 と親 2は 正 解 の 木 の 一 部 と な る有 益 な部 分構 造 を含 ん で い る.と
こ ろ が,問 題
は次 の 点 で あ る. 「親 1や親 2は必 ず し も良 い成 績 と は 限 ら な い.」 例 え ば,親
2 に は,有 益 な 部 分 木(a2+b2)が
((a-c)×(a2+b2))の
含 ま れ て い る が,親
2 自体 の 木
成 績 が そ の 部 分 木 の影 響 で 良 い とは 限 ら な い.し た が っ
て,有 益 な部 分 木 を含 む親 が必 ず し も選択 に勝 ち残 る と は い え な い. 以 上 の こ とを も う少 し整 理 して,GPの よ う に な る.GAに
探 索 効 率 を左 右 す る点 を あ げ る と次 の
な ら って 以 下 で は 「正 解 の木 の一 部 とな る有 益 な部 分 構 造(部
分 木)」 の こ と を ス キ ー マ と呼 ぶ こ と に しよ う.な お,GPに 確 な定 義,理
お け る ス キ ー マ の正
論 は[O’Reilly95]に 述 べ られ て い る.
1.交 叉 ・突 然 変 異 に よ る ス キ ー マ の 破 壊
通 常 のGPは
盲 目的 に交 叉 ・突 然 変 異 を適 用 す る.つ ま り,交 叉点 な ど は ラ
ン ダム に決 ま る.こ の 結 果,木 構 造 上 で の ス キ ー マ(有 益 な部 分 構 造)が 破 壊 さ れや す い.GPで
必 要 と され る の は,木 構 造 の 意 味 論(semantics)を
考 慮 し た 適 応 的 な 交 叉(adaptive
crossover)で
あ る ・GAに
お い て も この
種 の 研 究 が い く ら か な さ れ て い る[Schaffer87].
2.ノ ー ドの 設 計 時 の 表 現 問 題 GPに
と っ て ノ ー ドの 表 現 の 設 計(つ
るか)は
ま り終 端 記 号 と非 終 端 記 号 を何 に す
重 要 で あ る.交 叉 や 突 然 変 異 に よっ て木 の意 味 が 劇 的 に変 化 す る.
こ の現 象 を意 味 破 壊(semantic disruption)と
呼 ぶ が, GPオ
ペ レー タに
よ り意 味 破 壊 が 頻 繁 にお こ る と探 索 が 安 定 し ない こ とが あ る.例
え ば,図
4.2の 木 構 造 を参 照 してい た だ きた い.こ れ は ブ ー ル 関数 の学 習 の た め の 木 (S式 の プ ロ グ ラ ム)で (ORx1x2)が
あ り,ル ー トノー ドの 下 に 部 分 木 と して f お よび
あ る.こ の と き木 の 全 体 の値(真 理 表)は
ル ー トノー ドに応
じて 次 の よ うに な る. f 0
0
0
1
0
1
0
0
1
1
1
0 1 1
木全体の値
x1Vx2
1
AND
0
OR
ル ー トの ラ ベ ル
上 か ら わ か る よ う に ル ー ト ・ノ ー ドがANDか (returned value)が
大 き く変 わ る.し
た が っ て,(OR
構 造 の 適 合 度 は そ れ 自 体 で は 決 ま ら ず,上 な る.こ る.つ
の 結 果,有
益 な 部 分 構 造(ス
らORに
変 わ る と全体 の値 x1 x2)と
位 の ノ ー ドに 左 右 さ れ る こ と に
キ ー マ)と
い う概 念 が 成 立 しな くな
ま り,上 位 の ノ ー ドの 変 化 で 部 分 構 造 の 意 味 が 変 化 し,必
図4.2 GPに
い う部 分
お け る意味 破 壊
ず し も有益
な部 分 構 造 が 木 全 体 の 適 合 度 を向 上 させ な い.以 上 の こ とか ら,GPで
はス
キ ー マ が 上 位 の ノー ドに依 存 し な い よ う な表 現 が 望 ま しい. 3.
木 構造 の評 価 方法 通 常 のGPの
適 合 度 は 木 の セ マ ン テ ィ ッ ク ス(成
[伊庭93].こ
の 結 果,GPで
のsgpc1.1の
十 分 反 映 で き ない
は 木 の 成 長 を 的 確 に 制 御 す る 方 法 が な く,探
に と も な っ て 木 の 長 さ が 爆 発 的 に 増 大 し た り,逆 し ま う こ と が あ る.通
績)を
索
に単 純 す ぎ る木 に収 束 して
常 は 木 の 最 大 長 を パ ラ メ ー タ と し て 与 え る(第
場 合 はmax_depth_for_new_treesな
ど)が,そ
1部
の 適 切 な値
は 前 も っ て わ か ら な い こ と も 多 い.
「で はGPは
だ め で は な い か?」
と思 わ れ た 読 者 は,第
2部 の 第 6章 を読 ん で
ほ しい.現
在 ま で に,前 述 の 問 題 点 を解 決 す るた め の さ ま ざ ま な拡 張が 提 案 され
て い る.第
6章 で は そ の 主 な もの と して,
●
自動的 関数 定義
●
MDLに
基 づ く適 合 度 評 価
●
型 理 論 に基 づ く遺 伝 的 プ ロ グ ラ ミ ン グ
●
並 列遺伝 的 プログラ ミング
を 説 明す る.こ れ ら に よ り上 に述 べ た 問 題 の い くつ か は 回 避 され,GPが 規 模 な課 題 に適 用 可 能 な こ とを理 解 して い た だ け る と思 う.
よ り大
第 5章 GPの
5.1 5.1.1 GPは る.例
ロ ボ ッ トプ ロ グ ラ ミ ン グ へ の 応 用 ロボ ッ トの プ ログラム とGP ロ ボ ッ ト ・プ ロ グ ラ ム の 合 成 に 応 用 さ れ,そ え ば,John
KozaはSSA(Subsumption
トの 行 動 学 習 にGPを Rodney
応用
A.Brooksが
適 用 し た.SSA型
の 有 効 性 が 確 か め られ て い Architecture)型
ロ ボ ッ ト と はMIT人
ロボ ッ
工 知 能研 究 所 の
提 唱 し た 自律 移 動 ロ ボ ッ トへ の ア プ ロ ー チ の こ と で あ る
[Brooks86].KozaはSSA型 お よ び 箱 を 動 か す 問 題(box
ロ ボ ッ トで 壁 に 沿 う 行 動 の 生 成(wall moving)にGPを
詳 細 に つ い て は[伊 庭93,94a,94b]な
following),
適 用 し た[Koza91,92,94b].こ
の
ど の 解 説 が あ る の で 参 照 し て ほ し い.実
際 に
シ ミ ュ レ ー シ ョ ン の ロ ボ ッ トが ど の よ う に 動 い て い る か はMIT
Pressか
れ て い る ビ デ オ で 見 る こ と が で き る.こ
ら が 登 場 し て,ロ
の ビ デ オ で はKoza自
ら発 売 さ
ボ ッ トを は じめ と して さ ま ざ ま な プ ロ グ ラ ム の 進 化 シ ミ ュ レー シ ョ ンの よ うす を 紹 介 し て い る.こ
れ を 見 る と,ロ
ボ ッ ト ・プ ロ グ ラ ム が 世 代 を 経 る ご と に 進 化 し
て い く よ う す が わ か る. Reynoldsはcritter(視 含 め た 総 称)を
覚 を 有 す る 仮 想 動 物,自
律 エ ー ジ ェ ン ト,ロ ボ ッ ト等 を
対 象 と し て シ ミ ュ レ ー タ 上 で の 障 害 物 回 避(obstacle
avoidance)
を 行 う プ ロ グ ラ ム をGPで
生 成 して い る[Reynolds93].ま
た,彼
は セ ンサ お よび
ア ク チ ュ エ ー タ に ノ イ ズ を 仮 定 し た 障 害 物 回 避 の 実 験 も行 っ て い る[Reynolds94].
こ の他 に も多 数 の 応 用 例 が 発 表 され て い る.詳 細 は 表4.1と
そ の 参 考 文 献 を参
照 して い た だ きた い.現 在 の と こ ろ,実 機 を使 っ た実 験 は ま だ あ ま り行 わ れ て い な いが,Kheperaと
い う研 究 開 発 用 小 型 実 験 ロ ボ ッ トをGPに
とい う研 究 が 最 近 な され て い る[Nordin95].今
後 は シ ミュ レー シ ョン だ け で は な
く,実 機 上 で の ロ ボ ッ トの プ ロ グ ラ ム 生 成 にGPが わ れ る.そ の場 合,GPに
基 づ い て動 か す
ま す ます 応 用 され て い くと思
よ っ て 生 成 され る プ ロ グ ラ ム が 頑 強(ロ
バ ス ト)で あ
る か ど うか が最 大 の 関心 事 に な るで あ ろ う.そ こ で,次 節 で は 筆 者 らが 行 っ て い るGPに
よ る頑 強 な ロ ボ ッ ト ・プ ロ グ ラム を生 成 す る研 究 に つ い て 紹 介 し よ う.
5.1.2
頑 強 な ロ ボ ッ ト ・プ ロ グ ラ ム の 生 成
一 般 的 に,ニ ュ ー ラ ル ネ ッ トワー ク やGA,GPな
どの 帰 納 学 習 で は 学 習 が 進
む ほ ど訓 練 例 に過 度 に適 合 す る こ とが 知 られ てい る[Reynolds93].例
え ば,GP
で ロ ボ ッ トの プ ロ グ ラム を生 成 す る こ と を考 え て み よ う.こ の 場 合,ロ 初 期 状 態,あ
ボ ッ トの
る い は周 りの 作 業 空 間 が 変 化 す る と,生 成 され た 遺 伝 子(プ
ロ グラ
ム)が 有 効 に機 能 しな くな る こ とが しば しば起 こ る.こ の よ う な現 象 を過 学 習 と 呼 ぶ.GPに
よ る過 学 習 の 回 避 の 試 み と して はMDLを
ADF(6.1節)が
用 い た 拡 張(6.2節)や
あ る.
こ こで は学 習 例 の み に お い て効 率 的 に タ ス ク を処 理 す る ロ ボ ッ ト ・プ ロ グ ラ ム を創 発(emergence)さ
せ る こ と よ り も,さ ま ざ まな 環 境 にお い て 行 動 で き る プ
ロ グ ラム の 生 成 に重 点 を置 く こ と に し よ う.こ れ は,生 成 され た プ ロ グ ラ ム に頑 強 性(一
般 性,ロ
バ ス トネ ス)を 持 た せ よ う とい う もの で あ る.以 下 で は,GP
を用 い て ロボ ッ ト ・プ ロ グ ラ ム の 自動 生 成 を行 い,生 成 され た プ ロ グ ラ ム の 頑 強 性 につ い て考 察 して み る.な
お,本 節 で の 頑 強 な ロ ボ ッ ト ・プ ロ グ ラム とは,適
応 進 化 した プ ロ グ ラ ム が,ロ
ボ ッ トの 初 期 条 件(位
置 お よび 方 向)や
セ ンサ お よ
び ア ク チ ュ エ ー タ に 対 す る ノ イ ズ 等 の 影 響 を受 け な い こ と を意 味 す る.
本 節 で は,箱 は,(1)箱
を 目 的 地 ま で 運 ぶ と い う ロ ボ ッ トの タ ス ク を 考 え よ う.こ
と 障 害 物 の 違 い を 認 識 す る,(2)制
い う 2つ の 部 分 問 題 を 含 ん で い る.こ ボ ッ トシ ミ ュ レ ー タ を 作 成 し た.こ
限 時 間 内 に 箱 を 目 的 地 ま で 運 ぶ,と
の 実 験 を 行 う た め に,図5.1に の ロ ボ ッ トの モ デ ル はRWCP(Real
Computing
Partnership)の
タMarsを
参 考 に し て い る[國 吉 他95][松
の タス ク
示す よ うな ロ World
プ ロ ジ ェ ク トの も と で 作 成 さ れ た ロ ボ ッ トシ ミ ュ レ ー 原 他95].構
築 した シ ミュ レー タで は
ロ ボ ッ トの 作 業 領 域 に は 5 つ の 物 体 し か 存 在 し な い と 仮 定 し て い る(図5.2).ロ ボ ッ トは,接
触 セ ン サ(touch
イ セ ンサ(eye sensor)の
sensor),目
sensor),5
つ の レー ダ セ ン サ(radar
標 認 識 セ ン サ(target
5 種 類 の セ ン サ を 搭 載 す る.こ
sensor),衝
れ ら の セ ン サ は'そ
sensor),ア
突 セ ン サ(bumped れ ぞ れ 表5.1に
示
す よ う な 働 き を す る.
図 5.1
GPの
終 端 記 号 に は表5.2に
ロ ポ ッ トの セ ン サ
示 す よ うな ロボ ッ トの コ マ ン ド(0 引 数 の 関 数)を
割 り当 て る.こ れ らの コマ ン ドは 1回 評 価 す る の に 1 タ イ ム ス テ ッ プ を要 し,ロ ボ ッ トに 対 す る制 限 時 間 は800タ
イム ス テ ップ とす る.簡 単 の た め 目的 地 に箱 を
図5.2
ロ ボ ッ トの 作 業 空 間
セ ンサ 名
セ ン サの タ イ プ
Touch
接 触 し て い る 物 体 の 識 別 子(箱:4.障
Sensor
目 的 地:2,何 Radar
Sensor
も な い:0)を
害 物:3.壁:1.
リス トに して返 す
5本 の 放 射 線 状 の 距 離 セ ンサ(進 行 方 向 に 対 して +60.0° か ら−60.0° まで30° ご と)に つ いて 最 も近 い物 体 との 距 離 を返 す
Eye Sensor Bumped
視 野 の 中 に あ る物 体 の 識 別 子 を リス トで 返 す ロ ボ ッ トが物 体 に衝 突 した か ど う か を 返 す
Target
Sensor Sensor
目的 地 か ら 発 信 され る レー ダ ー に よ り目 的 地 と ロ ボ ッ トと の距 離 を返 す 表5.1ロ
ボ ッ トの セ ン サ
コマ ン ド名
動作
:Spd
単 位 時 間 に そ の 時 点 の ロボ ッ トの ス ピー ド分 だ け 進 む
:Turn-Left
単 位 時 間 に10.0° 向 き を左 に変 え る
:Turn-Right
単 位 時 間 に10.0° 向 きを 右 に 変 え る
:Grasp
腕 の長 さの 範 囲 内 に あ る物 体(箱,障
害 物)を つ か む.つ
か ん だ物 体 が 箱 で あ れ ば ロ ボ ッ トと一緒 に移 動 す る.障 害 物 の と きは 移 動 で き な い. :Release
持 っ て い る 物 体(箱.障
表5.2終
害 物)を は な す
端記号
運 ん だ 時点 で ロ ボ ッ トの 実 行 は終 了 す る.ま た,GPの の 値 に 応 じて ロ ボ ッ トが 行 動 す る よ う に,表5.3に
関数名
非 終 端 記 号 に は,各 セ ンサ 示 す よ う な 関数 を設 定 した.
定義 p1 p2)
(Case-Touch
p1,p2と 返す p1 …
P5)
逐次 的 に評 価 してp2を
接 触 して い る物 体 が 箱 の と きはp1,目 きはp2,障
害 物 の と き はp3,壁
もな い と きはp5を (Case-Eye
きはp2,障
それぞれ評価す る
害 物 の と き はp3,壁
もな い と きはp5を
(If-Bumped
それぞれ評価す る
が 最 小 の と きpiを 評 価 す る ロボ ッ トが 物 体 に衝 突 した と きはp1,そ
p1 p2)
目的 地 に 近 付 い て い る と きはp1,目
pl p2 p3)
れ以外
評価 す る
ざか って い る と き はp2,目 外 に あ る と きはp3を (Case-Grasp
的 地の と
の と きはp4,何
5本 の放 射 線 状 の 距 離 セ ンサ で i本 目の セ ンサ 値
p1 …p5)
の と きはp2を (Radar-Target
的 地の と
の と きはp4,何
視 野 の 範 囲 内 に箱 が あ る と きはp1,目
p1 …P5)
(Case-Radar
評 価 した 結 果 を
的 地 か ら遠
的 地 が セ ンサ の 範 囲
それぞれ評価す る
箱 を所 持 して い る と き はp1,障 害 物 を所 持 して い る と きはp2,何 も所 持 して い な い とき はp3を
p1 p2 p3)
それぞれ評価す る
表5.3非
終端 記号
適 合 度 は 以 下 の よ うに計 算 す る. ロボ ッ トが 箱 を 運 ん だ と き 適 合 度: ロボ ッ トが 一 度 も箱 を運 ば な か っ た と き
こ こ で,B0は 位 置,G
箱 の 初 期 位 置, Btは
は 目 的 地 の 位 置, Rtは
実 行 終 了 時(800タ
て い る.
,ペ
箱 の
実 行 終 了 時 の ロ ボ ッ トの 位 置 を表 す. dist(x,y)
は x と y の ユ ー ク リ ッ ド距 離 で あ る.こ 一 度 も運 ば なか っ た場 合 は
イ ム ス テ ッ プ 後)の
の 定 義 で は 制 限 時 間 内 に ロ ボ ッ トが 箱 を
ナ ル テ ィ と し て 箱 と ロ ボ ッ トの 間 の 距 離 を 加 算 し
生 成 さ れ た プ ロ グ ラ ムの 頑 強 性 を試 す た め に,以 下 に示 す 2種類 の 条件 で ロ ボ ッ ト ・プ ロ グ ラ ム の 進 化 実 験 を行 っ た. 実 験 1 ロ ボ ッ トの 初 期 状 態(初 期 位 置 お よ び方 向)を の 実 験 は,GPに
ラ ン ダム に変 化 させ る .こ
よ って 生 成 さ れ る ロ ボ ッ ト ・プ ロ グ ラ ムが ロ ボ ッ トの 初
期 位 置 に依 存 しな い か ど うか を確 か め る た め で あ る. 実 験 2 ロ ボ ッ トの セ ン サ お よ び ア ク チ ュ エ ー タ に ノ イ ズ を 加 え る .ノ イ ズ は 次 の 点 で 重 要 で あ る.第
1に,実 機 に お い て ノ イ ズ の な い 理 想 的 な セ ン サ お よ び
ア ク チ ュ エ ー タ は 存 在 し な い(Brooksが learning”[Brooks93]).第
2 に,ノ
提 唱 し て い る “embodiment イ ズ の 導 入 は 頑 強 な プ ロ グ ラ ム の生
成 を 促 進 す る 効 果 が あ る[Reynolds94].
生 成 さ れ た プロ グ ラム の 頑 強 さは,あ 成 績 で判 定 す る.ま た,GPの
らか じめ 用 意 した50の
パ ラ メー タ と して は,集
テ ス ト例 に対 す る
団 数500,最
大 世 代 数50
を採 用 した.
実験 1
ロ ボ ッ トの 初 期 状 態(初 期 位 置 お よび 方 向)を
更 して 実 験 を行 っ た.図5.3は
世代 ご と に ラ ン ダム に変
訓 練 例 お よ び テ ス ト例 で の 適 合 度 の推 移 を示 した
もの で あ る.テ ス ト例 の適 合 度 は,訓 練 例 に お け る 最 良 個 体 を評 価 した値 で あ る. 訓 練 例 で の 適 合 度 は 世代 ご と には 直接 比 較 で きな い こ と に注 意 して い た だ きた い. なぜ な ら,訓 練 例 で は ロボ ッ トの 初 期 位 置 を ラ ン ダム に変 更 して い る ため,問
題
の 難 し さが 一 定 で な い か らで あ る,図 か ら,テ ス ト例 で の適 合度 の 推 移 は ほ ぼ 世 代 を経 る に つ れ改 良 され て い るの が わ か る.33世 が デ ッ ドロ ッ ク(deadlock)に は で きな い が,訓
代 目で の 鋭 い ピー ク は ロボ ッ ト
陥 った こ と を示 して い る.前 述 の よ うに直 接 比 較
練 例 にお い て も世 代 ご とに 適 合 度 が あ る程 度 改 良 され て い る こ
とが わ か る. 図5.4は10世 る.世
代 ご との テ ス ト例 で の ロ ボ ッ トの 行 動 の よ う す を 示 し た も の で あ
代 0で は ロ ボ ッ トは 無 目 的 に 歩 い て い る.世
近 く ま で 行 く よ う に な る が,箱
代10に
の 近 くで 止 ま っ て し ま う.世
な っ て ロ ボ ッ トは 箱 の 代20で
ロ ボ ッ トは 2
図 5.3 訓練例 お よび テ ス ト例 での 適合 度 の値 (実験 1)
(a)世
(d)世
代 0
代30
(b)世
代10
(e)世
代40
(c)世
(f)世
図 5.4 世代 ご との ロボ ッ トの動 作例 (実験 1)
代20
代50
回箱 に向 か って 歩 い て い る.世 代30で
は 箱 を探 して歩 き回 る が,途 中で 壁 に衝 突
し,進 行 方 向 を替 え て 再 び箱 を探 して い る.世 代40(お
よ び世 代50)で
ロボ ッ ト
は箱 を探 す こ と に成 功 し,箱 を 目的 地 まで 制 限 時 間 以 内 に運 ん で い るの が わか る. 実 験 結 果 は頑 強 な ロ ボ ッ ト ・プ ロ グ ラム が 生 成 され た こ と を示 して い る.こ の ロボ ッ トで は 5種 類 の セ ンサ を仮 定 して い る た め,各
セ ンサ の状 態 に対 して適 切
な コマ ン ドを評 価 す る必 要 が あ る(こ れ を セ ンサ 統 合 と呼 ぶ).例
え ば,世 代50
で 生 成 され た 最 良 個 体 の プ ロ グ ラ ム の 一 部 分 は 次 の よ う に な っ て い る.
こ の プ ロ グ ラ ム 断 片(部
分 構 造)は
「も しロ ボ ッ トが 物 体 に衝 突 した な らば 右 に
向 き を変 更 せ よ」 とい う命 令 を意 味 す る.こ の 部 分 構 造 に よっ て,ロ
ボ ッ トは 物
体 に衝 突 した ら進 行 方 向 を変 え る こ とで デ ッ ドロ ッ ク に 陥 らず 前 進 す る こ とが で きる.ま
た,こ
の プ ロ グ ラ ム 断 片 に は 「も し ロ ボ ッ トが 箱 に触 っ て い る な らば そ
れ を つ か め」 と い う部 分 構 造 も含 ま れ て い る.し る こ と に よ っ て,GPで
た が っ て,セ
ンサ 統 合 を実 現 す
生 成 され た プ ロ グ ラ ム は 一 種 の 頑 強 性 を保 持 す る と考 え
られ る.
実験 2
セ ンサ お よび ア クチ ュ エ ー タ に ノ イ ズ を付 加 した 実 験 を行 っ た,加
ノ イ ズ は 5%か ら19%の
範 囲 で の 誤 作 動 や 認 識 誤 り と した.図5.5は
訓練例 お よ
び テ ス ト例 で の 適 合 度 の 推 移 を示 した もの で あ る.こ の 図 を見 る と,45世 い て ほ ぼ毎 世 代 で 適 合 度 が改 良 され て い るの が わか る.世 代45で
える
代 を除
は訓 練 例 に過剰
適 合 した プ ロ グ ラ ム が 選 ば れ て し まい,訓 練 例 で は 良 い 成 績 で あ るが テ ス ト例 で は成 績 が 悪 くな っ た.図5.6は10世
代 ご と の テ ス ト例 に対 す る ロ ボ ッ トの 行 動 を
示 した もの で あ る.世 代 0で は ロ ボ ッ トは箱 の近 くま で 行 くが そ こで 立 ち止 ま っ て しま う.世 代10で
ロ ボ ッ トは箱 を 目的 地 まで 運 ん で い る.こ の ロボ ッ トの プ ロ
グ ラ ム は 次 の よ うな もの で あ る.
図 5.5 訓練 例 お よび テ ス ト例 での適 合 度 の値 (実験 2)
(a)世
(d)世
代 0
代30
(b)世
代10
(e)世
代40
(c)世
(f)世
図 5.6 世 代 ご との ロ ボ ッ トの 動 作例 (実験 2)
代20
代50
この プ ロ グ ラム が 「箱 に触 っ て い る と きに は 箱 をつ か ん で 前 進 す る」 とい う命 令 に な っ て い る こ と に注 意 して い た だ きた い.つ 箱 に触 れ た な らつ か ん で 前 進 す るだ け で あ る.そ
ま り,こ の ロ ボ ッ トは,た
は 関 知 しな い.し
の先 に 目的 地 点 が あ るか ど うか
た が っ て,こ の プ ロ グ ラ ム は頑 強 で は な い.世 代20お
で は ロ ボ ッ トは 箱 を 目的 地 に 向 か っ て運 ぼ う とす るが,途 代40で
よび30
中で 壁 に 衝 突 す る.世
は箱 を 目 的 地 まで 運 ぶ が,目 的 地 を通 過 して しま う.世 代50で
は箱 を運 ん で い る途 中 で 一 度 壁 に衝 突 す るが,進
また ま
ロボ ッ ト
行 方 向 を変 え て 目的 地 に到 達 し
て い る. 先 に 示 した 2つ の 実 験 で は,GPに よ り一 種 の 頑 強 性 を保 持 して い た.さ
よ って 生成 され た プ ロ グ ラム は セ ンサ 統合 に ら に,プ ロ グ ラ ム の 冗 長 性 が 頑 強 性 の 実現
に不 可 欠 で あ る こ と も確 か め られ て い る.こ
こで の 冗 長 性 と は,あ る 状 況 で有 効
で な くて も,別 の 状 況 にお い て有 効 で あ る よ う な部 分 構 造 の 存 在 を意 味 す る.冗 長 性 は 生 成 され た プ ロ グ ラ ム が未 知 の デ ー タに対 して も,う ま く振 る 舞 う こ と を 保 証 す る.筆 者 らは,Progな でGPの
ど の関 数 を 用 い て適 切 に 非 終 端 記 号 を設 計 す る こ と
生 成 す る プ ロ グ ラ ム に 冗 長性 が 導 入 で き る こ とを実 験 的 に 確 か め て い る.
な お,こ の 研 究 に関 す る 詳 細 は[Ito96]を 参 照 して い た だ きた い.
人工生命 への応用
5.2
人工生命 と創発
5.2.1
生 物 の 複 雑 な行 動 の多 くは比 較 的 単 純 な ル ー ル か ら生 み 出 さ れ て い る.人 工 生 命 は,コ
ン ピュ ー タ な どの 人 工 的 な 媒 体 で,こ の よ う な生 命 現 象 を シ ミュ レー ト
す る こ と を試 み る.人 工 生 命 の厳 密 な 定 義 は 困難 で あ るが,基 次 の もの が あ げ られ る. ●
単 純 な プ ロ グ ラ ム の 集 団 か ら な る.
本 的 な 特 徴 と して
●
全 体 の 動 作 を規 定 す る よ うな単 一 の 中 心 的 プ ロ グ ラ ム は 存 在 しな い.
●
1つ の個 体 に関 して の プ ログ ラ ム は,ほ か の個 体 との 遭 遇 な どの環 境 内 の 局 所 的 な状 況 に 反 応 す る 仕 方 を記 述 す る.
●
全 体 的 な行 動 を規 定 す る 規 則 は存 在 し ない.
●
各 々 の プ ロ グ ラ ム よ り も 高 度 な レ ベ ル で,結 (Emergent
Property,創
“Emergent Property” 的 生 活 に 見 られ る.蟻
果 と して 行 動 が 発 現 す る特 性
発 と訳 さ れ る)を
有 す る.
は も と も と生 物 学 の 用 語 で あ る.そ の 好 例 は蟻 の 社 会
の 1匹 1匹 は単 純 な機 械 的 行 動 しか と ら な い が,蟻
の巣
全 体 と して は餌 や 敵 の 分 布 パ ター ン に 応 じ,高 度 に 知 的 な 団 体 行 動(collective behavior)を
行 い,集 団 の生 存 率 を高 め て い る.そ の結 果,異 な る仕 事 をす る よ う
に特殊 化 した個 体 か らな る カ ス ト制 が 生 じた り,社 会 的 な 分 業 や 協 調現 象 が見 られ る よ う に な る.こ の よ う に,巣 全 体 の 行 動 を規 定 す る規 則 は 存 在 しな いが,単 純 な プ ロ グ ラム(個 々 の蟻)の 集 合 的作 用 の結 果,知 的 な全 体 的 行 動 が 発 現 す る こ とを Emergent Propertyと Computationで
呼 ぶ.こ れ をモ デ ル に した計 算 パ ラ ダ イ ム がEmergent
あ り,GPやGAは
本節 で はGPの
ま さに そ の 一 例 で あ る.
人 工 生命 へ の 応用 と して,単 純 なル ー ル をGPで
進化 させ,あ る程
度 の秩 序 だ った団 体行 動 を実現 す る実験 を説 明す る.以 下 の記 述 は[Koza92,ch.12.1, ch12.2]を も とに して い る.実 験 の 詳細 や議 論 につ い て は こ の 文 献 を参 照 して い た だ きた い.ま
た,人 工 生 命 の 詳 細,研 究 動 向 につ い て は[上 田他95]を
参 照 してい
た だ き た い.
5.2.2
餌 を巣に運ぶ蟻の行動の進化
蟻 の 餌 集 め 行 動 を考 え よ う(図5.7).自 せ る.あ
然 界 で 蟻 た ち は次 の よ うな 振 舞 い を見
る 1匹 が ラ ン ダ ム な探 索 に よ り餌 を見 つ け る と,そ の 蟻 は巣 へ の 帰 り道
に フ ェ ロ モ ン を落 と しなが ら餌 を持 ち帰 る.蟻 は この フ ェ ロ モ ン に引 き寄 せ られ る性 質 を持 つ.フ
ェ ロ モ ン は揮 発 性 で あ るが,引
き寄 せ られ た蟻 自身 もフ ェ ロモ
ン を落 と して い く.そ の結 果,餌 が あ る限 り,フ ェ ロモ ンの道 は 消 えず に太 くな っ
て い き,し
ば し ば 目 に す る 蟻 の 行 進 を つ く り あ げ る.餌
を 落 と し な が ら巣 に 帰 る 蟻 も 少 な く な り,フ ン は 揮 発 性 で あ っ た).そ
し て,蟻
が な くな る と フ ェ ロ モ ン
ェ ロ モ ン の 道 も蒸 発 す る(フ
の 行 進 も な く な る の で あ る.こ
は フ ェ ロ モ ン を と お して コ ミ ュ ニ ケ ー シ ョ ン を と る こ とが で き,巣
ェロモ
の よ う に蟻 同志 全体 での捕食
効 率 を 高 め て い る の で あ る.
図 5.7 蟻 の餌 集 め
こ う した 蟻 の 行 動 をGPで
進 化 させ て み よ う.そ の た め に,人 工 蟻(以
と呼 ぶ)の 環 境 を次 の よ うに 設 定 す る.あ
下Ant
る広 さ を持 っ た フ ィー ル ドに 2カ所 に
積 まれ た 餌 と 1つ の 巣 が あ る.蟻 た ちは,決
め ら れ た時 間 内 にす べ て の 餌 を巣 に
運 び 込 ま な け れ ば な らな い.Antの
住 む 世 界 は,32×32マ
面)に
の 中 に は 1つ の 巣 と 2つ の餌 の 山 が あ る.餌
な っ て い る(図5.10(a)).こ
ス の トー ラス(円
環
の 山 は3×3の
大 き さ で,各
マ ス に 餌 が 8段 積 ま れ て い る.し
の 合 計 は3×3×8×2=144と
な る.Antの
通 の プ ロ グ ラ ム を 実 行 す る.各Antは 多 数 のAntが
数 は20匹
た が っ て,餌
と し,GPで
の数
進 化 した 共
最 初 ラ ン ダ ム な 方 向 を 向 い て い る.ま
1つ の マ ス を 占 め る こ と も可 能 で あ る.Antは
た,
次 の 3つ の 情 報 を 保
持 す る. 1.
領 域 内 で の 自分 の位 置.
2.
自分 の 向 い て い る 方 向(8 方 向 が 選 択 可 能).
3.
自分 が 餌 を持 っ て い るか ど うか.
GPに
用 い る 非 終 端 記 号 と終 端 記 号 を次 の よ う に定 め る. T
={(MOVE-RANDOM),(MOVE-TO-NEST),(PICK-UP),
F
={IF-FOOD-HERE,IF-CARRYING-FOOD,
(DROP-PHEROMONE)}, MOVE-TO-ADJACENT-FOOD-ELSE,
MOVE-TO-ADJACENT-PHEROMONE-ELSE,PROGN}.
非 終 端 記 号 の 意 味 は 次 の と お りで あ る.IF-FOOD-HEREは
の 現 在 位 置 に 餌 が あ れ ば 第 1 引 数 を,な IF-CARRYING-FOODは を,保
け れ ば 第 2 引 数 を 実 行 す る 関 数 で あ る.
2 引 数 を と る 関 数 で,Antが
餌 を保 持 して い れ ば 第 1引 数
持 し て い な け れ ば 第 2 引 数 を 実 行 す る.MOVE-TO-ADJACENT-FOOD-ELSEは
1引 数 を と り,Antの
周 り に 餌 が あ れ ば そ の 餌 の 方 向 にAntを
れ ば 引 数 を 実 行 す る.た
だ し,周
け
1引 数 を と る 関 数 で,Antの
周 り に フ ェ ロ モ ン が あ れ ば そ の 方 向 に 1歩 進 ま せ,な だ し,周
1歩 進 ま せ,な
り に 餌 が 複 数 個 あ る 場 合 に は 変 化 が 最 も小 さ い
方 向 を 選 ぶ.MOVE-TO-ADJACENT-PHEROMONE-ELSEは
PROGNは
2 引 数 を と り,Ant
け れ ば 引 数 を 実 行 す る.た
り に フ ェ ロ モ ン が 複 数 個 あ る 場 合 に は 変 化 が 最 も 小 さ い 方 向 に 進 ませ る. 引 数 を 順 に 実 行 す る 関 数 で あ る.
終 端 記 号 に は 次 の よ う な 引 数 の な い 関 数 を 用 意 す る.MOVE-RANDOMはAntの
向
く方 向 を ラ ン ダ ム に 変 え,そ
巣
の 方 向 に 2 歩 進 ま せ る.MOVE-TO-NESTはAntを
の 方 向 に 1歩 進 ま せ る.PICK-UPは,Antの
現 在 位 置 に 餌 が あ り,か
を 持 っ て い な け れ ば 餌 を 拾 わ せ る.DROP-PHEROMONEは,Antが
つAntが
餌
餌 を持 っ て い れ ば
フ ェ ロモ ン を現 在 位 置 に落 と させ る.こ の フェ ロモ ンは3×3の
範 囲 に広 が るが,
揮 発 性 の た め しば ら くす る と消 失 す る. GPの
パ ラ メ ー タ と して は,集 団数500,最
大 世 代 数51を 採 用 す る.な お,Ant
は餌 を持 っ て 巣 に着 くと 自動 的 に餌 を落 とす もの とす る. 適 合 度 は,決 の経 過)プ
め ら れ た 時 間(1000個
の命 令 評 価,ま
た は400タ
イ ム ス テ ップ
ログ ラ ム を実 行 し た後 で餌 の 山 か ら巣 へ 運 ん だ餌 の 数 で 評 価 す る.つ
ま り,適 合 度 は時 間 内 に運 び きれ なか っ た 餌 の 数 と し,Antが
す べ て の餌 を巣 に
運 ん だ と きに 適 合 度 は最 良値 0 と な る. ラ ン ダ ム に 動 くだ け で は,Antは144個
の 餌 の う ち 平 均56個
と は で き な い.た
と えAntが
題 を 解 く こ と(つ
ま り餌 を す べ て 運 び き る こ と)は
め に は,餌
に 接 触 し たAntが
(DROP-PHEROMONE).ま
た,他
餌 を 拾 い 巣 に 運 べ た と し て も,設
定 した 時 間 内 に問
で き な い.こ
の 問題 を解 くた
餌 を 巣 に運 ぶ と きに フ ェ ロモ ンを落 とす必 要 が あ る のAntは
フ ェ ロ モ ン を た ど る こ とで,ラ
り も効 率 的 に 餌 に た ど り着 く こ と が で き る.こ ELSEで
に しか 接 触 す る こ
ン ダムサ ー チ よ
れ はMOVE-TO-ADJACENT-PHEROMONE-
実 現 さ れ る.
図 5.8 GPの
図5.8は
こ の 問 題 に 対 し,GPを
実行 の よ うす
実 行 した と きの 適 合 度 の 推 移 で あ る.ラ
ム に 生 成 さ れ た初 期 世代 で は,全500プ
ロ グ ラム の うち90%の
ンダ
プ ロ グ ラ ムが 1つ
も餌 を巣 に運 べ な か っ た.す べ て の餌 を時 間 内 に巣 に運 ぶ こ と に 9世代 目 で は じ め て 成 功 した.そ
の と き に得 られ た プ ロ グ ラ ム を図5.9に
は 次 の よ うに 解 釈 さ れ る.
示 す.こ
の プ ロ グ ラム
図5.9 最 良 個体 の プ ロ グラム
1行 目
餌 を拾 え る状 態(餌 あ れ ば 餌 を拾 う.
を持 っ て いず,現 在 位 置 に餌 が あ る場 合)で
2行 目
餌 を持 っ て い る な らば 3行 目 か ら 9行 目 まで を,持 っ てい な け れ ば10行
3行 目
目か ら14行
も し,周
目 まで を実 行 す る.
り に フ ェ ロ モ ン が あ れ ば そ こ に 動 き 5行 目 へ,な
けれ ば
4行 目 を実 行 す る. 4行 目
も し,周 りに餌 が あ れ ば そ こ に 動 き,な け れ ば 何 も しな い(2 行 目 で 餌 を 持 っ て い る こ と が 前 提 と な っ て い る た めPICK-UPは
実行
し な い).
5行 目
も し,周 行 目 は,餌
り に 餌 が あ れ ば そ こ に 動 き,な を 持 っ て い るAntに
け れ ば 何 も し な い(3,4,5
寄 り道 を させ る た め に,プ
ログラ
ム の性 能 を下 げ て い る). 6,7行
目
フ ェ ロ モ ン を 落 と し な が ら 巣 に 帰 る.
8,9行
目
6,7行
10行
目
目 の 繰 返 し で 冗 長.
2行 目で 餌 を持 って い なか っ たAntは,周 動 き,な け れ ば11行
11,12行
目
りに餌 が あ れ ば そ こ に
目 を実 行 す る.
も し,現 在 の地 点 に餌 が あ れ ば 餌 を拾 い,な
け れ ば13行
目 を実
行 す る. 13,14行
目
も し,周
り に フ ェ ロ モ ン が あ れ ば そ こ に 動 き,な
ければ ランダム
に決 め た 方 向 に 2歩 動 く. こ の プ ロ グ ラ ム を実 行 した と き の蟻 た ちの よ うす を 図5.10に テ ップ 目の 状 態(プ
ロ グ ラ ム を 3回評 価 した 状 態)で
て い る 正 方 形(3×3)で Antが
あ る.餌 の 山 は黒 く塗 られ
あ り,巣 は 中 央 の3×3の+印
で あ る.向
1マ ス の 正 方 形 で 表 され て い る.こ の状 態 で はAntは
に動 き回 っ て い る.(b)は12ス す.Antは
示 す ・(a)は 3ス
テ ッ プ 目 に何 匹 か のAntが
きを持 った
餌 を探 して ラ ン ダム 餌 を見 つ け た 状 態 を示
フ ェ ロモ ンを 落 と しなが ら巣 に 帰 る途 中 で あ る が,巣
に は まだ た ど り
(a)
3ス テ ッ プ
(b) 12ス テ ッ プ
(C)
15ス テ ッ プ
(d) 129ス
(e)
152ス テ ッ プ
図
5.10
蟻 た ちの振 舞 い
テ ッ フ
着 い て い な い た め,フ で あ る.こ
こ で は144個
ェ ロ モ ン の 道 は で き て い な い.(c)は15ス
テ ップ 目の 状 態
の 餌 の う ち 最 初 の 2つ が 巣 に 運 ば れ た た め ,巣
と餌 の 山
を つ な ぐ フ ェ ロ モ ン の 道 が で き て い る.20匹
のAntの
チ を 行 っ て い る が,ま
こ の 道 を た ど る よ う に な る.(d)は
129ス
も な く す べ て のAntが
テ ッ プ 目 の 状 態 で あ る.上
モ ン の 道 は 消 えAntは
方 に は 餌 が ま だ 残 っ て い る が ,一
散 っ て し ま う.こ
に 運 ば れ た.(e)は152ス
の 段 階 で は144個
テ ッ プ 目 の 状 態 で あ る.左
道 は 消 え て し ま っ て い る.代
う ち 6匹 が ラ ン ダ ム サ ー
時的 にフェロ
の 餌 の う ち118個
が巣
の 山 と巣 との フ ェ ロ モ ンの
わ っ て 上 方 の 餌 の 山 と の フ ェ ロ モ ン の 道 が 再 び で き,
こ の 時 点 で 8個 の 餌 を 残 す の み と な っ た .こ
の 後 に す べ て の 餌 が 運 ば れ る.
以 上 か ら,蟻 の 餌 集 め 行 動 を模 倣 す る プ ロ グ ラム がGPに
よ り進 化 した こ とが
わ か る で あ ろ う.も っ と も これ を人 工 蟻 の進 化 過 程 で あ る とす る に は議 論 が あ る. 一番 の問題 点 は
,終 端 記 号/非 終 端 記 号 にMOVE-TO-ADJACENT-PHEROMONE-ELSEな
ど の複 雑 な タ ス ク をす る関 数 が 用 意 され て い る点 で あ る.し 人 工 生 命 の モ デ ル と な る あ る種 の 最 適 化 過 程 をGPで
たが って,こ
こでは
効 率 的 に探 索 した と考 え て
ほ しい.
5.2.3
餌集 め行動の進化
前 の 例 題 と似 て い るが,少
し異 な る次 の よ う な餌 集 め 行 動 を考 え て み よ う.
「あ る フ ィー ル ド内 に ば ら まか れ た餌 が い くつ か あ る.こ れ を複 数 の ロ ボ ッ ト(以 下Agent)に
よ る 共 同 作 業 で で きる だ け コ ンパ ク トに,か つ 効 率 的 に集 中 させ た
い(図5.11).」 集 中 させ る場 所 は ど こ で も よい とす る.つ
ま り,巣 は な い.た
だ し,1 つ の 地 点
に 複 数 の餌 を置 く こ と は で きな い.こ の よ うな プ ロ グ ラム を前 節 と同 様 にGPで 進化 させ て み よ う. そ の た め に 問 題 の 設 定 を 次 の よ う に す る.25×25の ル ド内 に,餌
とAgentが
配 置 さ れ て い る(図5.12).灰
は じ め は 規 則 的 に 置 か れ て い る.黒
色 で 示 さ れ る20匹
トー ラ ス(円
環 面)の
色 で 示 さ れ る25個 のAgentは
フ ィー の餌が
ラ ン ダム な 初
図 5.11
期 位 置 に配 置 され,ラ
餌集 め行動
ンダ ム な初 期 方 向 を持 つ.ま
た,す べ て のAgentは
ロ グ ラ ム で 行 動 を 制 御 さ れ る. GPに
用 い る 非 終 端 記 号 と終 端 記 号 は 次 の よ う にす る.
T=
{(MOVE-RANDOM),(PICK-UP),(MOVE),(DROP-FOOD)},
同 じプ
図
25個 の餌 と20匹
5.12
のAgent
F = {IF-FOOD-HERE,IF-CARRYING-FOOD,IF-FOOD-ADJACENT, PROGN2}.
非 終 端 記 号 の 意 味 は 次 の と お り で あ る.IF-FOOD-HEREは の 現 在 位 置 に 餌 が あ れ ば 第 1 引 数 を,な IF-CARRYING-FOODは 数 を,保
2 引 数 を と り, Agent
け れ ば 第 2 引 数 を 実 行 す る 関 数 で あ る.
2 引 数 を と る 関 数 で, Agentが
餌 を保 持 して い れ ば 第 1引
持 し て い な け れ ば 第 2 引 数 を 実 行 す る.IF-FOOD-ADJACENTは
り,Agentの
周 り に 餌 が あ れ ば そ の 餌 の 方 向 に 向 き を 変 え,第
な け れ ば 第 2 引 数 を 実 行 す る.PROGN2は
2引数 を と 1 引 数 を 実 行 す る.
2 引 数 を と る 関 数 で,第1,2引
数 を順
に 実 行 す る. 終 端 記 号 に は 次 の よ う な 引 数 の な い 関 数 を 用 意 す る.MOVE-RANDOMはAgentの 向 く方 向 を ラ ン ダ ム に 変 え,そ 在 位 置 に 餌 が あ り,か は,他
のAgentが
Agentが
の 方 向 に 2 歩 進 ま せ る.PICK-UPは,
つAgentが
Agentの
現
餌 を 持 っ て い な け れ ば そ の 餌 を 拾 わ せ る. MOVE
い な け れ ば 現 在 の 方 向 にAgentを
1歩 動 か す. DROP-FOODは,
餌 を 持 っ て い れ ば 餌 を 現 在 の 位 置 に 落 と させ る.た
だ し,1
つ の地 点 に
複 数 の 餌 を 置 く こ と は で き な い.
GPの
パ ラ メ ー タ ど して は,集 団 数500,最
大 世代 数51を
採 用 す る.ま た,適
合 度 は,決 め られ た 時 間 プ ロ グ ラ ム を実 行 した後 に集 め られ た 餌 の密 集 度 で 評 価 す る.つ
ま り,適 合 度 を次 の よ う に定 め る.1 つ の 地 点 に は複 数 の 餌 は 置 け な い
こ と に注 意 して ほ しい.25個
の 餌 か ら 2つ の 餌 を取 り出す 組 合 せ は 合 計300通
り
あ る が,そ の す べ て の 組 合 せ に対 して 2つ の餌 の 距 離 を合 計 した もの を適 合 度 と
す る.例
え ば,初 期 位 置 に お け る適 合 度 は7961で
どこ の適 合 度 は低 くな る.餌 がAgentに た場 合,そ
あ る.餌 が 密 集 す れ ば す る ほ
持 た れ た状 態 で 決 め られ た 時 間が 終 了 し
の餌 が 最 後 に拾 わ れ た 地 点 か らの距 離 で 適 合 度 を計 算 す る.
初 期 世 代 に お け る 最 良 個 体 の プ ロ グ ラ ム を 実 行 し た 結 果 を 図5.13に 合 適 合 度 は5333で
合 度 は4749,3227,2214,2250,1891,1854と
く.図5.14は34世
ノ ー ド(終 端/非 終 端 記 号)を
で あ る.こ
の プ ロ グ ラ ム を 実 行 さ せ た と き のAgentの
つ け る ま で 最 初Agentは れ た 状 態 と な る.餌
持 ち,集
を 持 っ たAgentは,フ
動 き を 見 て み よ う.餌
呼 ぶ)が692の
か し,中
き た い.図5.15(b)は
端/非 終 端 記 号 の 評 価 回 数,以 示 す.3,5,5,6個
重 な り,見
エ ポ ッ ク が1539の
ば れ て い る 餌 以 外 は,か
い る.
下 エポ ックと
の 餌 か ら な る 4つ の 島
残 りの 6 つ の 餌 を 持 っ て い
る こ とが で き な い こ と に 注 意 し て い た だ と き の 状 態 で あ る.Agentに
い る も の を 除 け ば,3 個 の 餌 か ら な る 小 さ な 島 と14個 け ら れ て い る.図5.15(c)は
島 の 周 りに餌 を落
に は 島 の 餌 を 拾 っ て い くAgentも
を 黒 く塗 られ て い な いAgentが
く つ か の 餌 はAgentと
持 た
ィー ル ドに 置 か れ た 餌 を み つ け る と 餌
と き の 状 態 を 図5.15(a)に
が 形 成 さ れ て い る.中
を見
ぐ に 餌 の 大 半 がAgentに
の よ う に し て 餌 の 島 が 形 成 さ れ て い く.Agentが
対 す る 命 令 の 実 行 回 数(終
合 度1667).こ
め ら れ た 餌 の 平 均 距 離 は 約2.3
ラ ン ダ ム に 動 き 回 る.す
と す こ と で 島 は 大 き く な る.し
る.い
徐 々 に よ くな っ て い
代 に お け る 最 良 個 体 の プ ロ グ ラ ム で あ る(適
れ は111の
Agentに
の場
あ り,餌 は 6つ の 塊 に 集 め られ て い る.世 代 が5,10,15,20,25,30
に な る に つ れ,適
を 落 と す.そ
示 す.こ
エ ポ ッ ク が2705の
運ば れて
か らな る 大 き な島 に餌 は分
と き の 状 態 で あ る.Agentに
な り密 集 した 1つ の 大 き な 島 と な っ て い る.実
運
行終 了時
に は す べ て の 餌 が こ の 島 に 属 した 状 態 と な っ た. 以 上 の 実 験 か ら,少
数 の 単 純 な行 動 規 則 の 組 合 せ で秩 序 だ っ た 団 体 行 動 が 実 現
さ れ る こ と が 見 て と れ る で あ ろ う.さ さ せ る こ と が 可 能 で あ る.本 (Behavior-based
ら に,こ
う し た 行 動 規 則 をGPに
節 で 説 明 し た シ ミュ レ ー シ ョ ン は,行
approach),協
調 問 題 解 決,マ
よ り進 化
動 型 ロボ ッ ト
ル チ ・エ ー ジ ェ ン ト,分
散
人 工 知 能 な ど の 分 野 と 深 い つ な が り を持 っ て い る.(詳 細 は[Steels90][Iba96b,c]な ど).GPが
こ う し た 分 野 に お い て 新 た な パ ラ ダ イ ム を 提 供 す る こ と を 期 待 す る.
図5.13
図5.14
初 期 世代 の 最良 個 体の 実 行の よ うす
34世 代 目での 最良 個体 の プロ グ ラム
(a)
692エ
(c)
2705エ
ポ ッ ク
(b) 1539エ
ポ ック
図 5.15
5.3 5.3.1
ポック
Agentの
実 行過 程
システ ム 同定 問題 へ の応用 システム 同定問題 とは
シ ス テ ム 同定 は,与
え られ た 入 出 力 デ ー タか ら未 知 の シ ス テ ム の 振 舞 い を予 測
す る問 題 で あ り,さ ま ざ まな 分 野 で 応 用 され て い る[Astrom71].こ よ う に形 式 的 に 定 義 され る(第
1部 の 図1.11).m
の 問 題 は次 の
個 の 入 力 変 数 と 1つ の 出 力 変
数 で 規 定 され る未 知 の シ ス テ ム(関 数 f)が あ る と し よ う.
(5.1)
y=f(χ1,χ2,…,χm)
こ こ で 入 出 力 の デ ー タ の N 個 の実 現 値 が 与 え ら れ た とす る.
この と き シ ス テ ム 同 定 の 目 的 は,真
の 関 数 f の 近 似 f を得 る こ とで あ る.ひ
た び こ の 近 似 関数 f を得 れ ば,任 意 の 入 力(χ1,χ2,…,χm)に
と
対 して出 力 の予 測
値 yが
(5.2) の よ う に求 まる.以
下 で は こ の f を f の 完 全 型 と呼 ぶ.
シ ス テ ム 同 定 の代 表 例 と して は,時 系 列 予 測 問 題,パ 別)問 題,ブ
タ ー ン認 識(も
し くは類
ー ル 関 数 合 成 問 題 な どが あ り,工 学 的 に重 要 な 問 題 を多 く含 ん で い
る.こ の 問 題 の 難 し さ は,扱
うべ き変 数,デ
ー タ,制 約 な ど に よる組 合 せ 論 的爆
発 に あ る. 本 節 で は,GPを
5.3.2
用 い た シ ス テ ム 同 定 問 題 の解 法 例 を 説 明 しよ う.
時系列予測問題
非 線 形 の 振 舞 い を す る 次 の 式 に 従 う 時 系 列 デ ー タ χ(1),χ(2),χ(3),…
を考 え
よ う.
(5.3) こ れ はMackey-Glass微
分 方 程 式 と 呼 ば れ, χ(t)は 約3.5フ
ラ ク タ ル次 元 の
ス ト レ ン ジ ・ア ト ラ ク タ ー を 有 す る カ オ ス 関 数 と な る[Tenorio90].a=0.2,b= 0.1,T=1.7と
し た 場 合 の 関 数 の 形 状 が 図5.17(a)に
こ こ で,Mackey-Glass方
示 さ れ て い る.
程 式 か ら 発 生 し た 時 系 列,
χ(1),χ(2),χ(3),…,χ(t-1),χ(t),χ(t+1),…
(5.4)
に 対 して 次 の よ うな 予 測 問 題 を考 え る. 「χ(t)を
過 去 の デ ー タ χ(t-31),χ(t-21),χ(t-16),χ(t-11),χ(t-6),χ(t-
5),χ(t-4),χ(t-3),χ(t-2),χ(t-1)か
つ ま り,次 の よ う な関 数fの χ(t)
ら 予 測 す る」
近 似 を求 め た い .
= f(χ(t-31),χ(t-21),χ(t-16),χ(t-11),χ(t-6), χ(t-5),χ(t-4),χ(t-3),χ(t-2),χ(t-1))
(5.5)
ひ と た び こ の近 似 関 数 を得 れ ば 過 去 の デ ー タか ら未 来 を次 々 に予 測 す る こ とが 可 能 に な る.こ の よ うな 問 題 は時 系 列 予 測 問 題(Time
Series Prediction)と
呼ば
れ,実 用 的 価 値 も高 く,古 くか ら研 究 され て い る.一 般 に予 測 す べ き時系 列 デ ー タの 振 舞 い が 非 線 形 で 複 雑 な場 合 が 多 く,時 系 列 予 測 問 題 で は近 似 関 数 の 形 式 と パ ラ メ ー タ をい か に 導 出 す る か が ポ イ ン トに な る . OakleyはMackey-Glass方 タ を表5.4に
示 す.こ
程 式 の 予 測 にGPを
こ で終 端 記 号 のYiは
せ る終 端 記 号 で あ る(第
1部 演 習 問 題4・3参
か に超 越 関 数 や 平 方 根 を用 い て い る.他
利 用 して い る. GPの
χ(t-i)を 照).非
表 す.〓
5.4
GPパ
ラ メー タ
は 乱 数 を発 生 さ
終端記号 には四則演 算の ほ
の パ ラ メ ー タの 詳 細 は 第 1部 のsgpc1.1
を参 照 して い た だ き たい.
表
パ ラメー
(sgpc1.1の
パ ラ メ ー タ)
適 合 度 計 算 は 予 測 値 と実 際 の値 との 2乗 誤 差(以 た,よ
下f1と
す る)を 用 い る 。 ま
り正 確 に 適 合 度 を計 算 す るた め に フー リエ ・パ ワ ー ス ペ ク トル も用 い る.こ
れ は 予 測 値 と実 測 値 そ れ ぞ れ に フ ー リ エ解 析 を行 っ た結 果 の パ ワ ー スペ ク トル の 2乗 誤 差(以 f1が40.0(こ
下f2と
す る)で あ る.パ
れ は最 良 の線 形 近似 で達 成 で き る適 合 度 の半 分 で あ る)を 越 え た ら
f1の 代 わ りにf1+f2を で はGPで
ワー スペ ク トル の 適 合 度 を用 い る場 合 は,
適 合 度 とす る.
実 験 してみ よ う. f1を 適 合 度 と した場 合 に, GPに
よ り得 られ る典
型 的 な最 良個 体 の式 は 次 の よ うな もの で あ る.
(+ -0.084783420006
(% Y31
Y31))
こ の 式 は デ ー タ を 直 線 で 近 似 す る.GPで
獲 得 さ れ た 式 に よ る 予 測 とMackey
Glass方
図5.16に
程 式 の 時 系 列(200点
図
5.16
か ら な る)を
GPで
示 す.表5.5は
の予 測 結果 と予測 す べ き時 系 列
得 られ た式 と
予 測 方 式 で あ る.パ
ワ ー ス ペ ク トルの 適 合 度 に よ る最 良 個 体 は,予 測 の 初 め には
振 動 現 象 を示 す が 後 に は線 形 予 測 に 近 い 振 舞 い をす る こ とが 見 て とれ る で あ ろ う. 実 験 の結 果,Mackey-Glass微 した 場 合 と,よ
分 方 程 式 の 表 現 に 現 れ る記 号 の み でGPを
実行
り広 い 範 囲 の終 端 記 号 や 非 終 端 記 号 の場 合 と で成 績 に差 が な い こ
とが わ か っ た.
表
5.5
GPで
得 られ た式
Howard い る.詳
Oakleyは
他 の 手 法 と の 成 績 の 比 較 な ど の 効 率 に 関 す る 議 論 を展 開 し て
細 は[Oakley94]を
参 照 し て い た だ き た い.さ
法 を 用 い て ノ イ ズ の 除 去 フ ィ ル タ をGPで さ せ て で き た フ ィ ル タ(stack rheometer
system)の
GPを
5.3.3
筆 者 ら はGPを STructured 構 築 し た.こ
1.GPに
ら にOakleyは,同
様 の手
設 計 す る こ と を 試 み て い る. GPで
filter)は,現
進化
在 レ ー ザ ー シ ス テ ム(laser Doppler
設 計 に 用 い ら れ て い る.
拡張 した システ ム:STROGANOFF 拡 張 し て シ ス テ ム 同 定 問 題 を 解 決 す る シ ス テ ム(STROGANOFF,
Representation
On Genetic Algorithms
for Function
Fitting)を
こ で の 拡 張 と は 次 の も の で あ る.
局 所 的 な探 索 手 法(統
計 的 な手 法 で あ る多 重 回 帰 分 析)を
導 入 して
探 索 効 率 の 改 善 を は か る. 2.MDL基
準 に基 づ く適 合 度 計 算 を用 い る.
シ ス テ ム 同 定 問 題 へ の 古 典 的 な 手 法 と し てGMDH(Group Data Handling)が
開発 され て い る[Ivakhnenko71].こ
Method
of
れ は,変 数 群 か ら選択
され た適 当 な 2変 数 の 2次 式 を重 回帰 分 析 に よ り構 成 し,そ れ を新 た な変 数 とみ な して 変 数 群 に 加 え,目 標 の 近 似 精 度 を得 る ま で この 変 数 の 選 択 と生 成 を繰 り返 す とい う手 法 で あ る.GMDHに
つ い て は,選 択 に ヒュ ー リ ス テ ィック が必 要 で あ る
こ とや,探 索 が 極 値 に 陥 りや す い こ と な どの 欠 点 が 指 摘 さ れ て い る[Tenorio90]. GMDHで
構 成 され る 変数 の関係 は 2分 木 をつ くる.例 え ば,入 力 変 数 が{χ1,χ2,
χ3,χ4}で 出 力 変 数 がyで
あ る 関数 のGMDHの
z1=Gχ1
z2=Gχ3
結 果 が,
,χ2(χ1,χ2),
(5.6)
,z1(χ3,z1),
(5.7)
y=Gχ4,z2(χ4,z2).
の と き を考 え る.こ
こ でzlとz2は
は重 回 帰 分 析 で 求 め た 多 項 式(こ
(5.8)
中 間変 数, yは 推 論 結 果 で あ る.各 関 数G の場 合 2次 式)で
あ る.こ の と きyは,入
力変
数 を終 端 ノ ー ド とす る木,
(NODEl
(NODE2 (NODE3(χl)(χ2)) (χ3)) (χ4))
で 表 現 され る.こ
こでNODE1,NODE2,NODE3は
各 々y, z2,zlに 対 応 す る.各
ノ ー ドは G に つ い て の情 報 を保 持 す る.以 上 の よ うに 考 え る と,GPの GMDHの
木 構 造 の 探 索 にそ の ま ま応 用 で きる.通 常 のGPと
期 化 やGPオ
手法 を
の 大 きな違 い は,初
ペ レ ー タの 作 用 に よ っ て新 しい 木 が 生 成 さ れ る た び に ノ ー ドの係 数
を 重 回帰 分 析 で 計 算 す る こ とで あ る.こ の ノ ー ドの係 数 調 整 が 局 所 探 索 で あ り, GPに
よ る木 の 生 成 が 大 域 探 索 に相 当 す る.
さ ら に,Gpの
選 択 に除 して はMDLに
基 づ く適 合 度 計 算 を採 用 した.こ れ は
木 の 記 述 長 と当 て は め 誤 差 の トレー ドオ フ を評 価 す る た め で あ る.MDLとGP に 関 す る詳 細 は6.2節 す るMDL値
を参 照 して い た だ きた い.STROGANOFFの
木 構 造 に対
は次 の よ うに 定義 され る.
(5.9) た だ し,N
は デ ー タ の 数 で あ りS2Nは
最 小 2 乗 誤 差,つ
ま り,
(5.10) で あ る.こ
こ で κ は 木 の パ ラ メ ー タ の 数 で あ る.
STROGANOFFを
用 い て カ オ ス 的 時系 列 関数 の 予 測 を して み よ う.目 的 は現
在 値 を過 去 の デ ー タ の 関数, χ(t)=f(χ(t-1),χ(t-2),…,χ(t-M)).
(5.11)
と し て 求 め る こ と で あ る(こ χ(100)を
の 実 験 で はM=10と
訓 練 デ ー タ,χ(101)∼
タ は,集
団 数60,交
χ(500)を
叉 確 率0.6,突
{(1),(2),…,(10)}で
あ る.た
STROGANOFFに
下 で は χ(1)∼
テ ス トデ ー タ と し た.用
然 変 異 率0.0333で
だ し,(i)は
よ る233と1740世
す る).以
χ(t-i)を
あ る.ま
い たパ ラ メ ー
た,終
端 ノ ー ドは
表 す.図5.17(b)と(c)は
代 で の 予 測 結 果 で あ る.世
代1740で
獲得
さ れ た 構 造 表 現 は 以 下 の よ う な も の で あ る.
(NODE95239(7) (NODE95240 (NODE95241 (NODE95242 (NODE95243 (NODE95244 (8)
(NODE95245 (8)
(NODE95130(2)(3)))) (NODE95173 (10) (NODE95174 (NODE95175(4)(1)) (5)))) (5)) (6))
(NODE95178(NODE95179(8)(3))(10)))) こ こ で(i)は す(た
χ(t-i)を
表 す.ノ
ー ドに 記 録 さ れ て い る 係 数 の 一 例 を 表5.6に
だ し,Cz1,z2(z1,z2)=a0+a1z1+a2z2+a3zl
示
z2+a4z21+a5z22).図
5.17(c)で
は テ ス トデ ー タ に お い て 完 全 な 一 致 が 見 ら れ る こ と に 注 意 し て い た だ
き た い(平
均 誤 差5.06×10-6).
表
5.6
ノ ー ドの 係 数
カ オ ス的 時系 列
(a)
(b)
(c)
図 5.17
233世 代 で の 予測
1740世
代 で の予 測
Mackey-Glass式
の 予測
別 の 例 と して,池
田 写 像(Ikeda
予 測 の 結 果 を 図5.18に
f(χ,y)=(1+μ(χCOS
示 す.こ
map[Ikeda79])と
呼ば れるカオスの図形の
れ は 次 の 式 で 表 さ れ る 2 次 元 の カ オ ス 系 で あ る.
t-ysin
t), μ(χsin t+yCOS
t)),
(5.12)
た だ し,
(5.13) (5.14)
テ ス トデ ー タ
(a)
(b)
図
こ こで は,よ
5.18
予測結果 池田写像
り予 測 が 困 難 な池 田 写 像 の 4回 の 繰 返 しを 用 い た.図5.18に
写 像 に対 して の テ ス トデ ー タ とSTROGANOFFの
は池 田
予 測 結 果 を表 示 した.筆 者 ら
はSTROGANOFF,通
常 のGP,ニ
ュ ー ラル ネ ッ ト,そ の他 の標 準 的 な 予 測 手
段 に対 して の 成 績 の 比 較 を行 い,STROGANOFFの の詳 細 は[伊 庭95][Iba95a,b]を
有 効 性 を確 認 して い る.そ
参 照 して い た だ きた い.
よ り実 際 的 な 応 用 と してSTROGANOFFを 5.19は
画 像 理 解 に 適 用 して みよう.図
窓 パ タ ー ン の 類 別 実 験 で あ る.こ
の 実 験 の 目 的 は,図
の 中 か ら窓 や 扉 パ
タ ー ン に 当 た る 部 分 を 判 別 す る フ ィ ル タ を 構 成 す る こ と で あ る.表5.7は の た め のSTROGANOFFの
パ ラ メ ー タ で あ る.終
端 ノ ー ドは 通 常 の コ ン ピ ュ ー
タ ・ビ ジ ョ ン で 用 い られ る 画 像 処 理 オ ペ レ ー タ に 相 当 す る.例 に お い て ソ ベ ル オ ペ レ ー タ[Duda73]に 図5.19(a)は
画 素).と
(a)
訓 練 デ ー タ に 用 い る 正 の 例(正
負 の 例(130×60画
テ ス トデ ー タ
(d)
(Hursley
素)で
House)
実験結果 図 5.19
え ば,χ3は
各画素
よ り処 理 さ れ た 画 素 値 を 返 す 関 数 で あ る.
テ ス トデ ー タ に 用 い た 画 像 で あ る(“Hursley
素).図5.19(b),(c)は
こ の 実験
House”,512×512画
面 の 扉 の 画 像,25×60
あ る.
(b)
正 の例
窓 パ ター ンの 類別 実験
(c)
負 の例
通 常 の 扉 や 窓 は 多 くの 幾 何 学 的 な特 長 を共 有 して い る.例 え ば,図5.19(a)に 見 られ る よ う に,小
さな黒 い 四 角 が 扉 や 窓 に は 規 則 的 に な ら ん で い る .し たが っ
て,扉 パ タ ー ンの 類 別 は,「窓 関 数 」 や 「扉 関 数 」 とい った よ うな共 通 の 規 則 性 を 判 別 す る 2次 元 フ ィル タ をつ くり出 す こ と を 目的 と して い る. 図5.19(d)に
は 実験 の 結 果 を示 す.黒 い ピク セ ル が 正 の例(窓
や 扉)と 判 別 さ
れ た 部 分 を示 して い る.こ の 図 に は ノ イズ を減 らす た め の ス ム ー ジ ン グ の操 作 が 後 処 理 と して 加 え られ て い る.STROGANOFFで 窓 と扉 の うち19個
獲 得 され た木 構 造 は,34個
を正 し く認 識 した.し たが っ て,得
の
られ た木 構 造 を一 種 の 「窓
関 数 」 と見 な す こ とが で き る.以 上 の こ とか ら,画 像 オ ペ レー タ を組 み 合 せ て適 合 的 に 処 理 をす る よ う な応 用 に対 して,STROGANOFFは か る.こ の 研 究 に関 す る詳 細 は[Iba95a,b]を
表
5.7
STROGANOFFパ
有 効 で あ る こ とが わ
参 照 して い た だ きた い .
ラ メー タ(画 像 の 分類 実 験)
5・4 分子 生 物 学 へ の応 用 5.4.1
分子 生物 学 入門
タ ンパ ク質 は,生 体 内 の い た る と ころ に見 い 出 され るポ リペ プチ ド(ア ミ ノ酸 が ペ プ チ ド結 合 した もの)の 一 種 で,50か 子 で あ る.生 体 内 に は20種
ら数 千 個 の ア ミノ酸 の列 か らな る高 分
類 の ア ミ ノ酸 しか存 在 しな い.表5.8に20種
類のア
ミ ノ酸 とそ の 略号 を示 す.こ の ア ミノ酸 配 列 の違 い に よ り,自 然 は わず か20種 の ア ミノ酸 か ら多 彩 な機 能 を もつ 高 分 子 の 一 群 を 生 み 出 して い る.タ 機 能 は 多 岐 に わ た る が,そ
ンパ ク質 の
の機 能 を発 揮 す る に は そ れ ぞ れ の タ ンパ ク質 に 固 有 の
立 体 構 造 を と る こ とが必 要 で あ る.し とで,初
類
た が っ て,タ
ンパ ク質 の立 体 構 造 を 見 る こ
め て 機 能 と構 造 の 関 係 が 把 握 で き る.
タ ンパ ク 質 の 構 造 は次 の よ うに 階 層 化 され る. 1 .1 次 元 構 造 ア ミノ酸 の 1次 元 文 字 列. 2.2 次 元 構 造
ア ミノ酸 の 文 字 列 の 局 所 的 配 列 に と も な う規 則 的 特 徴.代 て,ら せ ん構 造(α
ヘ リ ッ クス)や
シー ト構 造(β
表 的な もの と し
シ ー ト)が あ る.
3.3 次 元 構 造 タ ンパ ク質 の 空 間的 な配 置. 4.4 次 元 構 造
複 数 の 鎖(部
分 ユ ニ ッ ト)を 含 む タ ンパ ク質 の 3次 元 的 な空 間 配 置.
m 次 元 構 造 か ら n 次 元構 造(n>m)を
予 測 す る には,難 解 な パ ター ン認 識 問
題 を解 か ね ば な らな い.そ の 難 し さは 得 られ る デ ー タの 少 な さ と信 頼 性 の な さ に も起 因 す る.遺 伝 子 と タ ンパ ク質 を中 心 と した 生 物 の 問題 を コ ン ピュ ー タ技 術 で 解 決 をは か る学 際 的 な研 究 は,遺 伝 子 情 報 処 理,遺 伝 子 解 析 な ど と呼 ば れ て い る. GAを
は じめ,多
くの 手 法 が 遺 伝 子 解 析 に適 用 され て い る.遺 伝 子 解 析 の 詳 細 に
つ い て は[星 田94]を 参 照 して い た だ きた い.本 節 で は[Koza94a,Ch.17,18,19,20] を も と に してGPに
よ る遺 伝 子 解 析 の研 究 例 を紹 介 す る.
ア ミ ノ酸 基 とその略 号
表5.8
5.4.2
膜貫通領域の分類
あ る タ ン パ ク 質 の 部 分 が 膜 貫 通 領 域(transmembrane か を 判 断 す る 問 題 を 考 え る.膜 合 が 多 い . 図5.20に 域 を 示 し て い る.こ
domain)で
貫 通 領 域 は 疎 水 性 で あ り,α
ヘ リ ック ス で あ る場
は あ る タ ン パ ク 質(bacteriorhodopsin)の れ は248個
の ア ミ ノ 酸 基(residue)か
り,7 つ の α ヘ リ ッ ク ス に 折 り畳 ま れ て い る.こ 貫 通 領 域 を 構 成 し,比
あるか どう
7つ の 膜 貫 通 領 ら な る タ ンパ ク質 で あ
れ ら の 7つ の α ヘ リ ッ ク ス は 膜
較 的 短 い ル ー プ に 結 ば れ て い る.こ
の ル ー プの うち 3つ は
細 胞 の 外 に あ り,3 つ は 細 胞 の 中 に あ る.
この 領 域 の判 定 に しば しば 用 い られ るの はKyte-Doolittleの で あ る.こ れ は20個
親 水性 の指標
の ア ミノ酸 基 に親 水 性(疎 水 性)の 程 度 に よ り小 さ な(大 き
な)実 数 値 を割 り当 て た もの で あ る(表5.9).20個
の ア ミノ酸 基 は,7 個 の疎 水
性,6 個 の 中 性,7 個 の親 水 性 の ア ミノ酸 基 に 分 か れ る .
図5.20
7つの 膜貫 通 領域 か らな る タ ンパ ク質
表5.9
Kyte-Doolittle指
標
図5.21に
は161個
protein 22と
の ア ミ ノ酸 基 か ら な る タ ン パ ク 質(mouse
呼 ば れ る)を
示 した.161個
の ア ミ ノ酸 基 を 順 に 1 か ら161ま
号 を つ け,基1(=M),基2(=L),基3(=L)な
つ の 基(自
る.こ
計 4 つ(基
こ で,あ
2-基31,基65-基91,基96υ
る ア ミ ノ 酸 基 を 中 心 と し て 前 後 5個 ず
分 も い れ て 合 計11個)のKyte-Doolittle指
ば,基101(F)を
で番
ど と呼 ぶ こ とに す る. 図 の箱
で 囲 っ た 部 分 が 膜 貫 通 領 域 で あ り,合 基119,基134-基156)あ
peripheral myelin
標 の 和 を計 算 す る . 例 え
考 え る と そ の 前 後 5つ の 並 び は,
FYITGFFQILA で あ る.し
た が っ て,指
標 の 和 は,
2.8+(-1.3)+4.5+(-0.7)+(-0.4)+2.8+2.8+(-3.5)+4.5+3.8+1.8=17.1 (5.15) と な る.各 基 に 関 して,こ 図 の縦 軸 は和 を10倍
の和 を計 算 した 結 果 を図5.22に
示 す.た だ し,便 宜 上
した もの で あ る.ま た 当 然 なが ら,初 め と最 後 の 5基 に つ
い ての 和 は 計 算 さ れ て い な い.こ の グ ラ フ で 箱 に囲 ま れ た 部 分 は 膜 貫 通 領 域 を 示 す(図5.21).図 ●
か らわ か る こ と は以 下 の こ とで あ る.
膜 貫 通 領 域 で は和 は正 の 大 きな値 で あ る . この こ とは 領 域 が 疎 水 性 な こ と を 示 す.
●
膜 貫 通 領 域 以 外 で の 和 は 小 さ な正 の 値 か負 の 値 で あ る.負 の 値 で あ る こ と は,こ の 部 分 が 親 水 性 で あ る こ と を示 す.
した が っ て,Kyte-Doolittle指
標 を用 い て膜 貫 通 領 域 の 分類 が 可 能 な こ とが わ か
る.し か しな が ら,こ の 指 標 の 実 数 値 は厳 密 に定 義 され た もの で は な い た め,一 般 的 な合 意 は得 ら れ て お らず,他 の 指 標 もい くつ か提 案 され て い る. そ こで 本 節 で はGPを
用 い て膜 貫 通 領 域 の 分 類 を行 い,同 時 にKyte-Doolittle
指 標 と同 等 な指 標 関 数 を 求 め る実 験 を説 明 しよ う.
図5・21
161個
図5.22
5.4.3
の ア ミ ノ酸 基 か ら な る タ ン パ ク 質
Kyte-Doolittle指
標の和
メ モ リ 付 きGP
膜 貫 通 領 域 の 分 類 問題 に対 処 す る た め に,メ モ リ付 きGPを
用 い る.こ れ はGP
の終 端 記 号 T と非 終 端 記 号 F に次 の よ うな変 数 の参 照 命 令 を 入 れ る もの で あ る .
こ こでSETMiは
1引 数 を取 る関 数 で あ り,変 数Miに
そ の 引 数 の 値 を代 入 す る.
変 数 の 値 を 読 む の は終 端 記 号 のMiで
あ る。 LISPと
同 じ よ うにSETMiは
数 の値 を返 す こ と に す る.例 え ば,次
の 一連 の 実 行 を 考 え て み る.
第 1引
LINE2(SETM2(-M1
1))
LINE3(SETM1(/M23)) こ の と き,各 行 を実 行 した 後 の変 数 の 値 は次 の よ う に な る. LINE1
M1=100,
M2=???.
LINE2
M1=100,
M2=99.
LINE3
M1=33,
こ の よ う に,メ 一般化 され
,イ
M2=99.
モ リ を用 い る こ とで 複 雑 な処 理 が 可 能 で あ る . この 考 え方 は よ り
ン デ ッ ク スGPと
し て 提 案 さ れ て い る[Teller94a].こ
ア ク セ ス して 読 み 書 き を す る 関 数(READ,WRITE)を は,イ
ン デ ッ ク スGPで
ン グ 完 全 な こ と)を
れ は メモ リに
用 い る もの で あ る.[Teller94b]
原 理 上 あ ら ゆ る プ ロ グ ラ ム が 記 述 可 能 な こ と(チ
示 し た . ま た[Andre95]は,メ
モ リ付 きGPを
ュー リ
用 い て地 図 生
成 や メ ン タ ル モ デ ル の 自 動 合 成 の 研 究 を 行 っ て い る.
評価方法
5.4.4
適 合 度 の 計算 に必 要 な タ ンパ ク質 の デ ー タにつ い て説 明 す る.この ため にSWISSPROTタ タ(mouse
ン パ ク 質 デ ー タバ ン ク の リ リ ー ス25に protein)を
採 用 した.こ
の ア ミノ酸 基 か らな る.各 均 ア ミノ酸 基 数 は23.0で 個 の 訓 練 例 と125個
あ る248個
の タ ンパ ク 質 デ ー
れ らの タ ンパ ク 質 デ ー タ は 平 均 で499.8個
タ ンパ ク質 は 1か ら12個
の膜 貫 通 領 域 を有 し,そ の 平
あ る . こ こで,こ の タ ンパ ク質 デ ー タ を ラ ン ダム に123
の テ ス ト例 に分 割 す る.各 タ ンパ ク質 か ら は膜 貫 通 領 域 とそ
れ 以 外 の領 域 を ラ ン ダム に 1つ ず つ 選 び出 す . こ れ を 以 下 で は,タ (segment)と の 負 例(非
呼 ぶ.し た が っ て,訓 練 例 は123個 膜 貫 通 領 域),テ
ス ト例 は125個
の 正 例(膜 貫 通 領 域)と123個
の 正 例 と125個
の 負 例 か ら な る.
適 合 度 計 算 には 相 関 係 数 を 用 い る . あ る デ ー タ j に対 して,Pj(予 (実 際 の 観 測 値)を
次 の よ う に定 義 す る.
ンパ ク質 分 断
測 値),Sj
{ {
Pj=
Sj=
1
膜貫 通領域 である と予測 した場合
0
膜貫通 領域で ない と予測 した場合
1
実 際 の デ ー タが 膜 貫 通 領 域 で あ る場 合
0
実 際 の デ ー タが 膜 貫 通 領 域 で な い 場 合
(5.16)
(5.17)
この と き相 関 係 数 C は 次 の よ うに計 算 され る.
(5.18)
た だ し,S,PはSj,Pjの
全 デ ー タ に 対 す る 平 均 値 で あ る.相
の 値 を と り,1 に 近 い 方 が 良 い.し
た が っ て,GPの
関 係 数 は-1 か ら 1
適 合 度(standard
fitness)
と し て は,
1-C/2
を採 用 す る.こ の 適 合 度 は 0か ら 1の 値 を と り,0 が 最 良 値 と な る.
GPに
5.4.5
よる分類 実験
以 下 で はGPに
よ る膜 貫 通 領 域 の 分 類 実験 を説 明 す る.こ こ で は 次 の よ う なパ
ラ メ ー タ,実 験 環 境 を設 定 す る. ●
ADF版
のGP
●
集 団 数4,000
●
最大世代数21
関 数 の 本 体 は 2 つ の 部 分(IPBブ にGPの
遺 伝 子 を 示 す.こ
る.defun,
valuesな
performing
branch)は
ラ ン チ, RPBブ
ラ ン チ)か
ら な る.図5.23
の 遺 伝 子 は 3 つ の ブ ラ ン チ(ADF0,IPB0,RPB)か
らな
ど は 各 ブ ラ ン チ を 識 別 す る ラ ベ ル で あ る. IPB(iteration与 え ら れ た タ ン パ ク 質 の 分 断 に 対 し,初
ら順 々 に 実 行 さ れ る 関 数 で あ る.こ
め の ア ミ ノ酸 基 か
の 過 程 で メ モ リが 設 定 さ れ る.IPBが
最後 の ア
ミ ノ 酸 基 に 適 用 さ れ た 後RPB(result-producing が 正 の と き 膜 貫 通 領 域 で あ る と 判 別 し,返 領 域 で あ る と判 別 す る.こ と呼 ぶ.以 る.た
て も適 切 にIPB,RPBの GPオ
実 行 し,そ
の返 す 値
す 値 が負 ま た は ゼ ロ の場 合 は非 膜 貫 通
の よ う に 関 数 の 返 す 値 に 処 理 を 加 え る こ と をwrapper
上 の 処 理 過 程 を 図5.24に
だ し,IPBはIPB同
branch)を
示 す.GPで
志 で, RPBはRPB同
はIPBもRPBも
同 時 に進 化 させ
志 で 交 叉 を 行 い,突
記 号 を 用 い る よ う に 制 限 を 加 え る.こ
然 変 異 にお い
の よ うな制 限付 きの
ペ レー タ を 「構 造 保 存 オ ペ レ ー タ(structure-preserving
operator)」
と呼
ん で い る.
各 ブ ラ ンチ で 用 い られ る記 号 セ ッ トを以 下 の 表 に示 す. 終端/非終端 記号名 LEN,M0,M1,M2,M3,〓. 終端記号 非終端記号 ADF0,ADF1,ADF2,SETM0,SETM1,
ブ ラ ンチ名 IPB
SETM2,SETM3,IFLTE,+,-,*,%.
終端記号 非終端記 号 終端記号 非終端記号
RPB
ADF0,ADF1,ADF2
LENは
LEN,M0,M1,M2,M3,〓.
IFLTE,+,*,-,%. (A?),(C?),…,(Y?). ORN
判 定 す べ き タ ン パ ク 質 分 断 の 長 さ で あ る.Mi,SETMiは
の た め の 変 数 と 関 数 で あ る.ま (第 1部 演 習 問 題4・3参
は-10.0か
ら10.0の
照).(IFLTEabcd)はa〓bの
を 実 行 す る マ ク ロ で あ る.ADFの な る.こ
た,〓
前 述 の メ モ リ操 作 間 の 乱 数 を発 生 させ る と き c を, a>bの
終 端 記 号 は20個
の(引
数 の な い)判
れ ら は 現 在 の 基 が 特 定 の ア ミ ノ 酸 基 の と き 1 を,そ
す 関 数 で あ る.ORNは き+1 を,そ
2引 数 の 関 数 で あ り,引
う で な い と き-1 を 返 す.つ
ときd
別関数か ら
う で な い と き-1 を 返
数 の う ち 少 な く と も 1つ が 正 の と
ま り,論
理 的 に はORの
意 味 を 持 つ.例
え ば,
(ORN (A?) (C?))
を考 え て み る.こ の プ ロ グ ラ ム は現 在 の 基 が ア ラ ニ ン(A)か る と き に+1 を返 し,現 在 の 基 が そ の 他 の18個 返 す.
シ トシ ン(C)で
あ
の ア ミ ノ酸 基 で あ る 場 合 に-1 を
GPの
図5.23
○MO, M1, M2, M3を0.0に
遺伝 子
設定
○ ポイ ン タを最 初 の基 に 設定
現 在 の 基 に対 して
IPBO実
IPBOを 実 行す る
最後の基 まできたか?
初期化
行
Yes
No
ポイ ン タを次 の 基に 設 定す る
RPBを 実行し 結果が正か?
No
RPB実 Wrapper
Yes
膜貫 通領 域
非 膜貫 通領 域
であ る
である
図5.24
判別の過程
行
で はGPで
実 行 して み よ う.図5.25はGPに
の 適 合 度 を示 す.図5.26は
よる探 索 の 過 程 で あ り,世 代 ご と
世 代 ご との 最 良 個 体 の 訓 練 例 とテ ス ト例 に対 す る相 関
係 数 を プ ロ ッ ト した もの であ る.初 期 世代 にお い て 最 良個 体 の適 合 度 は0.298(相 関 係 数0.404)で
あ っ たが,世 代20に
とな っ た.図5.27に
は 世代20で
お い て は 適 合 度 が0.0122(相
関 係 数0.976)
の 最 良 個 体 を 示 す . この プ ロ グ ラム は次 の よ う
に解 釈 さ れ る. 1.
ADF ADF1とADF2の が+1
定 義 に,共
通 の 3 基(A,W,T)を
を 返 す の は 現 在 の 基 がI,Lの
Q,N,Pの
除 い て 考 え る と, ADF1
と き で あ り, ADF2に
と き で あ る . こ こ でI,Lは
対 して はD,E,K,R,
疎 水 性, D,E,K,R,Q,Nは
親 水 性, P は
中 性 の ア ミ ノ 酸 基 で あ る こ と に 注 意 し て い た だ き た い. 2.
IPB M0に
はADF1とADF0の
を 保 持 す る.上
差 の,タ
の こ と か らM0が
基 が 多 く あ り,I,Lの に はM0と
ン パ ク 質 分 断 全 体 を 走 査 して 加 算 し た 和 正 と な る の は,タ
数 がD,E,K,R,Q,N,Pの
同 じ情 報 が 保 持 さ れ る が, M0よ
ンパ ク質 の 中 に疎 水 性 の
数 よ り も 多 い と き で あ る. M3 り も基 の 走 査 が 1つ 前 の も の と
な る. 3.
RPB
RPBは
簡 略 化 して
(5.19) の よ う に な る.こ
こ で(-LEN-0.53)は
常 に正 とな る こ とに 注 意 して い
た だ き た い.RPBの
実 行 結 果 が 正 か 否 か の み を 問 題 に し て い る の で,こ
式 は 無 視 で き る.い
く つ か の 特 別 な場 合 を 除 い て こ の 式(5.19)が
の はM0が
した が っ て,こ
の
正 になる
正 と な る と き と考 え ら れ る.
の プ ロ グ ラ ム は次 の よ うに膜 貫 通 領 域 を認 識 す る.
「与 え られ た タ ンパ ク質 分 断 の 中 のI,Lの 数 がD,E,K,R,Q,N,Pの と き膜 貫 通 領 域 で あ る と答 え,そ
数 よ り も多 い
うで ない と きは 膜 貫 通 領 域 で は な い と答 え る.」
図5.25
GPの
図5.26
相 関係 数 の推 移
図5.27最
探 索過程
良個 体 の プ ロ グラ ム
表5.10は
この プ ロ グ ラム と他 の 手 法(詳 細 は[Weiss93]を
り率)の 比 較 で あ る . 表 か らわ か る よ うに,GPに
参 照)と の 成 績(誤
よ る プ ロ グ ラム は他 の手 法 に
比 べ て 優 れ て い る.
表5.10
本 節 で はGPの
各 手法 に よる判 別結 果 の比 較
遺 伝 子 解 析 へ の応 用 を説 明 した.こ こで 述 べ た実 験 以外 に も,先
読 み 問 題(タ ンパ ク 質 の各 ア ミノ酸 基 が 膜 貫 通領 域 に属 す るか 否 か を判 定 す る問題) や 2次 構 造 予 測 問題 な どにGPは
適 用 され,そ の 有 効性 が 確 か め られ て い る. これ
らの 実 験 の 詳 細 な 説 明 や 議 論 に 関 して は[Koza94a,Ch.17,18,19,20][Handley93] を参 照 して い た だ きた い .
第 6章
GPの 6.1
最 近 の研 究
自動的関数定義 自動的関数定義 とは
6.1.1
人 間 の プ ロ グ ラ マ が 作 成 した プ ロ グ ラム と,GPに ム との違 い を考 え てみ よ う(図6.1).プ
よ っ て生 成 され た プ ロ グ ラ
ロ グ ラマ に よ る プ ロ グ ラ ム は複 数 の サ ブ
ル ー チ ン に よ って 構成 され,そ の サ ブ ルー チ ンが プ ロ グ ラ ム の 実 行 に お い て 何 度 も呼 び 出 され て処 理 が 進 行 す る.こ れ に 対 して,GPに
よって生成 された プログ
ラ ム は,処 理 の始 め か ら終 わ りま で,1 つ の 流 れ に 沿 っ て実 行 す る よ うに 記 述 さ れ て い る . した が っ て,同 合 に はGPに
じル ー チ ン を実 行 す る よ う な プ ロ グ ラ ム を生 成 す る場
よ る プ ロ グ ラム の冗 長 性 は 高 くな る[Koza94c].
つ ま り,同 じ処 理
をす る部 分 が プ ロ グ ラ ム 中 に何 ヶ所 も存 在 す る こ とに な り,結 果 と して しば しば 探 索 効 率 の低 下 に つ なが る.1 つ の プ ロ グ ラム が 長 く な る た め,そ の 時 間 が 必 要 とな る か らで あ る[伊 庭94a].
の評 価 に多 大
さ ら に,各 個 体 の プ ロ グ ラ ム サ イ ズ
が 大 き くな り,集 団 を 保持 す る た め に 大 量 の リ ソー ス も必 要 と な る.自 動 的 関数 定 義 は こ う した 問 題 を解 決 す る た め に 導 入 され た.こ
の 手 法 は,GPの
システム
自 身 に よ っ て 適 応 的 ・自律 的 に 関 数 を定 義 す る拡 張 法 で あ る. ま た,自 動 的 関 数 化 手 法 に はGPの
探 索 原 理 の 根 拠 を示 す と い う見 方 もあ る.
図6.1
GAに
プロ グ ラムの 構成
は 探 索 原 理 の 根 拠 と して ス キ ー マ 定 理 と積 み 木 仮 説 が あ る[Goldberg89].
そ の 仮 説 で は,GAは
集 団 内 に ス キ ー マ(schema)と
呼 ば れ る最 適 解 の 部 分 解 を
保 持 し,交 叉 ・突 然 変 異 に よ って そ の ス キ ー マ を組 み 合 わ せ て 最 適 解 を構城 して い く と説 明 され て い る.GPに 考 え られ,実
お い て ス キ ー マ に相 当 す る もの は部 分 木 で あ る と
際 に部 分 木 が 有 効 な解 の 形 成 に役 立 って い る こ とが 実 験 的 に示 され
て い る[Rosca94].し
たが って,有 効 な 部 分 木 を 関数(サ
録 す る こ と に よ り,GAの
ブ ル ー チ ン)と
ス キ ー マ に 似 た 働 き を そ の 関 数 に期 待 で きる.
以 上 の こ とか ら,自 動 的 関 数 定 義 の 目的 と して次 の も のが あ げ られ る. 1.
探索 の 効率 化
2.
プ ロ グ ラ ム 生 成 手 法 と して の 洗 練 化
3.
探 索 の理論 的裏付 け
4.
GP全
体の スケー ルア ップ
本 節 で は,自 動 的 関 数 定 義 の研 究 例 をい くつ か 紹 介 し よ う.
して登
6.1.2
Automatically
Defined
サ ブ ル ー チ ンの 自 動 的 生 成 がGPの
Functions:ADF
機 能 と して 有 効 で あ る と 考 え られ,そ
い て 提 案 さ れ た の がAutomatically
Defined Function(ADF)で
第 1部 の 図3.9を 参 照 して い た だ き たい . これ がADFの の 遺 伝 子 コ ー ドで あ る.ADFを
用 い たGPをADFGPと
れ に基 づ
あ る[Koza94a].
た め に拡 張 さ れ たGP 呼 ぶ . 繰 り返 して説 明
す る と,こ の 図 で 通 常 の 関数 定義 は 右 側 の枝 に 書 か れ て い る.一 方,左 側 の枝 に はDEFUNを
用 い た 定 義 部 が あ り,こ こ で 定 義 さ れ た 関 数 を 関 数 名ADF0と
側 の 定 義 内 で 何 度 も呼 ぶ こ とが で き る.GPの
して 右
実 行 に 際 して,左 側 のADF0の
定
義 部 分 に も右 側 の 通 常 の 定 義 部 分 と同様 に交 叉 や 突 然 変異 を行 う.た だ し,ADF0 の定 義 部 分 はADF0の
定 義 部 分 ど う しで,右 側 の 定 義 部 分 は,右 側 の 定 義 部 分 ど
う しで 交 叉 を行 う と い う制 約 が あ る. ADFGPの
処 理 を 通 常 のGPの
初 期 集 団 の 発 生 を 行 う.こ
処 理 と 比 べ て み よ う(図6.2).ま
の と きGPで
で は 本 体 と な る 集 団bodyの
他 に,用
い るADFの
数 だ け の 集 団 を あ ら か じめ 設
え ば,n+1個
用 す る 場 合,n+1個
の 集 団 が 必 要 に な る(図6.2(a)).
(defun
のadf0,adf1,…,adfnをADFと
の 適 合 度 評 価 は次 の よ う に な る . 例 え ば, ADFの
ADF0(arg0
者 と も
は 1集 団 を 初 期 化 す る の に 対 し, ADFGP
定 す る 必 要 が あ る.例
ADFGPで
ず,両
して使
定 義 が,
arg1)
(+ arg0
(* 2 arg1)))
で あ り,本 体 の 定 義 が,
(+ 1 (ADF0
3 -1))
の と き を考 え よ う(こ の 定 義 はLISPで
書 か れ て い る).こ
以下 の ようにな る. 1:
(+ 1 (ADF0
2:
(+ 1 (+ arg0
3 -1))
(* 2 arg1)))
;ADF0を ;た
呼 び出す
だ しarg0=3,arg1=-1
の場 合,本
体 の 実行 は
(a)
(b)
(c)
図6.2
3:
(+ 1 (+ 3 (* 2 -1)))
4:
(+11)
5:
2
集団の発生
評価
生殖
GPとADFGP
一 般 に,body内
で 個 体iが
関 数adfjを
呼 び出 した 場 合,そ の対 応 す る集 団adfj
の個 体 iが 参 照 さ れ評 価 され る.そ の結 果 はbodyに
戻 り値 と して 反 映 され, body
で の 評 価 が続 け られ る(図6.2(b)). プ ロ グ ラ ム の 実 行 に よ っ て得 られ た 評 価 値 に基 づ い て世 代 交 代 が 行 わ れ る.前 述 の とお り,GPと
は異 な りADFGPで
は交 叉 は そ れ ぞ れ の 集 団 に対 して行 わ れ
る(図6.2(c)). ADFGPの
6.1.3
実 行 例 は 第 1部 の3.5.1節
Module
Acquisition:MA
AngelineとPollackに ear94]は,あ
よ っ て 提 案 さ れ たModule
Acquisition(MA)[Kinn-
ら か じめ 自 動 的 に 定 義 す る た め の 集 団 を 設 定 し な い と い う 点 でADF
と は 大 き く異 な る.MAの 1.
を 参 照 し て い た だ き た い.
MAで
特 徴 を ま と め る と 次 の よ う に な る.
用 い られ るサ ブ ル ー チ ン はモ ジ ュ ー ル と呼 ば れ,個
体 中の部分構 造
を ラ ン ダム に抽 出 して得 られ る. 2.
得 られ た モ ジ ュ ー ル は ラ イブ ラ リに保 存 され る.
3.
モ ジ ュー ル は新 た に 非 終 端 記 号(関 数)と
して 登 録 され,本 体 やADFの
定
義 内 で参 照 さ れ る. 4.
モ ジ ュ ー ル は グ ロ ー バ ル 関 数 と して扱 わ れ る . す な わ ち,あ
る個 体 か ら得
られ た モ ジ ュ ー ル は 全 個 体 か ら参 照 可 能 で あ る. 図6.3はMAに
お け る 集 団 中の あ る 個 体 を示 す. MAで
は 個 体 中 か らモ ジ ュ ー
ル を ラ ン ダム に抽 出 す る.図 の灰 色 部 分 が ラ ンダ ム に 抽 出 され た モ ジ ュ ー ル で あ る.モ ジ ュ ー ル の大 き さ は変 数(td)に
よ りあ らか じめ 定 義 され て い る(こ
の場
合 は 3).抽 出 さ れ た モ ジ ュ ー ル は ラ イ ブ ラ リに格 納 され 名 前 が 付 け られ る(こ の 場 合mod 1).図
に お い て得 られ た モ ジ ュ ー ルmod 1は 2つ の 引 数 を と る こ と に
な る. ラ イ ブ ラ リ 内 で の モ ジ ュ ー ル の 更 新(進
化)は 行 わ れず,1 つ の モ ジ ュ ー ル は
個 体 か ら参 照 され て い る限 り ラ イ ブ ラ リ内 に保 存 され る . ま た,ラ
イ ブ ラ リ に保
図6.3
モ ジュ ール獲 得
存 さ れ た段 階 で は モ ジ ュ ー ル を参 照 す る 個 体 は集 団 内 に 1つ だ け で あ る が,参 照 し た個 体 が よい 評 価 値 を得 る と生 殖 な どで 集 団 に広 が り,そ の数 は増 加 す る こ と に な る.
6.1.4
ADFとMAの
性 能比 較
Kinnearは4-parity問 near94].4-parity問
題 を 用 い てADFとMAの
性 能 比 較 実 験 を 行 っ た[Kin
題 と は 以 下 の ブ ー ル 関 数 を 入 出 力 ペ ア ー(24=16例)か
ら 同 定 す る 問 題 で あ る.
GPが
使 用 す る 非 終 端 記 号 はAND,OR,NAND,NORで
ADF(adf0,adf1)を 度)と
す る.パ
使 用 し,16の
あ る.こ
入 力 の う ち 正 し く 出 力 し た 数 を 評 価 値(適
ラ メ ー タ の 詳 細 は[Kinnear94,p.120]を
ADF, MA,さ
ら に単 純GP(以
の実験 で は 2つの
下Basicと
呼 ぶ)を
合
参 照 し て い た だ き た い.
比 較 した 実験 の 結 果 を図
6.4に 示 す.こ の グ ラ フ は世 代 ご との成 功確 率(す べ て の 例 に対 し正 し く出 力 す る ル ー ル を獲 得 す る確 率)で あ る.試 行 回数 は か っ こ内 の 数 字 と して 示 さ れ て い る. 例 え ば,ADFは80回
の試 行 中 で30世
代 に お い て約80%の
確 率 で正 解 の ル ー ル
を獲 得 して い る .図 か ら,MA,
Basicと 比 較 してADFが
非 常 に よい 結 果 で あ る
こ とが わ か る . つ ま り,ADFは
早 い 世 代 か ら正 解 に 近 い ル ー ル を生 成 して い る.
一 方
,MAはBasicと
ほ と ん ど 同 じ成 績 で あ る .
以 上 の 実 験 結 果 を も と に,Kinnearは 1.
2. 3.
ADFに
よる 成 績 の 向上 は,構
しか しなが ら,MAで MAは
以 下 の よ う に 結 論 付 け て い る.
造 的 規 則 性 を 生 成 す る こ とに よ る .
はそ の よ うな構 造 的規 則 性が 生 成(抽 出)さ れ な か った.
解 の 部 分 構 造 を 盲 目的 な 交 叉 か ら保 護 で きる.こ れ は あ る種 の 問 題
に対 して は有 効 で あ るが,4-parity問
図6.4
6.1.5
Collective
ADF
題 で は そ の 効 果 は現 れ な か っ た.
比 較 実 験[Kinnear
for subroutine
94]
acquisition:COAST
著 者 らは,サ ブ ル ーチ ンの 再 利 用 性 の 向 上,さ ら にGPの たCOASTの 目 的 は,よ
ロバ ス ト化 を 目的 と し
提 案 を行 って い る.こ れ まで に紹 介 した よ うに,自 動 的 関 数 化 手 法 の り洗 練 した プ ロ グ ラ ム の生 成,探 索 の効 率 化,あ る い は,GPの
理論的
展 開へ の一 手 法 で あ っ た.こ れ に対 して,著 者 らが提 案 したCOAST(COllecting Adf for Subroutine acquisiTion)は,サ GPの
ブ ル ー チ ン の 再 利 用 性 の 向 上 を通 じた
ロバ ス ト化 を 目 的 と して い る . こ こで の ロ バ ス トネ ス(頑 強 性)と
は,対
象 環 境 の 変 動 や不 安 定 性 に 対 してす ば や い 適 応 や安 定 し た結 果 を 残 す プ ロ グ ラ ム
の生 成 を意 味 す る.例 えば,GPを
ロボ ッ トの 自動 航 行 プ ロ グ ラム の作 成 に適 用 す
る こ と を 考 え て み る.こ の場 合,環
境(マ
ッ プ)が 変 化 す る よ うな と き に も,安
定 し た航 行 を行 う よ うな プ ロ グ ラム の 生 成 が 要 求 され る. COASTで
は, ADFに
基 づ い て サ ブ ル ー チ ンの 生 成 を行 い,そ
の結 果 を ラ イ
ブ ラ リ に 保 存 す る こ とに よ り,得 られ たサ ブ ル ー チ ンの 再 利 用 を進 め る と と もに ロバ ス ト化 を 実現 す る. こ の シ ス テ ム は次 の 2つ か ら構 成 さ れ る.1 つ はADFを も と に した サ ブ ル ー チ ン生 成 を行 う部 分,も
う 1つ は ラ イ ブ ラ リ と呼 ば れ る生 成
され た サ ブ ル ー チ ン を保 存 す る部 分 で あ る.図6.5を の 図 で,ラ
イ ブ ラ リ内 に格 納 され たadf
図6.5
(サ ブ ル ー チ ン)がSRで
あ る.
COAST
世 代 tの と きの 最 良 個 体 の 適 合 度 をfBest(t)と 合 度 は 小 さい もの ほ ど良 い とす る. 世代t+1に ADFと
参 照 して い た だ き たい.こ
し よ う.た だ し,以 下 で は適 お い て 以 下 の 条 件 を満 た す 場 合,
して得 られ たサ ブ ル ー チ ン を ラ イ ブ ラ リに 格 納 す る.
(6.2) 格 納 の 際 に は,得
られ た サ ブ ル ー チ ン を不 要 な サ ブ ル ー チ ン と置 き換 え る.置
き
換 え は各 サ ブ ル ー チ ンの 評 価 値 に基 づ い て 行 わ れ る.世 代 tで の 各 サ ブ ル ー チ ン
SRiの
評 価 値fitt(SRi)は,
(6.3) と して計 算 さ れ る.こ れ は サ ブル ー チ ンが ど の く らい 有 効 に使 用 さ れ た か の 指 標 と な っ て い る.つ
ま り,こ の 評 価 値 を用 い た 置 き換 え は,ほ
とん ど使 わ れ ず か つ
高 適 合 度 に寄 与 しな い サ ブ ル ー チ ンの 除 去 を 目 的 と して い る. で は,COASTを
ロ ボ ッ トナ ビゲ ー シ ョン(壁 つ た い 問 題)に 適 用 して そ の 挙
動 を見 て み よ う.壁 つ た い 問 題 とは,閉 の行 動(プ
じ られ た部 屋 の 壁 を沿 う よ う な ロ ボ ッ ト
ロ グ ラ ム)を 得 る とい う もの で あ る[Koza91].実
際の問題設定 は次の
よ う に な る(図6.6).壁
に沿 って タ イル が 置 い て あ る.ロ ボ ッ トの プ ロ グ ラ ム の
評 価 値(適 合 度)は,通
過 し た タ イル の 数 とす る.た だ し,壁 の 周 りに は 障 害 物
が お い て あ り,そ れ ら を う ま く避 け て壁 に 沿 う行 動 を獲 得 しな くて は な らな い.
図6.6
ロ ボ ッ トは,前
進,後
進,左
実 験 に使 用 したマ ップ
右 回 転 を 行 え る とす る .ま
た,8
つ の セ ン サ を持
ち,体 の周 り 8方 向 の 壁 まで の距 離 が 測 定 で き る.ロ ボ ッ トは一 定 量 のエ ネル ギ ー しか 持 っ て お らず,エ
ネ ル ギ ー が 切 れ た 時 点 で 停 止 す る.前 進,後 進 ,左 右 回転
の 動 作 を実 行 す る た び にエ ネ ル ギ ー が減 少 す る.し た が っ て,効 率 の 良 い 動 作 が 必 要 で あ る.こ の 実 験 で の 非 終 端 記 号,終 比 較 の た め,単 純GP, して,個 体 数M=700,最
ADFGPを
端 記 号 の設 定 は 次 の 表 の とお りで あ る.
同様 の 条 件 で実 験 した.ま た,パ
大 世 代 数G=60,お
ラメー タと
よ び トー ナ メ ン ト戦 略 を採 用 した.
こ こ で,
TurnRight,
MoveBackは
TurnLeft
は左 右45度
の 回 転 を行 う 関数, MoveForward,
1単 位 の 前 進 ・後 進 を行 う 関 数 で あ る. s0,…,s7は
サ を用 い て 壁 ま で の 距 離 を 測 定 す る 関 数 で あ る.各 半 時 計 周 り にs0か と り,a〓bの
ら順 に 配 置 さ れ て い る.ま と き c を,a>bの
セ ン サ は,ロ
た, IFLTEは
COASTと
も に 2(す
ボ ッ トの 正 面 か ら
引 数 を 4つ(a, b, c, d)
と き d を 実 行 す る.Prog2は
と り そ れ ぞ れ の 引 数 を 順 に 実 行 す る 関 数 で あ る.本
ADFGP,
それぞれのセ ン
引 数 を 2つ
実 験 で 使 用 し たADFの
な わ ちadf0,adf
1)で
あ り, COASTの
数 は ラ イブ
ラ リ サ イ ズ は 7 と し た.
こ こ で の 実 験 の 目 的 は ロバ ス ト性 の 検 証 で あ るた め,ロ
ボ ッ トを 5世 代 ご とに
2つ の 異 な る環 境 に 交 互 に置 い て 環 境 へ の適 応 性 を調 べ た. 図6.7は
世代 ご との 最 良個 体 の 適 合 度(そ
れ ぞ れ のGPに
を示 して い る.図 か らわ か る よ う に,ADFGPとCOASTで 得 て い る.特
にCOASTで
推移
は 非 常 に よい 結 果 を
は,環 境 が 切 り替 わ っ た と きの 評 価 値 の 悪 化 が 世 代 が
す す む につ れ 減 少 して い る.図6.8はCOASTに で あ る.こ の プ ロ グ ラ ム を実 際 に 図6.6の す.ロ
対 す る成 績)の
よ っ て 生 成 さ れ た プ ロ グ ラ ム例 マ ップ 上 で 実 行 した結 果 を 図6.9に 示
ボ ッ トは 壁 に 近 づ く と一 度 後 退 し,左 に回 転 し た後 前 進 し,再 び 壁 に近 づ
き後 進,回
転 を行 い,壁
との 接 触 を避 け て い る.こ の 一 連 の 行 動 は,格 納 さ れ た
サ ブ ル ー チ ン と して 実 現 され て い る.こ れ らの ロボ ッ トの動 きか らCOASTの
抽
出 し たサ ブ ル ー チ ン の有 効 性 が 理 解 で き るで あ ろ う. COASTの ま た,同
研 究 に 関 す る 詳 細 は[本 堂95][Hondo 様 の 手 法(Adaptive
Representation,
96]を 参 照 し て い た だ き た い. ARGP)がRoscaら
に よっ
て も提 案 され て い る[Rosca94]. ARGPは
終 端 記 号 を含 む部 分 木 を ボ トム ア ッ プ
に抽 出 す る もの で あ り,い くつ か の 例 題 に対 して そ の 有 効 性 が確 か め られ て い る. 本 節 で 述 べ た 自動 的 関 数 定 義 手 法(の 拡 張)は,今
後GPを
る た め に不 可 欠 の もの で あ る と考 え られ る.
図6.7
図6.8
COASTに
実験結果
よ っ て得 られ たプ ロ グラ ム
実 用 的 問 題 に適 用 す
図6.9
6.2
MDLに
6.2.1
MDL基
プ ロ グラム に よる ロボ ッ トの 軌 跡
基 づ くGP 準 に よる適 合 度評価
2つ の相 反 す る 目標 を同 時 に 追 求 した い こ とは よ くあ る.例 い と し よ う(図6.10).で
え ば,車
を買 い た
き る だ け高 級 な車 を安 い値 段 で買 い た い で あ ろ う(そ う
で な い 方 もお られ る か も しれ な いが,こ
こで は ご 了解 願 い た い).通
常 高 級 な車 は
高 い 値 段 で あ り,安 い 値 段 の 車 は高 級 で は な い.こ の 2つ の 目標 は 矛 盾 す る.こ の場 合,ど して,あ
こ か で 落 と しど こ ろ を決 め て 妥協 す る.結 局 自分 の財 布 の 中 身 と相 談 る程 度 高 級 感 の あ る 車 を適 当 な値 段 で 買 う こ と に な る.
同 じ問題 は学 習 シ ス テ ム を実現 す る 際 に も生 じる.学 習 に は訓 練 例 とテ ス ト例 が 与 え られ る.訓 練 例 だ け に正 解 す る よ うに して い る と,テ ス ト例 で の成 績 が 悪 くな る こ とが あ る.つ ま り,訓 練 例 の特 殊 さ,ノ イ ズ な ど に過 敏 に反 応 す る た め,テ ス トに対 して 要 求 さ れ る 汎 化 能 力 が 失 わ れ る.こ う した現 象 を過 学 習(overfitting, overgeneralization)と
呼 ぶ.こ の場 合 の矛 盾 す る 目標 とは,訓 練 例 で の 成 績 と汎
化 能力 で あ る. GPで
も 同様 で あ る.パ
ラ メ ー タ設 定 が 適 当 で な い と,適 合 度 が よ くな ら ない
一 方 で 木 が 異 常 な ほ ど大 き くな って 探 索 が 進 ま な くな る.こ れ はGPで を制 御 す る こ とが で き ない こ とに よ る.つ 同時 に探 索 す る こ とが 難 しい の で あ る.
木 の成長
ま り,適 合 度 と木 構造 の 2つ の 目標 を
相反 す る 目標 の追 求
図6.10
MDLに criterion)」 (Minimum
基 づ く適 合 度 は 「単 純 な も の ほ ど よ い と い う 一 般 的 な 原 則(simplicity を も と に し て い る.こ Description
rion), MML(Minimum
の 原 理 は 統 計 学 者 ら に 長 年 研 究 さ れ , MDL
Length), Message
AIC(Akaike Length)な
Information
Crite-
ど の 基 準 が 提 案 さ れ て い る.
ア ル ゴ リズ ム の複 雑 さ は あ る 言 語 で の 最 小 記 述 長 で 定 義 され る.有 名 な 「オ ッ カ ム の 剃 刀 」 の原 則 1はMDLに
よっ て形 式 化 で き る.つ ま り,デ ー タが 与 え られ
1必 要 な しに実在 を多 数化 して はな らない とい う原 則
.思 考 節約 の 原 理 ともい う.
た と き に,次 の 和 を 最小 にす る モ デ ル を選 択 す る.
(6.4) 右 辺 の第 1項 は こ の モ デ ル をデ ー タ の予 測 に用 い た場 合 の デ ー タの 記 述 長 を 示 し て い る.上 の和 は誤 差(第
1項)と
モ デ ル の 複 雑 さ(第
2項)の
間 の トレー ドオ
フ を評 価 した 値 に な って い る.こ の 値 を 最小 にす るモ デ ル は,誤 差 を小 さ くす る 一方 で
,パ ラ メ ー タ の数 を最 小 にす る.よ
さ れ る.い
ま確 率 変 数 Z の観 測 値 をziと
う.こ の と きMDLの
り正 確 に は,MDLは
次 の ように定義
す る. Z は確 率 密 度 関 数pz(θ)に
従
値 は 次 の よ う に定 義 され る.
(6.5) こ こ で θ は θ の 最 尤 推 定 値 で あ る.ま ら に,k
た,p(z│θ)はpz(θ)の
は モ デ ル に お け る パ ラ メ ー タ数 で あ り,N
第 1項 は,観
は デ ー タ の 個 数 で あ る.上
測 値 を コ ー ド化 す る の に 必 要 な ビ ッ ト数 で あ る.第
パ ラ メ ー タ を コ ー ド化 す る の に 必 要 な ビ ッ ト数 で あ る.こ に す る モ デ ル は,観
る.し
推 定 値 で あ る.さ
最小
測 デ ー タ を も っ と も 効 率 よ く コ ー ド化 す る モ デ ル と な っ て い
たが っ て,過 学 習 の 問 題 を 的確 に避 け る こ とが で き る.
て 一 致 した 見 解 は 得 ら れ て い な い,こ [Rissanen87]に
の 詳 細 は[Konagaya93]を
決 定 木 をGPで
れ ら の モ デ ル 基 準 の 詳 細 や 比 較 の議 論 は
探 索 に導 入 され て い る.例 え ば,遺 伝 子 列 の 分
類 問 題 に お い て,小 長 谷 らはMDL基
GPに
の優 劣 に関 し
述 べ ら れ て い る.
複 雑 さに基 づ く適 合 度 はGAの
6.2.2
2項 は モ デ ル の
れ ゆ え にMDLを
こ れ まで に い くつ か の モ デ ル 選 択 基 準 が 提 案 され て い る が,そ
た.そ
の
準 を適 合 度 に用 い てGAの
過 学 習 を 回避 し
参 照 し て い た だ き た い.
よる決定木 の探索 進 化 させ る実 験 を用 い てMDL基
み よ う.決 定 木 はQuinlanに
準 に よる適 合 度 の有 効 性 を見 て
よ り提 案 され た 概 念 学 習 の 手 法 で あ る[Quinlan83].
効 率 的 に 決 定 木 を 生 成 す る こ と は 容 易 で は な く,多
く の 研 究 が な さ れ て い る.こ
こ で は 6 マ ル チ プ レ ク サ の 学 習 に つ い て 説 明 す る.a0,a1を ド レ ス,d0,d1,d2,d3を
デ ー タ と す る と,学
マ ル チ プ レクサ の ア
習 の 目 的 とな る ブ ー ル 関 数 は次 の よ
う に な る. 出 力=a0a1
図6.11は
え ば,図
0 で あ り,か
の 決 定 木 で 一 番 左 の 部 分 は,変 つd0が
KozaはGPに
か しな が ら, Kozaの
morning
た め のMDLに
problem)を
示 して
基 づ く適 合 度 を導 入 す る.
よ る適 合 度 は 次 の よ うに 定義 され る
MDL=誤
決 定 木 のMDL値
あ り,
手 法 で は効 率 的 に決 定 木 を探 索 す る こ と
が 困 難 で あ っ た.こ の 欠 点 を克 服 す る た め に,MDLに
右 辺 の 第 1項 は式(6.4)の
0(偽)で
0 で あ る と き に 出 力 が 0 で あ る こ と を 示 す.
よ る 決 定 木 の 進 化 実 験(Saturday
い る[Koza90].し
数a0が
6マ ル チプ レクサ を表 す決 定木 の例
図6.11
一 般 にGPの
(6.6)
d1+a0a1d2+a0a1d3
6マ ル チ プ レ クサ の 決 定 木 に よ る表 現 で あ る.決 定 木 は 分 類 規 則 を表
現 し て い る.例 か つa1が
d0+a0a1
差 の 記 述 長+木 第 1項 に相 当 す る.第
.
の記述長
(6.7)
2項 は モ デ ル の 記 述 長 で あ る.
は 次 の よ う に 計 算 さ れ る[Quinlan89].図6.12に
ある決定木
を考 え よ う.横 型 探 索 を 用 い る と,こ の 木 は次 の文 字 列 で表 現 さ れ る. 1d01a1000001
こ の決 定 木 で は 左(右)の
枝 は常 に属 性 テ ス トにお い て0(1)を
(6.8) 表 現 す る の で,
これ らの 属 性 値 を省 略 す る こ とが で き る.こ の 文 字 列 をバ イナ リ表 現 で コ ー ド化
す る た め に は,
(6.9) が 必 要 で あ る.と (0or 1)に
い う の は 属 性 ノ ー ド(d0,a1)に
はlog22ビ
ッ トが 必 要 で あ る か ら で あ る.さ
れ ら の 表 示 に 必 要 と な る.例
外(す
な わ ち 分 類 誤 り)を
ら の 位 置 を 表 示 し な くて は な ら な い.こ 行 う.図6.12の
木 に 対 し て は 表6.1に
を 左 か らX,Y,Zと
し よ う.例
の 要 素 が 正 し く分 類 さ れ る(つ の 8個, Z の20個)は
ッ ト,終 端 ノ ー ド
ら に,2+3ビ
ッ トが こ
コ ー ド化 す る た め に,そ
れ
の た め に分 類 され た部 分 集 合 へ の 分 割 を 示 さ れ る よ う な 3 つ の 部 分 木 が あ る.こ
え ば, X は 最 も左 の 葉(つ
に 分 類 さ れ る 要 素 の 部 分 木 で あ る.X
個,Y
はlog26ビ
ま りd0=0∧a1=0)
に 属 す る 要 素 の 数 は16で
ま り 0 で あ る).誤
れ
あ る. X の12個
っ て 分 類 さ れ た 要 素(X
の 4
次 の よ う に コ ー ド化 さ れ る.
(6.10) ここで
(6.11) で あ る.L(n,k,b)は だ し,記
長 さ n の ビ ッ ト文 字 列 を伝 達 す る た め の 全 コ ス トで あ る.た
号 の う ち k 個 が 1 で あ り b は k に 対 す る 上 限 で あ る.こ
の 決 定 木 に 対 す る 全 コ ス トは78.62と 以 上 の こ と か ら,一
う し て 図6.12
な る.
般 に f 個 の 属 性 ノ ー ド を も ち,か
つ t個 の 終 端 ノ ー ド を 有
す る決 定 木 に対 す る コー ド長 は 次 の よ うに な る.
TsとFsはGPの
木 の記述長
(6.12)
誤差 の記述長
(6.13)
終 端 記 号 と関 数 記 号 の 数 で あ る.式(6.13)で
ドにか け て 計 算 さ れ る.nxは る.ωxは
和 は全 終 端 ノー
x に よ り表 され る部 分 集 合 に 属 す る 要 素 の 数 で あ
x の う ち で 誤 っ て分 類 さ れ た 要 素 の 数 で あ る.
決 定木 の コー ド化
図6.12
表6.1
例 外 の コ ー ド化 の ため の部 分集 合
こ れ らの 準 備 を も と に して,GPに を 説 明 し よ う.表6.2は 値 は 正(負)例,つ で あ る.以
下 で は,決
が 0(つ ま り偽)の 意 味 す る.例 「も しa0が
よ る 6マ ル チ プ レ ク サ の 決 定 木 の 進 化 実験
こ の た め の パ ラ メ ー タ で あ る.終 ま り真(偽)値
を表 す.非
端 記 号 に お け る 1(0)
終 端 記 号 は 属 性 を テ ス トす る 関 数
定 木 の 表 現 と し て S式 を 用 い る.(XYZ)と と き Y を,X
が 1(つ ま り真)の
え ば(a0(d1(0)(1))(1))は,次 0 で あ れ ば,d1が
と き Z を テ ス トす る こ と を
の こ と を 表 現 す る 決 定 木 で あ る.
0 な ら 0,さ も な け れ ば 1 とす る.ま
あ れ ば 1 とす る.」
集団数 交叉確 率 突然変異率 終端記号 非終端記号 表6.2
い う S式 は X
100 0.6 0.0333 {0,1} {a0,a1,d0,d1,d2,d3} GPパ
ラメ ー タ
たa0が
1で
図6.13は MDL基
実 験 の 結 果 を示 す.こ
こ に は通 常 の適 合 度(判 別 の 誤 り)の 場 合(a),
準 を適 合 度 と した場 合(b),そ れ ぞ れ につ い てGPを
と の正 解 率 を示 す.MDLの
適 合 度 を用 い る と40世
しか しな が ら,通 常 の適 合 度 で は40世 す ぎ な か っ た.図6.14に
(a)
MDLに
適 合 度 で40世
な い)の 場 合
よる適 合 度 の場 合 図6.13
MDLの
を世 代 ご と に示 す.図6.13(a)
対 して 十 分 な選 択 圧 を与 え て い な い こ とが わ か る .
通 常 の適 合 度(MDLで
(b)
代 で 正 しい 決 定 木 を獲 得 した .
代 に お け る最 良個 体 の正 解 率 は78.12%に
は 図6.13(b)のMDL値
か ら,通 常 の適 合 度 はGPに
実 行 した 際 の 世 代 ご
実験結果
代 目 に獲 得 さ れ た 木 構 造 は 次 の よ う な もの で あ る .
(A0 (A1 (D0 (A1 (D0 (0) (0)) (D2 (0) (A0 (1) (1)))) (1)) (D2 (0) (1))) (A1 (D1 (0) (1)) (D3 (0) (1))))
図6.14
世代 ごとのMDL値
こ れ に対 して,通 常 の 適 合 度 に お い て の40世 構 造 を以 下 に 示 す.
代 で の典 型 的 な(最 良個 体 の)木
こ の 2つ の 木 を比 較 す る と,通 常 の(MDLで
な い)適
合 度 関数 は決 定 木 の成 長
を 的 確 に 制 御 して い な い こ とが わ か る で あ ろ う.こ れ に 対 して ,MDLの で は 決 定 木 の 学 習 に成 功 し た.し た が って,MDLに
適合 度
基 づ く適 合 度 関 数 はGPの
探 索 に 有 効 で あ る.
MDL基
6.2.3 MDLの
準 に よ るGPの
考 え に も とつ くGPの
適 合度 計 算
木 探 索 の 制 御 に 関 す る研 究 は ,最 近 盛 ん に議 論
さ れ て い る. [Kinnear93]は
木 の サ イ ズ を 適 合 度 の 評 価 に 用 い る こ と を 提 案 し た.こ
れは生
の 適 合 度 に木 の サ イズ を加 え た もの を木 の 評 価 値 とす る もの で あ る.こ れ はMDL 的 な考 え を適 合 度 に 加 え た もの と も考 え られ る(2.2.5節
のparsimony-factor
を 参 照).
MDL基 が,同
準 をGPに
適 用 す れ ば余 分 な構 造 を可 能 な 限 り制 限 す る こ とが で き る
時 に 早 熟 な 収 束(遺
伝 子 の 多様 性 が 欠 如 す る た め に探 索 が 局 所 解 に お ち
い る こ と)を 回 避 し な くて は な ら な い.[Zhang95]は 述 長(複
世 代 ご と に誤 差 項 と木 の 記
雑 さ)の 重 み を動 的 に 変 更 す る手 法 を提 案 した.こ
こ でEi(g)とCi(g)
をそ れ ぞ れ 世 代 g で の i 番 目 の個 体 の 誤 差 と複 雑 さ とす る,0〓Ei(g)〓1と Ci(g)〓0を
仮 定 して, GPの
た め の g世 代 目の 第 i個 体 の適 合 度 を次 の よ うに
定義 す る.
(6.14) α(g)は オ ッカ ム係 数 と呼 ば れ,世 代 ご とに 以 下 の よ う に調 整 す る.
(6.15)
た だ し,N
は 訓 練 例 の 数 で あ る. Ebestは 世代g-1で
小 のMDL値)を
の 最 良 適 合 度(つ
有 す る個 体 の 誤 差 値 で あ る. Cbest(g)は
ま り最
ひ とつ前 の 世 代 で 評 価
され た世 代 g で の 最 良 個 体 の プ ロ グ ラム の サ イズ で あ る.ユ ー ザ の 定 義 す る 定 数 εは,最 終 的 に解 に許 容 され る訓 練 例 に対 す る 最 大 誤 差 を規 定 す る.Zhangら σ-π
ネ ッ トをGPで
学 習 す る実 験 を行 っ た が,そ の 結 果 はMDL基
は
準 の有 効 性
を裏 付 け る もの で あ っ た. MDL基
準 がGPで
常 に定 義 で き る と は限 らな い. MDLが
有 効 にGPの
木の
探 索 を 制 御 す る た め に は,一 般 に次 の 2条 件 が 満 た され て い な くて は な ら な い, 1.木 の大 き さ に依 存 す る成 績 木 が 大 き くな れ ば な る ほ どそ の 成 績(適
合 度)が
良 くな る.
2.分 割 可 能 性 部 分 木 の 成 績 が そ れ 目体 で定 義 可 能 で あ る. こ れ ら に つ い て の 詳 細 は[Iba94]を テ ム 同 定 を行 うGPシ
参 照 して い た だ きた い.ま
ス テ ムSTROGANOFFに
を 採 用 し て そ の 有 効 性 を 確 認 し て い る(5.3.3節
6.3 6.3.1
た,筆 者 らは シ ス
お い てMDLに
基 づ く適 合 度
参 照).
型付 きGP デ ー タ型 とは
人 間 の思 考 作 用 の 最 も基 本 的 な もの に,抽 象 化 と呼 ば れ る もの が あ る.こ れ は 考 察 し よ う とす る対 象 の 共 通 の性 質 を取 り出 して,対 象 を把 握 し よ う とす る思 考 作 用 の こ とで あ る.抽 象 化 に よっ て 取 り出 され る性 質,あ
る い は性 質 に付 け た 名
前 を 型 と い う(図6.15).
型 は何 ら か の 形 で プ ロ グ ラ ミン グ言 語 に取 り入 れ られ て い る.こ れ らの 型 の 考 え 方 に は,計 算 機 の 記 憶 上 に お け る デ ー タの 具 体 的 な表 現 形 態 を示 す 情 報 で あ る とす る もの(整
数 型,実 数 型,関
数 型 な ど)か
な 概 念 に ま で 及 ぶ広 い もの が あ る.
ら,記 号 論 理 にお け る よ り抽 象 的
(a)人
(b)プ
間の 血液 型
ログ ラム の型
型 の い ろい ろ
図6.15
型 をプ ロ グ ラ ミ ング言 語 の 機 能 と して実現 す る こ とには,次 の よ うな利 点 が あ る. 1.型 を プ ロ グ ラ ム に 明 示 す る こ と に よ っ て,プ
ロ グ ラム の翻 訳 時 に あ らか じ
め プ ロ グ ラ ム の 論 理 的 エ ラ ー を検 出 で き る. 2.型 を 指 定 す る こ と に よ り,読
み や す い プ ロ グ ラ ム を 作 る こ と が で き る.
初 期 の プ ロ グ ラ ム言 語 に お け る 型 は,デ ー タの 実規 法 や便 用 法 を プ ロ グ ラ ム に 記 述 して,言
語 処 理 系(特
す る た め の も の で あ っ た.し
に,コ
ン パ イ ラ)に
か し,新
デ ー タ を 効 率 よ く扱 う 方 法 を 指 示
しい プ ロ グ ラ ム 言 語 で は,プ
ロ グ ラ ム作 成
者 の抽 象 化 の思 考 作 用 を支 援 す る た め の デ ー タ型 が提 案 され て い る.
以 上 の 記 述 は[井 田88][Cleaveland86]を
も と に し た.型
に つ い て 詳 し く 知 りた
い 読 者 は こ れ らの 文 献 を参 照 して い た だ きた い. 型 に 基 づ くGP(Strongly
Typed
案 され た.デ ー タ型 をGPに る こ とでGPの
GP,以
下STGP)はMontanaに
よ り提
導 入す る利 点 は,生 成 す る プ ロ グ ラ ム に制 約 を設 け
探 索 効 率 を向 上 させ る こ とで あ る.例
ラ ム を生 成 しな い よ うに,GPオ
え ば,型 の 合 わ な い プ ロ グ
ペ レー タの 適 用 を制 限 す る.こ の 方 法 は 前 述 し
た構 造 保 存 オ ペ レ ー タの 考 え方 に もつ なが る もの で あ る.以 下 で は[Montana95] を も と に し て,STGPに
GPに
6.3.2 STGPに
つ い て 説 明 す る.
お ける型
お い て は 次 の よ う に型 を導 入す る.
1.定 数 にお け る型 例:2.1や
π はFLOAT型
で あ る.
2.変 数 にお け る型 例:変
数V1はVECTOR-3型(3
型(2×2行
列 型)で
次 元 ベ ク トル を 表 す 型), M2はMATRIX-2-2
あ る.
3.関 数 にお け る型 各 関数 は 引 数 と返 す値 に特 定 の 型 を記 述 す る.例 えば,表6.3に
型 つ きの 関
数 の例 を 示 す. STGPで
生 成 され る木 は以 下 の 制 限 を満 た す もの に な る.
1.木 の根(root)に
あ た る 関数(非 終 端 記 号)の 返 す 型 は 問題 で 要 求 され る 型
と す る.
2.根 以 外 の ノー ドに あ た る記 号 の 型 は,そ の親 が 引 数 と して要 求 す る型 で あ る. 例 え ば,次 の よ うな終 端 記 号 と非終 端 記 号 を考 え よ う.非 終 端 記 号 の 型 は 表6.3 に示 し た もの で あ る.
表6.3
V1, V2の
型 はVECTOR-3,
る 型 はVECTOR-3と す.図6.17は
GPの
V3の
す る.図6.16に
関数 にお け る型の 例
型 はVECTOR-2と
す る.ま
は こ の 場 合 にGPで
生 成 で き な い 木 の 例 で あ る.図6.17の
の 型 が ま ち が っ て い る.右
た,問
題 で 要 求 され
生 成 で き る 木 の 例 を示
左 の 例 は根 の 関 数 の 返 す 値
の 例 で は 3つ の 位 置 で 引 数 の 型 と 関 数 が 返 す 型 と が 一
致 し な い.
図6.16
生成可能な木 の例
図6.17
で は い か に してSTGPで 法(full_method,
STGPに
生成不可能 な木の例
木 を生 成 す る の か を考 え よ う.ま ず, GPの
grow_method)を
思 い 出 し て ほ しい(第
木 の生 成
1部 図2.6を
参 照).
お い て は 次 の 2つ の制 約 を実 現 しな くて は な らな い.
1.あ る ノ ー ドで 選 ば れ る 記 号 は 適 切 な 型 を 返 さ な く て は な ら な い.つ
ま り,根
の ノ ー ドに な る 記 号 の 型 は 問 題 で 要 求 され る型 で あ り,根 以 外 の ノー ドに な る記 号 の 型 は そ の 親 の ノー ドの 関 数(非 終 端)記
号 の 引 数 の 型 と一 致 し
な く て は な ら な い.
2.木 の 生 成 時 に 再 帰 的 に記 号 を選 択 す る場 合,有
効 で な い部 分 木 を生 成 す る
よ う な 記 号 は選 択 で きな い. 例 え ば,前
の 例 に 対 し て 深 さ 2 の 木 をfull_methodで
る 2.根 の 型 はVECTOR-3で る.図
あ っ た.図6.16の
木 を 生 成 す る 過 程 は次 の よ うに な
に は 各 ノ ー ドの 右 肩 に 1 か ら 7 ま で の 番 号 が 付 さ れ て い る.1
SCALAR-VEC-MULT-3,VECTOR-ADD-3が を 選 ぶ.2 PRODUCT-2 ぶ.5
生 成 す る こ と を考 え て み
選 べ る の で,こ
の 場 合SCALAR-MULT-3
の 場 所 に はDOT-PRODUCT-2かDOT-PRODUCT-3が を 選 ん で い る.3
選 べ る が, DOT-
と 4 の 場 所 に はV3 の み が 可 能 で あ る の で そ れ を 選
の 場 所 に はVECTOR-ADD-3の
み が 可 能 で あ る. SCALAR-VEC-MULT-3を
根 と す る 深 さ 1 の 木 は 存 在 し な い こ と に 注 意 し て い た だ き た い.し SCALAR-VEC-HULT-3は 選 べ る の で,6
一 般 にSTGPの
2便 宜上
5の 場 所 に は 選 択 で き な い.6,7に
に はV1が,7
の場所 には
に はV2が
た が っ て,
お い て はV1かV2が
選 ば れ て い る.
木 を生 成 す る に は 次 の 原 則 に 従 えば よい .
,終 端 記 号 の みの 木 の深 さを 0とす る.
な ど の 木 の 深 さ は 1で あ る.
「あ る非 終 端 記 号 が 最 大 木 長 iの 木 の根 に な り うる. ⇔
そ の 引 数 の 型 が す べ て最 大 木 長i-1の
部 分 木 で 生 成 可 能 で あ る.」
した が って,あ る記号(の 型)を 根 と して深 さ iの部 分 木 が 生成 可 能 か ど うか を判 断 す る 必 要 が あ る.こ を 用 意 す る.例
の た め に 深 さ iに 応 じた 可 能 な 型 の 配 列(table_entry(i))
え ば,上
の 例 で は,
table_entry(0)={VECTOR-2,VECTOR-3},
(6.16)
table_entry(i)={VECTOR-2,VECTOR-3,FLOAT}
と な る.こ
の 表 か ら,深
(つ ま りFLOAT型
さ0に
に も つSCALAR-VEC-MULT-3は こ のtable-entry配
Stepl
っ て,5
可 能 な 型 で な い こ とが わ か る の 場 所 で はFLOATを
引数の型
選 べ な い の で あ る. 列 は 次 の よ う に 計 算 す る.
table-entry(0)に
Step2iを
お い て はFLOATが
の 変 数 は 存 在 し な い).よ
(6.17)
(i〓1).
は 終 端 記 号 の 型 を 保 持 す る.
1か ら 目 的 とす る最 大 木 長 ま で動 か して次 を実 行 す る.
Step2.1
grow-ethodの
場 合 はtable
entry(i-1)の
要 素 をtable_entry(i)
に 加 え る.
Step2.2す
べ て の非 終 端 記 号(f)に
Step2.2.1も
対 して 以 下 を実 行 す る.
し も f の 引 数 の 型 が す べ てtable_entry(i-1)に
て い れ ば f の 型 をtable_entry(i)に 前 の 例 で はtable_entry配
列 はgrow,fullの
入 っ
加 え る.
い ず れ の 生 成 法 で も 同 一 に な っ た が,
一 般 に は異 な る場 合 もあ る . STGPに
お け る遺 伝 的 オペ レ ー タは 型 の 一 貫 性 を壊 さな い よ う に適 応 さ れ る.
突 然 変 異 の 場 合,部 分 木 の 生 成 に は 上 で 述 べ た 木 の 生 成 過 程 と同 一 の 制 約 を実 現 す る.例 え ば,図6.18にSTGPで
の 突 然 変 異 の 例 を 示 した.も
し も,型 の 一 貫
性 を保 つ よ うに部 分 木 が 生 成 で きな い 場 合 に は,突 然 変 異 は行 わ れ ない,さ 交 叉 は 次 の よ うに 実 現 す る.
らに,
図6.18
STGPに
お け る突 然 変異 の例
1.第 1の 親 か ら の 交 叉 点 は ラ ン ダ ム に 選 択 す る.
2.第 2の 親 の 交 叉 点 は,第
1の 親 の 交 叉 点 と同 じ型 を返 す 部 分 木 か ら選 ぶ.
3.こ の よ う な交 叉 点 が 存 在 しな い場 合 に は,交 叉 は 行 わ れ な い. 図6.19に
はSTGPで
の 交 叉 の 例 を 示 す.
型 の 考 え 方 で 重 要 な も の と し て,汎
用 型(generic
type)と
こ れ は よ り一 般 的 に 使 え る 広 い 範 囲 の 型 の こ と で あ る.例
え ば,整
に 対 し て 平 方 を 計 算 す る 関 数 を 記 述 す る 場 合 を 考 え よ う.こ とREALSQUAREと
い う 2 つ の 関 数 を 用 意 す る 代 わ り に,整
数 も受 け 入 れ る 関 数SQUAREを は 有 効 で あ る.表6.4に
定 義 し た く な る で あ ろ う,こ
は 汎 用 型 の 関 数 の 例 を 示 す.こ
t は 任 意 の デ ー タ 型 を 意 味 す る.例 と き 関 数 が 返 す 型 はFLOATと とVECTOR-2の
STGPは
と き,こ
え ば,関
な る.ま
数 と実 数 の 両 方
の と きINITSQUARE
数 と実 数 の ど ち ら の引 の よ う な場 合 に汎 用 型
こ でi,jは
数CARの
任 意 の 自然 数,
引 数 がLIST-OF-FLOATの
た, MAT-VEC-MULTの
の 関 数 の 返 す 型 はVECTOR-3で
い う もの が あ る.
引 数 の 型 がMAT-3-2 あ る.汎
用 型 に対 しての
前 述 の もの と同様 に展 開 され る.
こ う して導 入 した 型 に よ りGPの こ とが 期 待 され る.Montanaは を 示 して い る.そ
探 索 空 間が 制 限 され,探 索 の 効 率 が 向 上 す る
さ ま ざ ま な 実験 結 果 を報 告 し, STGPの
の 詳 細 は[Montana95]を
参 照 して い た だ きた い 。
有 効性
STGPに
図6.19
表6.4
お ける交 叉 の例
汎用型の例
並列GP
6.4
並列GA
6.4.1
並 列 計 算 機 上 で 進 化 論 的 な計 算 を 実 現 す る試 み は 古 くか ら な され て い る.GA に お い て は,す で に 第 2回 の 国 際 会 議(1987年)か 文 が 登 場 す る[Cohoon87].そ GAの
の理 由 はGAが
ら並 列GAに
関 す る研 究 論
並 列 計 算 に 向 い て い る こ とに あ る.
操 作 の う ち,初 期 化 と適 合 度 計 算 は並 列 に実 行 す る こ とが で き る.さ ら に,
世代 交代 も部分 的 に並列化が 可能で ある. Taneseは
分 散GA(Distributed
GA,以
下DGA)の
モ デ ル を提 案 し た
[Tanese89].DGAに と呼 ぶ.DGAで け,各
対 し て 通 常 の(並 は,集
列 で な い)GAをCGA(Canonical
団 全 体 を い くつ か の 部 分 集 団(subpopulation)に
部 分 集 団 を 1つ の プ ロ セ ッ サ に 割 り当 て る.部
サ 上 で 独 立 にCGAが
実 行 さ れ る.あ
こ れ を 移 民(migration)と i と す る.移
と 置 き 換 え る.移 さ せ る)場
る 時 間 間 隔 で プ ロ セ ッ サ 間 の 通 信 が 起 こ る.
呼 び,移
民 の 起 こ る 間 隔(migration
れ らが 別 の 部 分 集 団 に 送 ら れ る.一
の 個 体 を 別 の 集 団 か ら 受 け 取 り,そ
方,送
TaneseはNCUBE(64個
model)と
rate,移
民 率)の
られ た個 体 と 同数
プ ロ セ ッサ の 世 代 を一 致
同 期 に 行 わ れ る 場 合 が あ る.DGAは,集
推 で 島 モ デ ル(island
interval)を
れ を あ る基 準 に従 っ て 現 在 の 部 分 集 団 の 個 体
民 の 操 作 は 同 期 を と っ て 行 わ れ る(各
合 と,非
分
分 集 団 に対 して は各 プ ロセ ッ
民 の 際 に は 部 分 集 団 か ら あ る 割 合(γ,migration
個 体 が 選 択 さ れ,そ
GA)
団 遺 伝 学 か ら の類
も 呼 ば れ る.
の プ ロセ ッサ か ら な る 6ハ イパ ー キ ュ ー ブ)上 で 線
形 に近 い ス ピ ー ドア ップ を実 現 した.こ れ は実 行 時 間が 速 くな る度 合 いが プ ロ セ ッ サ 数 に 関 して 線 形 とな る と い う も の で あ る(図6.20).こ
の 理 由 は,時
間がか か
る適 合 度 計 算 を別 々 の プ ロ セ ッサ で 実 行 で きる か らで あ る.
図6.20
また,今 で はTanese関
線 形 の ス ピ ー ドア ッ プ
数 と して知 られ て い る 問 題(Walsh多
実 験 にお い て 以 下 の こ と を確 か め た.
項 式)の
最適化
1.一 般 に,DGAはCGAよ
り成 績 が 良 い 個 体 を 見 つ け る.
2.平 均 して 世 代 あ た りに約1%が はCGAに
移 民 す る と きのDGAの
成 績(平 均 適 合 度)
匹 敵 す る もの で あ る.
[Belding95]は,上 を 確 か め た.彼
の 現 象 が よ り一 般 的 な 関 数 の 最 適 化 に 関 して も 成 立 す る こ と が 実 験 し た 関 数 は,ロ
ば れ る も の で あ る.こ
の 関 数 で は,適
イ ヤ ル ロ ー ド(Royal
Road)関
合 度 を 積 み 木(building
数 と呼
block)に
対 し
て そ の オ ー ダ の 順 に 応 じ て 割 り当 て る.
DGAがCGAに
比 べ て優 れ て い る の は 次 の 点 で あ る.
1.部 分 集 団 の サ イズ が 小 さい た め 実 行 が 速 い. 2.各 集 団 が 別 々 に部 分 解 を探 索 す る た め大 域 解 へ の 到 達 が 早 い. 3.移 民 に よ り新 しい 積 み 木 を常 に 補 充 で き る. 4.集 団 の 多 様 性 が 部 分 集 団 を 越 え て 保 持 さ れ る た め,早 convergence)が DGAの
回 避 さ れ る.
他 に も,計
算 機 の ア ー キ テ ク チ ャ に 応 じ て さ ま ざ ま な 並 列GAの
ル が 提 案 さ れ て い る.例
え ば,FG(Fine
(Massively
GA)と
Parallel
配 置 さ れ,選
GPを
Grained)-ア
団 の各個体 が格子上 に
択 や 交 叉 の 操 作 は そ の 格 子 の 近 傍 に 制 限 さ れ る.こ
並 列GPの
モデ
ル ゴ リ ズ ム やMPGA
呼 ば れ る モ デ ル で は,集
[spiessens91][M〓hlenbein89]を
6.4.2
熟 な 収 束(premature
れ ら につ い て は
参 照 し て い た だ き た い.
実装例
並 列 化 す る 主 な 方 法 は 次 の 3 つ で あ る[Koza92,ch.22].
1.適 合 度 評 価 の 並 列 化 通 常GPの
適 合 度 評 価 は時 間 が か か る の で,そ の 評 価 の う ち並 列 に 実行 で
きる もの を並 列 化 す る もの で あ る.つ ま り,第 j番 目 の 適 合 度計 算 用 の デー タ処 理 を j番 目 の プ ロ セ ッサ に 割 り当 て る.例 evaluate_fitness_of_individual内
for (j=0;
j
え ば,sgpc1.1で
の
j++)
{
load_terminal_set_values(pop,p,&(fitness_cases_table[P][j]));
は,関 数
の部 分 で,ル
ー プ内 の 実行 を別 々 の プ ロ セ ッサ で 行 う.
2.個 体 レベ ル で の 並 列 化 各 個 体 の 評 価 を 別 々 の プ ロ セ ッ サ に 割 り 当 て る も の.sgpc1.1で
の 部 分 で,
は,関
数
の 実 行 を別 々の プ ロセ ッサ で
行 う.
3.実 行 の 並 列 化 プ ロ セ ッサ ご と に別 々 の 初 期 化 に よ りGPを
走 らせ て,最
も 良 い 成 績 を採
用 す る もの. 実 際 に,GPを は64個
並 列 に実 行 す る試 み は い くつ か な され て い る.例 え ば,[Koza95]
の トラ ンス ピュ ー タ上 でGPの
並 列 版 を実 現 し,プ ー ル 関 数 の 学 習 実 験
に お い て 線 形 以 上 の ス ピ ー ドア ッ プ を確 認 した.さ
らに[Juill〓96]は, SIMD型
コ ン ピュ ー タ上 で 各 プ ロセ ッサ が 並 列 に異 な る S式(GPの た め の 並 列 計 算 モ デ ル を提 案 した.さ
遺 伝 子)を
ら に,そ の 方 式 をMasPar MP-2で
評価 す る 実 装 し,
い くつ か の 間 題 に 対 して そ の 有 効 性 を確 か め て い る.
6.4.3
AP1000+上
で の 並 列GP
本 節 で は,富 士 通(株)の 並 列 計 算機AP1000+上
に実 現 した並 列GPシ
ステム
に つ い て 説 明 し よ う. AP3000+はSuperSPARC3プ 台)搭
ロ セ ッ サ を 複 数 台(実
載 し た 並 列 処 理 計 算 機 で あ る(図6.21).各
3SuperSPARCは
登 録商 標
験 で 用 い た 計 算 機 で は32
プ ロ セ ッサ(cell,セ
ル と呼 ば
れ る)は16MBの る.AP1000+は
メ モ リ を ロ ー カ ル に持 ち,独 立 した プ ロ グ ラ ム が 実行 可 能 で あ 3種 類 の独 立 した ネ ッ トワ ー クで 接 続 され,以 下 の よ うな 通 信,
同期 の 処 理 を実 現 す る.
図6.21
AP1000ア
ーキ テ クチ ャ
● トー ラ ス ネ ッ ト ワ ー ク(T-Net)
任 意 セ ル 問 の 1対 1高 速 通 信 を行 う ため の 2次 元 トー ラ ス ネ ッ トワー ク ● ブ ロ ー ドキ ャ ス ト ネ ッ ト ワ ー ク(B-Net)
ホ ス トとセ ル を含 め た 1対 多 の 高 速 通 信 を行 う た め の 階 層 バ ス お よび リ ン グ ネ ッ トワ ー ク ● 同 期 ネ ッ ト ワ ー ク(S-Net) ホ ス ト と全 セ ル で 同 期 を 高 速 に 行 う た め の ト リ ー ネ ッ トワ ー ク
筆 者 らは 並 列 計 算 機 ア ー キ テ ク チ ャ の特 徴 を考 慮 して,次
の よ う な並 列 ア ル ゴ
リズ ム を実 現 した. ● 集 団 全 体 を プ ロ セ ッサ 数 の 部 分 集 団 に分 割 し,各 々 の 部 分 集 団で 独 立 にGP の 操 作 を行 う. ● 世代 ご とに 部 分 集 団 間の 通 信 を次 の 手 順 に従 って 行 う.
送 信 フ ェ ー ズ 各 部 分 集 団 で最 も適 合 度 の 良 い個 体 を 1つ 選 び,そ の個 体
情 報 を隣(接
続 形 態 に つ い て は 後 述 す る)の 部 分 集 団 に送 る.
受 信 フ ェ ー ズ 隣 か ら受 け取 っ た個 体 の 適 合 度 が 自分 の 集 団内 の最 良 個 体 の適 合 度 よ り大 きい な らば,そ
の個 体 を受 け 入 れ る.受 け 入 れ た個 体 情 報
を 自 分 の 集 団 内 の適 合 度 の 悪 い 個 体 と入 れ 換 え る. こ の ア ル ゴ リ ズ ム を 分 散GAに
AP1000+は
な ら っ て 分 散GP(Distributed
呼 ぶ.
トー ラ ス構 成 の ネ ッ トワー ク を持 っ て い るた め,こ の ネ ッ トワ ー
ク を 利 用 した 接 続 形 態 2種 類 と,リ ン グ構 成 の 接 続 形 態(ソ 想 接 続)を
GP)と
分 散GPモ
(a)
フ トウ ェ ア に よる仮
デ ル と して採 用 す る(図6.22).
リン グ
(b) 単 方 向 トー ラ ス
(c) 双 方 向 トー ラ ス
図6.22
プ ロセ ッサの接 続 形 態
リ ン グ 構 成 32台 の プ ロセ ッサ(部 分 集 団)を
リ ン グ状 に接 続 し,メ ッセ ー ジは
リ ン グ を 一 方 向 に 流 れ る.
卜一 ラ ス 構 成(単
方 向)
32台 の プ ロセ ッサ(部 分 集 団)を8×4の
トー ラス構
成 で 接 続 し,ト ー ラ ス 上 を流 れ る メ ッセ ー ジ は一 方 向 で あ る.1 つ の プ ロ セ ッサ は 世 代 ご と に 2方 向(右 側 と 下側)の
プ ロ セ ッサ に 同 じ個 体 情 報 を 流 す.
トー ラ ス構 成(双
方 向)
32台 の プ ロセ ッサ(部 分 集 団)を8×4の
トー ラス構
成 で接 続 し,ト ー ラス 上 を流 れ る メ ッセ ー ジ は 双 方 向 で あ る.1 つ の プ ロ セ ッサ は 世代 ご とに 4方 向(上 下 左 右)の
プ ロセ ッサ に 同 じ個 体 情 報 を流 す.
並 列 計 算 で は 一 般 に メ ッセ ー ジ 交 換 の タ イ ミン グが 問 題 と な る.GPやGAで は 部 分 集 団 は各 々 独 立 に処 理 を行 うの で,部
分 集 団 間 で 一 世 代 あ た りの 処 理 速 度
に差 が 生 じる の は 当然 で あ る.し たが って,各 世代 ご と に同 期 を とっ て メ ッセ ー ジ を 交換 す る方 式 で は,処 理 を速 く終 え た プ ロ セ ッサ(部
分 集 団)は
処 理 の遅 い プ
ロ セ ッサ(部 分 集 団)を 待 た ね ば な らず,そ の 間処 理 が 進 ま ない こ とに な る.筆 者 らの 実 装 で は,こ
の 時 間 ロ ス を節 約 す べ く,世 代 ご との 同期 は と らな い 方 式(非
同期 方 式)を 採 用 した.AP1000+のOSは,非 て い るた め,非
6.4.4
同 期 方 式 の イ ンプ リ メ ン トに お け る困 難 は生 じな い.
並 列GPの
比 較 実験
実 現 した並 列GPの
性 能 を調 べ て み よ う.全 体 の 集 団 サ イ ズ は3200と
れ を32の 部 分 集 団(サ 双 方 向),お
イズ は100)に
分 け,リ
ング構 成,ト
し,こ
ー ラ ス構 成(単 方 向,
よ び比 較 の た め 部 分 集 団 問 の メ ッセ ー ジ 交 換 な しの場 合 と単 一 集 団
(サ イズ は3200)の て はsgpc1.1を を表6.5に
同期 メ ッセ ー ジ交 換 を サ ポ ー ト し
場 合 につ い て 実 験 す る.各 実 装 した.こ
示 す(だ
プ ロセ ッサ 上 で 実 行 す るGPと
の実 験 で 用 い たGPの
パ ラ メ ー タ(sgpc1.1参
し 照)
ま し関 数 の 部 分 は 後 述 の実 験 の パ ラ メ ー タで あ る).
比 較 実験 の 対 象 と した 問 題 は次 の とお りで あ る.
記 号 当 て は め 三 角 関数 のcos(2x)を
四 則 演 算(加 減 乗 除)とsin関
数,お
よび
固 定 値 1と変 数 x で展 開 した 式 を 求 め る とい う問 題 で あ る.こ の 問 題 に 関 して は 解 析 的 な 「正 解 」 が 存 在 す る.
カ オ ス 四 則 演 算(加 関 数 を 用 い て,カ
減 乗 除)とsin関
オ ス 的 時 系 列 を100個
数, cos関 数,お
よび10xの
7種 類 の
の点 の 値 か ら推 定 す る とい う問 題 で あ る
表6.5
(詳 細 は5.3節
GPパ
ラ メ ー タ(sgpc1.1の
を参 照 して い た だ き た い).こ
パ ラ メ ー タ)
の 問 題 に 関 して は 「正 解 」 に相 当 す
る もの は存 在 しな い.
論 理 関 数 4 ビ ッ トパ リテ ィ を求 め る 関 数 を,AND, OR, NAND, NORの
4種 類 の
論 理 関 数 と入 力 で あ る 4つ の 変 数 を使 っ て 表 現 す る 問 題 で あ る.当 然 な が ら,こ の 問題 に対 す る 「正 解 」 は 存在 す る.
図6.23に
は 各 々20回
ロ ッ ト し た.こ (1-way torus),双
ず つ 実 行 し た と き の 平 均 の エ ラ ー 率 と世 代 数 の 関 係 を プ
こ で 図 の 5 つ の 曲 線 は リ ン グ 構 成(ring),単 方 向 トー ラ ス 構 成(2-way
換 な し の 場 合(partitioned),サ て い る.接
続 形 態 に よ る 差 は,カ
イ ズ3200の
torus),部
方 向 トー ラ ス 構 成
分 集 団 間 の メ ッセ ー ジ 交
単 一 集 団(panmictic)を
オ ス,cos(2x),論
各々示 し
理 関 数 の 順 で 顕 著 に な って
い る.成 績 の 順 位 は 大 まか に 言 って,
partitioned
<panmictic
の よ う に な る(A
〓1-way
torus 〓2-way
(6.18)
torus
A よ り B が 良 い こ とを 表 す).図6.24は
実 行 時 間 と平
均 の エ ラ ー 率 の グ ラ フで あ る.並 列 モ デ ル の 曲線 が 途 中 で 途 切 れ て い る の は,こ の 時 間 まで に各 プ ロセ ッサ が 最 大 世 代(100世 数 の 多 い 単 一 型(panmictic)で
代)に
到 達 す るか らで あ る.集 団
は,成 績 が 良 くな る ま で に極 め て 時 間 が か か る
た め に こ の 図 で は省 略 して い る.並 列 の 3 タ イ プ は と も に時 間 の か か り方 に 大 差 が な く,独 立 型(partitioned)よ
り も成 績 が 良 い.こ の こ と は通 信 に か か る オ ー
バ ー ヘ ッ ドよ り も,並 列 に よ る効 果 が 大 きい こ と を物 語 っ て い る.
6.4.5
構 造 的 多 様 性 に よ る検 証
集 団 の 多 様 性(population (building block)が
diversity)は
作 られ る頻 度 」 と して定 義 され る.こ の 多様 性 が 小 さい と
探 索 が局 所 解 に 陥 りや す く,GAやGPは て,多 様 性 を調べ る こ と はGAやGPの る.本 節 で はGPの
「進 化 が 進 む に つ れ て新 しい 積 み 木
早 熟 な 収 束 を起 こ しや す い.し
たが っ
探 索 効 率 の検 証 に お い て 極 め て重 要 で あ
構 造 的 多 様 性(structural diversity)を
も と に並 列GPの
探
索 能 力 を調 べ て み よ う. GPで
は(部 分)木 構 造 を積 み 木(ス
代 tで の 集 団 中 の す べ て の木,部 の 集 合 をTR(t)と
キ ー マ)と
して考 え る こ とが で き る.世
分 木 を 数 え あ げ る.そ の 結 果 得 られ た 異 な る 木
し よ う.こ の と き,世 代t+1で
の 構 造 的 多 様 性SD(t+1)
は次 の よ う に計 算 され る[Tackett95].
(6…19)
分 母 は 世 代t+1で 数(pop_size)で
新 し く生 じた 木 構 造 の 数 で あ る.正 規 化 の た め,こ
れ を集 団
割 っ て い る.こ の 値 が 大 きい もの ほ ど多 様 性 が保 持 され,探 索
の 早 熟 な 収 束 を 回避 で き る と期 待 さ れ る.た
だ し,こ の 定 義 は 解 へ の近 さ を反 映
(a) 記 号 当 て は め
(b)
(c) 4パ リテ ィ
図6.23
世 代 ご との成績
カオ ス
(a) 記 号 当 て は め
(b) 4パ リ テ ィ 図6.24
実行 時 間 とエ ラー率
して い ない た め,構 造 的 多様 性 を ス キ ー マ の 数 の指 標 と して考 え る に は 限 界 が あ る.GPの
よ り正 確 な ス キ ー マ の 定 義 や そ の 理 論 的 考 察 は[O'Reilly95]に
述べ ら
れ て い る. 以 下 で は,与
え ら れ た 木 構 造 を つ く る 構 成 問 題(constructional
[Tackett95]を 端 記 号,非
さ ま ざ ま なGPで
解 い た 際 の 多 様 性 を 比 べ て み よ う.こ
引 数 関 数 で あ る.構
T
=
{X,Y,Z},
F
=
{FOO,BAR,BAZ,NOP_1,NOP2,NOP_4}.
2 引 数 の 関 数, NOP_1は
団 の 適 合 度 は,各
図6.25に
の 場 合,目
X)と(FOTXY)に
マ ッチ す る(こ X Y))お
の 式 を 含 む)木
よ び(BAZ(BAR
構 造 の 適 合 度 を0.25と
と も マ ッチ す る 記 号 で あ る.木
題 で は,中
合 度 は1.0).一
方,(BARZ
構 造 の 適 合 度 は0.125で
Z X)$ANY)に
す る.た
標 は(BAZ(BAR
だ し,$ANYは
どの よ う な 木 構 造 XY))の
す る 場 合 の 2 通 り を 考 え て み よ う.前
間 の 解 の 適 合 度 が 単 調 に 増 え て い く よ う に な っ て お り,解 者 の 問 題 で は,中
ま し 関 数 の 詳 細 は[Forrest93][Goldberg89]を
者 の問
に至 る足 掛
た が っ て,GAに
て こ れ ら の 構 成 問 題 を そ れ ぞ れ ロ イ ヤ ル ロ ー ド関 数(0.5と す る 場 合)と
適
間 の 解 と真 の 解 と の 間 に 谷 間 が 存 在
を 登 る よ う に 進 む と 探 索 が だ ま さ れ て し ま う.し
数(0.125と
あ
マ ッ チ す る(こ
テ ン プ レ ー ト(BAZ(BARZX)(FOO
す る 場 合 と,0.125と
か りが 与 え ら れ て い る.後
(deceptive)関
含 まれ て い
ッ チ す る 木 テ ン プ レ ー トが な い 場 合 は 適 合 度 を 0 と す る.
い う式 を 獲 得 す る こ と で あ る(適
合 度 を0.5と
ど)が
個 体 の マ ッチ した 木 テ ン プ レー トの適 合 度 の う ち最
ZX)(FOOXY))と
の 式 を 含 む)木
用 意 す る.こ
card, rootな
木 テ ン プ レ ー トの 例 が 示 さ れ て い る.こ
る.(BAZ$ANY(FOO
4
そ れ ぞ れ 割 り 当 て ら れ,後
に 示 す よ う に マ ッチ ン グ の た め の 特 殊 記 号(wild
大 の も の と す る.マ
1 引 数 関 数, NOP_4は
成 問 題 で は 木 テ ン プ レ ー ト(T1,T2,…,Tm)を
の 木 テ ン プ レ ー トに は 適 合 度(W1,W2,…,Wm)が
し,山
の問題の終
終 端 記 号 は,
と す る.FOO,BAR,BAZ,NOP_2は
る.GP集
problem)
呼 ぶ.な
お,ロ
す る 場 合),だ
な らっ ま し
イ ヤ ル ロ ー ド関 数 と だ
参 照 し て い た だ き た い.
図6.25木
テ ン プ レ ・ ト(構
造 問 題)
以 下 で は だ ま し関 数 の 実 験 結 果 を 説 明 し よ う.実 験 に 用 い た パ ラ メ ー タ(sgpc1.1) を 表6.5(だ
ま し 関 数 の 欄)に
示 す.た
だ し,多
ロ セ ッ サ す べ て を 同 時 に 動 か す こ と は で きず ,部 3×3)と
様 性 の ロ グ を 取 る 必 要 上,32プ 分 集 団 数 を 9(ト
ーラスの場合
し た.
実 験 の 結 果 は 次 の よ う に な る. 正解 までの平均世代数 正解に達 した試行数 総試行回数
接続形態 独立型
221.29
14
20
リ ング構 成
53.55
20
20
トー ラ ス(単 方 向)
34.50
20
20
トー ラ ス(双 方 向)
21.15
20
20
115.69
13
20
単 一型
図6.26は 代 を表 す.こ
各 モ デ ルの 構 造 的多 様 性 を世 代 ご と に表 示 した もの で あ る.横 軸 は 世 の 図 は典 型 的 な実 行 例 に対 して描 か れ て い る.こ
こで の 典 型 的 な 実
行 例 とは,実 行 が そ れ ぞ れ の平 均 世 代 近 くで終 了 す る 試行 の こ とで あ る.し たが っ て,表 示 は 実 行 が 終 了 した 世 代 で終 わ って い る(そ れ ぞ れ 独 立 型363世 グ構 成54世
代,単
代).図6.26(b)は
方 向 トー ラ ス34世 図6.26(a)の
代,双 方 向 トー ラ ス28世
う ち80世
代,リ
ン
代,単 一 型81世
代 まで を拡 大 した もの で あ る.縦 軸 は
9つ の プ ロ セ ッサ を各 々示 す.た だ し,単 一 集 団 型(panmictic)で
は単 一 の プ ロ
セ ッサ の情 報 で あ る.図 で は色 が 白 い ほ ど構 造 的 多様 性 が 高 く,色 が 黒 い ほ ど低 くな る よ う に プ ロ ッ トして あ る.図 か ら わ か る よ うに,3 つ の タ イ プ の 並 列 モ デ ル は独 立 型 に比 べ て構 造 的 多 様 性 が 高 い(白
い)部 分 が 多 い .一 方,単
一型 では
世 代 が 進 む に つ れ 黒 くな り(構 造 的 多 様 性 が 低 くな り),こ の た め 早 熟 な 収 束 に 陥 る こ とが 予 想 され る. 以 上 の 実 験 結 果 を ま とめ て み よ う. ● 部 分 集 団 の 間 に わず か な 情 報 交 換 が あ るだ けで ,ま っ た くな い 場 合 よ り も 探 索 能 力 が 格段 に よい. ● 並 列 の 場 合 の探 索 能 力 は,単 一 集 団(全 体 の 集 団 サ イズ を 同 じに した 場 合) よ り も さ らに よ くな る. ● 部 分 集 団 間 で の 適 切 な情 報 交換 の 度 合 は ,探 索 す る 問 題 に よ って 異 な る. で は部 分 集 団 間 に わ ず か な情 報 交換 が あ る よ う な並 列GPが 何 で あ ろ うか?こ
優 れ て い る理 由 は
れ に つ い て は 現 在 さ ま ざ ま な研 究 が進 行 中 で あ るが,並
列GA
と同 様 に 以 下 の 点 が 指 摘 さ れ て い る. 1.単 一 の 集 団 で遺 伝 的 探 索 を行 う と,局 所 解 に 陥 って探 索効 率 が 悪 化 しや す い . 2.集 団 を い くつ か の 部 分 集 団 に 分 け る こ と に よ り,各 部 分 集 団 が す べ て 同 じ 局 所 解 に陥 る とい う過 ち を 回 避 で き る. 3.異 な る局 所 解 をわ ず か に交 換 し,遺 伝 的 操 作(交 叉)を 行 う こ と に よ り,局 所 解 か らの 脱 出 が 可 能 に な る. した が っ て,今 後 大 規 模 な プ ロ グ ラム 合 成 にGPを
応 用 す る場 合 に,並 列GP
の 実 現 は 不 可 欠 で あ り,か つ 極 め て 有 効 な 手 法 で あ る と期 待 され る.な お,以 上 の実 験 に 関 して の詳 細 は[Iba96a]を
参 照 して い た だ き た い .
(a)独
(b)独
立型
立 型(80世
(c)リ
代 まで の拡 大)
ング
(d)単
方 向 トー ラ ス
(e)双
方 向 トー ラ ス
(f)単
図6.26
一型
構造 的多 様 性 の推 移
演 習 問 題 の解 答
【演習 問 題 1】 フ ァ イ ル はcompressコ と,ポ
マ ン ドで 圧 縮 さ れ て い る. uncompressで
ス トス ク リ プ トの フ ァ イ ル が 得 ら れ る の で,ポ
な プ リ ン タ で プ リ ン トア ウ トす れ ば よ い.こ に よ る.1
はGPに
お,こ
こ で のADFは3.5.1節
こ と に 注 意 し て い た だ き た い.2 で あ る(ICGA93で
ス トス ク リ プ トが 印 刷 可 能
れ ら の 論 文 はWalter
Alden Tackett
基 づ い た パ タ 線 ン 認 識 に つ い て 書 か れ て い る.特
ス テ ム の サ ン プ ル と し て 付 属 す るADFデ ラ ム で あ る.な
圧 縮 を戻 す
はGPの
発 表 さ れ た).こ
に, sgpcシ
ィ レ ク トリは こ の論 文 の ため の プ ロ グ や6.1節
で 述 べ るADFと
応 用 で あ るDonut問
れ もDonutと
は異な る
題 についての論文
い うデ ィ レ ク トリに サ ンプ ル
プ ロ グ ラ ム が あ る.
【演 習問 題 2】 1.集 団 の 中 か らあ る個 体 数(ト
ー ナ メ ン トサ イ ズ と呼 ぶ)を
ラ ン ダム に選 び
出 し,そ の 中 で 一番 良 い もの を(ト ー ナ メ ン ト方 式 で)選 択 す る.こ
の過
程 を集 団 数 が 得 られ る ま で繰 り返 す 選 択 方 式 の こ と. 2.各 個 体 を適 合 度 の大 きい もの か ら順 に並 べ,こ
の 順 位 に応 じた 関数 に よ り
子 供 の数 を決 め る 方 式. 3.成 績 の 良 い 親(の
い くつ か)を
常 に コ ピ ー して,次
れ は 一 般 に探 索 能 力 が優 れ て い る と され るが,親 が か か る こ と,さ
の 世 代 に 残 す 方式.こ
の 成 績 を ソー トす る 手 間
らに探 索 が 局 所 解 に 陥 る場 合 が あ る な どの 問 題 点 も指 摘
さ れ て い る. よ り 詳 し く は,GAの
教 科 書 を 参 照 し て い た だ き た い.例
p.74】,2 は[伊 庭94,p.72],3
は[伊 庭94, p.76]を
え ば,1
は[伊 庭94,
見 て い た だ き た い.
【演 習 間 頴 3】 以 下 の 表 に 示 す よ うな 計 算 結 果 に な る.例 え ば,予 測 値 の 計 算 は,X=0.1の と き,
で あ る.得
Validation
ら れ た 適 合 度 の 値0.151180は,図0.2に
Fitness=
0.151180
と して 表 示 され て い る. デ ー タ番 号
X
正 解値yi
予測値yi
yi-yi
0
0.00
0.000
0.0000
0.0000
1
0.10
0.005
0.0055
0.0005
2
0.20
0.020
0.0221
0.0021
3
0.30
0.045
0.0497
0.0047
4
0.40
0.080
0.0885
0.0085
5
0.50
0.125
0.1383
0.0133
6
0.60
0.180
0.1991
0.0191
7
0.70
0.245
0.2710
0.0260
8
0.80
0.320
0.3540
0.0340
9
0.90
0.405
0.4480
0.0430
合計値
0.1512
【演習 問題 4】 1.集 団 数 や 世 代 数 を 大 き く し て 実 行 す る に は,DEBUGの す る モ ー ド)で
は 遅 す ぎ る,し
実 行 す べ き で あ る.そ
た が っ て,makeを
の た め に は,REGRESSIONデ
レ ク ト リ の オ ブ ジ ェ ク ト コ ー ド(*.O)を デ ィ レ ク ト リ に 行 き,単
にmakeと
モ ー ド(全 個 体 を 表 示 や り直 し てDEBUGせ ィ レ ク ト リ とlibデ
ず に ィ
す べ て 消 し て か ら,REGRESSION
す る.
2.容 易 に わ か る よ う に 解 答 の 表 現 はX2/2で
あ る. X2/2と 同 値 の 式 を得 た 場 合,
最 大 世 代 に な ら な くて も終 了 す る はず で あ る.た は,か
だ し,正 解 を得 る た め に
な り大 き な集 団 数 と世 代 を必 要 とす る か も しれ な い.例
え ば,筆 者
の シス テ ム で は,
の よ うな 式 を得 て実 行 は 終 了 した(集 団数1024,獲 がX2/2と
得 世 代 数100).こ
の式
な る こ と を確 か め て い た だ き た い.
3.乱 数 は 木 が 生 成 され る と き に終 端 ノ ー ドと して生 成 され る.こ れ は-5.0か ら5.0の 範 囲 の 一 様 乱 数 で あ る.生 成 され た 乱 数 は,変 更 されず に次 世代 に 受 け継 が れ る.
【演習 問題 5】 こ の た め の 関 数 がcheckpointとrecover_paramsで イ ル 中 で 設 定 す るcheckpoint_frequencyの き,GPの
環 境 がgpc_**_**.ckptと
出 さ れ る.こ
の**は
あ る. default.inフ 周 期(倍
数)に
と に セ ー ブ し た い 場 合 は,default.inフ
世代 数が なった と
い う フ ァ イ ル にcheckpoint関
プ ロ セ ス 番 号 な ど か ら 決 ま る 数 字 で あ る.例
ァ
数 で書 き
え ば,10世
代 ご
ァ イ ル 中 に 次 の 一 行 を 加 え れ ば よ い.
checkpoint
_frequency=10
こ の よ う に し て セ ー ブ さ れ た 環 境 か らGPを gpc-rフ
再 実 行 す る と き に は, sgpcを
ァイ ル名
と し て 起 動 す る.startup関
数 の 定 義 でif(*start_gen)か
オ プ シ ョ ン の 処 理 を 行 う.こ
の 再 開 の 処 理 はrecover〓params関
ら 最 後 ま で が,-r 数 を呼 ぶ こ とで
な さ れ る.
【演 習問題 6】 S式 表 現 は, (+x1.0) で あ る.図
A に こ の 木 構 造 が 示 さ れ て い る.こ
こ で1.0と
い う定 数 は,
t->type.func->arg[1]->type.term->valptr の 指 す 先 にfloatと
し て 格 納 さ れ る.
【演習 問題 7】 基 本 的 に はcrossover_at_any_ptと か ら 選 ぶ こ と で あ る.そ ドを 数 え(図
B),そ
同 じ.違
い は 交叉 の候 補 点 を関 数 ノ ー ド
の た め にcount_function_ptsで
関 数(非
終 端)ノ
の 数 か ら 発 生 し た 乱 数 に 応 じ てget_functon_subtreeで
交 叉 点 を 選 び 出 す.
【 演 習 問題 8】 演 習 問 題 1を参 照 しな さい.
ー
図 A
図 B
【演 習問題 9】 1.
や
mutation
の 処 理 の 際 に 得 ら れ る mpt
crossover
を表
やxpt1,xpt2
示 す る.
が
を best_of_run
内 で の report_on_generation
関 数generations
2.
見 い 出 され た と きに の み 実 行 す る よ う に変 更 す れ ば よ い.
【演習 問題10】 deme
機 能 を用 い な い と きは,
で,popとPOPは
同 じ に な る.し
さ れ る.deme機
能 で は, GRID(集
POP(demeに
分 け る 前 の 集 団)を
に は POPが
pop
か し, demeの 団 の 実 体,実
代 入 され て 関数 が 呼 ば れ る の 場 合 はpopに
はGRIDが
代 入
際 に 世 代 交 代 の 起 こ る 場 所)と
使 い 分 け な け れ ば な ら な い か ら で あ る.
【演習 問題11】 コ ン パ イ ル の 仕 方 は 各 自 のLISPの
の場 合 に は compile-file
マ ニ ュ ア ル 等 を参 照 して い た だ き た い. Lucid
と い う 関 数 で フ ァ イ ル ご と に コ ン パ イ ル で き る.そ
の
場 合 に,
(proclaim
'(optimize
(proclaim
'(optimize
(proclaim
'(optimize
(proclaim
'(optimize
(speed
3)))
(compilation-speed (space (safety
0)))
0))) 0)))
な どの 設 定 を行 う と最 適 化 が な さ れ る. benchmark.lsp
の 中 の time-gpp
関 数 を実 行 す る と 2つ の テ ス トに お け る実
行 時 間 が 表 示 さ れ る.こ れ らの 時 間 を基 に パ フ ォー マ ン スの 比 較 が で き る.な お, こ の テ ス トで は3.3節 Oakleyら
で 説 明 す る REGRESSION
に よ っ て 報 告 さ れ た さ ま ざ ま なLISPシ
比 較 を 次 に 示 す.た ド も 含 ん で い る.
だ し,こ
関数 の実 験 を行 って い る. Howard ス テ ム上 で の パ フ ォー マ ン スの
の 表 に 述 べ ら れ た 数 字 はOSやGCの
オーバーヘ ッ
ベ ンチ マー クの 結果
ま た,2 番 目 の テ ス トを成 績 の 良 い 順 に 並 べ る と次 の よ う に な る.こ れ らの デ ー タ と読 者 の 実行 結 果 を 比 較 す る こ とで,自 とが で き るで あ ろ う.な お,こ 細 な報 告 や 最 新 の デ ー タ はGPの
らのGPシ
の数 字 は1993年
ス テ ム の 能 力 を推 定 す る こ
2 月現 在 の もの で あ る.よ
メー ル リス ト(0.3節)を
Teat2
のベ ス トス コア
参 照 して ほ しい.
り詳
【演習 問題12】 の 動 作 が確 認 で き る.こ の 場 合,集
団
大 の 木 の 深 さ 4 と して 生 成 され た 初 期 集 団 が 見 ら れ る で あ ろ う(図
C
こ れ に よ り: ramped-half-and-half
数20,最 参 照).
図 C
【演習 問題13】 基 本 的 に はcrossover-at-any-pointsと ノ ー ドか ら選 ぶ こ とで あ る.そ 端)ノ
ー ドを 数 え,そ
同 じ.違
い は 交 叉 の 候 補 点 を関 数
の た め にcount-function-pointsで
関 数(非
終
の 数 か ら 発 生 し た 乱 数 に 応 じ てget-function-subtree
で 交 叉 点 を 選 び 出 す.
【 演 習 問題14】 一 定 の 規 則 に従 っ て 動 く物 体 の 追 跡 の た め の プ ログ ラム をGPで
生成 す る もの
で あ る.詳 細 は プ ロ グ ラ ム を読 ん で ほ しい.
【 演 習 問題15】 mutate
1.
male-point, 2.
の 処 理 の 際 に 得 ら れ るmutation-pointや
やcrossover
female-pointを
表 示 す る. 内 で のreport-on-generationを
関 数execute-generations
が 見 い 出 され た と き にの み 実 行 す る よ う に
*best-of-run-individual*
変 更 す れ ば よい.
【演 習問題16】 Translate関 (defun (if
数 は 次 の よ う に 書 け る.
Translate (atom
tr)
(case
tr
(tr)
;終 端 記号 の と き
(TurnRight
;3 通 りの 関 数 を呼 ぶ
(TurnRight))
(TurnLeft)) (MoveForward)) (MoveForward (TurnLeft (t (case
(format (car
:error
t " a tr)
;リ
terminal
case
in
Translate\n"
ス トの と き
(If-Food-Ahead (cond ((IsFoodAhead)
(Translate
(t(Translate
(caddr
(cadr
tr)))
tr)))))
(Prog2
(Prog2
(cadr
tr)
(caddr
tr)))
(Prog3
(Prog3
(cadr
tr)
(caddr
tr) (cadddr
tr)))
tr)))
(t
(format
t " a
Translate\n"
in
れ は 引 数 の 評 価 を適 切 に す る た め で あ る.つ
の と き 第 3 引 数 を 評 価 せ ず,ま い.こ
case
tr)))))
の と きの処 理 が こ の 関 数 内 で 行 わ れ て い る こ と に注 意 す る必 要
If-Food-Ahead が あ る.こ
nonterminal
:error
の こ と をmy-evalで
たNILの
ま り,IsFoodAheadが
T
と き第 2引 数 を評 価 しな い よ うに した
は マ ク ロ で 実 現 し て い た.ま
た,関
数Prog2な
どは
次 の よ う に 定 義 す る. (defun (+ (defun (+
Prog2
(Translate Prog3
(tr1 tr2) tr1) (Translate (tr1
(Translate
こ の 後 に, evaluate-
際 に my- eval
tr2
tr1)
tr2)))
tr3) (Translate
tr2)
standardized-
fitness-
の 代 わ りに Translate
以 上 の 関 数 定 義 がANT1.lspに
for-
関数での適合度計算の
ANT
を 呼 ぶ よ う に す る.
あ る.こ
よ り も実 行 が は や い は ず で あ る.各
tr3)))
(Translate
の 方 がevalを
呼 ば な い 分ANT2.1sp
自 実 験 し て 確 か め て い た だ き た い.
【 演 習 問題17】 こ の た め の フ ァ イ ル がANT3.lspで
あ る.こ
関 数 と し て 評 価 す る よ う に 変 換 す る.こ 義 さ れ て い る.こ
の 関 数 は,例
(PROG2
(IF-FOOD-AHEAD
TURNLEFT
こ で は まずGPで
得 ら れ た S式 を
れ を 行 う 関 数 がlist-modifyと
え ば, TURNRIGHT
MOVEFORWARD))
を (PROG2
(TURNLEFT)
と 変 換 す る.こ
(IF-FOOD-AHEAD
う す る とmy-evalは
(TURNRIGHT)
(MOVEFORWARD)))
単 に 従 来 のevalで
実 行 で き る.
して定
【 演 習 問題18】 や EVEN-5-PARITY
例 え ば, MAJORITY-ON
関数 で 実 行 し,正 解 が得 られ る ま
で の 世 代 数 を比 較 して み な さい.こ れ に関 す る詳 細 な研 究 は[Koza94]に
述べ られ
て い る.
【演 習 問題19】 探 索 効 率 の 定 性 的 な 比 較 は 次 の よ う に な る は ず で あ る.た だ し,下 の 表 で は ○,△,× の 順 に好 ま しい こ とを 示 す. GPシ
ス テ ム
正解までの世代数 実行速度 △
○
LISP(ADFな
し)
△
△
LISP(ADFあ
り)
○
×
C
参考 文 献
[井田88]井
田哲 雄,プ
ロ グ ラ ミ ン グ言 語 の 新 潮 流,共
[伊庭93]伊
庭 斉 志,遺
伝 的 ア ル ゴ リス ム の構 造 的 表 現 へ の 応 用, (遺伝 的 ア ル
ゴ リズ ム とそ の 応 用,北
[伊庭94]伊 [伊庭94a]伊 vol.9,
[伊庭94b]伊
[伊庭95]伊
庭 斉 志,遣 庭 斉 志,遺 no.4,
業 図 書,1993
伝 的 ア ル ゴ リズ ム の 基 礎,オ
ー ム社,1994
伝 的 プ ロ グ ラ ミン グ と進 化 論 的 な学 習,人 工 知 能 学 会 誌,
1994
庭 斉 志,遺
庭 斉 志,シ
伝 的 ア ル ゴ リ ズ ム の 基 礎,オ
ー ム 社,1994.
ス テ ム 同定 ア プ ロ ー チ に 基 づ く遺 伝 的 プ ロ グ ラ ミン グ,人
工 知 能 学 会 誌,vol.10,
[上田他95]上
野 宏 明 監 修)産
立 出 版,1988
no.4,1995
田 完 次,下 原 勝 憲,伊
庭 斉 志(共 監 修),人
工 生 命 の 方 法,工
業調
査 会 出版,1995
[國吉 他95]國
吉 康 夫,本
村 陽 一,開
と 情 報 統 合 研 究,RWC情
[松原 他95]松
原 仁,開
学 習 の 研 究,電
[星田94]星
一 夫,本
一 夫 他,マ
ル チ 自律 ロ ボ ッ トシ ミ ュ レ ー タ
報 統 合 ワ ー ク シ ョッ プ, pp.304-313,1995
村 陽 一 他,ロ
ボ ッ トシ ミュ レー タ を用 い た 協 調
子 技 術 総 合 研 究 所 彙 報,vol.59,
田 昌紀(編
著),遺
no.3,1995
伝 子 情 報 処 理 へ の 挑 戦,共
立 出版,1994
[本堂 他94]本
堂 直 浩,伊 庭 斉 志,嘉 数 侑 昇,遺 伝 的 プ ロ グ ラ ミ ング に よ る 自動 関
数 定 義 を 用 い た概 念 獲 得,FANシ [Andre95]Andre,
D.,
Mental
Models
and
International
[Astrom
The
Joint
[Barr81]Barr,
Conference
of Action,
on Artificial
K.J.and
William
[Belding95]Belding,
Eykhoff,
that Learn
in Proc.
of 14th
Intelligence,1995
P.System
一 博 監 訳,共
T.C.,
86]Brooks,
R.,
IEEE
E.A.(eds.):The
Identification,
Handbook
Kaufmann,Inc.,1981,(邦
a sur
Genetic
Conference
A Robust
journal
訳:人
of Artificial
工 知 能 ハ ン ドブ ッ
立 出 版,1983)
The Distributed
of the 6th International
Robot,
Plans
of Agents
vol.7,1971
ク I,田 中 幸 吉,淵
[Brooks
Programming
Simple
A. and Feigenbaum,
Intelligence,
Proc.
Automatic
Create
et al.71]Astrom,
vey, Automatica,
ンポ ジ ウ ム’95,1995.
on Genetic
Layered
of robotics
Algorithm
Control
and automation,
Revisited,
in
Algorithms,1995
System
For A Mobile
vol.RA-2,
no.1,pp.14-
23,1992
[Cleaveland86]Cleaveland,
J.C., An Introduction
Wesley,1986,(邦
[Cohoon
訳:デ
et al.87]Cohoon,
Punctuated
J.P., Hedge,
Equilibria:AParallel
2nd International
[Duda
Conference
et al.73]Duda,
Analysis,
[Farmeret
ー タ 型 序 説,小
R.O.
to Data
S.U.,
林 光 夫 訳,共
Martin,
Genetic on Genetic
W.N.
Types,
Addison-
立 出 版,1990).
and
Algorithm,
Richards,
in Proc.
D.
of the
Algorithms,1987
and Hart, P.E., Pattern
Classification
and Scene
Wiley,1973
al.87]Farmer,
Series, Physical
J.D. and Sidorowich, Review
Letters,59,1987
J.J. Predicting
Chaotic
Time
[Forrest
et al.93]
Forrest,
S., and
ness and the Building-Block
Mitchell,
gorithms
2, Whiteley,
[Goldberg89]Goldberg, and
Hypothesis,
L.D.(ed.),
D.E.,
Machine
M.,
Building-Block
in Foundations
Morgan
Genetic
Learning,
Relative
Fit
of Genetic
Al
Kaufmann,1993
Algorithms
Building-Block
in Search,
Hypothesis,
Optimization,
Addison
Wesley,
1989
[Handley93]Handley, in Protein
S., Automated
national
Sequences
bustness
Via Genetic
Joint Conference
[Hondo96]Hondo,
in Genetic
for α-Helices
in Proc.
of 5th Inter
Algorithms,1993
N., Iba, H. and Kakazu, and Reusability
of a Detector
Programming,
on Genetic
in Proc. of 3rd International IEEE
Learning
Y. COAST:An Programming,
Conference
Approach
to Ro
ETL-TR-96-4,
on Evolutionary
also
Computation,
Press,1996
[Iba et al.93]Iba,
H., Kurita,
tion using Structured Joint Conference
[Iba et al.94]Iba,
T., deGaris,
Genetic
on Genetic
H., deGaris,
ing a Minimum Programming,(ed.
Kenneth
in Proc.
Identifica
of 5th International
Algorithms,1993
H. and
Description
H. and Sato, T. System
Algorithms,
Length
Sato, T.
Genetic
Principle,
E. Kinnear,
Programming
in Advances
Jr.), MIT
Press,
us
in Genetic pp.265-284,
1994
[Iba et al.95a]Iba, for Numerical ference
Genetic
on Evolutionary
[Iba et al.95b]Iba, gramming
H., deGaris,
Programming, Computation,
H., deGaris,
for System
H. and
Sato, T. Recombination
in Proc. of 2nd International IEEE
H. and Sato,
Identification,
Guidance Con
Press,1995.
T.
Numerical
ETL-TR-95-23,
Genetic
Pro
also in Evolution-
ary Computation,
[Iba et al.96a]
H.and
Iba,
pirical Study
[Iba96b]Iba,
vol.3, no.4,1995
Emergent
H.,
Iba,
Machine
Cooperation
ETL-TR-96-8,
Em
Programming,
also in GP96,1996
for Multiple
Agents
using
Genetic
also in PPSN96,1996
H.,Multiple-Agent
TR-96-9,
Genetic
ETL-TR-96-1,
and Analysis,
Programming,
[Iba96c]
T., Distributed
Niwa,
Learning
also in ICML96
by Genetic
Workshop
Programming,
on Emergent
ETL-
Computation
and
Learning,1996
[Ikeda79]Ikeda,
K.,
the Transmitted
Multiple-valued Light
Stationary
by a Ring
State and its Instability
Cavity
System,
M.,
Robustness
of
Opt. Commun.30,
1979
[Ito et al.96] Ito, Generated MIT
T.,Iba,
H. and
by Genetic
Programming,
in Genetic
of Robot
Programs
Programming(GP96),
1996
Press,
[Ivakhnenko71]
A.G.
Ivakhnenko,
IEEE
Kimura,
Tr. SMC,
vol.SMC-1,
Polynomial
Kinnear,
in Advances K.Jr.(eds.),
J.B., Massively
in Genetic MIT
a Sort,
on Genetic
Algorithms,
[Kinnear94]Kinnear,
K.,
Alternatives
in Automatic
Systems,
Parallel
Programming
II,
Genetic
Angeline,
Pro P. and
Press,1996
Jr. K.E.,Generality [Kinnear93]Kinnear, ming:Evolving
of Complex
no.4,1971
[Juille et al.96] Juille, ,H. and Pollack, gramming,
Theory
and Difficulty
in Genetic
in Proc. of 5th International
Joint
Program Conference
1993
Function
Definition:AComparison
of Per-
formance
in Advances
Cambridge,
[Konagayaet
in Genetic
A. and Kondo,
tion using a Genetic of Computer
[Koza90]Koza,
91]Koza,
puters
[Koza94]
Reusable
Reusable
aWall
J., Evolution
Programming, Systems,
[Koza94c]Koza,
Task
Function
Kinnear,
On
on Artificial
Life. To
of Com
Ⅱ:Automatic
Discovery
of
Ⅱ:Automatic
Discovery
of
Press,1994
Architecture Mobile
Learning
Petsche(ed.),
Learning
Jr., Ed. Cambridge,
Programming,
MITPress,1992
of a Subsumption
Definition
Univ.,1990
the Programming
for an Autonomous
J., Scalable
No.
Press,1994
in Computational
vo1.2, Thomas
breed
Systems(ECAL-91),1991
Programming
MIT
Genetic
Conference
Selection,
MIT
Genetic
Following
Int.
Report
Stanford
Using
Programming
Subprograms,
94b]Koza,
matic
Genetic
J.
Science,
Programming,
Subprograms,
[Koza94a]Koza,
[Koza
of Autonomous
of Natural
J.
in Hawaii
to solve problems,
of Subsumption
J., Genetic
Koza,
programs
of the First European
by means
Extrac
for genetically
of Computer
J., Evolution
92]Koza,
Motif
Principle,
programming:Aparadigm
Dept.
a Practice
H., Stochastic
with the MDL
of computer
in Proceedings wards
Jr.,(Ed.)
Systems,1993
STAN-CS-90-1314,
[Koza
Algorithm
J. Genetic
ing populations
[Koza
K.E. Kinnear,
MA:MITPress,1994
al.93]Konagaya,
Conf.
Programming,
Theory
The
in Genetic
MIT
in Advances MA:MIT
Robot
via Genetic
and Natural
Learning
Press,1994
Programming
in Genetic Press,1994.
that Performs
using Auto
Programming,
K. E.
[Montana95]Montana, lutionary
D.J., Strongly Computation,
[Muhlenbein89]Muhlenbein, Genetics
[Nordin
and Combinatorial
Robot,
Advances
Algorithms,
Population
of the 3rd Interna
Algorithms,1989
Genetic
W.,
Notes
Programming
for the AAAI
Scientific Applications
Non-Linear
in Genetic
in Evo
Con
Symposium
1995
H.Two [Oakley94]Oakley, and
Programming,
in Proc.
in Working
Programming
Filters
Genetic
P. and Banzhaf,
trolling a Miniature on Genetic
Genetic
Optimization,
on Genetic
et al.95]Nordin,
Stack
Parallel
H.,
tional Conference
Typed
vol.3, no.2, pp.199-230,1995
Equation
Programming,
of Genetic
Fitting
(ed. Kenneth
Programming:
to Chaotic
Data,
E. Kinnear,
Jr.), MIT
in
1994
Press,
U-M.and [O'Reilly95]O'Reilly, Building Genetic
Block
Hypothesis
Algorithms
F., The
for Genetic
Programming,
3, Whitley,
J.R. [Quinlan83]Quinlan, their Application Michalski,
Oppacher,
R.S.,
Carbonell,
Aspects
of a
in Foundations
of
L.D. and Vose, M.D.(eds.),1995
Learning
to Chess
Troubling
Efficient
End
Classification
Games,
J.G. and
Procedures
in Machine Mitchell,
T.M.),
and
Learning,(eds.
Springer-Verlag,
pp.463-482,1983
[Quinlan89]Quinlan,J.R. Description
Length
Inferring
Principles,
Decision
Trees
Information
and
using
the Minimum
Computation,
vo1.80,
pp.227-248,1989
[Reynolds93]Reynolds, Obstacle
Avoidance
C.,
An Evolved,
Behavior,
Vision-Based
in Artificial
Behavioral
Life Ⅲ,1993
Model
of
[Reynolds94]Reynolds, ing Noise
to Promote
gramming,
[Rissanen
Robust
Kinnear,
et al.94]Justinian
ference
of Machine
bution
[Spiessens
Genetic
4th International
[Steels 90]Steels,
[Tanese89]
Statist.
Soc.
Hierarchical
Self-
International
Con
A., An Adaptive
Crossover
Distri
in Proc. of 2nd International
Algorithms,1987
P. and
Manderick,
B.
A Massively
and First Analysis,
on Genetic
Algorithms,1991
between
Distributed
Cooperation in Decentralized
A.L., Demazeau,
Parallel
in Proc.
Agents
of the
through
Y. and
Muller,J.-
North-Holland,1990
Tanese,
International
[Tackett95]Tackett, the Space 3,Whiteley,
[Teller94a]Teller, Genetic
H. Ballard.,
Algorithms,
Conference
Self-Organization,
J. of Royal
in Proc.11th
Implementation
L.,
Pro
p251-258,1994.
on Genetic
Algorithm,
P.(eds.),
Complexity,
and Dana
for Genetic
et al.91]Spiessens,
in Genetic
Press,1994
J.D. and Morishima,
Joint Conference
Behavior:Us
in Advances
Programming,
Learning,
Mechanism
Avoidance
and pp.252-265,1987
P. Rosca.
in Genetic
[Schaffer87]Schaffer,
MIT
Stochastic
no.3, pp.223-239
Organization
of Obstacle
Solutions,
K.(ed.),
87]Rissanen,J.,
B,vol.49,
[Rosca
C., Evolution
R., Distributed Conference
W.A., of Computer
on Genetic
Greedy Program,
L.D. and Vose,
A.,
The
Programming,(ed.
Genetic
Algorithms,
and Genetic
in Foundations
M.D.,(eds.),
Kenneth
the 3rd
Algorithms,1989
Recombination
Evolution
in Proc.of
of Genetic
Morgan
of Mental
on
Algorithms
Kaufmann,1995
Models,
E. Kinnear,
Search
in Advances
Jr.), MIT
Press,1994
in
[Teller94b]Teller,
A., Turing
gramming
with Indexed
Computational
[Tenorio
Memory,
in the Language
in Proc.
of IEEE
of Genetic
World
Pro
Congress
on
Intelligence,1994
et al.90]Tenorio,
Optimum
Completeness
M.F.
Supervised
and
Lee, W.
Self-organizing
Learning,IEEETr.Neural
Network
Networks,
for
vol.1, no.1,
1990
[Weiss93]Weiss, Segment
S.M.,
International AAAI
[Winston
Cohen,
Prediction
from
Conference
D.M., Protein
and
Indurkhya,
Sequence
on Intelligent
N.
Data,
Transmembrane
Systems
in Proc.
of the First
for Molecular
Biology,
Press,1993
92]Winston,
P.H.:Artificial
Interlligence,
Third
Edition,
Addison
Wesley,1992
[Zhang
et al.95]Zhang,
and Parsimony vo1.3,
no.1,
B.-T. and in Genetic
pp.17-38,1995
Muhlenbein,
Programming,
H.,
Balancing
in Evolutionary
Accuracy
Computation,
索 ■あ
引
ア ク チ ュエ ー タ 148
木構造 の生 成 52 木構造 の評価 145
ア ミ ノ酸 181
疑 似 的 マ ク ロ 137
圧縮 235 当て はめの誤差 29 蟻 の餌集 め行 動 157
帰納学習 142 木 の構 造 体tree
53
木 の生成 46
池 田 写 像 178 潰 伝 子 解 析 181
木 の生成 規則 55 木 の成 長 204 逆位 17 協 調問題 解決 167
遺 伝 子 コ ー ド 13
局 所 解 212,228,233
遺伝子情報処 理 181
局 所探 索 175 局所 的な探索方法 174
イ ン デ ッ ク スGP 186
遺 伝 的 ア ル ゴ リズ ム 13
意味破壊 144 移民 221 移民率 221
グ ラ フ構 造 18 グ ラ フ構 造 の 多 様 性 141 訓練 デ ー タ 41,68,70 訓 練例 29,152,186,204
エ リー ト戦 略 18
餌集 め行 動 164 計算量 141 決定木 206
オ ッ カ ム の 剃 刀 205 重 み付 きの ル ー レ ッ ト方式 69,106 重 み付 け ル ー レ ッ ト 15
コ ン ピ ュ ー タ ・ビ ジ ョ ン 179
親 21
交 叉 17 45,63,64,106,143,144,218
構成問題 231 ■か
構 造 体individual
カ オ ス 226
構造的規則性 199 構造的多様性 228 構造的表現 18
カ オ ス 関 数 170
概念学 習 206 概念 木 19
96
構 造 保 存 オペ レ ー タ 188,215
過 学 習 30,148,204
高 速IF
画像処 理 142 画像 理解 179
高 速 化eval 136 行 動 型 ロ ボ ッ ト 167
型 付 きGP
構文解析 の木 19 子供 21
213
壁 つ た い 問 題 201
137
頑 強 性 148,199 ■さ サ ブル ー チ ン 194
機械 翻訳 19 記 号当て はめ 226
サ ブ ル ー チ ンの再 利 用 性 199
記 号 当 て は め 問題 27,142 木 構 造 18,21,54,
96
最小 2乗誤 差 175 最大世代 60
最 大 世 代 数 42,98,111
多重 回帰 分析 174 多数決 の関数 115
最尤推定値 206 最 良 個 体 59,60,72,104,
117, 120,225
だ ま し関 数 231
シ ス テム 同 定 問題 169
探索効率 228 探索 の効率化 194 団体行動 157
時系列予測問題 170 自然言語 142
知識表現 18
自動 的 関 数 定 義 124,193 島 モ デル 221
積 み木
最 良 個 体 の デ ー タ 41
222,228
重回帰分析 174 終 端 記 号 21,26
デー タ型 213
終 端 ノー ド 21
テ ス ト デ ー タ 41,59,68,7τ0,
集 団遺伝学 221
テ ス ト例 29,152,186,204
集 団 数 42,44,98,111
デ ッ ド ロ ッ ク 152,154
集 団 の 数 44,47
適応的な交叉 144
集 団の初期化 52 終 了条件 60
適 合 度 13,25,26
受 信 フ ェー ズ 225
適 合 度 の 計 算 58,103
179
適合度計算 29,67
冗 長 性 156,193 初 期 集 団 の 生 成 99,125
トー ナ メ ン ト選 択 方 式 18
人 工 蟻 72, 118,128,158
トー ナ メ ン ト方 式 64,106
人 工 生 命 10,72,118,156
トー ラ ス構 成 225
同期の処 理 224 ス キ ー マ 143, 194,228
淘 汰 15 突 然 変 異17,24,46,63,66,108,
セ ン サ 149,201 セ ンサ 統 合 154
■な
正 規 化 58,104
ニ ュ ー ス グ ル ー プ 8
生殖 15
ニ ュ ー ラ ル ネ ッ ト 142 ,179
正 の 例 179
正例 186
根 21,215
世 代 交 代 45,49,62,102,105
接続形態 225
ノ ー ド 21
線 形 の ス ピー ドア ップ 221 選 択 15,46
ノ イ ズ 148,152,154
選 択 方 式 64,106
■は パ ター ン認 識 142,170,235
ソ ー ト 142
バ ッ ク ク ォ ー ト 130
ソ ベ ル オ ペ レー タ 179
パ ラ メー タ の設 定 47
相 関係数 186
パ リテ ィ関 数 126
早 熟 な 収 束 212,222,228,233
発現型 13 汎化能力 204 汎用型 219
送 信 フ ェー ズ 224 創 発 148,156
■た タ ン パ ク 質 181
引数 21 非終 端記号 21,26
144,218
非 終 端 ノ ー ド 21
ル ー レ ッ ト方 式 15,64,106
非 同期方式 226 表 現 型 13,25
ロ イヤ ル ロ ー ド関 数 222,231 ロ バ ス ト ネ ス 148, 199
フ ー リエ 解 析 172
ロ ボ ッ ト制 御 142
ブ ー ル 関 数 198,207
ロ ボ ッ トナ ビゲ ー シ ョ ン 201
ブ ー ル 関 数 合 成 115,170
ロ ボ ッ トプ ロ グ ラ ミ ン グ 147
フ ェ ロモ ン 157 フ レ ー ム 19
■英数字
プ ロダ ク シ ョン ル ー ル 108
2乗 誤 差 172
負 の 例 179
3次 元 構 造 181
部 分 集 団 221,233
4-parity 198
負例 186 分 散GA 220 分散GP 225 分散 人工知能 167 分 子生物学 181
4ビ ッ トパ リテ ィ 227 6マ ル チ プ レ ク サ 207 α ヘ リ ッ ク ス 182 Adaptive
Representation
ベ ンチ マ ー ク 94
ADF
並列GA
220
AIC 205
並 列GP
220,222
ホ ー ム ペ ー ジ 10
Akaike
Information
ALLOW_
CONST
AP 1000+
ARGP ■ ま マ ク ロ 70
Criterion
223
Automatically
Defined Functions
Behavior-based
マ ル チ ・エ ー ジ ェ ン ト 167
benchmark breed
approach
_new_population block
メ ー リ ン グ リス ト 8 メ モ リ付 きGP 142,185
CD-ROM
メ ン タ ル モ デ ル 142, 186
checkpoint
167
62,105
222,228
3 62,237
COAST
199
■や 予測 出力 29
Collective
予 測 値 172
critter 147
■ら ランク選択 方式 18 ランダムな木構造 の生成 26
deceptive
231
default.
in 44
乱 数 27,30,43,70,171
DGA
乱 数 の シ ー ド 42,111
Distributed
GA
220
Distributed
GP
225
ADF
construction
for subroutine
problem
231
能 89 220
リン グ構 成 225 editオ
ル ー ト 21
195
94
building
deme機
205
57,70
202
マ ク ロ 定 義 130
膜貫通領域 182
202
124,187,195
ペ レ ー タ 108
embodiment
learning
152
acquisition
199
Emergent
Computation
Emergent
Property
eval
MAJORITY-ON
157 157
Mars
59
Massively
EVEN-5-PARITY
126
execute-generations
MDL
102
115
149 Parallel GA 222
175,205
MDL基
準 174,204,212
migration
221
FAQ
8
migration
rate
FG-ア
ル ゴ リ ズ ム 222
Minimum
Description
Minimum
Message
Fine Grained fitness.
222
c 67
MML
FTP 4 FULL 55,100
221 Length
Length
205 205
205
Module
Acquisition
MPGA
197
222
full 217 parsimony_ GA
PDS
10, 13,157
GAオ
ペ レー タ 17, 22
Gcrossover
PTYPE
69
generic type Ginversion
219
Rodney
21,25
Gmutation
Royal
of Data Handling
222
sgpc 1.1 3,43,171,222,226
13,25 178
SIN
70
SSA
147
startup
47
initfinal. lsp 91
steady
state機
island model
STGP
215
221
能 88
STROGANOFF 3,18,147
Strongly
148
Subsumption
koza-book-gp-implementation.
Kyte-Doolittleの libデ
lisp
親 水 性 の指 標 182
ィ レ ク ト リ 45
3
174,213
Typed
subpopulation Khepera
48
149
setup. c 67
217
John Koza
SWISS-PROTタ
GP
Architecture
S式表現 21 S式の関数記号 21 10
197
Mackey-Glass微
分 方 程 式 1 70
Walsh多
147
ンパ ク質 デー タバ ン ク
S 式 96
URL
215
221
litlflet. lsp 3
MA
11I
147,152
174
55,100
Ikeda map
Road
RWCP
21,24,25
GTYPE
4,67,
A. Brooks
run_ gp_ system
Method
grow
55
REGRESSION
174
GROW
13,25
RAMPED
49
GENERIC
Group
58,212
21,25
generations
GMDH
factor
4
項 式 221
186
付 録: CD-ROMに
付 属 のCD-ROMに
は C 言 語 とLISPに
Extension(UNIX)とHFS(Mac)の 参 照).ま
たMS-DOS,
で あ るISO9660に のFTPサ
つ いて
よ るGPの
シ ス テ ム がRockRidge
各 フ ォー マ ッ ト形 式 で 収 め られ て い る(表0.1 Windows3.1,
Windows95のCD-ROMフ
ォ ー マ ッ ト形 式
は,一 部 の フ ァ イ ル 名 を変 更 し て 収 め て あ る.こ の シ ス テ ム はGP
イ トで 提 供 さ れ るsgpc1.1とkoza-book-gp-implementation.lisp
を 本 文 の 内 容 に し た が っ て 若 干 修 正 し た も の で あ る. 各 シ ス テ ム は,sgpc1.1とLISPと
い う デ ィ レ ク ト リ の も と,そ
な サ ブ デ ィ レ ク ト リ に 収 め ら れ て い る(UNIXの
C 版 のGP
(sgpc1.1)
場 合 の 例).
れ ぞれ 次 の よ う
sgpc1.1付 -rw-r--r--
1 iba
1778
Jun
属 のGPシ
22 1993
DONUT:
ADF:
ス テム
make.script
SIN:
mutation.c
Makefile
Makefile
Makefile
populations.c
default.in
default.in
default.in
proto.h
fitness.c
donuts.c
fitness.c
qsort.c
prob.h
fitness.c
prob.h
mkdonuts
setup
setup
.c
testADF.dat
random.c random.h
.c
selection.c
perfect.lsp
trainADF.dat
treegen.c
lib:
prob.h
setup.c
crossover
REGRESSION:
Makefile
treeio.c
Makefile
ANT:
.c
eval.c
ant .c
Makefile
generations.c
default.in
default.in
getparams.c
fitness.c
fitness.c
gpc.c
make
prob.h
gpc.h
prob.h
setup.c
malloc4.c
santafe.trl
malloc4.h
setup
malloc4.readme
.c
LISP版 drwxrwsr-x
のGP
treeops.c
(LISP)
2 iba
512
Mar
ADF機
4 1995
ADF/
能 の あ るGPシ
drwxrwsr-x
2 iba 512 May 4 13:39
drwxrwsr-x
2 iba 512 Mar 4 1995 ANT.adf/
drwxrwsr-x
2 iba 512 May 4 13:17
ス テ ム(FTP版)
ANT/
筆 者 が 作 成 し た 人 工 蟻 探 索 シ ス テ ム(3.4節) 筆 者 が 作 成 した 人 工 蟻 探 索 シ ス テ ム のADF版(3.5.1.2節) GP/
GPシ ス テ ム(FTP版) ADF:
ANT:
ANT.adf:
EVEN-5-PARITY.lisp
ANT1.lsp
ANTadf.lsp
initfinal.lsp
ANT2.lsp
initfinal.lsp
litlflet.lisp
ANT3.lsp
litlflet.lsp
initfinal.lsp
santafe.trl
newkernel.lisp rep・gp santafe.trl
GP:
benchmark.lsp
kernel.lisp
MAJORITY-ON.lisp
edit.lisp
readme
NON-HAMSTRUNG-SQUAD-CAR.lisp
eval.lisp
rule.lisp
REGRESSION.lisp
initfinal.lsp
testharness.lisp
シ ス テ ム の動 作 は以 下 の 条 件 で確 認 済 み で あ る. 1.sgpc1.1:SunOS.4.1.x上
の 付 属 の C コ ン パ イ ラ.
2.LISP版GP,ADF機
能 の あ るGP:sun4
ま たLISP版GP(FTPで
上 のLucid
v4.1.
提 供 され る基 本 シス テ ム)はMacな
な こ とが 報 告 さ れ て い る(演 習11参
照).
前 出 の フ ァ イ ル リ ス トで わ か る よ う に フ ァ イ ル 名,エ に お け る 8文 字,3
どで も動 作 可 能
文 字 の 制 約 を 守 っ て い な い.UNIXお
ク ス テ ン ト名 はMS-DOS よ びMacで
は問題が な
い が,ISO9660で
は,フ ォ ー マ ッ ト形 式 の 制 約 で 一 部 の フ ァ イ ル を 8 文 字 ,3 文 字
の フ ァ イ ル 名,エ
ク ス テ ン ト名 に し て 収 め て あ る.使
エ ク ス テ ン ト名 の 変 更 に 応 じ て,include部 し,本
用 に あ た って は フ ァ イル名 ,
分 の 適 当 な 修 正 が 必 要 に な る .た
文 の 説 明 の 補 足 と し て ソ ー ス を 参 照 し た り,各
だ
自 で 変 更 す る 場 合 に は不 都
合 が な い もの と思 わ れ る .
「あ とが き」 に述 べ て あ る よ うに,個 人 レベ ル の研 究 以 外 の 目 的 で 本 書 の ソ フ トウ ェア を利 用 す る場 合 に は,GPシ 可 を得 る必 要 が あ る.ま た,本 を,当 然 なが らGPシ こ のGPシ
ス テ ム の作 者 に メ ー ル す るか,し か るべ き許
ソ フ トウ ェ ア を使 用 して 構 築 し た シ ス テ ム の責 務
ス テ ム の 作 者 は一 切 負 わ な い の で御 了 解 して い た だ き たい .
ス テ ム(お
よ び筆 者 の 修 正 部 分)に
は不 備 な点 もあ る か と思 われ る
が,「研 究 目 的 の ソ フ ト」 の 配 布 で あ るの で御 容 赦 願 い た い.ま 明 を も と に して 自分 の環 境 で の 強 力 なGPシ そ れ で は,お
楽 し み 下 さ い.
た,ぜ ひ 本 文 の 説
ス テ ム を構 築 し て欲 しい.
あ とが き
遺伝 子 とい う もの は,比 喩 的 な意味 で,利 己 的 な もの で あ る とい え る.し か し,快 く援 助 して く れ た 多 くの 友 人や 仲 間 を もつ私 に は,利 己 的 な遺伝 子 な どあ ろ うはず が ない.(ス テ ィーヴ ン ・J・ グー ル ド著,鈴 木 善 次/森 脇 靖 子訳:人 間の測 りまちが い,河 出書 房 新 社,1989
本 書 で は,遺 伝 的 プ ロ グ ラ ミ ング(GP)に シ ス テ ム の操 作 法,応
用 例,お
つ い て そ の基 本概 念 と代 表 的 なGP
よび 最 近 の 発 展 につ い て解 説 した.読 者 はGPシ
ス テ ム を 自分 な り に設 計 し,さ ま ざ ま な 問 題 に適 用 して 「進 化 論 的 な 学 習」 の 有 効 性 を確 か め て ほ しい.そ
の た め の 基 本 的 な 知 識 は す で に これ まで に 説 明 した は
ず で あ る.今 後 さ ら にGPに
つ い て深 く勉 強 し,実 際 の 問題 に適 用 し よ う とい う
読 者 は次 の よ うな ス テ ップ を踏 まれ る の が よい で あ ろ う. ● 第 2部 に紹 介 さ れ た文 献 や そ の 他 最 新 のGPの ●GPの
ソ ー ス を 読 み,理
● 自分 用 のGPの こ う して,ひ
解 す る.
シス テ ム を構 築 す る.
と りで も多 くの 読 者 がGPを
り,さ ら に はGPの
理 解 し,さ ま ざ ま な 分 野 に応 用 した
発 展 につ な が る研 究 開 発 を して くだ さ る な らば筆 者 に と っ て
この 上 な い 喜 び で あ る.ま た逆 説 的 で は あ るが,GPの GPは
文 献 を読 む.
限 界 を示 して も構 わ ない.
ま だ発 展 途 上 の 分 野 で あ り,荒 削 りで と ら え ど こ ろ が な い か も しれ ない が,
そ れ ゆ え に大 胆 な発 想 で研 究 を遂 行 で き る楽 し さが あ る.こ
の本 の 目的 はそ の楽
しみ へ の 第 一 歩 を導 くこ と に あ る. こ こ で 執 筆 に協 力 して くだ さっ た 方 々 にお 礼 の 言 葉 を 述 べ て本 書 を終 わ る こ と に した い. まず,第
1部 の 執 筆 を助 け て くれ た 2氏 に深 く感 謝 した い.ス
タ ン フ ォー ド大
学 のJohn Koza氏
はLISP版
のGPの
ソー ス を本 書 の た め に利 用 す る こ と に快
く同意 して くだ さ っ た.ま た,氏 は 以 前 か らGPの
資 料,文 献 を 送 って くだ さ り,
さ らに,メ ー ルや 国 際 会 議 に お い て情 報 交 換 や 活 発 な議 論 を して い た だ い た.そ の 成 果 が 本 書 につ なが って い る と言 って も過言 で は な い.ス タ ン フ ォー ド大 学(現 Neuromedia社)のWalter
Alden Tackett氏
快 く許 可 して くだ さ った.さ 言 を与 え て くれ た.GPシ
は, C 版 のGPの
ソー ス の利 用 を
ら に,本 書 の企 画 段 階 に お い て い くつ か の貴 重 な助
ス テ ム の 付 録 の添 付 は こ の 2氏 の御 助 力 が な け れ ば 実
現 しなか っ た で あ ろ う.こ の 場 を借 りて厚 く御 礼 申 し上 げ る.な
お,個 人 レベ ル
の研 究 以 外 の 目的 で 本 書 の ソ フ トウ ェ ア を利 用 す る場 合 に は,GPシ 者 に メー ルす る か,し
か るべ き許 可 を得 る必 要 が あ る.例 え ば,次
ス テ ム の作 の よ う な場 合
は注 意 して い た だ き た い. ● 営 利 目的 の シ ス テ ム 開発 ● シ ス テ ム の 大 幅 な 変 更 を伴 う研 究 お よび 開 発 詳 し くは シ ス テ ム に付 随 す る ドキ ュ メ ン トを読 んで い た だ きた い.ま
た,ド
キュ
メ ン トに 書 い て あ る と お り,本 ソ フ トウェ ア を使 用 して 上 の 目的 で 構 築 した シ ス テ ム の責 務 を,当 然 な が らGPシ
ス テ ムの 作 者 は 一 切 負 わ な い の で 御 了 解 して い
た だ きた い. ソ フ トウ ェ ア の フ リー ウ ェ ア 化 や メ ー ル とFTPに
よ る迅 速 な情 報 交 換 は,現
在 の コ ン ピュ ー タ技 術 の研 究 開 発 に は不 可 欠 の もの で あ ろ う.筆 者 は こ う し た研 究 促 進 の た め の 制 度 の恩 恵 に感 謝 す る と と も に,今 後 も この 協 力 関係 が 継 続 す る こ と を願 っ て い る.し
たが って,読
者 に も,本 書 で紹 介 したGPシ
ス テ ム な どの
「著 作 権 」 の 尊 重 をお 願 い す る もの で あ る. 筆 者 の所 属 す る電 子 技 術 総 合 研 究 所 に は貴 重 な研 究 の 場 を提 供 して い た だ い た. 特 に,大 津 展 之 部 長,新 工 大),樋 論,助
口哲 也 氏,丹
田 克 己 室 長,ま 羽 竜 哉 氏,Hugo
た,共 同研 究 者 で あ る佐 藤 泰 介 氏(現 deGaris氏(現ATR)に
東
は 日頃 か ら討
言 な ど を頂 戴 して い る.丹 羽 氏 に は 第 2部 の6.4節 の 執 筆 に も協 力 して い
た だ い た.実 習 生 と して と もにGPの
研 究 を行 って い る北 陸 先 端 大 学 院 大 学 の伊
藤 拓 也 君,神 戸 大 学 の 野 添 敏 秀 君,お
よ び北 海 道 大 学 の 本 堂 直 浩 君 は,そ
れぞれ
第 2部 の5.1節,5.2節,6.1節
の 執 筆 を 協 力 し て く れ た.こ
の 場 を借 りて 厚 く お
礼 を 申 し 上 げ る. さ ら に,国 た り,筆
言 をい た だ い
者 の 論 文 に 関 す る 建 設 的 な コ メ ン ト を く だ さ っ たGP,AL,GAの
方 々,David
Andre,
E.Kinnear Nordin,
際 会 議 や メ ー リ ン グ リ ス ト な ど を 通 じ て 頻 繁 に 議 論,助
Peter J.Angline,
Jr., Hiroaki Justinian
Kitano,
Rosca,,
Astro
Kenneth
Bernard Tellerら
De Jong, David
Manderick,
Heinz
研 究 者 の Fogel, Kenneth
Muhlenbein,
Peter
の 各 氏 に 感 謝 す る.
最 後 に な っ た が,本 書 の も とに な る研 究 生 活 を支 え て くれ た 父 武 男,母 和 子 に 心 か ら感 謝 す る.ま くれ た,さ
た,第 一 冊 目の 本 に続 い て 今 回 もい くつ か の 挿 し絵 を描 い て
らに,今 後 の研 究 生 活 を助 け て くれ る で あ ろ う妻 由 美 子 に感 謝 の 意 を
表 す る もの で あ る.
1996年 Scromato
5月 Lites(Shark
Bay)の38億
年 の 歴 史 を 前 に して
伊庭 斉志
〈 著者紹介〉
伊 庭 斉 志 学
歴
東京 大 学 理 学 部情 報 科 学 科 卒 業(1985)
職 歴
東京 大 学 大 学 院工 学 系 研 究 科情 報 工 学 専 攻博 士 課 程 修 了(1990) 工 学 博 士(1990) 工 業 技術 院 電 子 技術 総 合 研 究 所 入所(1990) 東 京 大 学大 学 院 工 学 系研 究 科 電 子情 報 工 学 専 攻 助 教 授(1998)
同大学院新領域創成科学研究科基盤情報学専攻 助教授(1999) 人工 知 能 基 礎 の研 究 に従 事 。 特 に学 習,推 論,知 能 ロ ボ ッ ト の環 境 モ デル,ビ ジ ョン,進 化 論 的計 算 手法 に興 味 を持 つ。
情報処理学会会員
情 報 科 学 セ ミナ ー
遺 伝 的 プ ログ ラ ミ ング 1996年
6月30日
第 1版 1刷 発 行
2001年
1月20日
第 1版 3刷 発 行
著
者 伊庭 斉 志
発行者
学校 法人 東 京 電 機 大 学 代 表 者
発行所
丸 山 孝 一 郎
東京電機大学 出版局 〒101-8457
東 京都 千 代 田 区神 田錦 町2-2 振 替 口 座 00160-5-
電話
印刷 三美印刷㈱ 製本 ㈱徳住製本所 装丁 高橋壮 一
CIba Printed
Hitoshi
業)
(03)5280-3422(編
集)
1996
in Japan
*無 断 で転 載 す る こ とを禁 じ ます。 *落 丁 ・乱 丁 本 は お取 替 えい た します 。 ISBN4-501-52540-1
R
71715
(03)5280-3433(営
C3055
〈日本 複 写権 セ ン ター委 託 出 版 物 ・特 別 扱 い〉