Propagacja wsteczna a algorytm genetyczny dla szkolenia w sieci neuronowej

34

Przeczytałem kilka artykułów omawiających zalety i wady każdej metody, niektórzy twierdzą, że GA nie daje żadnej poprawy w znalezieniu optymalnego rozwiązania, podczas gdy inni pokazują, że jest on bardziej skuteczny. Wydaje się, że GA jest ogólnie preferowane w literaturze (chociaż większość ludzi modyfikuje ją w jakiś sposób, aby osiągnąć pożądane wyniki), to dlaczego większość rozwiązań programowych wydaje się wykorzystywać wyłącznie propagację wsteczną?

Czy istnieje jakaś ogólna zasada, kiedy należy użyć jednego lub drugiego? Może zależy to od rodzaju NN lub istnieje jakieś najnowocześniejsze rozwiązanie, które generalnie przewyższa inne?

Jeśli to możliwe, szukam ogólnych odpowiedzi: tj. „Jeśli NN jest ogromny, GA jest lepszy” lub „GA jest zawsze lepszy, ale ma problemy z wydajnością obliczeniową” itp.

sashkello
źródło

Odpowiedzi:

23

Jeśli przyjrzysz się uważnie literaturze naukowej, znajdziesz kontrastujące wyniki. Oczywiście w niektórych przypadkach GA (i bardziej ogólnie, algorytmy ewolucyjne) mogą pomóc ci znaleźć optymalny projekt NN, ale zwykle mają one tak wiele wad (dostrajanie parametrów algorytmu, złożoność obliczeniową itp.), A ich użycie nie jest możliwe do zrealizowania aplikacje światowe. Oczywiście można znaleźć zestaw problemów, w których GA / EA jest zawszelepsze niż propagacja wsteczna. Biorąc pod uwagę, że znalezienie optymalnego projektu NN jest złożonym problemem optymalizacji multimodalnej, GA / EA mogą pomóc (jako metaheurystyki) poprawić wyniki uzyskane za pomocą „tradycyjnych” algorytmów, np. Używając GA / EA do znalezienia tylko początkowej konfiguracji wag lub pomagając tradycyjnym algorytmom w uciec od lokalnych minimów (jeśli jesteś zainteresowany, napisałem artykuł na ten temat).

Dużo pracowałem na tym polu i mogę Wam powiedzieć, że wiele prac naukowych na temat GA / EA dotyczy NN, ponieważ są one (lub lepiej, kiedyś były) rozwijającą się dziedziną badań.

Matteo De Felice
źródło
2
Wymyśliłem to również niedawno - najpierw znajdź „dobre” rozwiązanie, a następnie ulepsz je za pomocą GA. Nie dotyczy tylko NN, ale ogólnie optymalizacji ...
sashkello 21.04.13
1
Jestem zdezorientowany, dlaczego się wykluczają. Myślałem, że GA ma nauczyć się struktury; Propagacja wsteczna może nauczyć się tylko wag
pete
8

Jednym z kluczowych problemów z sieciami neuronowymi jest nadmierne dopasowanie, co oznacza, że ​​algorytmy, które bardzo starają się znaleźć sieć, która minimalizuje niektóre kryteria oparte na skończonej próbce danych, otrzymają sieć, która działa bardzo dobrze dla tej konkretnej próbki danych, ale które będą słabo uogólnione. Z tego powodu raczej ostrożnie używam GA do projektowania sieci neuronowych, zwłaszcza jeśli optymalizują architekturę jednocześnie z optymalizacją wag. Ogólnie stwierdziłem, że sieci szkoleniowe (z regularyzacją) z pewnej liczby (powiedzmy 20) losowych wektorów masy początkowej, a następnie tworzenie zestawu wszystkich powstałych sieci jest ogólnie równie dobrym podejściem, jak każde inne.

Zasadniczo optymalizacja jest źródłem wszelkiego zła w uczeniu maszynowym, im więcej tego robisz, tym bardziej prawdopodobne jest, że skończy się to nadmiernym dopasowywaniem danych.

Dikran Torbacz
źródło
Dikran, chociaż GA dokonuje naturalnej selekcji, ale nie ignoruje informacji, jak wspomniałeś, zapewnia tylko, jeśli wybrane rozwiązanie rozwiąże swój problem, jeśli nie, dowie się, dlaczego i uaktualnia agorithm, które stanowią podstawę jego dynamiki do sieci zbiegać się w jednym lub dwóch najlepszych rozwiązaniach. mam nadzieję, że tak sztywno?
konwergencja do najlepszego rozwiązania ocenionego na skończonej próbce danych jest dokładnie tym , co powoduje nadmierne dopasowanie. Aby uniknąć nadmiernego dopasowania, chcesz znaleźć rozwiązanie, które nie jest najlepsze (np. Wczesne zatrzymanie w szkoleniu sieci neuronowych). GA nie są lepsze niż jakakolwiek inna forma optymalizacji dopasowania sieci neuronowych, należy unikać nadmiernej optymalizacji kryterium szkolenia.
Dikran Marsupial
5

