Зворотне розповсюдження проти генетичного алгоритму для тренувань нейронної мережі


34

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

Чи існує якесь загальне правило, коли використовувати те чи інше? Може, це залежить від типу NN чи існує якийсь сучасний рішення, який, як правило, перевершує інших?

Якщо можливо, я шукаю загальні відповіді: тобто "якщо NN величезний, GA кращий", або "GA завжди кращий, але має проблеми з обчислювальною ефективністю" тощо.

Відповіді:


23

Якщо уважно вивчити наукову літературу, ви знайдете контрастні результати. Очевидно, що в деяких випадках GA (і більше загалом, еволюційні алгоритми) можуть допомогти вам знайти оптимальну конструкцію NN, але зазвичай вони мають стільки недоліків (налаштування параметрів алгоритму, складність обчислень тощо), і їх використання не можливо для реального- світові програми. Звичайно, ви можете знайти набір проблем, де GA / EA завжди єкраще, ніж розмноження. З огляду на те, що пошук оптимальної конструкції NN є складною проблемою багатомодальної оптимізації, GA / EA можуть допомогти (як метагевристика) покращити результати, отримані за допомогою "традиційних" алгоритмів, наприклад, використовуючи GA / EAs для пошуку лише початкової конфігурації ваг або допомагаючи традиційним алгоритмам втеча від місцевих мінімумів (якщо вам цікаво, я написав документ на цю тему).

Я багато працював над цією сферою, і можу вам сказати, що існує багато наукових праць про ГА / ЕА, що застосовуються до НН, оскільки вони (або, що краще, раніше) були дослідницькою сферою.


2
Це те, що я також придумав нещодавно - спочатку знайдіть «гарне» рішення, а потім вдосконалюйте його далі за допомогою GA. Не стосується лише НН, але й оптимізації загалом ...
sashkello

1
Мене бентежить, чому вони взаємно виключають. Я думав, GA повинен вивчити структуру; Зворотному розмноженню можна дізнатися лише ваги
піт

8

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

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


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

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

5

Кожен раз, коли ви маєте справу з величезною кількістю даних і хочете вирішити контрольоване навчальне завдання за допомогою нейронної мережі, що рухається вперед, рішення, засновані на зворотному розповсюдженні, є набагато більш можливими. Причиною цього є те, що для складної нейронної мережі кількість вільних параметрів дуже велика. Один галузевий проект, над яким я зараз працюю, включає нейронну мережу з подачею вперед з приблизно 1000 входами, двома прихованими шарами @ 384 нейронів кожен і 60 виходами. Це призводить до 1000 * 384 + 384 * 384 + 384 * 60 = 554496 вагових параметрів, які необхідно оптимізувати. Використання підходу GA тут було б дуже повільно.


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

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

2

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

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

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

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


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

Якщо перевиконання не було спричинене оптимізацією, рання зупинка не була б ефективним засобом для подолання.
Дікран Марсупіал

1

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


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