Artikel: Preisprognosen mit neuronalen Netzen - Seite 14

 
Neutron, die glättende Wirkung der Erhöhung der Anzahl der Eingänge ist legitim. Die Verzögerung kann jedoch durch viele Faktoren bedingt sein, sowohl durch das Fehlen dieser Inputs als auch durch mögliche Unzulänglichkeiten des Netzes, etwa durch Untertraining. Es ist eine andere Frage, ob dies, mit allen "+" zu den oben genannten Kriterien, eine Verzögerung ergibt.
 
Neutron:

Dies zeigt die Ergebnisse der Prüfung der Vorhersagefähigkeit der beiden NS.


Die Abbildung zeigt in rot die ursprüngliche Zeitreihe (RT), in blau die Vorhersage bei 1 bar vorwärts des linearen einschichtigen Netzes und in grün das nichtlineare zweischichtige Netz. Die Eintauchtiefe ist in beiden Fällen die gleiche. Es ist zu erkennen, dass für diesen künstlichen Fall ein deutlicher Rest der vorhergesagten Daten auf dem BP-Trenddiagramm vorhanden ist. Ich frage mich, ob meine erfahrenen Kollegen diesen Effekt beobachten, und wenn ja, worauf könnte er zurückzuführen sein?

Ihr Netzwerk verhält sich irgendwie seltsam - es erhält denselben Satz von Eingabedaten im Trendabschnitt und erhält unterschiedliche Prognosen (es erhält eine gestrichelte Linie auf dem Diagramm, während sie gerade sein sollte). In diesem Zusammenhang stellen sich die folgenden Fragen:

1) Wie viele Neuronen befinden sich in den Zwischenschichten des Netzes?

2) Wie viele Eingänge?

3) Was wird den Eingängen zugeführt?


Bezüglich der Verzögerung bei den Trendvorhersagen. So soll es auch funktionieren. Sie haben etwa 30 Trainingsvektoren in das Netz eingespeist, bei denen aufeinanderfolgende steigende Werte von 0,1 einen Anstieg von 0,1 erzeugten, und einen Vektor eingespeist, bei dem die gleichen aufeinanderfolgenden steigenden Werte einen Abfall von 3 erzeugten. Sie haben das Netz mit inkonsistenten Daten trainiert. Also wurden diese 31 widersprüchlichen Vorhersagen von Ihnen gemittelt...


Ich habe auch einen 2-lagigen NS gebaut. Mit 3 Eingängen und 3 Zwischenneuronen. Die Eingaben waren inkrementelle Werte. Zum Vergleich habe ich dieses Netz einmal mit allen Daten trainiert, und beim zweiten Mal habe ich Ausreißer vom Training ausgeschlossen - d.h. alle Trainingsvektoren, die zu große Werte in den Eingaben enthielten, d.h. die sehr abrupt um 3 zusammenbrechen. Der Unterschied ist offensichtlich:

 
rip:
Slawa1:
Nun, man kann lange darüber streiten, wer versteht, was er versteht, oder nicht versteht. Das Gespräch drehte sich um die Datenaufbereitung. Ich verstehe, dass niemand dieses Thema hier diskutieren möchte. Schade

Wenn Sie einen Vortrag über die Aufbereitung von Daten für das NS-Training halten wollen, sollte dies nicht in diesem Forum geschehen, da sich nicht viele Leute dafür interessieren würden.

Ich denke, es wäre interessant, die Erfahrungen von Praktikern zu lesen, wie sie es machen.

 
ds2:

Ihr Netzwerk verhält sich seltsam - es empfängt die gleichen Eingabedaten im Trendabschnitt, gibt aber andere Prognosen ab (es erscheint als gestrichelte Linie im Diagramm, während sie gerade sein sollte). In diesem Zusammenhang stellen sich die folgenden Fragen:

1) Wie viele Neuronen befinden sich in den Zwischenschichten des Netzes?

2) Wie viele Eingänge?

3) Was wird den Eingängen zugeführt?


Bezüglich der Verzögerung bei den Trendvorhersagen. So soll es auch funktionieren. Sie haben etwa 30 Trainingsvektoren in das Netz eingespeist, bei denen aufeinanderfolgende steigende Werte von 0,1 einen Anstieg von 0,1 erzeugten, und einen Vektor eingespeist, bei dem dieselben aufeinanderfolgenden steigenden Werte einen Abfall von 3 erzeugten. Sie haben das Netz mit inkonsistenten Daten trainiert. Also wurden diese 31 widersprüchlichen Vorhersagen von Ihnen gemittelt...


Ich habe auch einen 2-lagigen NS gebaut. Mit 3 Eingängen und 3 Zwischenneuronen. Die Eingabe erfolgte in Form von inkrementellen Werten. Zum Vergleich habe ich dieses Netz einmal mit allen Daten trainiert, und beim zweiten Mal habe ich Ausreißer vom Training ausgeschlossen - d.h. alle Trainingsvektoren, die zu große Werte in den Eingaben enthielten, d.h. die sehr abrupt um 3 zusammenbrechen. Der Unterschied ist offensichtlich:

