Genetic Programming
     in 開成祭
K.C.L.C 33代副部長 藤井陽介
自己紹介                こんなアイコン
発表者の簡単な仕様書
             HN: touyou
             現副部長
             現高2
             総合クリエイター
             Twitter:@touyoubuntu
             Skype:grouse-scorpion
             Facebook,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だとこの個体を木構造で表現します
おい、木構造ってなんぞ?
プログラミングでよく使うデータを管理するため
 の構造のこと
 ここが根(root)       +

              1       ×       線の上の方が親



   線の下の方が子        4       3
GPの用語では…

黒いのが非終端記号
                +

白いのが終端記号    1       ×

                4       3
その他のGP用語

適合度
 – 各個体の価値
パラメータ
 – GPの操作のための各種数値
終了条件
 – GPの操作を終える基準
続いて、各操作を行います。
適合度計算
 – 各個体の適合度を計算します
選択
 – 様々な手法で個体を選びます
交叉
 – 選んだ2個体を混ぜて新しい個体を作ります
突然変異
 – 個体の一部を変えて新しい個体を作ります
適合度計算
より正解に近い結果を出す個体
複雑さ(例:数式の長さ)が尐ない個体



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

文字通り
例:
 – トーナメント選択:ランダムにいくつかの個体を選
   んでその中でもっとも優良な個体を選択する方法
交叉
2つの個体を選択する
例えば一点交叉という手法は…

     +                        ×

 1       ÷            ÷               -

     4       3    2       1       6       4
一個選んだ

    +                       ×

1       ÷           ÷               -

    4       3   2       1       6       4
交換した

    +                       ×

1       -           ÷               ÷

    6       4   2       1       4       3
完成(^^)v
突然変異は…
突然一部が変わる(そのまま)

     +                        +

 1       -            ÷               -

     4        3   2       1       4       3
これらを駆使していくのだ!
失敗したらごめんなさい(訳:場合によっては省略)

GPデモ
日常に潜むGP

GPの応用例
とりあえず列挙
  人工知能
  金融予想
   医学
  産業機械
成熟しかけている分野ではあるが…

GPの未来
僕が考えました。
遺伝的プログラミングが発展していったら…
より精巧なプログラムが作れる
数学の未解決問題がとけるかも
それどころか様々な難問への適切なアプローチ
 を見つけられるかも…!
小並感なまとめ
GPは難しい
GPは奥深い
GPは未知だ
でも…いや、だからこそ

GPって楽しい!
ご清聴ありがとうございました。

Genetic programming