Prognose nicht-linearer Zusammenhänge

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
BastianB
Posts: 4
Joined: Wed 15. Feb 2017, 14:00

Prognose nicht-linearer Zusammenhänge

Post by BastianB »

Hallo,

nachdem ich mit „herkömmlicher“ Statistik bei meinen Auswertungen nicht weiterkomme, bin ich auf der Suche nach Alternativen auf neuronale Netze gestoßen. Obwohl ich mich ein wenig eingelesen habe, bin ich Laie auf diesem Gebiet – bitte insofern um Nachsicht, falls ich für das genauere Verständnis etwas Zeit benötige!

Nun aber zu meiner eigentlichen Problemstellung:

Mir liegt ein Datensatz in binärer Form vor (also fortlaufende 0en und 1en). Aus den jeweils 40 vorangegangenen Stellen lässt sich die nächste Stelle prognostizieren. Es werden meistens nicht alle 40 Stellen benötigt und eine (sinnvolle) Prognose entsteht in nur etwa 40% der Fälle. Die dann abgegebenen Prognosen bestätigen sich mit einer Quote von ca. 55-60% (gleichverteilt auf 0 und 1).

Ich erhoffe mir jetzt, dass das neuronale Netz den „aktuellen Zusammenhang“ (der nicht-linear ist) der letzten maximal 40 Positionen erkennt. Als Input dienen für die Trainingseinheit fortlaufend die jeweils 40 letzten Stellen, als Output die jeweils nächste Stelle. Welche Netzarchitektur ist jetzt hier am sinnvollsten? Wieviele (versteckte) Schichten bzw. jeweils Neuronen? Welche Aktivierungsfunktion? (Wie) kann das Netz differenzieren in „sinnvolle Prognose“ und „keine Prognose“?

Ich bin für jede Hilfe dankbar!

LG
Bastian
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Prognose nicht-linearer Zusammenhänge

Post by TJetter »

Hallo und herzlich Willkommen!

Einen ersten Versuch würde ich folgendermaßen aufsetzen:

- 40 Inputneuronen
- Eine Hidden-Schicht, Logistic, mit 10 Neuronen
- Ein Outputneuron - Logistic

Später evtl. einen Versuch mit einer weiteren Hidden-Schicht (z.B. 5 Neuronen Logistic) und überspringenden Links von der ersten Hidden-Schicht zum Output.

Wie viele Muster (jeweils 40 + 1) stehen denn zum Training und zur Validierung zur Verfügung?
kann das Netz differenzieren in „sinnvolle Prognose“ und „keine Prognose“?
Das Netz wird in den Fällen, in denen es eine Prognose erlernen kann, den Ausgang nahe 0 bzw- nahe 1 setzen. Je näher an 1 oder 0 desto 'sicherer' ist sich das Netz. Fälle, die es nicht auflösen/erlernen kann, wird es (ausreichend große Trainingsmenge vorausgesetzt), eher mit 0.5 annähern. Das sind die Fälle, die aus SIcht des Netzes 'widersprüchlich' trainiert werden. Vereinfachtes Beispiel mit weniger Inputs: Das Netz bekommt in der Trainingsmenge sowohl das Bitmuster In = 1001, Out = 1 als auch das Muster In = 1001, Out = 0 vorgesetzt. Dann wird es für dieses Eingangsmuster wahrscheinlich einen Wert von ungefähr 0.5 annehmen, weil es keine Regel erlernen kann, die es in beiden Fällen richtig 'entscheiden' lässt.

Viele Grüße
Thomas Jetter
BastianB
Posts: 4
Joined: Wed 15. Feb 2017, 14:00

Re: Prognose nicht-linearer Zusammenhänge

Post by BastianB »

Vielen Dank für die rasche Rückmeldung!

Dann weiß ich jetzt einmal, wie ich anfangen kann und werde mich mit den Netzarchitekturen ein wenig spielen – ich hoffe, ich bekomme das technisch hin! :)

Datensätze liegen (als fortlaufende Zeitreihe) vorerst ~100TS vor – bei Bedarf auch mehr.

Danke für die Erklärung zum Output – das klingt einleuchtend!

LG
Bastian
BastianB
Posts: 4
Joined: Wed 15. Feb 2017, 14:00

Re: Prognose nicht-linearer Zusammenhänge

Post by BastianB »

Kurzes Update von meiner Seite:

Mit der ersten Architektur habe ich bislang leider keinen Erfolg gehabt. Ich werde mich nun an der zweiten versuchen.

Ich habe die Befürchtung, dass das Netz die jeweiligen Konstellationen (also Abfolgen) der 40 Inputs nur auswendig lernt - wenn die Zusammenhänge so einfach wären, brauchte ich aber kein NN, dafür würde eine (große) Datenbank zum Abgleich genügen. Ist diese Befürchtung berechtigt?

