Czego właśnie nauczyła się moja sieć neuronowa? Jakie funkcje są ważne i dlaczego?

30

Sieć neuronowa uczy się cech zestawu danych jako sposobu na osiągnięcie pewnego celu. Po zakończeniu możemy chcieć dowiedzieć się, czego nauczyła się sieć neuronowa. Jakie były funkcje i dlaczego o to dbano. Czy ktoś może podać jakieś referencje na temat pracy, która dotyczy tego problemu?

użytkownik442920
źródło

Odpowiedzi:

28

To prawda, że ​​trudno jest zrozumieć, czego uczy się sieć neuronowa, ale na tym froncie było dużo pracy. Zdecydowanie możemy dowiedzieć się, czego szuka nasza sieć.

Rozważmy przypadek splotowej sieci neuronowej dla obrazów. Mamy interpretację dla naszej pierwszej warstwy, że przesuwamy filtry na obrazie, więc nasza pierwsza ukryta warstwa odpowiada zgodności między małymi fragmentami obrazu i naszymi różnymi filtrami. Możemy wizualizować te filtry, aby zobaczyć, jaka jest nasza pierwsza warstwa reprezentacji:K

alexnet layer 1

To zdjęcie jest pierwszą warstwą filtrów z AlexNet i pochodzi z tego wspaniałego samouczka: http://cs231n.github.io/understanding-cnn/ . To pozwala nam interpretować pierwszą ukrytą warstwę jako uczącą się reprezentować obraz, składający się z surowych pikseli, jako tensor, w którym każda współrzędna jest zgodnością filtra z małym obszarem obrazu. Następna warstwa działa z tymi aktywacjami filtrów.

[010141010].

0

Artykuł Erhana i in. (2009) zgadza się z tym: twierdzą, że pierwsze wizualizacje warstw ukrytych są powszechne (i to było w 2009 roku), ale wizualizacja głębszych warstw jest trudniejsza. Z tego artykułu:

Główne odkrycie eksperymentalne tego badania jest bardzo zaskakujące: reakcja jednostki wewnętrznej na obrazy wejściowe, jako funkcja w przestrzeni obrazu, wydaje się być jednomodalna lub przynajmniej, że maksimum jest określone niezawodnie i konsekwentnie dla wszystkich testowanych losowych inicjalizacji . Jest to interesujące, ponieważ znalezienie tego dominującego trybu jest stosunkowo łatwe, a jego wyświetlenie zapewnia dobrą charakterystykę tego, co robi jednostka.

Chris Olah i wsp. ( Https://distill.pub/2017/feature-visualization/ ) opierają się na tym i dyskutują, jak ogólnie można (1) generować obrazy, które prowadzą do dużych aktywacji, aby zorientować się, co sieć szuka; lub (2) weź rzeczywiste obrazy wejściowe i zobacz, jak różne części obrazu aktywują sieć. Ten post koncentruje się na (1).

Na poniższym zdjęciu, zaczerpniętym z tego powiązanego artykułu autorstwa Olaha i wsp., Autorzy omawiają różne aspekty sieci, które można sprawdzić. Obraz po lewej stronie pokazuje wynik optymalizacji aktywacji określonego neuronu w przestrzeni obrazu wejściowego i tak dalej.

C. Olah i in

Zdecydowanie poleciłbym przeczytanie tego artykułu w całości, jeśli chcesz głębiej to zrozumieć, a czytając jego odnośniki powinieneś dokładnie zrozumieć, co zostało z tym zrobione.

Oczywiście było to tylko dla obrazów, w których my jako ludzie możemy zrozumieć dane wejściowe. Jeśli pracujesz z czymś trudniejszym do interpretacji, takim jak duży wektor liczb, możesz nie być w stanie wykonać tak fajnych wizualizacji, ale w zasadzie nadal możesz rozważyć te techniki oceny różnych neuronów, warstw itp. .

jld
źródło
2
+1 szczególnie za ostatni akapit. Osobiście uważam, że ludzie wizji przerabiają wizualizacje na tak dużej liczbie parametrów.
Haitao Du
oczywiście +1 za dobrze napisaną długą odpowiedź z wiarygodnymi referencjami.
Haitao Du
1
@ hxd1011 dziękuję i myślę, że Olah i wsp. wspominają w tym artykule, że niesprawiedliwie jest patrzeć na to, co maksymalizuje pojedynczy neuron, ponieważ tak naprawdę warstwa jest jak podstawa i bardziej dotyczy przestrzeni reprezentowanej przez warstwę niż dokładne wektory podstawowe. Więc chociaż fajnie na to patrzeć, wiele z tych wizualizacji może nie być bardzo wnikliwych
jld
1
Powszechnym nieporozumieniem jest również to, że przy pobieraniu filtrów pierwszej warstwy plama obrazu, która zmaksymalizuje moc wyjściową danego neuronu, wygląda dokładnie tak, jak ten filtr. Właściwie nie, łatka maksymalizująca moc wyjściową neuronu nie wygląda niczym od wartości liczbowych filtru od czasu jego splotu, a nie dopasowania szablonu. Uważam, że tam właśnie znajdują się przykłady przeciwników.
Lugi,
Olah i in. wpis na blogu jest fajny, ale popełniają błąd - „optymalizują pod kątem maksymalnej aktywacji” (nie dokładnie tak, ale blisko), znajdują zdjęcie, które nie przypomina niczego z zestawu szkoleniowego i stwierdzają, że CNN „widzą” inaczej niż my. Chociaż wniosek jest oczywiście prawdziwy, rozumowanie jest błędne - tryb rozkładu wielowymiarowego nie wygląda jak typowa próbka z tego rozkładu. Innymi słowy, właśnie dlatego, że CNN muszą klasyfikować koty, trybem dystrybucji nie może być kot, ale „kot koszmarny”.
DeltaIV
7

Sieć neuronowa jest jednym z modeli czarnej skrzynki, które nie dałyby „łatwych do zrozumienia” reguł / ani tego, czego się nauczyły.

W szczególności nauczyliśmy się parametrów w modelu, ale parametry mogą być duże: setki tysięcy parametrów jest bardzo normalne.

Ponadto nie jest jasne, jakie ważne funkcje zostały wyuczone, można zrozumieć, że model wykorzystuje wszystkie funkcje, z wieloma skomplikowanymi operacjami w celu uzyskania wyników, przy czym nie jest łatwo powiedzieć w prostym języku angielskim, w jaki sposób transformacja modelu korzysta z każdej funkcji.


W rzeczywistości jednowarstwowa sieć neuronowa (bez ukrytej warstwy) z funkcją logistyczną jako funkcją aktywacyjną jest identyczna z regresją logistyczną. Regresja logistyczna jest bardzo bogata w interpretacje. Oto jeden przykład. Ale przy złożonej sieci neuronowej / bardziej ukrytych warstwach taka interpretacja nie będzie miała zastosowania.

Haitao Du
źródło