Czy sieci neuronowe muszą zawsze się zbieżne?


16

Wprowadzenie

Krok pierwszy

Napisałem standardową sieć neuronową z propozycją wsteczną i aby ją przetestować, zdecydowałem się na mapowanie XOR.

Jest to sieć 2-2-1 (z funkcją aktywacji tanh)

X1  M1
        O1
X2  M2

B1  B2

Do celów testowych ręcznie skonfigurowałem górny środkowy neuron (M1), aby był bramką AND, a dolny neuron (M2), aby był bramą OR (oba wyjścia 1, jeśli prawda, i -1, jeśli fałsz).

Teraz ręcznie skonfigurowałem również połączenie M1-O1 na -5, M2-O1 na 1, a B2 na -.75

Więc jeśli M1 = 1 i M2 = 1, suma wynosi (-0,5 +1 -0,75 = -5,25) tanh (0,25) = -0,24

jeśli M1 = -1 i M2 = 1, suma wynosi ((-0,5) * (- 1) +1 -0,75 = .75) tanh (0,75) = 0,63

jeśli M1 = -1 i M2 = -1, suma wynosi ((-0,5) * (- 1) -1 -0,75 = -1,25) tanh (1,25) = -0,8

Jest to stosunkowo dobry wynik dla „pierwszej iteracji”.

Krok drugi

Następnie przystąpiłem do modyfikacji tych wag, a następnie trenowałem je, stosując algorytm propagacji błędów (oparty na spadku gradientu). Na tym etapie pozostawiam nienaruszone wagi między neuronem wejściowym i środkowym i po prostu modyfikuję wagi między środkowym (i polaryzacją) a wyjściowym.

Do testowania ustawiam wagi na i .5 .4 .3 (odpowiednio dla M1, M2 i odchylenia)

Tutaj jednak zaczynam mieć problemy.


Moje pytanie

Ustawiam szybkość uczenia się na .2 i pozwalam programowi na iterację poprzez dane treningowe (ABA ^ B) dla 10000 iteracji lub więcej.

Przez większość czasu masy są zbieżne, co daje dobry wynik. Czasami jednak te wagi są zbieżne do (powiedzmy) 1.5, 5.7 i .9, co daje wynik +1 (parzysty) na wejściu {1, 1} (kiedy wynik powinien wynosić -1).

Czy jest możliwe względnie prosty ANN, który ma rozwiązanie, które wcale się nie zbiega, czy też jest błąd w mojej implementacji?

Odpowiedzi:


13

(Zakładam, że przez „propagację błędów” masz na myśli to, co nazywam „ propagacją błędów po błędzie”).

Na stronie 231 Neural Networks (autorstwa Haykina) stwierdza, że ​​propagacja wsteczna zawsze jest zbieżna, chociaż szybkość może być (jego słowami) „niesamowicie powolna”.

Myślę jednak, że pytasz nie o to, czy algorytm zawsze będzie zbieżny, ale czy zawsze będzie zbieżny z optymalną odpowiedzią. I niestety tak nie będzie. Nawet w prostych przypadkach, takich jak twoje, jest całkiem możliwe, że istnieją lokalne minima, które nie są minimami globalnymi.

Radzenie sobie z lokalną ekstremą jest niezwykle ważnym tematem w optymalizacji i można znaleźć mnóstwo porad, jak sobie z tym poradzić. Jednym z najczęstszych jest to, co brzmi jak robisz: losowe ponowne uruchomienie (tj. Wystarczy uruchomić algorytm wiele razy, każdy zaczynając od losowego miejsca).

Aby dowiedzieć się, czy w kodzie jest błąd, wydrukuję termin błędu i sprawdzę, czy zmniejsza się on przy każdej iteracji. Jeśli tak, to prawdopodobnie osiągasz lokalne minima.


Wszystkie wagi rosną (waga neuronu OR rośnie szybciej), co minimalizuje błąd, gdy dane wejściowe wynoszą {1,0}, {0,1}, {0,0}, ale maksymalizuje błąd, gdy {1,1}. Czy to jest problem z uczeniem się on-line nad uczeniem się wsadowym?

@Shmuel: zarówno online, jak i wsadowe będą podążać w kierunku gradientu. Jeśli ten gradient wskazuje niewłaściwy kierunek, obaj pójdą w złym kierunku. Strona Wikipedia na Hill Climbing ma kilka sposobów na obejście tego, jeśli jesteś zainteresowany.
Xodarap,

6

Jeśli ustawiłeś wagi między jednostkami wejściową i ukrytą i modyfikujesz tylko ukryte wagi wyjściowe podczas treningu, nie będzie lokalnych minimów. Z ustalonymi danymi wejściowymi do ukrytych wag rozwiązany problem optymalizacji jest podobny do regresji logistycznej, ale z funkcją tanh zamiast funkcji sigmoidalnej. Niezależnie od tego problem jest wypukły i powinien istnieć tylko jeden, globalny minim.

Ponieważ lokalne minima nie powodują problemu, zaleciłbym liczbowe przybliżenie pochodnych, a następnie porównanie ich z wartościami, które obliczasz. Jeśli nie masz pewności, jak to zrobić, samouczek ULFDL firmy Standford ma ładny przegląd.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.