Genetic programming

Preview:

Citation preview

Genetic Programmingin 開成祭

K.C.L.C 33 代副部長 藤井陽介

自己紹介

HN: touyou現副部長現高2総合クリエイターTwitter:@touyoubuntuSkype:grouse-scorpionFacebook,mixi,Google+

発表者の簡単な仕様書

こんなアイコン

今までにつくったものAndroid アプリ・ Web サービス– 災害ったー ,Nintori,n33t など– 組の用語集サイト

部活・個人でゲームとかソフトとか部誌・運動会組パンフレット(来年)作曲入門中(エール作曲係)ひとり墓地 final の PV

まぁようするに…

ホームページ見といてね

URL はhttp://beta.touyoubuntu.zatunen.com/

まぁ「 touyoubuntu 」で調べれば出てきます。

では、本題。今日話す事

テーマを選んだわけ遺伝的プログラミング(以降 GP と表記)とはな

んなのか?GP の仕組みGP のプログラムデモ応用されている分野GP の未来

まずこれテーマを選んだわけ遺伝的プログラミング(以降 GP と表記)とはな

んなのか?GP の仕組みGP のプログラムデモ応用されている分野GP の未来

理由今年情報オリンピック夏季セミナーに行ってき

たそこでこのことを学んだそれが楽しかった

という安直な理由です。こんなので勉強しました。

続いて…テーマを選んだわけ遺伝的プログラミング(以降 GP と表記)とはな

んなのか?GP の仕組みGP のプログラムデモ応用されている分野GP の未来

遺伝的プログラミングとは遺伝子の進化を応用した、様々な問題に対する

解法を導き出すためのプログラムわかりにくいよね←

例を見てみようたとえばいくつかの点の情報があってそれのす

べてを通るようなグラフの数式を出したいそんな時

GP すると、その数式を自動生成してくれます。

ふぁ!?

そんなんできるわけ無いだろ。数式考えるのなんて人間のほうが得意に決まってるじゃないか。人工知能が開発されたとでも?大体数式考えるのになんで遺伝子の進化の仕組みが必要になるんだよ、このホラ吹きめ。

とりあえず仕組みを解説します。

GP の仕組みわかりやすくなるように最大限努力します。

まず個体をランダムに生成します。先ほどの例だと個体≒数式です大体 50 ~ 500 個体ぐらい最初に作ります通常の GP だとこの個体を木構造で表現します

おい、木構造ってなんぞ?プログラミングでよく使うデータを管理するため

の構造のこと

1 ×

4 3

ここが根( root )

線の上の方が親

線の下の方が子

GP の用語では…

1 ×

4 3

黒いのが非終端記号

白いのが終端記号

その他の GP 用語

適合度– 各個体の価値

パラメータ– GP の操作のための各種数値

終了条件– GP の操作を終える基準

続いて、各操作を行います。適合度計算– 各個体の適合度を計算します

選択– 様々な手法で個体を選びます

交叉– 選んだ2個体を混ぜて新しい個体を作ります

突然変異– 個体の一部を変えて新しい個体を作ります

適合度計算より正解に近い結果を出す個体複雑さ(例:数式の長さ)が少ない個体

上の2つを満たす個体がより優良な個体と判断されるような基準をつくって計算します。ここの工夫で GP の最終結果の良し悪しが決まります。

選択

文字通り例:– トーナメント選択:ランダムにいくつかの個体を選

んでその中でもっとも優良な個体を選択する方法

交叉2つの個体を選択する例えば一点交叉という手法は…

1 ÷

4 3

×

2

-

6 41

÷

一個選んだ

1 ÷

4 3

×

2

-

6 41

÷

交換した

1 -

6 4

×

2

÷

4 31

÷

完成 (^^)v

突然変異は…突然一部が変わる(そのまま)

1 -

4 3

2

-

4 31

÷

これらを駆使していくのだ!

GP デモ失敗したらごめんなさい(訳:場合によっては省略)

GP の応用例日常に潜む GP

とりあえず列挙人工知能金融予想医学産業機械

GP の未来成熟しかけている分野ではあるが…

僕が考えました。遺伝的プログラミングが発展していったら…より精巧なプログラムが作れる数学の未解決問題がとけるかもそれどころか様々な難問への適切なアプローチ

を見つけられるかも…!

小並感なまとめGP は難しいGP は奥深いGP は未知だでも…いや、だからこそ

GP って楽しい!

ご清聴ありがとうございました。

Recommended