Es ist eine Hauptfrage in Bezug auf die Theorie der neuronalen Netze:
Warum müssen wir die Eingabe für ein neuronales Netzwerk normalisieren?
Ich verstehe, dass manchmal, wenn zum Beispiel 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?
Antworten:
Es wird hier gut erklärt .
quelle
In neuronalen Netzen 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 vorgesehen. Siehe folgende Bilder:
Bilder stammen aus dem Coursera-Kurs über neuronale Netze. Autor des Kurses ist Geoffrey Hinton.
quelle
Einige Eingaben in NN haben möglicherweise keinen "natürlich definierten" Wertebereich. Beispielsweise kann der Durchschnittswert langsam sein, aber im Laufe der Zeit kontinuierlich ansteigen (z. B. eine Anzahl von Datensätzen in der Datenbank).
In diesem Fall funktioniert das Einspeisen dieses Rohwerts in Ihr Netzwerk nicht sehr gut. Sie werden Ihrem Netzwerk Werte aus dem unteren Teil des Bereichs beibringen, während die tatsächlichen Eingaben aus dem oberen Teil dieses Bereichs stammen (und möglicherweise über dem Bereich, mit dem das Netzwerk arbeiten gelernt hat).
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.
quelle
Wenn man das neuronale Netzwerk von außen betrachtet, ist es nur eine Funktion, die einige Argumente aufnimmt und ein Ergebnis liefert. Wie bei allen Funktionen hat es eine Domäne (dh eine Reihe von rechtlichen Argumenten). 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 kann nicht garantiert werden, dass das Ergebnis angemessen ist, wenn sich die Argumente nicht in der Domäne befinden.
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 nutzlos, wenn sich die Argumente nicht innerhalb der Domäne befinden.
quelle
Es gibt zwei Gründe, warum wir Eingabemerkmale normalisieren müssen, bevor wir sie dem neuronalen Netzwerk zuführen:
Grund 1 : Wenn ein
Feature
in derDataset
Größe im Vergleich zu anderen groß ist, dominiert dieses großskalierte Merkmal, und infolgedessen sind die Vorhersagen des neuronalen Netzes nicht genau.Beispiel : Wenn wir bei Mitarbeiterdaten Alter und Gehalt berücksichtigen, ist das Alter eine zweistellige Zahl, während das Gehalt 7- oder 8-stellig sein kann (1 Million usw.). In diesem Fall dominiert das Gehalt die Vorhersage des neuronalen Netzes. Wenn wir diese Features jedoch normalisieren, liegen die Werte beider Features im Bereich von (0 bis 1).
Grund 2 : Die Frontausbreitung neuronaler Netze umfasst das Punktprodukt von Gewichten mit Eingabemerkmalen. Wenn die Werte also sehr hoch sind (für Bild- und Nichtbilddaten), nimmt die Berechnung der Ausgabe viel Rechenzeit und Speicherplatz in Anspruch. Gleiches gilt für die Back Propagation. Folglich konvergiert das Modell langsam, wenn die Eingänge nicht normalisiert sind.
Beispiel : Wenn wir eine Bildklassifizierung durchführen, ist die Bildgröße sehr groß, da der Wert jedes Pixels zwischen 0 und 255 liegt. Die Normalisierung ist in diesem Fall sehr wichtig.
Im Folgenden sind die Fälle aufgeführt, in denen die Normalisierung sehr wichtig ist:
quelle
Ich glaube, die Antwort hängt vom Szenario ab.
Betrachten Sie NN (neuronales Netzwerk) als Operator F, so dass F (Eingabe) = Ausgabe . In dem Fall, in dem diese Beziehung linear ist, so dass F (A * Eingabe) = A * Ausgabe ist , können Sie entweder die Eingabe / Ausgabe in ihrer Rohform nicht normalisieren lassen oder beide normalisieren, um A zu eliminieren. Offensichtlich ist diese Linearitätsannahme verletzt in Klassifizierungsaufgaben oder fast jeder Aufgabe, die eine Wahrscheinlichkeit ausgibt, wobei F (A * Eingabe) = 1 * Ausgabe
In der Praxis ermöglicht die Normalisierung, dass nicht anpassbare Netzwerke anpassbar sind, was für Experimentatoren / Programmierer von entscheidender Bedeutung ist. Die genaue Auswirkung der Normalisierung hängt jedoch nicht nur von der Netzwerkarchitektur / dem Netzwerkalgorithmus ab, sondern auch von der statistischen Priorität für die Eingabe und Ausgabe.
Darüber hinaus wird NN häufig implementiert, um sehr schwierige Probleme in einer Black-Box-Weise zu lösen. Dies bedeutet, dass das zugrunde liegende Problem möglicherweise eine sehr schlechte statistische Formulierung aufweist, was es schwierig macht, die Auswirkungen der Normalisierung zu bewerten, was den technischen Vorteil verursacht (passend wird). über seine Auswirkungen auf die Statistik zu dominieren.
Im statistischen Sinne entfernt die Normalisierung Variationen, von denen angenommen wird, dass sie bei der Vorhersage der Ausgabe nicht kausal sind, um zu verhindern, dass NN diese Variation als Prädiktor lernt ( NN sieht diese Variation nicht und kann sie daher nicht verwenden ).
quelle
Wenn Sie nicht normalisierte Eingabefunktionen verwenden, weist die Verlustfunktion wahrscheinlich sehr längliche Täler auf. Bei der Optimierung mit Gradientenabstieg wird dies zu einem Problem, da der Gradient in Bezug auf einige der Parameter steil ist. Dies führt zu großen Schwankungen im Suchraum, da Sie zwischen steilen Hängen springen. Um dies zu kompensieren, müssen Sie die Optimierung mit kleinen Lernraten stabilisieren.
Betrachten Sie die Merkmale x1 und x2, die zwischen 0 und 1 bzw. zwischen 0 und 1 Million liegen. Es stellt sich heraus, dass die Verhältnisse für die entsprechenden Parameter (z. B. w1 und w2) ebenfalls groß sind.
Durch das Normalisieren wird die Verlustfunktion tendenziell symmetrischer / sphärischer. Diese sind einfacher zu optimieren, da die Farbverläufe tendenziell auf das globale Minimum zeigen und Sie größere Schritte ausführen können.
quelle
Der Grund, warum eine Normalisierung erforderlich ist, liegt darin, dass Sie, wenn Sie sich ansehen, wie ein adaptiver Schritt an einer Stelle in der Domäne der Funktion abläuft, das Problem einfach auf das Äquivalent desselben Schritts transportieren, das durch einen großen Wert in eine Richtung in der übersetzt wird Domain, dann erhalten Sie unterschiedliche Ergebnisse. Es läuft auf die Frage hinaus, ein lineares Stück an einen Datenpunkt anzupassen. Wie viel sollte sich das Stück bewegen, ohne sich zu drehen, und wie viel sollte es sich als 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 noch nicht geschrieben, aber Sie können sich die Mathematik für eine einfache lineare Funktion ansehen und wie sie von einem Trainingspunkt an zwei verschiedenen Stellen trainiert wird. Dieses Problem wurde möglicherweise an einigen Stellen behoben, aber ich kenne sie nicht. In ALNs wurde das Problem behoben und ich kann Ihnen ein Papier senden, wenn Sie an wwarmstrong AT shaw.ca schreiben
quelle
Versteckte Ebenen werden entsprechend der Komplexität unserer Daten verwendet. Wenn wir Eingabedaten haben, die linear trennbar sind, müssen wir keine verborgene Schicht verwenden, z. B. ein ODER-Gatter, aber wenn wir nicht linear trennbare Daten haben, müssen wir eine verborgene Schicht verwenden, zum Beispiel ein logisches ExOR-Gatter. Die Anzahl der Knoten auf einer Ebene hängt vom Grad der Kreuzvalidierung unserer Ausgabe ab.
quelle