Які саме генетичні алгоритми і для яких проблем вони хороші?


16

Я помітив, що в кількох питаннях на цьому сайті згадуються генетичні алгоритми, і це дало мені зрозуміти, що я насправді не знаю багато про них.

Я чула цей термін раніше, але це не те, що я коли-небудь використовував, тому я не маю багато уявлення про те, як вони працюють і для чого вони хороші. Все, що я знаю, - це те, що вони включають якусь еволюцію і випадково змінюються значення.

Чи можете ви дати мені коротке пояснення, бажано включити якийсь практичний приклад, який ілюструє основні принципи?

Відповіді:


11

Еволюційні алгоритми - це сімейство алгоритмів оптимізації, заснованих на принципі природного відбору Дарвіна . В рамках природного відбору в даному середовищі є популяція особин, які змагаються за виживання та розмноження. Здатність кожної людини досягати цих цілей визначає їх шанс народити дітей, інакше кажучи, передавати свої гени наступному поколінню людей, які з генетичних причин матимуть підвищений шанс зробити добре, ще краще, реалізуючи ці дві цілі.

Цей принцип постійного вдосконалення протягом поколінь застосовується еволюційними алгоритмами для оптимізації вирішення проблеми. У початковому поколінні популяція, що складається з різних особин , формується випадковим чином або іншими методами. Індивід - це рішення проблеми, більш-менш гарне: якість особистості стосовно проблеми називається придатністю , яка відображає адекватність рішення проблеми, яка повинна бути вирішена. Чим вища придатність людини, тим вище ймовірність передавати певний або весь свій генотип особам наступного покоління.

Індивід кодується як генотип , який може мати будь-яку форму, наприклад, ** бітовий вектор ( генетичні алгоритми ) або вектор реального (стратегії еволюції). Кожен генотип трансформується у фенотип при оцінці індивіда, тобто при обчисленні його придатності. У деяких випадках фенотип ідентичний генотипу: його називають прямим кодуванням. В іншому випадку кодування називається непрямим. Наприклад, припустимо, що ви хочете оптимізувати розмір прямокутного паралелепіпеда, визначений його довжиною, висотою та шириною. Для спрощення прикладу припустимо, що ці три величини є цілими числами від 0 до 15. Потім можна описати кожну з них, використовуючи 4-бітове двійкове число. Прикладом потенційного рішення може бути генотип 0001 0111 01010. Відповідний фенотип - паралелепіпед довжиною 1, висотою 7 та шириною 10.

Під час переходу від старого до нового покоління називаються операторами варіації , метою яких є маніпулювання особами. Існує два різних типи операторів варіації:

  • ці мутації оператори , які використовуються для введення варіації в межах того ж індивідуума, як генетичні мутації;
  • що кросовер оператори , які використовуються , щоб перетнути щонайменше , два різних генотипів, в якості генетичних схрещувань від розведення.

Еволюційні алгоритми зарекомендували себе в різних областях, таких як дослідження операцій, робототехніка, біологія, нюанси або криптографія. Крім того, вони можуть оптимізувати кілька цілей одночасно і можуть використовуватися як чорні скриньки, оскільки не передбачають жодних властивостей математичної моделі для оптимізації. Їх єдиним реальним обмеженням є обчислювальна складність.

введіть тут опис зображення


Дякуємо, що відповіли на це тут! Хоча я особисто вважаю, що це ідеальне питання для AI SE, оскільки воно є базовим та "високим рівнем", не соромтеся направляти ОП та читачів на Cross Valified для більш складних питань з цього питання, що підходять для цього стека .
DukeZhou

8

Генетичний алгоритм - це алгоритм, який випадковим чином генерує ряд спроб вирішення проблеми. Цей набір спроб рішення називається "населення".

Потім він намагається зрозуміти, наскільки добре ці рішення вирішують проблему, використовуючи задану функцію фітнесу . Спробовані рішення з найкращим значенням фітнесу використовуються для створення нової сукупності. Це можна зробити, внісши невеликі зміни до спроб рішення (мутація) або комбінуючи існуючі спроби рішення (кросовер).

Ідея полягає в тому, що з часом з'являється спробу рішення, яке має достатньо високе значення для фітнесу для вирішення проблеми.

Натхнення для цього прийшло з теорії еволюції; найкращі рішення виживають і відтворюються.

Приклад 1

