Wiele książek i samouczków dotyczących sieci neuronowych spędza dużo czasu na algorytmie propagacji wstecznej, który jest zasadniczo narzędziem do obliczania gradientu.
Załóżmy, że budujemy model z ~ 10 000 parametrów / wag. Czy można uruchomić optymalizację przy użyciu niektórych algorytmów optymalizacji bez gradientu?
Myślę, że obliczanie gradientu numerycznego byłoby zbyt wolne, ale co z innymi metodami, takimi jak Nelder-Mead, Symulowane wyżarzanie lub algorytm genetyczny?
Wszystkie algorytmy ucierpiałyby na lokalnych minimach, po co mieć obsesję na punkcie gradientu?
Odpowiedzi:
Pierwsze dwa algorytmy, o których wspominasz (Nelder-Mead i Symulowane wyżarzanie) są ogólnie uważane za dość przestarzałe w kręgach optymalizacyjnych, ponieważ istnieją znacznie lepsze alternatywy, które są zarówno bardziej niezawodne, jak i tańsze. Algorytmy genetyczne obejmują szeroki zakres, a niektóre z nich mogą być uzasadnione.
Jednak w szerszej klasie algorytmów optymalizacji bez pochodnych (DFO) istnieje wiele, które są znacznie lepsze niż te „klasyki”, ponieważ był to aktywny obszar badań w ostatnich dziesięcioleciach. Czy zatem niektóre z tych nowszych podejść mogą być uzasadnione w przypadku głębokiego uczenia się?
Stosunkowo najnowszy artykuł porównujący najnowszy stan techniki jest następujący:
To miły artykuł, który ma wiele interesujących spostrzeżeń na temat najnowszych technik. Na przykład wyniki wyraźnie pokazują, że najlepsze lokalne optymalizatory są „oparte na modelach”, wykorzystując różne formy sekwencyjnego programowania kwadratowego (SQP).
Jednakże, jak zauważono w ich streszczeniu „Stwierdzamy, że zdolność wszystkich tych solverów do uzyskiwania dobrych rozwiązań zmniejsza się wraz ze wzrostem wielkości problemu”. Aby dać wyobrażenie o liczbach, dla wszystkich problemów solverom przydzielono budżet na 2500 ewaluacji funkcji, a rozmiary problemów były maksymalnie ~ 300 parametrów do optymalizacji. Poza parametrami O [10] bardzo niewiele z tych optymalizatorów działało bardzo dobrze, a nawet te najlepsze wykazywały zauważalny spadek wydajności wraz ze wzrostem wielkości problemu.
W przypadku problemów o bardzo dużych wymiarach algorytmy DFO po prostu nie są konkurencyjne w stosunku do tych opartych na pochodnych. Aby dać perspektywę, optymalizacja oparta na PDE (częściowym równaniu różniczkowym) to kolejny obszar z bardzo wysokimi wymiarami (np. Kilka parametrów dla każdej komórki dużej siatki elementów skończonych 3D). W tej dziedzinie „ metoda łączenia ” jest jedną z najczęściej używanych metod. Jest to również optymalizator opadania gradientu oparty na automatycznym różnicowaniu kodu modelu do przodu.
Najbliżej wysoko-wymiarowego optymalizatora DFO jest być może Ensemble Kalman Filter , stosowany do asymilacji danych w złożone symulacje PDE, np. Modele pogodowe. Co ciekawe, jest to zasadniczo podejście SQP, ale z interpretacją Bayesa-Gaussa (więc model kwadratowy jest pozytywnie określony, tj. Nie ma punktów siodłowych). Ale nie sądzę, że liczba parametrów lub obserwacji w tych aplikacjach jest porównywalna z tym, co widać w głębokim uczeniu się.
Uwaga dodatkowa (minima lokalne): Z małego fragmentu, który przeczytałem na temat głębokiego uczenia się, myślę, że konsensus jest taki, że są to punkty siodłowe, a nie lokalne minima, które są najbardziej problematyczne dla przestrzeni o wysokich wymiarach z parametrami NN.
Na przykład w niedawnym przeglądzie „ Nature” stwierdza się, że „Ostatnie wyniki teoretyczne i empiryczne zdecydowanie sugerują, że lokalne minima nie są ogólnie poważnym problemem. Zamiast tego krajobraz jest wypełniony kombinatorycznie dużą liczbą punktów siodłowych, w których gradient wynosi zero, a powierzchnia wygina się w większości wymiarów, a pozostała część wygina się w dół. ”
Powiązany problem dotyczy optymalizacji lokalnej vs. globalnej (na przykład to pytanie wskazano w komentarzach). Chociaż nie uczę się głęboko, z mojego doświadczenia wynika, że nadmierne dopasowanie jest zdecydowanie uzasadnione. Moim zdaniem globalne metody optymalizacji są najbardziej odpowiednie w przypadku problemów projektowania inżynierskiego , które nie zależą silnie od „naturalnych” danych. Problemy asymilacja danych, każdy obecny globalny minima można łatwo zmienić po dodaniu nowych danych (uwaga: Moje doświadczenie jest skoncentrowany na problemach geologicznych, w których dane są ogólnie „rzadki” w stosunku do pojemności modelu).
Być może ciekawa perspektywa
który dostarcza pół teoretycznych argumentów na temat tego, dlaczego i kiedy optymalizacja przybliżona może być lepsza w praktyce.
Uwaga końcowa (metaoptymalizacja): Podczas gdy techniki oparte na gradientach wydają się dominować w sieciach szkoleniowych, DFO może odgrywać rolę w powiązanych zadaniach metaoptymalizacji.
Jednym z przykładów byłoby dostrajanie hiperparametrów. (Co ciekawe, udane oparte na modelu optymalizatory DFO firmy Rios i Sahinidis można postrzegać jako zasadniczo rozwiązujące sekwencję problemów związanych z projektowaniem eksperymentów / powierzchnią odpowiedzi ).
źródło
Istnieją różnego rodzaju lokalnych algorytmów wyszukiwania można użyć, wstecznej właśnie okazał się najbardziej skuteczny w przypadku bardziej złożonych zadań w ogóle ; istnieją okoliczności, w których lepsze są inne wyszukiwania lokalne.
Możesz użyć wspinania się po wzniesieniu w sieci neuronowej, aby szybko znaleźć odpowiednie rozwiązanie, ale nie byłoby możliwe znalezienie prawie optymalnego rozwiązania.
Wikipedia (wiem, nie jest to najlepsze źródło, ale nadal) mówi
źródło
Jeśli chodzi o algorytmy genetyczne, widziałbym propagację wsteczną vs algorytm genetyczny dla szkolenia w sieci neuronowej
Główny przypadek, który chciałbym zrobić dla backpropa, to to, że jest on bardzo szeroko stosowany i miał wiele świetnych ulepszeń . Te zdjęcia naprawdę pokazują niektóre z niewiarygodnych postępów w propagacji wanilii.
Nie pomyślałbym o backpropie jako o jednym algorytmie, ale o klasie algorytmów.
Chciałbym również dodać, że w przypadku sieci neuronowych parametry 10k to małe ziarna. Kolejne wyszukiwanie zadziałałoby świetnie, ale w głębokiej sieci z milionami parametrów jest to praktycznie niemożliwe.
źródło
Cóż, oryginalne sieci neuronowe, przed rewolucją propagacji wstecznej w latach 70., były „szkolone” ręcznie. :)
Biorąc to pod uwagę:
Istnieje „szkoła” uczenia maszynowego zwana maszyną uczenia ekstremalnego , która nie wykorzystuje propagacji wstecznej.
Robią to, tworząc sieć neuronową z wieloma, wieloma, wieloma węzłami - o losowych wagach - a następnie trenują ostatnią warstwę przy użyciu minimalnych kwadratów (jak regresja liniowa). Następnie przycinają następnie sieć neuronową lub stosują regularyzację w ostatnim kroku (jak lasso), aby uniknąć nadmiernego dopasowania. Widziałem to w odniesieniu do sieci neuronowych z tylko jedną ukrytą warstwą. Nie ma treningu, więc jest super szybki. Zrobiłem kilka testów i, co zaskakujące, te „wyuczone” sieci neuronowe są dość dokładne.
Większość ludzi, przynajmniej tych, z którymi pracuję, traktuje to „szkolne” uczenie się maszyn z szyderstwem i jest to wyrzutek z własnymi konferencjami i tak dalej, ale myślę, że to trochę pomysłowe.
Jeszcze jeden punkt: w ramach wstecznej propagacji istnieją rzadko wymieniane alternatywy, takie jak sprężysta wsteczna propagacja , które są implementowane w
neuralnet
pakiecie R , które wykorzystują jedynie wielkość pochodnej. Algorytm składa się z warunków if-else zamiast algebry liniowej. Mają pewne zalety w porównaniu z tradycyjną propagacją wsteczną, a mianowicie nie trzeba normalizować danych, ponieważ nie cierpią z powodu znikającego problemu z gradientem .źródło
Możesz użyć praktycznie dowolnego algorytmu optymalizacji numerycznej, aby zoptymalizować wagi sieci neuronowej. Możesz także użyć mieszanych algorytmów optymalizacji ciągłej i dyskretnej, aby zoptymalizować nie tylko wagi, ale i sam układ (liczbę warstw, liczbę neuronów w każdej warstwie, a nawet rodzaj neuronu). Jednak nie ma algorytmu optymalizacji, który w jakiś sposób nie ucierpiałby na „przekleństwie wymiarów” i lokalnych optymach
źródło
Możesz także skorzystać z innej sieci, aby doradzić, jak należy zaktualizować parametry.
Istnieje oddzielony interfejs neuronowy (DNI) od Google Deepmind. Zamiast stosowania propagacji wstecznej wykorzystuje inny zestaw sieci neuronowych do przewidywania sposobu aktualizacji parametrów, co pozwala na równoległą i asynchroniczną aktualizację parametrów.
Artykuł pokazuje, że DNI zwiększa szybkość treningu i pojemność modelu RNN oraz daje porównywalne wyniki dla RNN i FFNN w różnych zadaniach.
W artykule wymieniono również i porównano wiele innych metod niepropagowania wstecznego
źródło
Dopóki jest to pytanie społeczności, myślałem, że dodam kolejną odpowiedź. „Rozmnażanie wsteczne” to po prostu algorytm spadku gradientu. Polega ona na użyciu tylko pierwszej pochodnej funkcji, dla której próbuje się znaleźć lokalne minima lub maksima. Istnieje inna metoda zwana metodą Newtona lub Newtona-Raphsona, która polega na obliczeniu Hesji, a zatem wykorzystuje drugie pochodne. Może się to udać w przypadkach, w których upadek gradientu nie powiedzie się. Mówią mi inni, bardziej znający się na mnie, i tak, to jest apel do drugiej ręki do władzy, że nie jest on stosowany w sieciach neuronowych, ponieważ obliczanie wszystkich drugich pochodnych jest zbyt kosztowne pod względem obliczeniowym.
źródło