Sensitivitätsanalyse in tiefen neuronalen Netzen


14

Nach einer bereits beantworteten Frage ( Auslesen der Wichtigkeit von Einschicht-Feed-Forward- Netzen) suche ich nach Rückschlüssen auf die Relevanz von Eingaben in neuronalen Netzen.

Angesichts eines tiefen Netzes, in dem die Rekonstruktion der Eingangsbedeutung durch Rückwärtsdurchlaufen der Schichten vom interessierenden Ausgangsknoten schwierig oder zeitaufwendig sein kann, habe ich mich gefragt, ob es einen theoretischen Rahmen für die Durchführung einer Empfindlichkeitsanalyse für ein neuronales Netz gibt, und im Grunde genommen eine geringfügige Änderung von a Geben Sie den gewünschten Knoten ein und überlegen Sie, wie er sich ändert.

Gibt es eine kanonische Methode zur Durchführung einer Sensitivitätsanalyse in neuronalen Netzen?

Ich würde es wirklich begrüßen, wenn Python-Code dazu vorhanden wäre

Antworten:


12

Die von Ihnen vorgeschlagene Empfindlichkeitsanalyse entspricht der Untersuchung der partiellen Ableitungen der Ausgänge in Bezug auf die Eingänge. Angenommen, der Ausgabevektor ist gegeben durch y = f (yRm , wobei x R d der Eingangsvektor ist und f die Funktion ist, die das Netzwerk implementiert. DerJacobider Ausgänge für die Eingänge ist:y=f(x)xRdf

Jij(x)=xjfi(x)

Der Jacobi gibt die lokale Änderungsrate jedes Ausgangs in Bezug auf jeden Eingang an, und gibt an, wie sich als Reaktion auf infinitesimale Störungen verhält. Wenn wir mit der Eingabe x beginnen und dem j einen infinitesimalen Wert Δ hinzufügenfxΔj ten Eingang , erwarten wir, dass sich der te Ausgang um Δ J i j ( x ) erhöht .iΔJij(x)

Wenn ich eine große Größe hat, bedeutet dies, dass der Ausganggegenüber dem Eingangin der Nähe vonempfindlich ist. WeilJij(x)ijxfist im Allgemeinen nichtlinear, dieser Begriff der Empfindlichkeit hängt von der Eingabe ab; es kann in einigen Regionen groß und in anderen nahe null sein. Wenn Sie eine Art zusammenfassendes Maß dafür haben möchten, wie stark die Ausgaben von den Eingaben abhängen, müssen Sie über mehrere Eingabewerte aggregieren. Sie können beispielsweise den über alle Eingaben in der Trainingsmenge gemittelten absoluten Wert des Jacobian verwenden (der als Ersatz für den erwarteten Wert für die zugrunde liegende Verteilung der Eingaben dient). Natürlich werden bei dieser Art der Zusammenfassung Informationen verworfen, was unter bestimmten Umständen irreführend sein kann.

Sie können die Kettenregel verwenden, um einen Ausdruck für die Jacobi-Funktion abzuleiten, ähnlich wie Sie den Gradienten der Verlustfunktion für die mit backprop verwendeten Parameter ableiten würden. Sie können es auch mit automatischer Differenzierung berechnen, indem Sie eine Bibliothek wie Theano, TensorFlow usw. verwenden. Es gibt nicht viel Grund, eine endliche Differenzierung durchzuführen (dh die Störung tatsächlich zu simulieren und die Änderung der Ausgabe zu messen), es sei denn, die von Ihrem Netzwerk implementierte Funktion ist nicht differenzierbar ( in diesem Fall existiert der Jakobianer nicht).

Ein paar Vorsichtsmaßnahmen: Wenn die Eingänge unterschiedliche Einheiten / Skalen haben, haben die Empfindlichkeiten auch unterschiedliche Einheiten / Skalen und können nicht direkt verglichen werden. Eine mögliche Lösung ist die Standardisierung / Skalierung der Eingänge. Es ist auch wichtig zu bedenken, dass diese Art der Analyse uns über das Modell selbst informiert, jedoch nicht unbedingt über die zugrunde liegende Verteilung, die die Daten generiert hat. Wenn beispielsweise zwei Eingaben korreliert sind, verwendet das Modell möglicherweise die erste, jedoch nicht die zweite. In diesem Fall würden wir feststellen, dass die Empfindlichkeit für den ersten Eingang hoch und für den zweiten niedrig ist, sollten aber nicht den Schluss ziehen, dass der erste Eingang für die Vorhersage des Ausgangs im Allgemeinen von Natur aus wichtiger ist.

Dieser Artikel sollte von Interesse sein.


tolle antwort und toller artikel! Wenn jemand an der Implementierung dieser Methode interessiert ist, finden Sie hier eine nette Implementierung der jacobianischen Berechnung: medium.com/unit8-machine-learning-publication/…
pcko1
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.