生命・進化・加速
遺伝的アルゴリズム:進化を計算にする
選択・交叉・突然変異で、解を進化させる。ページ増殖アルゴリズムとの関係と、その限界。
概要
遺伝的アルゴリズム(GA)は、生物の進化を模した最適化の手法で、ジョン・ホランドが1975年に体系化しました。進化的計算の一種です。
| 要素 | 内容 |
|---|---|
| 個体 | 解の候補を、符号(遺伝子)で表したもの |
| 適応度 | 解の良さの評価値 |
| 選択 | 適応度の高い個体を、多く残す |
| 交叉 | 二つの個体の遺伝子を、組み替える |
| 突然変異 | 遺伝子を、ランダムに少し変える |
手順
- 個体の集団をランダムに作る。
- 全員の適応度を評価する。
- 選択・交叉・突然変異で、次世代を作る。
- 収束するまで繰り返す。
理論と限界
- スキーマ定理(ホランド):短く、適応度の高い部分パターンが、世代を経て増える、という議論。
- ノー・フリー・ランチ定理(ウォルパートとマクレディ、1997):全ての問題で平均すると、全てのアルゴリズムの性能は同じ。万能の最適化手法はない。
- 局所解に捕まる、適応度の設計が結果を決める。
この Wiki のページ増殖との関係
| GA | growth.py |
|---|---|
| 集団 | 1つの遺伝子(採点の重み)のみ |
| 選択 | 前回の最良と比較し、下回れば戻す(山登り) |
| 交叉 | なし |
| 突然変異 | 重みへの±10%の変動 |
現在の実装は、本格的なGAではなく、山登り法((1+1)-進化戦略に近い)です。集団と交叉を導入すれば、局所解に強くなります(拡張案)。「冪乗の速度」は保証されません(ノー・フリー・ランチ)。
拡張案
- 複数の遺伝子(採点の重みの組)を、同時に保持し、各回で最良のものを採用。
- 候補選びの方針を、遺伝子に含める(関連度偏重・新規性偏重など)。
- 適応度に、読者の反応(閲覧・滞在)を加える(公開後)。
関連項目
Wikipedia ミラーで読む(wikipedia-is-dead.com)
実装側:マニフェスト ↗ / ネットワーク ↗ / 削除記事の救出 ↗ / 参加する ↗ 思想とURLの対応表