遺伝的アルゴリズムには、優れた遺伝子に大きな伝播を与える何らかの方法が必要です。良い遺伝子と悪い遺伝子を区別する方法がなければ、遺伝的アルゴリズムをまったく使用できません。
遺伝的アルゴリズムを機能させるには、適合度の低いソリューションよりも適合度の高いソリューションを優先して再現できるようにする必要があります。それ以外の場合は、ランダムなソリューションを試すだけです。
私自身の経験からの典型的な例は次のとおりです。最初の音声ダイヤルシステムの1つを開発したとき、話された名前と同じ名前の保存されたコピーを一致させるアルゴリズムを見つけるのに苦労しました。25から1つの名前を選択する95%の精度で十分であると言われました。25の名前をそれぞれ10回言っている人々のコーパスが保存されていました。
最初に、話し言葉の長さと、そのいくつかの正規化されたチャンクの周波数エネルギーを測定する入力システムを開発しました。次に、それらのパラメーターの一致に重みを割り当てるアルゴリズムを開発し、それらの重みを介して2つのパラメーターセットを比較しました。
さて、最後のステップがありました-それらの重みの値はどうあるべきでしょうか?
1,000個のランダムな重みのセットを作成し、それらをコーパスに対してテストしました。最悪のパフォーマンスをした500を捨てました。残りの500個について、それぞれを複製し、そのうちの1つで、重みの1つをランダムに上げ下げしました。
コンピューターでこのプロセスを約2週間繰り返し、最終的に95%の精度基準を満たす重みのセットを作成しました。次に、コーパスにないデータでテストしました。精度は約92%でした。そのため、コーパスで98%の精度を達成するためにさらに実行し、その重みのセットはコーパスにないデータで95%の精度を生成しました。
つまり、ポイントは、遺伝的アルゴリズムを実行するにはフィットネス関数が必要だということです。悪い遺伝子から良い遺伝子を見分ける方法がない場合、良い遺伝子が繁殖し、悪い遺伝子が繁殖しないことをどのように確認できますか?