Szkolenie splotowej sieci neuronowej

11

Obecnie pracuję nad oprogramowaniem do rozpoznawania twarzy, które wykorzystuje sieci neuronowe splotu do rozpoznawania twarzy. Na podstawie moich odczytów stwierdziłem, że splotowa sieć neuronowa ma takie same ciężary, aby zaoszczędzić czas podczas treningu. Ale w jaki sposób dostosowuje się propagację wsteczną, aby można ją było wykorzystać w sieci neuronowej splotu. W propagacji wstecznej używa się podobnej formuły do ​​trenowania ciężarów.

New Weight  = Old Weight +  LEARNING_RATE * 1 * Output Of InputNeuron * Delta

Ponieważ jednak w splotowych sieciach neuronowych wagi są dzielone, każda waga jest używana z wieloma neuronami, więc jak zdecydować, który z nich Output of InputNeuronzostanie wykorzystany?

Innymi słowy, skoro wagi są dzielone, jak zdecydować o ile zmienić wagi?

diwgan32
źródło

Odpowiedzi:

13

Najpierw musisz obliczyć wszystkie swoje aktualizacje, tak jakby wierzenia nie były udostępniane, ale po prostu je przechowuj, w rzeczywistości nie wykonuj jeszcze żadnych aktualizacji.

Niech będzie niewielką wagą, która pojawia się w lokalizacjach w twojej sieci i gdzie to współczynnik uczenia się, a to twoja funkcja celu. Zauważ, że w tym momencie, jeśli nie masz podziału wagi, po prostu podniesiesz jako Aby poradzić sobie z dzielonymi wagami, należy podsumować wszystkie poszczególne aktualizacje. Więc ustaw a następnie zaktualizuj wkjak={(ja,jot):wja,jot=wk}Δwja,jot=-ηjotwja,jotηjotwja,jot

wja,jot=wja,jot+Δwja,jot.
Δwk=(ja,jot)jakΔwja,jot
wk=wk+Δwk.
alt
źródło
1
Czy masz na to jakieś referencje? Do dalszego czytania
Jon