Ilekroć masz do czynienia z ogromną ilością danych i chcesz rozwiązać nadzorowane zadanie uczenia się za pomocą sieci neuronowej ze sprzężeniem zwrotnym, rozwiązania oparte na propagacji wstecznej są znacznie bardziej wykonalne. Powodem tego jest to, że w złożonej sieci neuronowej liczba wolnych parametrów jest bardzo wysoka. Jeden projekt branżowy, nad którym obecnie pracuję, dotyczy sieci neuronowej z około 1000 wejściami, dwiema ukrytymi warstwami @ 384 neuronów każda i 60 wyjściami. Prowadzi to do 1000 * 384 + 384 * 384 + 384 * 60 = 554496 parametrów wagi, które należy zoptymalizować. Użycie podejścia GA byłoby tutaj bardzo powolne.

schreon
źródło
Rozumiem, że GA ma na celu rozwiązywanie problemów, które trudniej jest rozwiązać za pomocą standardowych metod. Czy nie powinien działać lepiej w opisanej sytuacji?
sashkello
2
Myślałem, że GA powinno być użyte do ustalenia, jaka to jest struktura, np. Ile ukrytych warstw i jak są one połączone. Propagacja wsteczna może tylko obliczyć wagi
pete
2

Druga odpowiedź jest zła. Przeregulowanie nie jest spowodowane optymalizacją. Przeuczenie ma miejsce, gdy model jest zbyt skomplikowany i może zmieścić wszystkie punkty danych bez uczenia się faktycznej reguły, która je utworzyła (tj. Zapamiętywanie ich, w skrajnym przypadku.) Istnieje wiele sposobów zapobiegania przeregulowaniu, takich jak wybór prostszych modeli, rezygnacja, dropconnect, spadek masy i po prostu więcej danych. Celem powinno być zoptymalizowanie sieci i uczynienie jej możliwie najdokładniejszym, biorąc pod uwagę te ograniczenia.

Aby odpowiedzieć na pytanie, backprop jest podobno znacznie szybszy niż optymalizacja stochastyczna (algorytmy genetyczne i tym podobne). Domyślam się, że to dlatego, że wykorzystuje to, co powinno być rzeczywiste wyjście , dostosowuje wagi we właściwym kierunku na podstawie tego , gdzie optymalizacja stochastyczna próbuje całkowicie losowych zmian i ignoruje te informacje.

Jednak eksplorując większy obszar, GA prawdopodobnie lepiej na dłuższą metę unikając lokalnych optymów, po prostu potrwa dłużej.

Jestem ciekawy, o ile wolniejsze GA niż backprop, i jeśli ktoś wie o algorytmach hybrydowych (wyszukiwanie rozproszone wydaje się być idealne do tego.)

Houshalter
źródło
1
Nie zgadzaj się z pierwszym akapitem. Przeuczeniu zapobiega się głównie poprzez podejście regularyzacyjne w problemach szkoleniowych . Jeśli zaczniesz robić metaoptymalizację - która rozwiązuje wiele problemów szkoleniowych (na przykład dostrajanie parametrów jądra, architektur sieciowych, ...) - dbanie o przeładowanie staje się znacznie trudniejsze i na pewno nie jest już domyślnie gwarantowane.
Marc Claesen,
Jeśli nadmierne dopasowanie nie było spowodowane optymalizacją, wczesne zatrzymanie nie byłoby skutecznym lekarstwem na nadmierne dopasowanie.
Dikran Torbacz
1

imho różnica między GA a propagacją wsteczną polega na tym, że GA opiera się na liczbach losowych, a propagacja wsteczna opiera się na algorytmie statycznym, takim jak stochastyczne pochylenie gradientu. GA oparte na liczbach losowych i dodane do tej mutacji oznacza, że ​​prawdopodobnie uniknąłby złapania w minimach lokalnych. Ale wtedy GA oparte na liczbach losowych oznacza, że ​​jest całkiem prawdopodobne, że 2 razy uruchomisz naukę w tej samej sieci, może dojść do innego wniosku, tj. Innego zestawu wag

użytkownik4433437
źródło
Komentując, używamy również losowego init. dla ciężarów w podporze tylnej. Jeśli użyjemy tego samego ziarna podczas inicjalizacji, doprowadzi to do tego samego rozwiązania, ale jeśli nie, prawdopodobnie nie będzie. Tak więc również tylna podpora zależy od losowego wejścia. Kiedy naprawisz ziarno, będziesz miał ten sam wynik w algorytmie genetycznym, ponieważ użyje tego samego seq. liczb ponownie.
pistolety