ds2 und allen, die geantwortet haben, vielen Dank für ihre Aufmerksamkeit und ihre vernünftigen Ratschläge - das hat wirklich geholfen. Die Sache ist die, dass ich die Anzahl der Trainingszyklen (ich glaube, man nennt sie Epochen) auf 100 Mal begrenzt habe, um die Vorhersage in meinem Netzwerk zu beschleunigen. Das reichte natürlich nicht aus, so dass das Netz nicht richtig lernte. Nachdem ich die Anzahl der Epochen auf 1000 erhöht hatte, funktionierte alles einwandfrei - Tick zu Tick (na ja, fast).

Ich habe ein zweischichtiges Netz mit Nichtlinearität in Form einer hyperbolischen Tangente, mit der Anzahl der Neuronen in einer versteckten Schicht 2 und der Anzahl der Synapsen d*2+2, wobei d eine Dimension des NS-Eingangs ist. Für den in der Abbildung dargestellten Fall habe ich d=2 und die Anzahl der Trainingsvektoren beträgt 6. Die Anzahl der Vektoren in der Trainingsstichprobe entspricht der Anzahl der Synapsen, so dass ich sehe, dass das Netz nicht neu trainiert und nicht versucht, die Prognose zu glätten, was eine effektivere Verfolgung von Kurssprüngen ermöglicht. Für das Training habe ich auch eine Folge von inkrementellen Werten als Eingabe eingegeben. Ich bin noch nicht mit der hohen Kunst der Vorbereitung der Eingabedaten vertraut (ich meine Ihr "Ausschluss von Spikes aus dem Training zum zweiten Mal"), aber ich hoffe, diese Kunst sehr bald zu beherrschen.

Hier ein erstes interessantes Ergebnis:


Es handelt sich um eine einstufige Vorhersage mit Neutraining bei jedem Schritt eines einschichtigen nichtlinearen NS mit EINEM Input! und einer Trainingsstichprobe = 2 Vektoren mit je einem Element.

Ich bin hin und weg....

Es stellt sich heraus, dass Neron Networks und künstliche Intelligenz nicht einfach sind, aber sehr einfach!

 
Neutron:
ds2:

Ihr Netzwerk verhält sich seltsam - es empfängt die gleichen Eingabedaten im Trendabschnitt, gibt aber andere Prognosen ab (es erscheint als gestrichelte Linie im Diagramm, während sie gerade sein sollte). In diesem Zusammenhang stellen sich die folgenden Fragen:

1) Wie viele Neuronen befinden sich in den Zwischenschichten des Netzes?

2) Wie viele Eingänge?

3) Was wird den Eingängen zugeführt?


Bezüglich der Verzögerung bei den Trendvorhersagen. So soll es auch funktionieren. Sie haben etwa 30 Trainingsvektoren in das Netz eingespeist, bei denen aufeinanderfolgende steigende Werte von 0,1 einen Anstieg von 0,1 erzeugten, und einen Vektor eingespeist, bei dem dieselben aufeinanderfolgenden steigenden Werte einen Abfall von 3 erzeugten. Sie haben das Netz mit inkonsistenten Daten trainiert. Also wurden diese 31 widersprüchlichen Vorhersagen von Ihnen gemittelt...


Ich habe auch einen 2-lagigen NS gebaut. Mit 3 Eingängen und 3 Zwischenneuronen. Die Eingabe erfolgte in Form von inkrementellen Werten. Zum Vergleich habe ich dieses Netzwerk einmal mit allen Daten trainiert, und beim zweiten Mal habe ich Ausreißer vom Training ausgeschlossen - d.h. alle Trainingsvektoren, die zu große Werte in den Eingaben enthalten, d.h. die sehr stark um 3 einbrechen. Der Unterschied ist offensichtlich:

ds2 und allen, die geantwortet haben, vielen Dank für ihre Aufmerksamkeit und ihre vernünftigen Ratschläge - das hat wirklich geholfen. Die Sache ist die, dass ich die Anzahl der Trainingszyklen (ich glaube, man nennt sie Epochen) auf 100 Mal begrenzt habe, um die Vorhersage in meinem Netzwerk zu beschleunigen. Das reichte natürlich nicht aus, so dass das Netz nicht richtig lernte. Nachdem ich die Anzahl der Epochen auf 1000 erhöht hatte, funktionierte alles einwandfrei - Tick zu Tick (na ja, fast).

Ich habe ein zweischichtiges Netz mit Nichtlinearität in Form einer hyperbolischen Tangente, mit der Anzahl der Neuronen in einer versteckten Schicht 2 und der Anzahl der Synapsen d*2+2, wobei d eine Dimension des NS-Eingangs ist. Für den in der Abbildung dargestellten Fall habe ich d=2 und die Anzahl der Trainingsvektoren beträgt 6. Die Anzahl der Vektoren in der Trainingsstichprobe entspricht der Anzahl der Synapsen, so dass ich sehe, dass das Netzwerk nicht neu trainiert und nicht versucht, die Prognose zu glätten, was eine effektivere Verfolgung von Kurssprüngen ermöglicht. Für das Training habe ich auch eine Folge von inkrementellen Werten als Eingabe eingegeben. Ich bin noch weit von der hohen Kunst der Eingabedatenaufbereitung entfernt (ich meine Ihr "Spikes zum zweiten Mal vom Training ausschließen"), aber hoffentlich lerne ich den Trick bald.

