MORIKAWA

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

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

さて、教科書検定も終わり、
わかりやすくすることと
内容を削るということの区別もつかない困った大人達が、
とほほな教科書というか学習方針を作っちゃいましたが、
それに抗議して、
今回は理科の復習から始めることにしました。

われわれは、だいたい五十種類の文字を使って、
小説を書いたり、哲学を語ったり、
愛を告白したりしています。
それに対して、われわれの遺伝子というかDNAは、
4種類の文字で書かれています。
日本語に例えるなら
「アオイイイエイエイオイエエアア、、、」
みたいな感じですね。
で、遺伝子の場合、必ず3つの文字で
1つの意味(アミノ酸)と決まっていますから、
上の例だと、
「アオイ」「イイエ」「イエイ」
「オイエ」「エアア」、、、と区切られていきます。
そして、例えば、「アオイ」ならアミノ酸A、
「イイエ」ならアミノ酸Bを作るというような
決まり事になっています。
なぜ遺伝子は4種類の文字を使うのか?
なぜ3つの組み合わせで
1つの意味(アミノ酸)を作るとしたのか、
AIとは全く関係なくなっちゃっていますが、
考えることにします。
4種類の文字を3つ組み合わせると、
その組み合わせの種類はいくつになるでしょう。
ちょっと、小学校の算数を思い出してほしいんですが、
これは4×4×4=64種類ということになります、、ね。

これに対して、アミノ酸というのは
世の中に20種類しか存在しませんから、
4種類の文字を3つ組み合わせることで
全アミノ酸を決めるってことができるわけです。
これに対して、2種類の文字を3つ組み合わせるだと、
2×2×2=8種類となって足りません
(DNAの化学的性質上、
 奇数の種類というのはありえないから、
 3種類は考えない)。
また、4種類の文字を2つ組み合わせて
1つの意味とすると、4×4=16種類とこれまた、
全アミノ酸20種類を網羅するに足りません。
ちゃんと、神様は考えているんですね。
さて、これに対して、コンピュータの遺伝子
(を使ったAI)は、何種類の文字を使うんでしょうか。
今回は、そのあたりからの話です。

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


●GAの遺伝子は0と1
我々の遺伝子は、4種類の塩基
(アデニン、シトシン、チミン、グアニン)から
できています。

一方、一般的なGAでは、
塩基に相当するものは2種類の数字、<0,1>になります。
ですから、GAの遺伝子は、

<0100101001111>

というような感じに0と1が、
ずらっと並んだものになるのです。

この0と1の組み合わせが何を意味しているか、
それはそのときに解こうとしている問題によって、
自由に決めていきます。
例えば、上の「遠足のお菓子問題」では、
この数字の組み合わせが、お菓子を買う、
買わないを意味していると決めます。

「数字の並び順」はお菓子の順番を意味し、
「数字の1はそのお菓子を買う、0は買わない」を
意味するといった具合です。
 




●サイコロを振って遺伝子を生む
さて、GAがうまく進化するためには、
個性豊かな遺伝子がそれなりの数必要だといわれています。
我々の世界で、多様性が大切だといわれているのと
同じ理由で、GAにおいても、最初の世代には、
いろいろなタイプの遺伝子がいることが必要となります。

そして、この多様性を出すために、
一般的なGAでは、
ランダムに数字<0,1>の組み合わせを作り出します。

「神はサイコロを振らない」と
アインシュタインは言いましたが、ここでは、
人がサイコロを振って遺伝子を創造するわけです。


●遺伝子の成績表
ランダムにたくさんの遺伝子を作ったら、
彼らの成績を出します。

成績とは、上の「遠足のお菓子問題」で言えば、
制限金額内でなるべくいろいろな種類のお菓子を、
しかも、できるだけ総量が多くなるような遺伝子が、
最も成績が良い遺伝子(=買い方)となります。

そして、その成績によって生き残れる、
淘汰される遺伝子が決められます。

ですからこの成績の出し方は、
GAがうまい具合に進化していくか否かに、
とても大きく影響します。

各個体(=遺伝子)の「成績」をどうはじきだすかは、
問題ごとに違います。
この評価はとても大事な要素であり、
この評価方法が良いか悪いかで、
そのGAがうまい解答を見つけられるかどうかが、
だいたい決まってしまうといって差し支えないほどです。

最近、世間ではエリートと呼ばれる人たちの
不祥事が取り沙汰されることが多いですね。
これは、学科試験の成績のみを対象とする評価方法が、
いかにまずいかを物語っています。
GAにおいても、同じような理由で
評価方法を慎重に決める必要があります。


