Як я повинен кодувати структуру нейронної мережі в геном?


14

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

Я ніколи раніше не використовував генетичні алгоритми для подібного завдання. Які практичні міркування? Зокрема, як я повинен кодувати структуру нейронної мережі в геном?

Відповіді:


12

У розділі 4.2 "Основи метагевристики" є багато інформації про альтернативні способи кодування графічних структур за допомогою генетичних алгоритмів.

Що стосується розвиваються ANN, я особисто не був би схильний реалізовувати подібні речі "з нуля":

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

За вищезазначеним посиланням:

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


Це "Основи метагевристики" виглядає дуже цікаво! Це те, що є насправді в дорожній карті для M-автоматів, оскільки чисті MCTS ніколи не є оптимальними в іграх M. З метагевристичної вікі : "В інформатиці та математичній оптимізації метагеврист - це процедура вищого рівня або евристична, призначена для пошуку, генерування або вибору евристичного (часткового алгоритму пошуку), який може забезпечити достатньо вдале рішення проблеми оптимізації, особливо з неповною або недосконалою інформацією або обмеженою обчислювальною спроможністю ".
DukeZhou

4

Використання еволюційних алгоритмів для розвитку нейронних мереж називається нейроеволюцією .

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

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

NEAT кодує геном нейронної мережі безпосередньо як структуру графа. Мутації можуть діяти на структурі мережі шляхом додавання нових посилань (шляхом з'єднання двох вузлів, які раніше не були з'єднані) або нових вузлів (шляхом розщеплення існуючого з'єднання), або можуть працювати лише на зміні ваг, пов'язаних з ребрами в графіках (звані мутуваннями ваги). Щоб дати вам уявлення про порядок розмірів ANN, з яким працює цей конкретний алгоритм, швидше за все, це буде боротьба з більш ніж 100 або 200 вузлами.

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

Є декілька робіт з опитування, пов’язаних у верхньому посиланні, якщо ви хочете дотримуватися більшої різноманітності методик.

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