Wie zu entscheiden, die Aktivierung der Funktion im neuronalen Netzwerk
Ich bin mit feedforward, RÜCKFÜHRUNG, mehrschichtiges neuronales Netz, und ich bin mit sigmoid-Funktion als Aktivierungsfunktion, die mit Bereich von -1 bis 1. Aber der minimale Fehler ist nicht unter 5.8 und ich will so weniger, können Sie die Ausgabe nach 100000 Iterationen.
Ich denke, das ist, weil mein Leistungsbereich ist über 1 und sigmoid-Funktionen Bereich ist nur -1 und + 1. Kann jemand mir empfehlen, wie kann ich dieses problem überwinden, wie der von mir gewünschten Ausgangsbereich 0 bis 2.5. Mir empfehlen die Aktivierung der Funktion wird am besten für diesen Bereich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie versuchen, die Reduzierung Ausgabe Fehler, es gibt ein paar Dinge zu sehen vor tweaking einen Knoten Aktivierung der Funktion.
Erste, Sie haben einen bias-Knoten? Bias-Knoten haben mehrere Auswirkungen, sondern - am wichtigsten für diese Diskussion - Sie ermöglichen die Netzwerk-Ausgabe übersetzt werden, um die gewünschte Ausgabe-Bereich. Als diese Referenz Staaten:
Dieser Beitrag bietet eine sehr gute Diskussion:
Rolle von Bias in Neuronalen Netzen.
Dieser ist auch gut: Warum die Verschiebung ist notwendig, ANN? Sollten wir getrennte BIAS für jede Schicht?
Zweite Methode: es hilft oft, zu normalisieren Ihre ein-und Ausgänge. Wie Sie anmerken, Ihr Sigma bietet einen Bereich von +/- 1. Dieser kleine Bereich kann problematisch sein, wenn Sie versuchen zu lernen-Funktionen, die eine Reihe von 0 bis 1000 (z.B.). Zu Hilfe lernen, ist es üblich, zu skalieren und zu übersetzen Eingänge, um Platz für den Knoten Aktivierung von Funktionen. In diesem Beispiel könnte man unterteilen den Bereich von 500, was einen Bereich von 0 bis 2 reichen, und dann subtrahieren Sie 1 aus diesem Bereich. Auf diese Weise werden die Eingänge wurden normiert auf einen Bereich von -1 bis 1, die besser passt die Aktivierung der Funktion. Beachten Sie, dass Netzwerk-Ausgabe sollte denormalisierten: zunächst fügen Sie +1 auf den Ausgang, dann multiplizieren Sie mit 500.
In Ihrem Fall, sollten Sie überlegen, Skalierung der Eingänge von 0,8, dann 1 subtrahieren aus dem Ergebnis. Sie würden dann fügen Sie 1 an das Netzwerk ausgegeben, und dann multipliziert mit 1.25 zum wiederherstellen des gewünschten Bereichs. Beachten Sie, dass diese Methode am einfachsten zu erreichen, da es nicht direkt ändern Sie Ihre Netzwerk-Topologie, wie die Zugabe von bias würde.
Schließlich haben Sie experimentiert mit der änderung der Anzahl der versteckten Knoten? Obwohl ich glaube, dass die ersten beiden Optionen sind bessere Kandidaten für die Verbesserung der Leistung, die Sie vielleicht geben diesem eine Chance. (Nur als ein Bezugspunkt, ich kann mich nicht erinnern, eine Instanz, in denen die änderung der Aktivierung der Funktion die Form verbessert Netzwerk-Antwort mehr als option 1 und 2.)
Hier sind einige gute Diskussion der hidden-layer-Knoten-Konfiguration:
multi-layer-perceptron (MLP) Architektur: Kriterien für die Auswahl der Anzahl der verborgenen Schichten und die Größe der hidden-layer?
Wie wählen Sie die Anzahl der versteckten Schichten und Knoten im neuronalen Netzwerk?
24 Eingänge stellen Sie Ihr problem einem high-dimensional man. Sicherstellen, dass Ihre Trainings-dataset wird adäquat behandelt die input-staatlichen Raum, und sicherzustellen, dass Sie Ihre Testdaten und Trainingsdaten sind gezeichnet von ähnlich repräsentativen Populationen. (Werfen Sie einen Blick auf die "cross-validation" - Diskussionen, wenn die Ausbildung neuronaler Netzwerke).
Vanille sigmoid-Funktion:
Könnten Sie transformieren, zu:
um die transformation, die Sie wollen
mySigmoid
in einem try/catch und drucken Sie den Wertx
auf Ausnahme. Ich Frage mich, was Wertx
diesen Fehler verursacht