wake-up-neo.com

Warum müssen wir die Eingabe für ein künstliches neuronales Netzwerk normalisieren?

Es ist eine Hauptfrage in Bezug auf die Theorie neuronaler Netze:

Warum müssen wir die Eingabe für ein neuronales Netzwerk normalisieren?

Ich verstehe, dass manchmal, wenn die Eingabewerte nicht numerisch sind, eine bestimmte Transformation durchgeführt werden muss, aber wenn wir eine numerische Eingabe haben? Warum müssen die Zahlen in einem bestimmten Intervall liegen?

Was passiert, wenn die Daten nicht normalisiert werden?

97
karla

Es ist gut erklärt hier .

Wenn die Eingangsvariablen wie in einem MLP linear kombiniert werden, ist dies zur Vereinheitlichung der Eingaben, zumindest theoretisch, kaum zwingend erforderlich. Das Grund ist, dass jede Neuskalierung eines Eingabevektors durch .__ effektiv rückgängig gemacht werden kann. die entsprechenden Gewichte und Vorspannungen ändern, so dass Sie die genaue gleiche Ausgänge wie zuvor. Es gibt jedoch eine Vielzahl praktischer Gründe, warum das Standardisieren der Eingaben das Training beschleunigen und die .__ reduzieren kann. Chancen, in lokalen Optima stecken zu bleiben. Gewichtsabnahme und Bayesian Die Schätzung kann mit standardisierten Eingaben bequemer erfolgen. 

82
finnw

In neuronalen Netzwerken ist es eine gute Idee, Daten nicht nur zu normalisieren, sondern auch zu skalieren. Dies ist für eine schnellere Annäherung an globale Minima an der Fehleroberfläche gedacht. Siehe die folgenden Bilder: error surface before and after normalization

error surface before and after scaling

Es werden Bilder vom Coursera-Kurs über neuronale Netzwerke aufgenommen. Autor des Kurs ist Geoffrey Hinton. 

45
Yuriy Zaletskyy

Einige Eingänge in NN verfügen möglicherweise nicht über einen "natürlich definierten" Wertebereich. Beispielsweise kann der Durchschnittswert langsam sein, aber im Laufe der Zeit kontinuierlich ansteigen (zum Beispiel eine Anzahl von Datensätzen in der Datenbank). 

In diesem Fall funktioniert die Eingabe dieses Rohwerts in Ihr Netzwerk nicht sehr gut. Sie werden Ihrem Netzwerk Werte aus dem unteren Bereich des Bereichs beibringen, während die tatsächlichen Eingaben aus dem oberen Bereich dieses Bereichs (und möglicherweise oberhalb des Bereichs liegen, mit dem das Netzwerk gelernt hat zu arbeiten). 

Sie sollten diesen Wert normalisieren. Sie können dem Netzwerk beispielsweise mitteilen, um wie viel sich der Wert seit der vorherigen Eingabe geändert hat. Dieses Inkrement kann normalerweise mit hoher Wahrscheinlichkeit in einem bestimmten Bereich definiert werden, was es zu einer guten Eingabe für das Netzwerk macht.

18
Mchl

Wenn Sie das neuronale Netzwerk von außen betrachten, ist es nur eine Funktion, die einige Argumente aufnimmt und ein Ergebnis liefert. Wie bei allen Funktionen hat es eine Domäne (d. H. Eine Reihe rechtlicher Argumente). Sie müssen die Werte normalisieren, die Sie an das neuronale Netz übergeben möchten, um sicherzustellen, dass es sich in der Domäne befindet. Wie bei allen Funktionen ist das Ergebnis nicht garantiert, wenn die Argumente nicht in der Domäne sind. 

Das genaue Verhalten des neuronalen Netzes bei Argumenten außerhalb der Domäne hängt von der Implementierung des neuronalen Netzes ab. Insgesamt ist das Ergebnis jedoch unbrauchbar, wenn sich die Argumente nicht innerhalb der Domäne befinden.

11
Oswald

Der Grund für die Normalisierung ist notwendig, wenn Sie sich ansehen, wie ein adaptiver Schritt an einer Stelle in der Domäne der Funktion abläuft, und Sie das Problem einfach auf das Äquivalent desselben Schrittes übertragen, der durch einen großen Wert in eine bestimmte Richtung in der Domäne, dann erhalten Sie andere Ergebnisse. Es kommt darauf an, ein lineares Stück an einen Datenpunkt anzupassen. Wie viel sollte sich das Stück bewegen, ohne sich zu drehen, und wie stark sollte es sich in Reaktion auf diesen einen Trainingspunkt drehen? Es macht keinen Sinn, ein geändertes Anpassungsverfahren in verschiedenen Teilen der Domäne zu haben! Daher ist eine Normalisierung erforderlich, um den Unterschied im Trainingsergebnis zu verringern. Ich habe das nicht geschrieben, aber Sie können sich einfach die Mathematik für eine einfache lineare Funktion ansehen und wie sie von einem Trainingspunkt an zwei verschiedenen Orten trainiert wird. Dieses Problem wurde an einigen Stellen behoben, aber ich bin nicht damit vertraut. In ALNs wurde das Problem behoben und ich kann Ihnen eine Arbeit senden, wenn Sie an wwarmstrong AT shaw.ca schreiben

Ich glaube, die Antwort hängt vom Szenario ab.

Betrachten Sie NN (neuronales Netzwerk) als Operator F, so dass F(input) = Ausgabe . Wenn diese Relation linear ist, so dass F (A * input) = A * output ist, können Sie die Eingabe/Ausgabe entweder in ihrer Rohform unnormalisieren oder beide normalisieren, um A zu entfernen. Offensichtlich Diese Linearitätsannahme wird bei Klassifizierungsaufgaben oder nahezu bei jeder Task, die eine Wahrscheinlichkeit ausgibt, verletzt, wobei F (A * input) = 1 * output

In der Praxis ermöglicht die Normalisierung, dass nicht anpassbare Netzwerke anpassbar sind, was für Experimentatoren/Programmierer von entscheidender Bedeutung ist. Die genauen Auswirkungen der Normalisierung hängen jedoch nicht nur von der Netzwerkarchitektur/dem Algorithmus ab, sondern auch vom statistischen Prioritätswert für die Eingabe und Ausgabe. 

Darüber hinaus wird NN häufig eingesetzt, um sehr schwierige Probleme auf eine Black-Box-Art zu lösen, was bedeutet, dass das zugrunde liegende Problem eine sehr schlechte statistische Formulierung hat, was es schwierig macht, die Auswirkungen der Normalisierung zu bewerten, was den technischen Vorteil verursacht (faltbar wird). Einfluss auf die Statistiken zu dominieren.

Im statistischen Sinne beseitigt die Normalisierung eine Änderung, von der man annimmt, dass sie bei der Vorhersage der Ausgabe nicht kausal ist, um zu verhindern, dass NN diese Variation als Prädiktor erlernt (NN sieht diese Variation nicht und kann sie daher nicht verwenden). 

0
shouldsee