Jestem całkiem nowy w sieciach neuronowych, ale całkiem przyzwoicie rozumiem algebrę liniową i matematykę splotu.
Próbuję zrozumieć przykładowy kod znajdujący się w różnych miejscach w sieci do szkolenia splotowego NN Keras z danymi MNIST do rozpoznawania cyfr. Oczekuję, że kiedy utworzę warstwę splotową, będę musiał określić filtr lub zestaw filtrów do zastosowania na wejściu. Ale wszystkie trzy próbki, które znalazłem, tworzą taką warstwę splotową:
model.add(Convolution2D(nb_filter = 32, nb_row = 3, nb_col = 3,
border_mode='valid',
input_shape=input_shape))
Wydaje się, że dotyczy to w sumie 32 filtrów 3x3 do obrazów przetwarzanych przez CNN. Ale czym są te filtry? Jak opisałbym je matematycznie? Dokumentacja keras nie jest pomocna.
Z góry dziękuję,
Odpowiedzi:
Domyślnie filtryW są inicjowane losowo przy użyciu W.∼ U( 6ni n+ no U T, - 6ni n+ no U T) ,
glorot_uniform
metody, która pobiera wartości z rozkładu jednolitego z dodatnimi i ujemnymi granicami opisanymi w następujący sposób:Gdy używasz sieci do prognozowania, filtry te są stosowane na każdej warstwie sieci. Oznacza to, że dla każdego filtra na każdym obrazie wejściowym wykonywana jest dyskretna splot, a wyniki tych zwojów są podawane do następnej warstwy zwojów (lub w pełni połączonej warstwy lub cokolwiek innego, co można mieć).
Podczas treningu wartości w filtrach są optymalizowane na podstawie propagacji wstecznej w odniesieniu do funkcji utraty. Do zadań klasyfikacyjnych, takich jak rozpoznawanie cyfr, zwykle stosuje się utratę entropii krzyżowej. Oto wizualizacja niektórych filtrów wyuczonych w pierwszej warstwie (u góry) i filtrów wyuczonych w drugiej warstwie (u dołu) sieci splotowej:
Jak widać, filtry pierwszej warstwy w zasadzie wszystkie działają jak proste detektory krawędzi, podczas gdy filtry drugiej warstwy są bardziej złożone. Gdy wchodzisz głębiej w sieć, filtry są w stanie wykryć bardziej złożone kształty. Jednak wizualizacja staje się trochę trudna, ponieważ filtry te działają na obrazy, które były już wielokrotnie złożone i prawdopodobnie nie przypominają oryginalnego naturalnego obrazu.
źródło
glorot_uniform
nie używa rozkładu normalnego. Myślę, że opisujeszglorot_normal
. Nie sądzę, żeby miało to duże znaczenie dla odpowiedzi - kluczowe punkty to losowa inicjalizacja, a następnie efekty treningu. Być może warto wyjaśnić, w jaki sposób wyszkolone filtry wyglądają jak filtry krawędzi / narożników itp. (Być może z jednym z klasycznych obrazów przed / po treningu obrazowania filtrów pierwszej warstwy).glorot_normal
iglorot_uniform
, a ja zaktualizowane odpowiedź na to odzwierciedlać. Dodałem także trochę dodatkowych informacji o tym, jak kończą się filtry, jak zasugerowałeś.Model traned wyszkoli jądra zgodnie z funkcją kosztu, a ostatecznie te jądra są filtrami twojego modelu.
źródło