Obecnie jestem nieco zdziwiony tym, w jaki sposób opadanie gradientu mini-partii może być uwięzione w punkcie siodłowym.
Rozwiązanie może być zbyt trywialne, że go nie rozumiem.
Masz nową próbkę każda epoka, i oblicza nową błędów oparty na nowej partii, więc funkcja kosztu jest statyczne tylko dla każdej partii, co oznacza, że gradient również powinien zmieniać się dla każdej partii mini .. Ale zgodnie z tym powinna wdrożenie waniliowe ma problemy z punktami siodłowymi?
Innym kluczowym wyzwaniem, jakim jest minimalizowanie wysoce niewypukłych funkcji błędów wspólnych dla sieci neuronowych, jest unikanie uwięzienia w ich licznych suboptymalnych lokalnych minimach. Dauphin i in. [19] twierdzą, że trudność wynika w rzeczywistości nie z lokalnych minimów, ale z punktów siodłowych, tj. Punktów, w których jeden wymiar jest nachylony w górę, a inny w dół. Te punkty siodłowe są zwykle otoczone płaskowyżem tego samego błędu, co utrudnia SGD ucieczkę, ponieważ gradient jest bliski zeru we wszystkich wymiarach.
Chciałbym przez to powiedzieć, że szczególnie SGD miałoby wyraźną przewagę nad punktami siodłowymi, ponieważ zmienia się w kierunku zbieżności ... Wahania i losowe próbkowanie oraz funkcja kosztów różniąca się dla każdej epoki powinny być wystarczającym powodem, aby nie zostać uwięzionym w jednym.
W przypadku pełnego gradientu partii sensowne jest, czy można go uwięzić w punkcie siodłowym, ponieważ funkcja błędu jest stała.
Jestem trochę zdezorientowany w dwóch pozostałych częściach.
źródło
Odpowiedzi:
Spójrz na zdjęcie poniżej z Off Convex . W funkcji wypukłej (obraz po lewej stronie) istnieje tylko jedno lokalne minimum, które jest również globalnym minimum. Ale w funkcji niewypukłej (obraz po prawej stronie) może istnieć wiele lokalnych minimów i często łączenie dwóch lokalnych minimów jest punktem siodłowym. Jeśli zbliżasz się z wyższego punktu, gradient jest stosunkowo płaski i ryzykujesz utknięcie w nim, szczególnie jeśli poruszasz się tylko w jednym kierunku.
Teraz chodzi o to, czy optymalizujesz przy użyciu mini-partiilub stochastyczny spadek gradientu, podstawowa funkcja niewypukła jest taka sama, a gradient jest właściwością tej funkcji. Robiąc mini-partię, bierzesz pod uwagę wiele próbek na raz i uśredniasz dla nich krok gradientu. To zmniejsza wariancję. Ale jeśli średni kierunek gradientu nadal wskazuje ten sam kierunek, co punkt siodła, nadal istnieje ryzyko utknięcia w tym miejscu. Analogia jest taka, że jeśli robisz 2 kroki do przodu i 1 krok do tyłu, uśredniając je, ostatecznie ostatecznie robisz 1 krok do przodu. Jeśli zamiast tego wykonasz SGD, wykonasz wszystkie kroki jeden po drugim, ale jeśli nadal poruszasz się w jednym kierunku, możesz dotrzeć do punktu siodła i stwierdzić, że gradient ze wszystkich stron jest dość płaski, a wielkość kroku wynosi za mały, aby przejść przez tę płaską część. To nie
Spójrz na wizualizację tutaj . Nawet w przypadku SGD, jeśli fluktuacje występują tylko wzdłuż jednego wymiaru, a stopnie stają się coraz mniejsze, zbiegają się w punkcie siodłowym. W takim przypadku metoda mini-partii po prostu zmniejszyłaby wielkość fluktuacji, ale nie byłaby w stanie zmienić kierunku gradientu.
SGD może czasem wyłamać się z prostych punktów siodełka, jeśli wahania przebiegają wzdłuż innych kierunków i jeśli wielkość stopnia jest wystarczająco duża, aby przejść przez płaskość. Ale czasami regiony siodłowe mogą być dość złożone, jak na poniższym obrazku.
Metody, takie jak pęd, ADAGRAD, Adam itp. Są w stanie się z tego wydostać, biorąc pod uwagę wcześniejsze gradienty. Zastanów się,
źródło
Nie powinno.
[ 1 ] wykazał, że spadek gradientu z losową inicjalizacją i odpowiednią stałą wielkością kroku nie zbiega się w punkcie siodłowym. Jest to długa dyskusja, ale aby dać ci wyobrażenie, dlaczego warto zobaczyć następujący przykład:
źródło
Jeśli przejdziesz do dokumentu, do którego się odwołuje (pokazują także imperialnie, w jaki sposób ich podejście bez siodełka rzeczywiście poprawia się po mini-partii SGD), stwierdzają:
Zwracają również uwagę na obecność „płaskowyżów” w pobliżu punktów siodełka (innymi słowy, siodło nie jest strome) - w takich przypadkach podjęcie zbyt małych kroków rzeczywiście doprowadziłoby do przedwczesnej zbieżności przed ucieczką z obszaru siodła. Ponieważ jest to optymalizacja niewypukła, konwergencja szybkości uczenia się pogorszyłaby to.
Wydaje się możliwe, że można spróbować zastosować podejście iteracyjne, w którym ponownie uruchamia się mini-partię SGD po jej zakończeniu (tj. Resetowaniu szybkości uczenia się), aby sprawdzić, czy można uciec od problematycznego regionu.
źródło
Myślę, że problem polega na tym, że zbliżając się do punktu siodłowego, wchodzisz na płaskowyż, czyli obszar o niskich (w wartościach bezwzględnych) gradientach. Zwłaszcza, gdy zbliżasz się z grzbietu. Twój algorytm zmniejsza rozmiar kroku. Przy zmniejszonym rozmiarze kroku wszystkie gradienty (we wszystkich kierunkach) są małe w wartości bezwzględnej. Algorytm zatrzymuje się, myśląc, że jest minimalny.
Jeśli nie zmniejszysz liczby kroków, przeskoczysz ponad minimum i bardzo je przegapisz. Musisz jakoś zmniejszyć rozmiar kroku.
źródło