Припустимо, ви шукали найефективніший спосіб вирізати кілька фігур із шматка дерева. Ви хочете витратити якомога менше деревини.

Ваші спроби рішення були б випадковими композиціями цих фігур на вашому дереві. Фітнес визначався б тим, наскільки мало деревини залишилося після вирізання фігур за цим розташуванням.
Чим менше деревини залишилось, тим краще буде спроба рішення.

Приклад 2

Припустимо, ви намагалися знайти поліном, який проходить через ряд точок. Ваші спроби рішення будуть випадковими многочленами.
Щоб визначити придатність цих многочленів, ви визначаєте, наскільки вони добре відповідають заданим точкам. (У цьому конкретному випадку ви, ймовірно, використовуєте метод найменших квадратів, щоб визначити, наскільки поліноміал відповідає точкам). Протягом декількох випробувань ви отримаєте поліноми, які краще підходять до точок, поки у вас не з’явиться многочлен, який досить добре відповідає точкам.


Що ж розуміється під рішенням ? Чи можете ви надати мені практичний приклад із конкретною проблемою, щоб я міг краще уявити, як це може виглядати?
Розчарований Луркер

@InquisitiveLurker Я додав приклади. Дайте мені знати, якщо вони недостатньо чіткі; Я буду рада оновити свою відповідь.
SL Barth - Відновити Моніку

6

Ця відповідь вимагає практичного прикладу того, як можна використовувати один, який я спробую надати на додаток до інших відповідей. Їм, здається, належить дуже добре розтлумачити, що таке генетичний алгоритм. Отже, це дасть приклад.

Скажімо, у вас є нейронна мережа (хоча це не єдине її застосування), яка з деяких заданих входів дасть певні результати. Генетичний алгоритм може створити цілу сукупність, і, побачивши, який вихід найкращий, розводити та вбивати членів популяції. Врешті-решт, це повинно оптимізувати нейронну мережу, якщо вона досить складна.

Ось демонстрація, яку я зробив, яка, незважаючи на те, що сильно закодована, може допомогти вам зрозуміти. http://khrabanas.github.io/projects/evo/evo.html Натисніть кнопку еволюції та розімкніть цілі.

Він використовує простий генетичний алгоритм для розмноження, мутації та визначення того, хто з популяції виживе. Залежно від того, як встановлені вхідні змінні, мережа зможе дістатись до певного рівня їх близькості. Таким чином, населення, швидше за все, стане гомогенною групою, результати якої нагадують цілі.

Генетичний алгоритм намагається створити своєрідну "нейронну мережу", яка, приймаючи RGB, дасть вихідний колір. По-перше, це генерує випадкову сукупність. Потім, беручи 3 випадкових членів з населення, вибираючи одного з найнижчою придатністю та вилучаючи його з популяції. Придатність дорівнює різниці в верхній цілі в квадраті + різниці в нижній цілі в квадраті. Потім він розводить двох інших, що залишилися разом, і додає дитину до того самого місця в популяції, як і мертвий член. Коли відбувається спаровування, є ймовірність, що відбудеться мутація. Ця мутація змінить одне із значень випадковим чином.

Як бічна примітка, через те, як це налаштовано, неможливо, щоб воно було абсолютно правильним у багатьох випадках, хоча це досягне відносної близькості.


6

Тут є ряд хороших відповідей, що пояснюють, що таке генетичні алгоритми, та наводячи приклади програм. Я додаю кілька загальних порад щодо того, для чого вони корисні, але також і випадків, коли НЕ слід їх використовувати. Якщо мій тон здається різким, це тому, що використання GA в будь-якому випадку в розділі "Невідповідний" призведе до негайного відхилення вашої роботи з будь-якого журналу верхнього рівня.

По-перше, ваша проблема ОБОВ'ЯЗКОВО має бути проблемою оптимізації. Вам потрібно визначити "функцію фітнесу", яку ви намагаєтеся оптимізувати, і вам потрібно мати спосіб її вимірювання.

