Hier ein Blick: Sie können genau sehen, wo die Trainingsdaten enden. Die Trainingsdaten reichen von bis .
Ich habe Keras und ein dichtes 1-100-100-2-Netzwerk mit Tanh-Aktivierung verwendet. Ich berechne das Ergebnis aus zwei Werten, p und q als p / q. Auf diese Weise kann ich eine beliebige Anzahl von Werten ermitteln, die kleiner als 1 sind.
Bitte beachten Sie, dass ich in diesem Bereich noch ein Anfänger bin.
regression
neural-networks
python
keras
Markus Appel
quelle
quelle
Antworten:
Sie verwenden ein Feed-Forward-Netzwerk. Die anderen Antworten stimmen, dass FFNNs bei der Extrapolation außerhalb des Bereichs der Trainingsdaten nicht besonders gut sind.
Da die Daten jedoch eine periodische Qualität aufweisen, ist das Problem möglicherweise für die Modellierung mit einem LSTM geeignet. LSTMs sind verschiedene neuronale Netzwerkzellen, die mit Sequenzen arbeiten und ein "Gedächtnis" für das haben, was sie zuvor "gesehen" haben. Die Zusammenfassung dieses Buchkapitels schlägt vor, dass ein LSTM-Ansatz ein qualifizierter Erfolg bei periodischen Problemen ist.
In diesem Fall wären die Trainingsdaten eine Folge von Tupeln und die Aufgabe, genaue Vorhersagen für neue Eingaben für einige zu treffen und indiziere einige aufsteigende Reihenfolge. Die Länge jeder Eingabesequenz, die Breite des Intervalls, das sie abdecken, und ihr Abstand bestimmen Sie. Intuitiv würde ich erwarten, dass ein reguläres Raster für einen Zeitraum ein guter Startpunkt ist, wobei die Trainingssequenzen einen weiten Wertebereich abdecken und nicht auf ein bestimmtes Intervall beschränkt sind.( xich, sin( xich) ) xi + 1… Xi + n n ich
(Jimenez-Guarneros, Magdiel und Gomez-Gil, Pilar und Fonseca-Delgado, Rigoberto und Ramirez-Cortes, Manuel und Alarcon-Aquino, Vicente, "Long-Term Prediction einer Sinusfunktion ein LSTM neuronalen Netz", in Nature- Inspiriertes Design hybrider intelligenter Systeme )
quelle
Wenn Sie einfache periodische Funktionen wie diese erlernen möchten, können Sie sich mit der Verwendung von Gaußschen Prozessen befassen. Mithilfe von Hausärzten können Sie Ihr Domänenwissen in einem gewissen Umfang durchsetzen, indem Sie eine geeignete Kovarianzfunktion angeben. In diesem Beispiel können Sie einen periodischen Kernel auswählen, da Sie wissen, dass die Daten periodisch sind. Das Modell extrapoliert dann diese Struktur. Auf dem Bild sehen Sie ein Beispiel. Hier versuche ich, die Gezeitenhöhendaten anzupassen, damit ich weiß, dass sie eine periodische Struktur haben. Da ich eine periodische Struktur verwende, extrapoliert das Modell diese Periodizität (mehr oder weniger) korrekt. OFC, wenn Sie versuchen, etwas über neuronale Netze zu lernen, ist dies nicht wirklich relevant, aber dies ist möglicherweise ein etwas besserer Ansatz als handtechnische Funktionen. Im Übrigen sind neuronale Netze und GPs in der Theorie eng verwandt,
Allgemeinmediziner sind nicht immer nützlich, da sie im Gegensatz zu neuronalen Netzen für große Datasets und tiefe Netzwerke schwer skalierbar sind. Wenn Sie sich jedoch für solche Probleme mit geringen Abmessungen interessieren, sind sie wahrscheinlich schneller und zuverlässiger.
(Auf dem Bild sind die schwarzen Punkte Trainingsdaten und die roten die Ziele. Sie können sehen, dass das Modell die Periodizität ungefähr lernt, auch wenn sie nicht genau richtig ist. Die farbigen Bänder sind die Konfidenzintervalle der Modelle Prognose)
quelle
Algorithmen für maschinelles Lernen - einschließlich neuronaler Netze - können lernen, beliebige Funktionen zu approximieren, jedoch nur in dem Intervall, in dem eine ausreichende Dichte von Trainingsdaten vorliegt.
Auf Statistiken basierende Algorithmen für maschinelles Lernen funktionieren am besten, wenn sie eine Interpolation durchführen. Dabei werden Werte vorhergesagt, die den Trainingsbeispielen nahe kommen oder zwischen ihnen liegen.
Außerhalb Ihrer Trainingsdaten hoffen Sie auf eine Hochrechnung. Aber es gibt keinen einfachen Weg, das zu erreichen. Ein neuronales Netzwerk lernt eine Funktion niemals analytisch, sondern nur ungefähr über Statistiken - dies gilt für nahezu alle überwachten Lern-ML-Techniken. Die fortschrittlicheren Algorithmen können bei genügend Beispielen (und freien Parametern im Modell) einer ausgewählten Funktion beliebig nahe kommen, tun dies jedoch nur im Bereich der bereitgestellten Trainingsdaten.
Wie sich das Netzwerk (oder eine andere ML) außerhalb des Bereichs Ihrer Trainingsdaten verhält, hängt von der Architektur ab, einschließlich der verwendeten Aktivierungsfunktionen.
quelle
In einigen Fällen funktioniert der von @Neil Slater vorgeschlagene Ansatz, Ihre Features mit einer periodischen Funktion zu transformieren, sehr gut und ist möglicherweise die beste Lösung. Die Schwierigkeit hierbei ist, dass Sie die Periode / Wellenlänge möglicherweise manuell auswählen müssen (siehe diese Frage ).
Wenn die Periodizität tiefer in das Netzwerk eingebettet werden soll, ist es am einfachsten, sin / cos als Aktivierungsfunktion in einer oder mehreren Ebenen zu verwenden. In diesem Artikel werden mögliche Schwierigkeiten und Strategien für den Umgang mit periodischen Aktivierungsfunktionen erörtert.
Alternativ wird in diesem Artikel ein anderer Ansatz verfolgt, bei dem die Gewichtung des Netzwerks von einer periodischen Funktion abhängt. In der Arbeit wird auch vorgeschlagen, Splines anstelle von sin / cos zu verwenden, da diese flexibler sind. Dies war eine meiner Lieblingszeitungen im letzten Jahr, es lohnt sich also, sie zu lesen (oder zumindest das Video anzuschauen), auch wenn Sie am Ende nicht den Ansatz verwenden.
quelle
Sie haben einen falschen Ansatz gewählt. Mit diesem Ansatz können Sie das Problem nicht beheben.
Es gibt verschiedene Möglichkeiten, um das Problem zu beheben. Ich werde das offensichtlichste durch Feature-Engineering vorschlagen. Anstatt die Zeit als lineares Merkmal zu verstopfen, setzen Sie sie als Rest des Moduls T = 1. Zum Beispiel werden t = 0,2, 1,2 und 2,2 alle zu einem Merkmal t1 = 0,1 usw. Solange T größer als die Wellenperiode ist, funktioniert dies. Stecken Sie dieses Ding in Ihr Netz und sehen Sie, wie es funktioniert.
Feature Engineering wird unterschätzt. Es gibt diesen Trend in AI / ML, in dem die Verkäufer behaupten, Sie würden alle Ihre Eingaben ins Netz werfen und irgendwie herausfinden, was sie damit anfangen sollen. Sicher, es funktioniert, wie Sie in Ihrem Beispiel gesehen haben, aber dann bricht es genauso leicht zusammen. Dies ist ein großartiges Beispiel, das zeigt, wie wichtig es ist, auch in einfachsten Fällen gute Funktionen zu erstellen.
Ich hoffe, Sie erkennen, dass dies das gröbste Beispiel für Feature-Engineering ist. Es soll Ihnen nur eine Vorstellung davon geben, was Sie damit machen können.
quelle