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.
Odpowiedzi:
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 .
źródło
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.5 R2
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.
źródło
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:
źródło
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. :)
źródło
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. ”
źródło