Використання еволюційних алгоритмів для розвитку нейронних мереж називається нейроеволюцією .
Деякі алгоритми нейроеволюції оптимізують лише ваги нейронної мережі з фіксованою топологією. Це звучить не так, як ви хочете. Інші нейроеволюційні алгоритми оптимізують як ваги, так і топологію нейронної сітки. Такі види алгоритмів здаються більш підходящими для ваших цілей, а іноді їх називають TWEANN (топологія та вагові нейромережі).
Один популярний алгоритм називається NEAT і, ймовірно, є хорошим місцем для початку, хоча б тому, що існує безліч реалізацій, одна з яких, сподіваємось, написана вашою улюбленою мовою. Це хоча б дасть вам базову лінію для роботи.
NEAT кодує геном нейронної мережі безпосередньо як структуру графа. Мутації можуть діяти на структурі мережі шляхом додавання нових посилань (шляхом з'єднання двох вузлів, які раніше не були з'єднані) або нових вузлів (шляхом розщеплення існуючого з'єднання), або можуть працювати лише на зміні ваг, пов'язаних з ребрами в графіках (звані мутуваннями ваги). Щоб дати вам уявлення про порядок розмірів ANN, з яким працює цей конкретний алгоритм, швидше за все, це буде боротьба з більш ніж 100 або 200 вузлами.
Є більш масштабовані TWEANN, але вони складніші і роблять припущення щодо типів створених ними структур, які не завжди можуть бути продуктивними на практиці. Наприклад, інший спосіб кодування структури нейронної мережі - це добуток насіннєвого шаблону, який неодноразово розширюється граматикою (наприклад, L-системою). Ви можете набагато легше досліджувати більші структури, але оскільки вони породжені граматикою, вони матимуть характерне самоповторне відчуття. HyperNEAT - популярне розширення NEAT, яке робить різного роду припущення (що зразки ваг можна легко виразити як геометричну функцію) і може масштабувати до ANN з мільйонами з'єднань, коли це припущення добре відповідає певній галузі.
Є декілька робіт з опитування, пов’язаних у верхньому посиланні, якщо ви хочете дотримуватися більшої різноманітності методик.