Добре:

  • Перехресні функції легко визначити і природні : При роботі з певними видами даних функції кросовер / мутації може бути легко визначити. Наприклад, рядки (наприклад, послідовності ДНК або генів) можна легко мутувати, зрощуючи дві кандидатські струни для отримання нового (саме тому природа використовує генетичні алгоритми!). Дерева (як філогенетичні дерева або дерева розбору) можна також зростити, замінивши гілку одного дерева гілкою на іншу. Фігури (як крила літака або форми човна) можна легко мутувати, намалювавши сітку на формі і комбінуючи різні відрізки сітки від батьків, щоб отримати дитину. Зазвичай це означає, що ваша проблема складається з різних частин, а об'єднання частин з різних рішень є дійсним рішенням кандидата.
    • Це означає, що якщо ваша проблема визначена у векторному просторі, де координати не мають особливого значення, GA не є хорошим вибором. Якщо важко сформулювати свою проблему як GA, це не варто.
  • Оцінка чорної скриньки : якщо для кандидата ваша фітнес-функція оцінюється за межами комп’ютера, хороша ідея. Наприклад, якщо ви протестуєте форму крила в повітряному тунелі, генетичні алгоритми допоможуть вам сформувати хороші форми кандидата, щоб спробувати.
    • Виняток: Моделювання . Якщо ваша фітнес-функція вимірює ефективність конструкції насадки і вимагає моделювання динаміки рідини для кожної форми насадки, GA можуть працювати для вас. Вони також можуть працювати, якщо ви моделюєте фізичну систему через час і цікавитесь, наскільки добре працює ваша конструкція протягом операції, наприклад. моделювання моделей руху . Однак у літературі розробляються методи, що використовують часткові диференціальні рівняння як обмеження, наприклад. PDE обмежена оптимізація , тому це може змінитися в майбутньому.

Не підходить:

  • Ви можете обчислити градієнт для своєї функції: Якщо у вас є доступ до градієнта вашої функції, ви можете здійснити спуск градієнта, що в цілому набагато ефективніше, ніж GA. Градієнтне сходження може мати проблеми з місцевими мінімумами (як це стосується ГА), але для його пом'якшення було вивчено багато методів.
  • Ви знаєте функцію фітнесу в закритому вигляді : Тоді ви, можливо, можете розрахувати градієнт. У багатьох мовах є бібліотеки, що підтримують автоматичну диференціацію , тому вам навіть не потрібно робити це вручну. Якщо ваша функція не є диференційованою, то ви можете використовувати субградієнтне спуск .
  • Ваша проблема оптимізації має відому форму, як, наприклад, лінійна програма або квадратична програма : загальнодоступні (і методи оптимізації чорного поля в цілому) дуже неефективні з точки зору кількості кандидатів, які їм потрібно оцінити, і їх краще уникати, якщо можливо.
  • Ваш простір рішення невеликий : Якщо ви зможете ефективно прокласти мережу пошукового простору, ви можете гарантувати, що ви знайшли найкраще рішення, і зможете зробити контурні графіки простору рішення, щоб побачити, чи є регіон, який потрібно вивчити далі.

Нарешті, якщо ви розглядаєте GA, розгляньте новітні роботи в еволюційних стратегіях. Я упереджений щодо CMA-ES , що, на мою думку, є гарним простим алгоритмом, який фіксує поняття градієнта у фітнес-пейзажі таким чином, як цього не мають традиційні ГА.


CMA-ES корисний для проблем, в яких рішення можуть бути представлені як вектори з реальною цінністю.
NietzscheanAI

5

Як зауважено в іншій відповіді, все, що вам потрібно застосувати генетичні алгоритми (GA), - це представляти потенційне рішення вашої проблеми у формі, що підлягає перехрещуванню та мутації. В ідеалі функція фітнесу надасть певний плавний відгук про якість розчину, а не просто «Голка в стозі сіна».

Ось деякі характеристики проблем, для яких генетичні алгоритми (і взагалі метагевристика ) корисні:

  • NP-завершено - кількість можливих варіантів вирішення проблеми є експоненціальною, але перевірка придатності рішення відносно дешева (технічно, з поліномією часу у розмірі вводу).
  • Чорний ящик - Газ працює досить добре, навіть якщо у вас немає особливо обізнаної моделі проблеми, яку потрібно вирішити. Це означає, що ці підходи також корисні як підхід до «швидкого прототипування» до вирішення проблем.

Однак, незважаючи на їх широке використання з цією метою, зауважте, що GA насправді не є оптимізаторами функцій - механізми GA, як правило, не досліджують "віддалені" області пошукового простору з надією знайти якесь віддалене якісне рішення, а скоріше згрупуватися навколо іншого легкодосяжні вершини у «фітнес-пейзажі».

Більш докладно про застосовність GA наведено у відомому ранньому документі "Що ускладнює генетичний алгоритм?"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.