Jak aktualizowane są wagi w metodzie uczenia wsadowego w sieciach neuronowych?

15

Czy ktoś może mi powiedzieć, jak mam zbudować sieć neuronową przy użyciu metody wsadowej?

Przeczytałem, że w trybie wsadowym dla wszystkich próbek w zestawie treningowym obliczamy błąd, deltę, a tym samym wagi delta dla każdego neuronu w sieci, a następnie zamiast natychmiastowej aktualizacji wag, kumulujemy je, a następnie przed rozpoczęciem w następnej epoce aktualizujemy wagi.

Przeczytałem też gdzieś, że metoda wsadowa jest podobna do metody online, ale z tą różnicą, że wystarczy tylko zsumować błędy dla wszystkich próbek w zestawie szkoleniowym, a następnie wziąć jej średnią, a następnie użyć jej do aktualizacji wag tak jak robi się to w metodzie online (różnica jest tylko ta średnia) w następujący sposób:

for epoch=1 to numberOfEpochs

   for all i samples in training set

         calculate the errors in output layer
         SumOfErrors += (d[i] - y[i])
   end

   errorAvg = SumOfErrors / number of Samples in training set

   now update the output layer with this error
   update all other previous layers

   go to the next epoch

end
  • Który z nich jest naprawdę poprawną formą metody wsadowej?
  • W przypadku pierwszego, czy kumulacja wszystkich wag delta nie skutkuje ogromną liczbą?
Rika
źródło
1
Metoda „poprawna” zależy od kontekstu. Okazuje się, że w wielu przypadkach aktualizacja wag tylko raz na epokę zbiegnie się znacznie wolniej niż aktualizacja stochastyczna (aktualizacja wag po każdym przykładzie). Dodam, że istnieje konsensus, że generalnie będziesz chciał użyć jakiejś formy aktualizacji wsadowej, ale znacznie częściej niż 1x na epokę.
Tahlor

Odpowiedzi:

9

Używanie średniej lub sumy jest równoważne w tym sensie, że istnieją pary wskaźników uczenia się, dla których produkują tę samą aktualizację.

Aby to potwierdzić, najpierw przywołaj regułę aktualizacji:

Δwij=αEwij

Następnie, niech będzie średnim błędem dla zestawu danych o rozmiarze w epoce. Suma błędu wynosi wtedy , a ponieważ nie zależy od , zachowuje to: n n μ E n wμEnnμEnw

Δwij=α(nμ)wij=αnμwij

W drugim pytaniu wyrażenie „kumulacja ciężarów delta” oznaczałoby, że jedna z tych metod zachowuje aktualizacje wagi. To nie jest przypadek: nauka wsadowa kumuluje błąd . W danej epoce jest tylko jeden pojedynczy wektor . (Twój kod pseudokodu pomija etap aktualizacji wag , po którym można odrzucić .)Δ wΔwΔw

Sean Easter
źródło
1
Czy zejście z gradientem mini-serii jest tym samym zejściem-gradientem? Zgubiłem się tutaj! jeśli nie, jaka jest różnica między nimi? Popraw mnie, jeśli się mylę, w trybie wsadowym cały zestaw danych musi być czytany partiami, gradienty są obliczane, a kiedy wszystkie są odczytywane, są one uśredniane, a następnie parametry są aktualizowane, podczas gdy w mini-partii każdy partia jest odczytywana, gradienty są obliczane, a następnie parametry aktualizowane, a następnie następna mini partia jest odczytywana aż do końca jednej epoki.
Rika
1
Jest to ogólnie podana definicja: aktualizuj parametry za pomocą jednego podzbioru danych treningowych na raz. (Istnieje kilka metod losowego próbkowania mini-partii aż do zbieżności, tzn. Partia nie zostanie przemierzona w epoce.) Sprawdź, czy to jest pomocne.
Sean Wielkanoc
0

Dwie odpowiedzi są równoważne. Osobiście uważałbym to za średni błąd zamiast sumy. Pamiętaj jednak, że opadanie gradientu ma parametr zwany współczynnikiem uczenia się i odejmowana jest tylko część gradientu błędu. Tak więc, czy błąd jest zdefiniowany jako suma średniej, można zrekompensować, zmieniając szybkość uczenia się.

jlimahaverford
źródło
dzięki, ale jeśli są naprawdę takie same, po co marnować tyle pamięci na przechowywanie zbiorczych aktualizacji dla każdego wzorca, skoro możemy tylko zsumować błędy, które byłyby tylko prostą zmienną?
Rika