MORIKAWA

森川くん、人工知能の本をここで再編集。

<マッチ箱で作るGA#3> 

突然変異や交叉で作られた新しい遺伝子が、
環境に適していれば生き残る、
そうでなければ淘汰されてしまう。
生き残った遺伝子同士が交わって、
さらに新しい遺伝子を作っていく。
われわれの進化は、基本的には
そういう単純な方法で行われてきたわけですが、
それをシミュレーションしたのが、
GA(遺伝的アルゴリズム)と呼ばれる人工知能です。
進化というと、羽が生えたり、
首が伸びたりといった身体的な変化ばかりのように
思いがちですが、感覚器や脳もまた体の一部ですから、
思考、判断、記憶のような働きも、
立派に進化するわけです。

さて、で、今回は、GAの動きをマッチ箱と
マッチ棒を使って実際に試してみることにします。
前回のGAの説明では、遠足のお菓子問題を
取り上げましたが、
今回は、思考力、記憶力の代名詞みたいな
大学入試問題を取り上げてみました。
問題はこれです。
現役からずいぶんと時間がたっている人(ぼくも)には、
ちょっとむつかしいですよ。
マッチ箱が、大学入試問題を解くなんて、
ちょっといいでしょ。
(ま、設定に少々苦しいところもあるんですが)


今回も原田さんのアプリケーションに
ご協力をいただきます。
実際にマッチ箱を用意しなくても、
このアプリでその振る舞いが体験できます。

こちら

以下、「マッチ箱の脳」の「ニューラルネットワーク」より抜粋


<マッチ箱で作るGA>

●体験するGA
この本ではいろいろなAIのモデルを紹介していきます。
しかし、実際にそれを体験する機会はあまりありません。
自分でプログラムが書けるか、
誰かにプログラムを書いてもらう、
もしくは、市販のアプリケーションを買える
財力があるかでないと、
どうAIが学習を進めていくか、
オリジナルの問題を解かせてみることを体感できません。

そこで、この本では、タイトルにもあるように、
マッチ箱とマッチ棒を使って、
簡単なAIのモデルを作ってみたいと思います。

最初にお断りしておきますが、
人間が手作業で扱えるマッチ箱や棒の量ですから、
たいそうなことはできません。
あくまでも基本原理がなんとなくわかる、
そういった程度のサンプルです。あしからず。


●マッチ箱AIに東大入試試験問題を解かせてみる
東大入試試験問題、というのはウソです。
正確には、マッチ箱とマッチ棒に、
マークシート式の試験問題を解かせるという実験です。

ここでは、下のような10問の問題を用意しました。
(文末参照)
どの問題に対する答えも3択です。
どれも結構難しい問題ですね。



さて、脳も何もないこのマッチ箱GAが
うまくこの問題を解けるでしょうか?

□用意する道具
◆マッチ箱 10箱×10くらい
◆マッチ棒 30本×10くらい
◆サイコロ 2個


□準備
GAの章で説明しましたように、
集団には多くの遺伝子があった方が、
GAはうまく機能します。ここでは10個体とします。

マッチ箱(遺伝子)は、1個体あたり、10箱です。
まず、このマッチ箱の中に1本から
3本までの適当な数のマッチ棒を入れます。
各個体は、マッチ箱10個を横一列に並べます。

準備は以上です。
さすがに、10人でこの実験をやるというのは
現実問題として不可能でしょうから、
その場合は、一人で何個体か受け持ってください。

□定義
横一列に並べられたマッチ箱は、
次のような意味を持つとします。

一番左のマッチ箱は、第1問に対する解答を意味します。
左から2番目のマッチ箱は、第2問に対する解答、
以下順に、一番右のマッチ箱は
第10問目の解答と定義していきます。

さて、各マッチ箱の中には1本から
3本のマッチ棒が入っていますが、
このマッチ棒の数が、
3択のうちどれを選んだかを示しています。
マッチ棒が1本なら答えAを選んだ、
マッチ棒が2本なら答えBを選んだ、
マッチ棒が3本なら答えCを選んだ、というわけです。