Um die Stichprobe zu verbessern, sollte man versuchen, die Trainingsreihe z. B. nach diesem Prinzip zu vergrößern:

es gibt zwei benachbarte Werte der Reihe - x1,x2 in dem Intervall, das sie addieren x1,2 = (x1+x2)/2


Diese Methode eignet sich gut für Zeitreihen mit hoher Korrelation zwischen benachbarten Werten.

Der Fall eines Stroms von Zitaten ist genau das.

 
Neutron:


Hier ein erstes interessantes Ergebnis:


Es handelt sich um eine einstufige Vorhersage mit Umschulung bei jedem Schritt eines einschichtigen nichtlinearen NS mit EINER Eingabe! und einer Trainingsstichprobe = 2 Vektoren mit je einem Element.

Ich bin überwältigt...


Kann ich Sie bitten, die Rohdatendatei zu veröffentlichen, aus der die Trainingsvektoren generiert wurden?

 

Wie sollte das Format der Datei aussehen, damit Sie sie lesen können? Der Punkt ist, dass ich mein eigenes NS von Grund auf schreibe und die Daten in einem Format verwende, mit dem ich mich wohlfühle.


Для улучшения выборки попробуйте расширить обучающий ряд, скажем по такому принципу:

Es gibt zwei benachbarte Werte einer Reihe - x1,x2 dazwischen addiere x1,2 = (x1+x2)/2

Diese Methode funktioniert gut bei Zeitreihen mit hoher Korrelation zwischen benachbarten Werten.

Der Fall der Streaming-Angebote ist genau das.

Dieser Fall ist für positiv korrelierte Reihen geeignet. Der Preis VR weist eine signifikante negative Korrelation zwischen benachbarten Stichproben auf, so dass diese Methode nicht korrekt ist.

Noch eine Sache. Es wäre gut, wenn die geschätzten Forumsnutzer vernünftige Argumente für die bessere Vorhersagefähigkeit von zweischichtigem NS im Vergleich zu einschichtigem NS posten würden, wenn alle anderen Dinge gleich sind.

Als Option. Nachfolgend finden Sie ein Zip-Archiv mit einem Testvektor, den Sie nach eigenem Ermessen ausschneiden können.

Dateien:
rnd.zip  1 kb
 
Neutron:

Ich bin überwältigt...

Es stellt sich heraus, dass Nero Networks und künstliche Intelligenz nicht nur einfach sind, sondern sehr einfach!


Ich habe noch nicht versucht, NS in der Praxis anzuwenden (obwohl ich im Zusammenhang mit der letzten Idee dorthin getragen zu werden scheine), aber aus menschlicher Sicht besteht der Testvektor aus sehr einfachen Abhängigkeiten (etwa zwei oder drei Parameter) und sollte sehr leicht stückweise approximiert werden können. Ich vermute, dass die NS genau das tut. Die schnelle Umordnung kann eine Folge der Einfachheit der NS sein, d.h. in diesem Fall ist das kurze Gedächtnis ein Segen.

 

Im Großen und Ganzen, Candid, stimme ich Ihnen zu, aber ich möchte noch tiefer gehen... Wie gerechtfertigt ist zum Beispiel die Komplikation von NS (Hidden Layers).

Eigentlich bin ich verrückt! Der Punkt ist, dass, wenn man die Nichtlinearität von NS in einer bestimmten Form darstellt, man die genaue analytische Lösung für die Gewichte erhalten kann. Dies wiederum bedeutet, dass es möglich sein wird, die Methode der inversen Fehlerfortpflanzung für das Netztraining abzulehnen und das Ergebnis so genau wie möglich in einer Aktion zu erhalten, ohne dass es 1000 Epochen des Trainings gibt!!!


P.S. Ich habe vergessen, Sie darauf hinzuweisen, dass ich eine Synapse mit einem konstanten Erregungsniveau in jedem Neuron verwende.


Nachtrag.

Mitgebracht, mitgenommen und getragen ;-)

Dies ist die "FINE" analytische Lösung für die Skalen eines einschichtigen nichtlinearen NS:

Das hat mich zum Lächeln gebracht.

Aber die gesamte Berechnung dauert eine Millisekunde.
 

Erklären Sie mir das als unerfahrener "Neurowissenschaftler"... Soweit ich weiß, handelt es sich bei dem fraglichen Netz um ein mehrschichtiges Perzeptron.

Warum wurde diese Art von Netzwerk gewählt, warum nicht Hopfield oder Kohonen oder etwas anderes?