2009-04-15

間違いだらけの遺伝的アルゴリズム


うん、ごめん。タイトル釣り。っていうか今から書くことも間違ってるかもしれない。

識者のフォローを待ちたい。

http://b.hatena.ne.jp/entry/http://wiredvision.jp/news/200904/2009041523.html

これの話なんだけど

遺伝的アルゴリズム」って出たときに、もうこれは人工知能ではないと一応考えていい。それはソートプログラム人工知能ではないのと同じみたいな。

「f(x,y)を最大にする整数x,yを求めよ」

これを遺伝アルゴリズムでやるとこうなる。

  • ランダムで(x,y)の組をいくつか作る。これが個体。xyは遺伝子になる
  • すべての個体に対してf(x,y)を計算する。このときf(x,y)は評価関数という。
  • 評価の低い個体の何割かは子孫を残さず死ぬ。
  • のこりの個体は以下の方法で子孫を作れる。
    • コピーを残す。
    • 自分のもってるx,yを交換した子孫を残す
    • 他の個体とx,yのどちらかを交換する
    • ランダムで生成したx,yと置き換えた子孫を残す
  • 次世代に対してf(x,y)を計算する

これを上昇しなくなるまで繰り返したら終り。これだけ。

単純化の為にxyとしたけど、x,yを「素数の和」と考えて素数の列abcdefghを遺伝子なんてするとよりそれっぽくなる。要は遺伝的アルゴリズムとはランダムサーチをちょっと改良した奴ってことだ。

記事中のプログラムは現象をモデル化しては考えてない。文字列のなかから現象に近い値を示す数式とおなじ文字列を選び出すだけだ。

あと、どれくらいの率で子孫を残すか、交換が起こるか、突然変異が起こるか等は計算の収束に影響を与える遺伝子とは独立したパラメータで、それをプログラムがいじるのであれば、まあ一応人工知能と呼んでも怒られないかもしれない。

以上、あっちの記事タイトル(邦訳のみ)も釣りっぽいよねって話でした

  • どんな方法であれ、ある種の推論めいたことをするなら、なんでも人工知能って読んでいいことになってるからなあ、今は。 それを人工知能という問題意識の堕落、工業的な消費だと怒...

  • 「f(x,y)を最大にする整数x,yを求めよ」 これを遺伝アルゴリズムでやるとこうなる。  うーん、これはイプシロンーデルタ論法の一変形のような気がする。

  • 増田が何を言いたいのかはいまいちわからないけど、この記事の着想は面白いな。 どういう実装になっているのか気になる。 自動微分みたいに数式をツリーで表現してるみたいだけど、...

  • そうだよ。結局、人工知能って出来てみると「なぁんだ、ただのプログラムじゃん」ってなる。 人工知能の定義がはっきりしないからそうなるんだけど、人工知能を定義できたら、人工...

  • そうだよ。結局、人工知能って出来てみると「なぁんだ、ただのプログラムじゃん」ってなる。 人工知能の定義がはっきりしないからそうなるんだけど、人工知能を有意義な形で定義す...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん