Коли я повинен використовувати генетичні алгоритми на відміну від нейронних мереж? [зачинено]


139

Чи існує правило (або набір прикладів), яке визначає, коли використовувати генетичні алгоритми на відміну від нейронних мереж (і навпаки) для вирішення проблеми?

Я знаю, що є випадки, коли ви можете поєднати обидва методи, але я шукаю порівняння між двома методами на високому рівні.


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

3
Я взагалі не думаю, що це "список-у". Відповіді порівнюють два методи та уточнюють, коли використовувати один проти іншого.
Ніл N

Коротка відповідь: використовуйте GA, коли функція для моделювання неперервна / дискретна, або коли набір даних астрономічно високомірний. Використовуйте нейронні мережі або GA (або іншу модель) для решти, залежно від того, що дає найкращі результати. Для більш докладної інформації, див моєї відповіді тут: stackoverflow.com/a/49684833/1121352
gaborous

Відповіді:


130

З Вікіпедії:

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

і:

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

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

Коли у вас є декілька елементів у різних класах, нейронна мережа може "навчитися" класифікувати предмети, які вона раніше не "бачила". (Наприклад, розпізнавання обличчя, розпізнавання голосу)

Слід враховувати і терміни виконання. Генетичний алгоритм потребує тривалого часу, щоб знайти прийнятне рішення. Нейронна мережа потребує багато часу, щоб "навчитися", але тоді вона може майже миттєво класифікувати нові входи.


13
Я просто хочу трохи додати визначення GA. Іноді люди думають про простір рішення проблеми GA як набір станів або значень. Наприклад, "Знайдіть усі способи, коли на шаховій дошці можна було організувати набір із чотирьох шахових фігур, щоб створити мат." Однак простір рішення також може бути набором алгоритмів. Саме тут вступає в дію реальна сила генетичних алгоритмів. Вони допомагають вам відповісти на запитання на кшталт "Знайти послідовність рухів із заданим набором шахових фігур, що призведе до мат-мату".
lfalin

44

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

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

Вони є двома принципово різними утвореннями, але іноді проблеми, які вони здатні вирішити, перекриваються.


22
Нейронні мережі насправді є лише методом інтерполяції. :)
Дон Реба

3
+1 для генетичних алгоритмів (оптимізація) та нейронних мереж (контрольоване навчання) майже нічого спільного.
альфа

2
Єдиним загальним елементом є те, що вони динамічно переставляють себе під час наближення до мети.
lfalin

1
Я не впевнений, що існує якесь перекриття. Нейронна мережа - це модель з функцією витрат, GA - це техніка оптимізації, яка може бути використана для мінімізації цієї функції витрат, як сказала @zenna.
Матьє Брючер

37

GA генерують нові структури у визначеній вами структурі.

НС класифікують (або розпізнають) існуючі зразки на основі наданих вами даних про навчання.

GA добре допомагають ефективно шукати великий простір рішень і конвергувати одне або кілька хороших рішень, але не обов'язково "найкраще" рішення.

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


26

Ви порівнюєте тут дві абсолютно різні речі.

Нейронні мережі використовуються для регресії / класифікації - з урахуванням набору (x, y) прикладів ви хочете регресувати невідоме y для деяких заданих x.

Генетичні алгоритми - це методика оптимізації. Давши функцію f (x), ви хочете визначити х, який мінімізує / максимізує f (x).


10
Справді. Вони справді "ортогональні" методи. Ви можете використовувати GA для пошуку ваг нейронної сітки та / або архітектури.
redcalx

23

Між ними багато подібності, тому я лише спробую окреслити їх відмінності .

Нейронні мережі

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

Приклади :

  • Екстраполяція графіка
  • Розпізнавання обличчя

Генетичні алгоритми

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

Приклади :

  • Планування літаків / доставка
  • Розклади
  • Пошук найкращих характеристик для простого агента в штучному середовищі
  • Надання апроксимації малюнка випадковими багатокутниками

14

Ви можете використовувати генетичні алгоритми як альтернативу алгоритму зворотного розповсюдження для оновлення ваг у нейронних мережах. Приклад цього див. На веб-сайті : http://www.ai-junkie.com/ann/evolved/nnt1.html .


1
А також NEAT ( cs.ucf.edu/~kstanley/neat.html ). З реалізацією C # за адресою ( sharpneat.sourceforge.net )
redcalx

Для javascript перевірте github.com/wagenaartje/neataptic . Він також реалізує NEAT.
Thomas W

8

Генетичні алгоритми (як правило) працюють на дискретних даних (перерахунки, цілі діапазони тощо). Типовим додатком для GA є пошук дискретного простору для "досить хорошого" рішення, коли єдиною доступною альтернативою є груба сила пошуку (оцінка всіх комбінацій).

Нейронні мережі, з іншого боку, (як правило) працюють на постійних даних (поплавці тощо). Типовою програмою для NN є наближення функції, де ви отримали набір X входів і набір Y пов'язаних виходів, але аналітична функція f: X → Y.

Звичайно, є тисячі варіантів обох, тому лінія між ними дещо розмита.


5

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

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

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