□実験開始
担当の10箱を開きます。
そして、その中のマッチ棒の数を数えます。
次に、上の「定義」に従って、
各箱のマッチ棒の数が示す答えを出します。
これを正解と照らし合わせます。
そして、正解していれば、
各問題につき10点をもらいます。
全問正解なら100点となります。
こうして、各自、自己採点をし、成績を出します。


●親の選択と淘汰
この成績に従って、成績順位を出します。
そして、成績順位の上位2個体が親となり、
最下位2個体は淘汰されることになります。

淘汰された個体(の担当者)は、
手持ちぶさたでしょうから、
子遺伝子役を務めることにします。

まず、親となった
個体のマッチ箱の状態(マッチ棒の数)を
忠実に再現します。
つまり、親となった個体の複製となるわけです。
これが「子遺伝子のもと」となります。


●交叉
ここで、2つのサイコロを振ります
(誰が振ってもかまいません)。
そして、サイコロの目の合計が、交叉する場所となります。
サイコロの目の合計の数が2なら、
1箱目と2箱目の間で、サイコロの目の合計の数が6なら、
5箱目と6箱目の間で交叉するとなります。
また、マッチ箱の数が10個ですから、
サイコロの目の合計が11以上の場合は、
交叉をしないとします。

交叉の方法はGAの手法そのままです。
交叉する場所を支点に、
「子遺伝子のもと」のマッチ箱を入れ替えます。

●突然変異
こうしてできた子遺伝子2個体には、
突然変異を起こさせます。
子遺伝子は、それぞれ別にサイコロ2つを振ります。
そして、サイコロ目の合計数にあたる番号の
マッチ箱が突然変異を起こします。
ただし、このままでは、
サイコロ目の合計数が2以上なので、
1つ目のマッチ箱は突然変異を
起こさないことになってしまいます。
そこで、例外的に、サイコロの目が11ならば、
1つ目のマッチ箱が突然変異を起こすことにします。
また、サイコロの目が12ならば、
その子遺伝子は突然変異を起こさないということにします。


そうそう、マッチ箱が突然変異を起こすというのは、
中に入っているマッチ棒の数を変えるということです。
突然変異を起こすと決まったマッチ箱は、
次のルールに従って、
中に入っているマッチ棒の数を変えることにします。

 ・マッチ棒が1本だったら、マッチ棒を2本にする
 ・マッチ棒が2本だったら、マッチ棒を3本にする
 ・マッチ棒が3本だったら、マッチ棒を1本にする



●次の世代
子遺伝子は、以上で完成です。
成績の悪かった2個体が削除され、
子遺伝子2個体が加わり、新しい世代を作りました。
前の世代からの生き残りの個体は
もう成績を出してありますから、
新たに加わった子遺伝子2個体だけ、
答えを正解と照らし合わせて、成績を出します。

こうして、再び成績順に並べて、親となる個体、
淘汰される個体を選びます。そして、親となる個体から、
新たに子遺伝子を創り出します。

以上を繰り返して、どんどん、
世代交代を繰り返していきます。


●終了
こうして、世代交代を繰り返していくと、
ついには100点満点を取る個体が誕生します。
そうしたら、この実験は終了です。

GAはこのように、問題を理解しないまま
(というか、問題用紙も見ていない)、
ただただ単純に試行錯誤を繰り返すことだけで
解答を見つけ出してしまいます。
これがGAの解答を見つけ出す方法です。

ところで、通常のGAでは遺伝子は
0か1の2つの数字で表されます。
この実験に例えるなら、マッチ棒が1本入っているか、
入っていないかだけとなります。
しかし、この実験のように、
1本以上のマッチ棒を使うこと
(=1以上の数字を使うこと)も、
GAでは許されています。

さて、こちらで実験してみた結果、
16世代で100点満点を取る個体が生まれました。
しかし、残念ながら、実際の学科試験では、
16回もチャレンジする機会はないでしょう
(16回試験を受けることはできても、
 毎回同じ問題には絶対にならないから)。
ですから、GAモデルが実際に入学試験を突破することは、
残念ながら不可能です。

2001-04-22-SUN

BACK
戻る