遺伝的アルゴリズム(GA)を用いた開発やシミュレーションにおいて、最も頻繁に遭遇する困難の一つが「局所最適解(Local Optima / ローカルオプティマ)」です。これは、進化の過程における「行き詰まり」の現象を指します。
なぜこの落とし穴が発生するのか、そしてどのようにして脱出するのかを解説します。
1. 局所最適解(ローカルオプティマ)とは?
局所最適解とは、「周辺エリアの中では一番良いが、世界全体(全探索範囲)で見たときにはベストではない解」のことです。対して、本当のベストな状態を「大域最適解(Global Optimum)」と呼びます。
山登りに例えると、霧の中で一番高い山(富士山)に登ろうとしているのに、手前の低い丘(高尾山)の山頂に到達してしまい、「周囲を見渡してもここより高い場所はない(少しでも動くと下り坂になる)」と判断して動けなくなる状態です。
2. なぜGAで局所最適解に陥るのか?
GAでは、集団の個体たちが似たような「そこそこ優秀なDNA」ばかりになると、交叉を行っても同じような個体しか生まれなくなります。これを「集団の多様性の喪失」や「早期収束」と呼びます。
gene46においても、あるスレッドで全員が似たような「少し綺麗な丸」を選び続けると、進化の勢いが止まり、それ以上複雑で新しい形状が現れにくくなることがあります。
3. 局所最適解から脱出するためのアプローチ
対策①:突然変異率の調整
遺伝子の一部を強制的に別の形に書き換えることで、現在の「低い丘」から一気に別の場所へワープ(跳躍)します。運良くより高い山の斜面にワープできれば、そこから再び進化が上り始めます。
対策②:マルチスレッド進化(アイランドモデル)とフォーク
独立した複数の島(集団)で別々に進化を進め、たまに個体を移住させる方法です。
gene46では、ユーザーが気に入った個体を別のプロジェクト(スレッド)に「分岐(フォーク)」させることができます。メイン系統とは別のスレッドを立てて異なる選別基準で淘汰を進めることで、メイン系統の局所最適解から脱出した、全く新しい系統を生み出すことが可能になります。
4. まとめ
進化が行き詰まったと感じたら、それは「局所最適解」に捕まっているサインかもしれません。そんなときはスレッドを「フォーク」して、あえていつもと違うスワイプ(今まで選ばなかった荒削りな個体を選ぶなど)を試してみることで、一気に進化が加速する可能性があります。
この記事の執筆・監修
gene46 運営・開発チーム (GA研究ユニット)
遺伝的アルゴリズム(GA)を用いた自律進化型ジェネレーティブアートの挙動および最適化について研究・開発を行っているプロジェクトチームです。ゲーム開発と計算機科学の境界線上で活動しています。