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


151

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?


1
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da sie zu Stats SE oder AI SE gehört.
7.

Antworten:


101

Es wird hier gut erklärt .

Wenn die Eingangsvariablen wie bei einem MLP [Multilayer Perceptron] linear kombiniert werden, ist es zumindest theoretisch selten unbedingt erforderlich, die Eingänge zu standardisieren. Der Grund dafür ist, dass jede Neuskalierung eines Eingabevektors effektiv rückgängig gemacht werden kann, indem die entsprechenden Gewichte und Verzerrungen geändert werden, sodass Sie genau die gleichen Ausgaben wie zuvor erhalten. Es gibt jedoch eine Vielzahl praktischer Gründe, warum die Standardisierung der Eingaben das Training beschleunigen und die Wahrscheinlichkeit verringern kann, in lokalen Optima stecken zu bleiben. Auch Gewichtsabfall und Bayes'sche Schätzung können mit standardisierten Eingaben bequemer durchgeführt werden.


2
Hallo, kann die Standardisierung der Funktionen bei Verwendung einer konstanten Lernrate bei MLPs nicht zu einer Über- / Unterkompensation bei Backpropagation-Korrekturen für verschiedene Dimensionen führen? Ich frage mich aus dem folgenden Beitrag, ob dies exklusiv für CNNs ist oder ob MLPs dieses Problem teilen könnten: stats.stackexchange.com/questions/185853/…
Austin

Problem: Gefälle Abstieg opt. Der Vorgang kann viel länger dauern. Warum? Wenn Merkmale von unterschiedlichem Maßstab sind (x1 = 0-1 und x2 = 0..1000), kann sich die Fehlerfunktionsfläche verlängern. Bedeutung: verschiedene Skalen für verschiedene Dims (w1, w2). Aber Lernrate das ist SAME für alle dims -> Schritte in länglichen dim (w2) sind sehr klein , bis erreicht die lokale min. Problem: LR kann nicht eingebunden werden, da die lokale min in der anderen Abmessung (w1) übersprungen wird. Siehe Demo unter youtube.com/watch?reload=9&v=UIp2CMI0748
Dekel

Hier ist ein lineares Beispiel, bei dem die Dinge ohne Skalierung sehr schlecht sind: stackoverflow.com/q/59319643 . Irgendeine Idee warum?
AlwaysLearning

61

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: Fehleroberfläche vor und nach der Normalisierung

Fehleroberfläche vor und nach der Skalierung

Bilder stammen aus dem Coursera-Kurs über neuronale Netze. Autor des Kurses ist Geoffrey Hinton.


14
Es wäre nett von Ihnen gewesen, den Autor der von Ihnen geposteten Grafik gutzuschreiben. Die Grafik stammt eindeutig aus Geoffrey Hintons Coursera-Kurs .
Ricardo Cruz

5
Ich fand dieses Video sehr hilfreich bei der Erklärung des obigen Diagramms, was für mich allein nicht offensichtlich war.
chris838

21

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.


Netter Hinweis zur Normalisierung der vorherigen Eingaben. Dies entlastet den Benutzer von der Definition eines beliebigen Normalisierungsfaktors. Ich vermute jedoch, dass das Netz genauer trainiert, wenn der Normalisierungsfaktor eine globale Konstante ist, die auf jeden Eingabevektor angewendet wird.
David

11

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.


16
Wenn Sie eine übliche Aktivierungsfunktion (ReLu oder Sigmoid) verwenden, ist die Domäne immer der gesamte Raum R ^ n. Dies kann also nicht der Grund sein, die Daten zu normalisieren.
Joker123

1
Dies erklärt auch nicht, warum Bilder normalisiert werden, da sie bereits eine Domain 0-255
DollarAkshay

4

Es gibt zwei Gründe, warum wir Eingabemerkmale normalisieren müssen, bevor wir sie dem neuronalen Netzwerk zuführen:

Grund 1 : Wenn ein Featurein der DatasetGröß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:

  1. K-Mittel
  2. K-Nächste-Nachbarn
  3. Hauptkomponentenanalyse (PCA)
  4. Gradientenabstieg

2

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 ).


2

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.


1

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


-9

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.

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.