Advertisement

集合知プログラミング11章

Director & Data Analysis
May. 7, 2013
Advertisement

More Related Content

Similar to 集合知プログラミング11章(20)

Advertisement

集合知プログラミング11章

  1. 集合知プログラミング 11章 進化する知性(前半) @tetsuroito
  2. 誰? 名前           バックボーン 伊藤 徹郎       経済・ファイナンス twitter ID Python歴 @tetsuroito ビギナー 所属 株式会社ALBERT データ分析部
  3. 株式会社ALBERTについて 私たちは「分析力をコアとする情報最適化企業」です! ALBERTの事業領域 CRMソリューションの開発・提供 レコメンドエンジンの開発・提供 行動ターゲティング広告システムの 開発・提供 データサイエンティスト、エンジニア大募集中です! 皆様、ぜひよろしくお願いします!
  4. アジェンダ 第11章 進化する知性 11.1 遺伝的プログラミングとは? 11.2 ツリー構造のプログラム 11.3 最初の集団を作る 11.4 解決法をテストする 11.5 プログラムの突然変異 11.6 交 (Crossover) 11.7 環境を作り上げる 11.8 シンプルなゲーム 11.9 さらなる可能性 僕の担当範囲! @gepuro氏
  5. 11章でやること 1、遺伝的プログラミング 2、2つの問題 ・与えられたデータセットを基に数学的な関数を  再構築する問題 ・人工知能による単純なボードゲームのプレーヤーを  自動的に作り上げる問題 制約はPCのパワーだけ
  6. 今までの章との差異 ■今まで 特定の問題を適したアルゴリズムで解決 パラメータチューニング、最適化での探索 ■この章 問題を解決するための自動プログラミング アルゴリズムを作るためのアルゴリズム
  7. 遺伝的プログラミング
  8. 遺伝的プログラミングって何? ランダムな集団を生成 個々をランクづけ よい個体の有無 終了 Yes ベストな個体の複製 突然変異 交 No 新たな集団 遺伝的プログラミングの概要 進化!
  9. 突然変異と交 ■突然変異 !プログラムの特定のパーツ性能がよくなることを期待され ながらほんの少しずつランダムに変更される ■交 !もっともよいプログラムの中から一部を取り出し、他のよい プログラムのどれか一部と入れ替える 各段階の品質評価は適合度関数を用いて計測
  10. プログラムの終了条件 ・完全な解決方法が発見されたとき ・十分によい解決方法が発見されたとき ・何世代かにわたり改善が見られなかったとき ・世代の数が特定の上限値に達したとき 上記の終了条件に達するまで 新たな世代が作られ続ける
  11. ツリー構造のプログラム もっとも一般的な解析木構造 if > x 3 y 5 y 2 Lisp系の言語では解析木を直接入力するらしい‥ + -
  12. Pythonで表現すると def func(x,y): ! if x>3: ! return y + 5 else: ! return y - 2 ! コードで書くと理解しやすい
  13. Pythonでツリーを表現 使うクラス class fwrapper: # 関数ノードで利用される関数のラッパー。 メンバ変数は関数の名前、関数自身、それが受け取るパラメータの数  class node: # 関数ノードのクラス。fwrapperによって初期化される。 evaluateが呼び出されると、子ノードを評価し、関数をその結果に適用する。 class paramnode: # プログラムに渡されたパラメータたちの一つを返すだ けのノードのクラス。evaluateメソッドはidxで指定されたパラメータを返す class constnode: # 定数を返すノード。evaluateメソッドは単純に初期化された時 の値を返す
  14. 遺伝的プログラミングの流れ 1、ツリー構造を表現する 2、最初の集団をランダムに生成する 初期集団をランダムに生成することで多様性が生まれる GithubリンクURL:https://gist.github.com/tetsuroito/fd31664ef343eea5d0f5 3、解決方法をテストする 4、次世代へ
  15. プログラムの突然変異 突然変異とは? 最適なプログラムが選択された後、次の世代に複製され、 改造されること(子ノードの数の変更、枝の変更など) ただし、多くのノードを突然変異させてはダメ (ノードが変わる確率を比較的小さく設定する)
  16. 突然変異の例(ノード関数の変更) if > x 3 y 5 y 2 + - + y 5 y 2 + - 突然変異後
  17. 突然変異の例(サブツリーの置換) if > x 3 y 5 y 2 + - if > x 3 y 5 y 2 + - * X Y 突然変異後
  18. つづく!
Advertisement