Wie visualisiere / verstehe ich, was ein neuronales Netzwerk macht?

37

Neuronale Netze werden aufgrund ihrer komplexen Struktur häufig als "Black Boxes" behandelt. Dies ist nicht ideal, da es oft von Vorteil ist, einen intuitiven Überblick über die interne Funktionsweise eines Modells zu haben. Was sind Methoden, um die Funktionsweise eines trainierten neuronalen Netzwerks zu visualisieren? Wie können wir alternativ leicht verdauliche Beschreibungen des Netzwerks extrahieren (z. B. arbeitet dieser versteckte Knoten hauptsächlich mit diesen Eingaben)?

Ich interessiere mich hauptsächlich für zweischichtige Feed-Forward-Netzwerke, möchte aber auch Lösungen für tiefere Netzwerke hören. Die Eingabedaten können entweder visueller oder nicht visueller Natur sein.

rm999
quelle
1
Hier ist ein schönes Beispiel: playground.tensorflow.org
nobar

Antworten:

12

Neuronale Netze werden manchmal als "differenzierbare Funktionsapproximatoren" bezeichnet. Sie können also jede Einheit von jeder anderen Einheit unterscheiden, um ihre Beziehung zu sehen.

Sie können damit auch überprüfen, wie empfindlich der Fehler des Netzwerks für einen bestimmten Eingang ist.

Dann gibt es etwas, das "rezeptive Felder" genannt wird. Es ist nur die Visualisierung der Verbindungen, die in eine verborgene Einheit gehen. Dies macht es einfach zu verstehen, was bestimmte Einheiten zum Beispiel für Bilddaten tun. Dies kann auch für höhere Ebenen durchgeführt werden. Siehe Visualisieren übergeordneter Funktionen eines Deep Network .

bayerj
quelle
13

Schätzen Sie die Wichtigkeit eines Features, indem Sie jeden Wert eines einzelnen Features zufällig anstoßen und aufzeichnen, wie sich Ihre allgemeine Fitnessfunktion verschlechtert.

Wenn also Ihr erstes Merkmal fortlaufend bewertet und auf skaliert wird , können Sie dem Wert jedes Trainingsbeispiels für das erste Merkmal hinzufügen . Dann schau, wie viel dein abnimmt. Dies schließt eine Funktion effektiv aus Ihren Trainingsdaten aus, geht aber besser mit Wechselwirkungen um, als die Funktion buchstäblich zu löschen.x1,i[0,1]rand(0,1)0.5R2

Ordnen Sie dann Ihre Funktionen nach der Verschlechterung der Fitnessfunktion und erstellen Sie ein hübsches Balkendiagramm. Zumindest einige der wichtigsten Funktionen sollten eine Darmüberprüfung bestehen, da Sie die Problemdomäne kennen. Auf diese Weise werden Sie auch von informativen Funktionen überrascht, die Sie möglicherweise nicht erwartet haben.

Diese Art von Funktionstest funktioniert für alle Black-Box-Modelle, einschließlich neuronaler Netze und großer CART-Ensembles. Meiner Erfahrung nach ist die Wichtigkeit von Features der erste Schritt, um zu verstehen, was ein Modell wirklich tut.

Someben
quelle
1
Danke für die Antwort; Das habe ich tatsächlich getan und finde es sehr nützlich. In dieser Frage suche ich jedoch mehr nach etwas, das im Netzwerk aussieht, als es als Black Box zu behandeln.
rm999
2

Hier ist eine grafische Einführung für eine bestimmte Art von neuronalen Netzen. Am Ende dieses Beitrags befindet sich ein Link zu R-Code, der eine Visualisierung für ein bestimmtes Problem zeigt. So sieht das aus:

Bildbeschreibung hier eingeben

Dimitriy V. Masterov
quelle
1

Herbst 2011 Ich nahm an dem kostenlosen Online-Kurs für maschinelles Lernen von Standford teil, der von Andrew Ng unterrichtet wurde, und wir stellten ein neuronales Netzwerk vor, das ein Gesichtsdetektor war. Die Ausgabe war ein generisches Gesicht. Ich möchte dies der Vollständigkeit halber erwähnen, aber Sie haben diese Art der Bewerbung nicht erwähnt, deshalb werde ich die Details nicht herausfinden. :)

Andrew
quelle
Die Universität ist Stanford. Ich kann Andrew Ng natürlich im Web finden. Ich hörte, wie Dick DeVeaux einen Vortrag über neuronale Netze hielt, in dem behauptet wurde, der Neuronenteil verstecke irgendwie, was wirklich vor sich geht. Es ist nur eine andere Art von Nichtliner-Klassifikator, und wenn man ihn nicht aus der Perspektive des Diagramms betrachtet, versteht man ihn am besten, indem man aufschreibt, was sie algebraisch tun. Ich hoffe, ich erinnere mich an dieses Recht.
Michael Chernick
De Veaux und Ungar, Eine kurze Einführung in neuronale Netze 1997: "Neuronale Netze scheinen heutzutage überall zu sein, und zumindest in ihrer Werbung können sie alles, was Statistiken können, ohne all den Aufwand und die Mühe, irgendetwas anderes zu tun ein Stück Software kaufen. "
Denis
0

Die unten angegebene Methode stammt von diesem Link. Weitere Informationen finden Sie auf der Website.

Beginnen Sie mit einem zufälligen Bild, dh geben Sie den Pixeln willkürlich Werte. Als nächstes führen wir einen Vorwärtsdurchlauf durch, wobei wir dieses Bild x als Eingabe in das Netzwerk verwenden, um die Aktivierung a_i (x) zu berechnen, die von x an einem Neuron i irgendwo in der Mitte des Netzwerks verursacht wird. Dann führen wir einen Rückwärtsdurchlauf durch (Ausführen von Backprop). um den Gradienten von a_i (x) in Bezug auf frühere Aktivierungen im Netzwerk zu berechnen Am Ende des Rückwärtsdurchlaufs verbleibt der Gradient ∂a_i (x) / ∂x , oder wie die Farbe jedes Pixels zu ändern ist Erhöhen Sie die Aktivierung von Neuron I. Wir tun genau das, indem wir dem Bild einen kleinen Bruchteil αα dieses Gradienten hinzufügen:

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

Wir machen das so oft, bis wir ein Bild x 'haben, das eine hohe Aktivierung des fraglichen Neurons bewirkt. "

LKB
quelle