Генетичний алгоритм вимагає певного способу винагородити хороші гени більш широким розповсюдженням. Якби у вас не було можливості сказати хороші гени від поганих генів, ви б взагалі не могли використовувати генетичний алгоритм.
Щоб генетичний алгоритм працював, ви повинні дозволити відтворювати більш придатні рішення, віддаючи перевагу менш придатним рішенням. В іншому випадку ви просто спробуєте випадкові рішення.
Ось типовий приклад з мого власного досвіду: Розробляючи одну з перших систем голосового набору, нам важко було знайти алгоритм, щоб зіставити розмовне ім’я зі збереженою копією цього імені. Нам сказали, що 95% точності вибору одного імені з 25 було достатньо. У нас був збережений корпус людей, який говорив по 25 імен по 10 разів кожен.
Спочатку ми розробили систему введення, яка вимірювала довжину вимовленого слова та енергію частоти в кількох нормалізованих фрагментах. Потім ми розробили алгоритм, який присвоїв ваги збігам за цими параметрами і порівняв два набори параметрів через ці ваги.
Тепер у нас був останній крок - якою має бути цінність цих ваг?
Ми створили 1000 випадкових наборів ваг і випробували їх на корпусі. Ми викинули 500, які виконували найгірше. Для решти 500 ми копіювали кожен і в одному з них випадковим чином піднімали або опускали одну з ваг.
Ми повторювали цей процес на комп’ютері близько двох тижнів, поки він нарешті не встановив набір ваг, який відповідав критерію точності 95%. Тоді ми тестували його на даних, не в корпусі. Це було приблизно 92% точно. Таким чином, ми пробігли довше, щоб досягти 98% точності на корпусі, і цей набір ваг дав 95% точності щодо даних, що не знаходяться в корпусі.
Отже, справа в тому, що ви повинні мати функцію фітнесу, щоб запустити генетичний алгоритм. Якщо у вас немає способу сказати хороші гени від поганих генів, як ви можете переконатись, що хороші гени відтворюються, а погані - не?