●GAの世界で子作りする
各個体の成績を出したら、
成績によって、生き残る個体、
淘汰される個体が選ばれます。

さて、生き残れるかどうかは、
基本的には成績の良いことが条件となります。
が、選出方法には、エリート戦略と呼ばれる、
成績が一番良い個体が生き残り、
最も成績が悪い個体が淘汰されるという方法や、
ルーレット戦略と呼ばれる、
成績に応じた確率で選ばれるものなどがあります。

例えば、個体Aの成績が100点、
個体Bの成績が50点だったとすると、エリート戦略では、
100%個体Aが選ばれます。
これに対してルーレット戦略では、
個体Aが選ばれる確率は、
個体Bが選ばれる確率の2倍になるという考えです。
ですから、依然、成績の良い方が
選ばれる確率は高いのですが、
エリート戦略を取ったら100%淘汰されてしまう
成績の低い個体にも、生き残るチャンスが残ります。

ちなみに、ルーレット戦略の名の由来ですが、
宝くじの当選番号を決めるときに
ルーレットの的に矢を射ち込み、
そこに書かれた数字を選ぶようなイメージからきています。
また、
ルーレット→カジノ→カジノの本場→モンテカルロ
ということから「モンテカルロ法式」などとも
呼ばれます(これほんと)。




●親を決める
生き残った個体のうちからは、
次の世代に子孫を残せる親となる資格を持つ個体が
選ばれます。
問題によっては、生き残った個体全部が
親になるという方法もありますし、
2個体だけが親になれるという方法もあります。

親の選び方は、上のエリート戦略や
ルーレット戦略をそのまま利用するなどして選びます。

●コピー人間じゃつまらないので
親となる個体が決定したら彼らの子供を作ります。
しかし、これが完全に親の生き写し(コピー)だと、
いっこうに進化になりませんので、
交叉という方法で両親の遺伝子を交ぜ合わせたり、
突然変異を起こして
遺伝子の一部をランダムに変化させたり、
といった作業をします。

交叉とは、遺伝子を交ぜ合わせること、
つまり2つの遺伝子をある部分で入れ替えることを
意味します。
例えば、子孫を残す親の遺伝子が次の2つだったとします。


◆親A <00000000>
◆親B <11111111>

この両親の遺伝子の
5番目と6番目の間で交叉するとしましょう。

◆親A <00000▲000>
◆親B <11111▲111>
 ▲=交叉個所

交叉個所を支点に、
くるっと両者の遺伝子を入れ替えるわけです。
この2つの遺伝子が交叉するとこうなります。

◆子A <00000111>
◆子B <11111000>

どの個所で交叉するかは、一般的にはランダムに決めます。
また、交叉するポイント数も、何カ所でもかまいません。
これで、子孫は、親の遺伝子を受け継ぎながらも、
ちょっと違う個性を持つことになります。
 
突然変異も個性を持たせるための作業で、
ある個所の0と1が入れ替わってしまうことをいいます。
1だったところが突然変異する場合は0に、
0だったなら1に変わります。

例えば、次のような遺伝子の
3番目の個所に突然変異があったとするとこうなります。

◆突然変異が起こる前の遺伝子  
<00000000>

◆突然変異が起こった後の遺伝子 
<00100000>
▲突然変異の個所



突然変異を起こすかどうか、どの個所で突然変異するかは、
これまたランダムに決めます。
突然変異はどうしても必要な手段なのですが、
突然変異が起こる確率は、
かなり低く設定しておく必要があります。
なぜなら、優秀な遺伝子が
せっかく獲得した情報を壊してしまう
可能性があるからです。

ただ、突然変異を絶対にしないとすると、
これまた進化が止まってしまうのも不思議なところです。

GAは以上に説明したように、
1.各個体の成績を出す
2.成績によって、親となる個体、淘汰される個体を選ぶ
3.親となった遺伝子を交叉、突然変異させて、
 新しい個体(子)を作る
を、繰り返します。

これを、一世代と呼びます。
淘汰される遺伝子は、
新しく作られた子孫で補われますので、
集団の人数(?)は常に同じになります。

ただただ、こうして世代を交代していきます。
簡単なアルゴリズムですよね。
こうした単純な作業の繰り返しにもかかわらず、
どんどん進化していく
(=良い答えに向かっていく)のですから不思議です。

2001-04-12-THU

BACK
戻る