2011-01-12 9 views
73

Es ist eine prinzipielle Frage, in Bezug auf die Theorie der neuronalen Netze:Warum müssen wir die Eingabe für ein künstliches neuronales Netzwerk normalisieren?

Warum müssen wir den Eingang für ein neuronales Netzwerk zu 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 sein?

Was passiert, wenn die Daten nicht normalisiert sind?

Antwort

64

Es ist gut erklärt here.

Wenn die Eingangsvariablen linear kombiniert werden, wie sie in einem MLP, dann ist es nur selten unbedingt erforderliche Eingaben zu standardisieren, zumindest in der Theorie. Die Grund ist, dass jede Neuskalierung eines Eingangsvektors effektiv rückgängig gemacht werden kann durch Ändern der entsprechenden Gewichte und Verzerrungen, so dass Sie mit den gleichen gleichen Ausgaben wie zuvor. Es gibt jedoch eine Vielzahl von praktischen Gründen, warum die Standardisierung der Eingänge Training schneller machen kann und die Chancen in lokalen Optima stecken bleiben. Auch Gewichtsabnahme und Bayes'sche Schätzung können bequemer mit standardisierten Eingaben durchgeführt werden.

+0

Hallo, in MLPs, kann nicht standardisieren die Funktionen bei Verwendung einer konstanten Lernrate verursachen Über/Unterkompensation in Backpropagation Korrekturen für verschiedene Dimensionen? Ich frage mich aus dem folgenden Beitrag, ob dies ausschließlich für CNNs gilt, oder ob MLPs dieses Problem teilen: https://stats.stackexchange.com/questions/185853/why-do-we-need-to-normalize-the -images-before-we-put-sie-in-cnn – Austin

7

Betrachtet man das neurale Netzwerk von außen, ist es nur eine Funktion, die einige Argumente benötigt und ein Ergebnis liefert. Wie bei allen Funktionen gibt es eine Domäne (d. H. 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 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. Aber insgesamt ist das Ergebnis nutzlos, wenn die Argumente nicht innerhalb der Domäne liegen.

+1

Die beste Erklärung ... –

+0

Dies ist eine gute Erklärung – disklosr

15

Einige Eingaben in NN haben möglicherweise keinen "natürlich definierten" Wertebereich. Zum Beispiel könnte der Durchschnittswert langsam sein, aber im Laufe der Zeit kontinuierlich zunehmen (zum Beispiel 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 Bereich des Bereichs beibringen, während die tatsächlichen Eingaben aus dem höheren Teil dieses Bereichs stammen (und möglicherweise über dem Bereich liegen, mit dem das Netzwerk gelernt hat zu arbeiten).

Sie sollten diesen Wert normalisieren. Sie könnten dem Netzwerk beispielsweise mitteilen, um wie viel sich der Wert seit der letzten 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.

+0

Netter Hinweis über Normalisierung auf die vorherige Reihe von Eingaben. Dies entbindet den Benutzer von der Definition eines willkürlichen Normierungsfaktors. Ich vermute jedoch, dass das Netz genauer trainieren wird, wenn der Normalisierungsfaktor eine globale Konstante ist, die auf jeden Eingangsvektor angewendet wird. – davide

-5

Versteckte Schichten werden in Übereinstimmung mit der Komplexität unserer Daten verwendet. Wenn wir Eingabedaten haben, die linear trennbar sind, brauchen wir keine versteckte Schicht, z. ODER-Gatter, aber wenn wir nicht linear trennbare Daten haben, dann müssen wir die versteckte Schicht zum Beispiel das logische ExOR-Gatter verwenden. Die Anzahl der Knoten, die auf einer beliebigen Ebene aufgenommen werden, hängt vom Grad der Kreuzvalidierung unserer Ausgabe ab.

1

Der Grund, warum Normalisierung erforderlich ist, ist, weil, wenn Sie betrachten, wie ein adaptiver Schritt an einer Stelle in der Domäne der Funktion fortfährt, und Sie einfach das Problem auf das Äquivalent des gleichen Schritts durch einen großen Wert in übertragen Irgendeine Richtung in der Domäne, 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 als Reaktion auf diesen einen Trainingspunkt drehen? Es macht keinen Sinn, in verschiedenen Teilen der Domäne ein geändertes Anpassungsverfahren zu haben! Daher ist eine Normalisierung erforderlich, um den Unterschied im Trainingsergebnis zu reduzieren. Ich habe das nicht geschrieben, aber Sie können sich einfach die Mathematik für eine einfache lineare Funktion anschauen und wie sie von einem Trainingspunkt an zwei verschiedenen Orten 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 schreiben. Shaw.ca

33

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

error surface before and after scaling

Bilder von coursera course über neuronale Netze getroffen werden. Autor von course ist Geoffrey Hinton.

+3

Es wäre nett von Ihnen gewesen, dem Autor der von Ihnen geposteten Grafik zu danken. Die Grafik wurde eindeutig aus [Geoffrey Hintons Kurs Kurs] (https://www.coursera.org/learn/neural-networks/) entnommen. –

+3

Gute Anmerkung Ricardo !!! –

0

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

Betrachten Sie NN (neuronales Netzwerk) als Operator F, so dass F (Eingang) = Ausgang. In dem Fall, in dem diese Beziehung linear ist, können Sie entweder die Eingabe/Ausgabe in ihren Rohformen unnormalisiert lassen oder beide normalisieren, um A zu eliminieren. Offensichtlich diese Linearität Annahme wird in Klassifikationsaufgaben verletzt oder fast jede Aufgabe, die eine Wahrscheinlichkeit ausgibt, wobei F (A * input) = 1 * -Ausgang

in der Praxis Normalisierung ermöglicht nicht einpaßbar Netzwerke einpaßbar zu sein, das ist entscheidend für Experimentatoren/Programmierer. Die genaue Auswirkung der Normalisierung hängt jedoch nicht nur von der Netzwerkarchitektur/dem Netzwerkalgorithmus ab, sondern auch vom statistischen Prioritätswert für die Eingabe und Ausgabe.

Darüber hinaus wird NN oft implementiert, um sehr schwierige Probleme in einer Black-Box-Mode zu lösen, was bedeutet, dass das zugrunde liegende Problem eine sehr schlechte statistische Formulierung haben kann, was es schwierig macht, den Einfluss der Normalisierung zu bewerten, was den technischen Vorteil verursacht (um fit zu werden), um seine Auswirkungen auf die Statistiken zu dominieren.

Im statistischen Sinne, Normalisierung entfernt Variation, die nicht-kausal zu sein, um die Ausgabe bei der Vorhersage geglaubt wird, um NN zu verhindern, dass diese Variation als Prädiktor Lernen (NN sieht diese Variation nicht, daher kann es nicht verwenden).

Verwandte Themen