Jak wizualizować / zrozumieć, co robi sieć neuronowa?

37

Sieci neuronowe są często traktowane jako „czarne skrzynki” ze względu na ich złożoną strukturę. Nie jest to idealne, ponieważ często korzystne jest intuicyjne zrozumienie, w jaki sposób model działa wewnętrznie. Jakie są metody wizualizacji działania wyszkolonej sieci neuronowej? Alternatywnie, w jaki sposób możemy wyodrębnić łatwo przyswajalne opisy sieci (np. Ten ukryty węzeł działa przede wszystkim z tymi wejściami)?

Interesują mnie przede wszystkim dwuwarstwowe sieci feed-forward, ale chciałbym również usłyszeć rozwiązania dla głębszych sieci. Dane wejściowe mogą mieć charakter wizualny lub niewizualny.

rm999
źródło
1
Oto ładny przykład: playground.tensorflow.org
nobar

Odpowiedzi:

12

Sieci neuronowe są czasami nazywane „aproksymatorami funkcji różniczkowalnych”. Możesz więc rozróżnić dowolną jednostkę w stosunku do dowolnej innej jednostki, aby zobaczyć, jaki jest jej związek.

Dzięki temu możesz sprawdzić, jak wrażliwy jest błąd sieci wrt do określonego wejścia.

Następnie istnieje coś, co nazywa się „polami recepcyjnymi”, co jest jedynie wizualizacją połączeń przechodzących w ukrytą jednostkę. Ułatwia to na przykład zrozumienie, co poszczególne jednostki robią dla danych obrazu. Można to zrobić również na wyższych poziomach. Zobacz Wizualizacja funkcji wyższego poziomu w głębokiej sieci .

bayerj
źródło
13

Oszacuj znaczenie funkcji, losowo podnosząc każdą wartość pojedynczej funkcji i rejestrując, jak pogarsza się ogólna funkcja fitness.

Więc jeśli twoja pierwsza cecha jest ciągle wyceniana i skalowana do , możesz dodać do wartości każdego przykładu treningowego dla pierwszej cechy. Następnie sprawdź, o ile zmniejsza się twoje . To skutecznie wyklucza funkcję z danych treningowych, ale lepiej radzi sobie z interakcjami krzyżowymi niż dosłowne usunięcie tej funkcji.x1,i[0,1]rand(0,1)0.5R2

Następnie uszereguj swoje funkcje według degradacji funkcji fitness i zrób ładny wykres słupkowy. Przynajmniej niektóre z najważniejszych funkcji powinny przejść kontrolę, biorąc pod uwagę Twoją wiedzę na temat problematycznej dziedziny. Dzięki temu możesz być mile zaskoczony funkcjami informacyjnymi, których być może nie spodziewałeś się.

Ten rodzaj testu ważności funkcji działa dla wszystkich modeli czarnych skrzynek, w tym sieci neuronowych i dużych zespołów CART. Z mojego doświadczenia wynika, że ​​znaczenie funkcji jest pierwszym krokiem do zrozumienia, co naprawdę robi model.

someben
źródło
1
Dziękuję za odpowiedź; to właściwie zrobiłem i uważam, że jest to bardzo przydatne. W tym pytaniu szukam raczej czegoś, co wygląda wewnątrz sieci, niż traktuje to jako czarną skrzynkę.
rm999
2

Oto intuicja graficzna dla określonego rodzaju sieci neuronowych. Na końcu tego postu znajduje się link do kodu R, który pokazuje wizualizację konkretnego problemu. Oto jak to wygląda:

wprowadź opis zdjęcia tutaj

Dimitriy V. Masterov
źródło
1

Jesienią 2011 r. Wziąłem bezpłatny internetowy kurs uczenia maszynowego z Standford prowadzony przez Andrew Ng i wizualizowaliśmy sieć neuronową, która była detektorem twarzy. Wynik był ogólną twarzą. Chciałbym wspomnieć o tym dla kompletności, ale nie wspomniałeś o tego rodzaju aplikacji, więc nie zamierzam wykopać szczegółów. :)

Andrzej
źródło
Uniwersytet to Stanford. Mogę znaleźć kurs Andrew Ng w Internecie. Słyszałem, że Dick DeVeaux wygłasza wykład na temat sieci neuronowych, twierdząc, że część neuronów ukrywa to, co się naprawdę dzieje. jest to po prostu inny rodzaj klasyfikatora nieliniowego i jeśli zamiast patrzeć na to z perspektywy diagramu, najlepiej je zrozumieć, pisząc, co robią algebraicznie. Mam nadzieję, że pamiętam to prawo.
Michael R. Chernick
De Veaux i Ungar, Krótkie wprowadzenie do sieci neuronowych 1997: „sieci neuronowe zdają się być wszędzie w dzisiejszych czasach, a przynajmniej w swojej reklamie są w stanie zrobić wszystko, co statystyki mogą zrobić, bez kłopotów i kłopotów z robieniem czegokolwiek oprócz kup oprogramowanie ”.
denis
0

Poniższa metoda pochodzi z tego linku , odwiedź stronę, aby uzyskać więcej informacji.

Zacznij od losowego obrazu, tzn. Arbitralnie podaj wartości pikselom. „Następnie wykonujemy przejście do przodu, używając tego obrazu x jako danych wejściowych do sieci, aby obliczyć aktywację a_i (x) spowodowaną przez x w jakimś neuronie i gdzieś w środku sieci. Następnie wykonujemy przejście do tyłu (wykonując backprop) aby obliczyć gradient a_i (x) w odniesieniu do wcześniejszych aktywacji w sieci. Na końcu przejścia wstecznego pozostaje nam gradient ∂a_i (x) / ∂x lub jak zmienić kolor każdego piksela na zwiększyć aktywację neuronu i . Dokładnie to robimy, dodając do obrazu niewielką część αα tego gradientu:

x ← x + α⋅∂a_i (x) / ∂x

Robimy to wielokrotnie, aż do uzyskania obrazu x ', który powoduje wysoką aktywację danego neuronu. ”

LKB
źródło