LG
Bastian
BastianB
Posts: 4
Joined: Wed 15. Feb 2017, 14:00

Re: Prognose nicht-linearer Zusammenhänge

Post by BastianB »

Ich habe jetzt auch die zweite Netzarchitektur getestet – leider ebenfalls ohne Erfolg.

Um technische Fehler auszuschließen schildere ich kurz meinen „Versuchsaufbau“:
Ich habe für diese ersten Tests 5000 Patterns (40+1) verwendet – 4000 als Lerndaten und 1000 als Validierung. Das Netz habe ich bis zu einem net-error von ca. 18% trainiert, dann die Validierungsdaten geladen und das Ergebnis von „think on lesson“ exportiert und ausgewertet. Auch durch schrittweise Einschränkung der Outputs (<0,5; <0,4; … bzw. >0,5; >0,6) lässt sich keine Abweichung von einer zufälligen Verteilung feststellen.

Mögliche Fehlerquellen:
- Zu wenig Patterns.
- Generell falscher Zugang. Die (sich verändernden) Zusammenhänge für die Prognosefähigkeit der Zeitreihen ergeben sich aus der Chronologie der vorhergehenden 25-40 Inputs (wobei meistens nicht alle Inputs benötigt werden) – möglicherweise ist dafür mein Ansatz mit 40+1 Patterns nicht richtig?

Ersteres lässt sich leicht nachprüfen (daran arbeite ich gerade), für Letzteres fehlen mir Ideen …

LG
Bastian
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Prognose nicht-linearer Zusammenhänge

Post by TJetter »

BastianB wrote:Mögliche Fehlerquellen:
- Zu wenig Patterns.
2^40 = 1.099.511.627.776, also über eine Billion.

Da sind 5000 Pattern natürlich nicht die Welt, sage ich mal. Zumal es ja nicht darum geht, einen analogen Wert zu approximieren, so wie das bei einem physikalischen Zusammenhang der Fall wäre. Es geht ja vielmehr darum, einen mathematischen (binären) Algorithmus nachzubilden, der einer Zahl aus dem Zahlenraum 0 bis ca 1 Billion (!) eine 0 oder 1 zuweist.

Von daher ja: Mein Verdacht ist, dass das mit einem NN so leicht nicht zu machen ist. Der Algorithmus scheint jedenfalls nicht so 'trivial' zu sein, als dass er aus 4000 Beispielen erlernbar wäre.
BastianB wrote:- Generell falscher Zugang. Die (sich verändernden) Zusammenhänge für die Prognosefähigkeit der Zeitreihen ergeben sich aus der Chronologie der vorhergehenden 25-40 Inputs (wobei meistens nicht alle Inputs benötigt werden) – möglicherweise ist dafür mein Ansatz mit 40+1 Patterns nicht richtig?
Ich fürchte, ich verstehe nicht ganz: Kann es sein, dass sich der Output nicht alleine aus den maximal 40 letzten Bits bestimmt, sondern noch aus weiteren Bits der Vergangenheit? Ist das die Aussage?

Was man auf jeden Fall versuchen kann: Ein zeitabhängiges Netz mit Decay-Neuronen und evtl. Delay-Links aufsetzen, das nur einen Input und einen Output hat. Ein bisheriges Pattern wird dann zu 40 Pattern. Für die ersten 39 Pattern setzt man den Ausgangswert in der Lesson auf einen Wert außerhalb des Wertebereichs des Neurons, also z.B. auf '2'. In den Einstellungen des Neurons aktiviert man den 'Activation Ignore Value' und gibt dort ebenfalls den Wert '2' ein. D.h., immer wenn der Teacher auf eine '2' für dieses Output-Neuron trifft, trainiert er diesen Wert nicht.
Damit erreicht man, dass die ersten 39 Input-Bits einfach so in das zeitabhängige Netz hinein laufen, ohne dass dafür ein Training stattfindet. Erst ab dem 40-ten Bit wird dann trainiert.

In der MemBrain Hilfe steht, wie man Delay- und Decay-Neuronen einfügt, einfach mal F1 drücken und danach suchen.

GANZ WICHTIG: Den Teacher auf 'ORDERED' stellen für ein zeitabhängiges Netz. MemBrain bringt hier allerdings auch eine Warnung, wenn man versucht, ein zeitabhängiges Netz mit einer anderen Präsentationseinstellung als ORDERED zu trainieren. Diese Meldung sollte man nie ignorieren und auch nicht 'Don't Ask Again' ankreuzen!

Viele Grüße
Thomas Jetter
Post Reply