Hallo liebe Forengemeinde!
Ich habe ein Problem. Ich möchte eine Populationsdynamik mit Hilfe eines KNN nachstellen. Da es sich um ein zeitabhängiges System handelt, dachte ich an ein rekurrentes Netz.
Modellgleichung: I dx/dt = a*x*(1-x/k)-b*x*y
II dy/dt = c*x*y-d*y
Als Input habe ich X(t) und Y(t) mit X,Y Populationsgrößen
Als Output habe ich X(t+1) und Y(t+1)
Test- und Trainigsdatenvorhanden.
Ich habe es mit Delay- Neuronen und auch mit Rückkopllungen probiert, aber eine zufriedenstellende Lösung war nicht dabei.
Daher meine Frage:
Was mache ich falsch?
Ist ein rekurrentes KNN für diese Simulaion überhaupt geeignet bzw. wie mächtig muss solch ein Netz sein?
Das Projekt läuft im Rahmen meiner Diplomarbeit.
Edit: 28.05.2010 10:00 Rechtsschreibung korrigiert
Populationsdynamik mit einem rekurrenten KNN
-
- Posts: 3
- Joined: Thu 27. May 2010, 13:13
Populationsdynamik mit einem rekurrenten KNN
Last edited by lampengott on Fri 28. May 2010, 10:14, edited 1 time in total.
Re: Populationsdynamik mit einem rekurrenten KNN
Hallo und herzlich willkommen im Forum!
Zeitabhängige Netze sind extrem kritisch zu handhaben, können leicht instabil werden und dann eskalieren. Außerdem muss man beim Training und Validieren auf so manches achten, da das Netz bei jedem Berechnungsschritt seinen internen Zustand ändert.
Am Einfachsten postest Du hier mal Dein Netz und einen repräsentativen Datensatz, sowie die Datei 'Teachers.mbt', die Du auf Deinem System unter:
C:\Dokumente und Einstellungen\<User>\Anwendungsdaten\MemBrain\Config
finden solltest.
Ich hoffe, dass ich mir das dann in den nächsten Tagen mal anschauen und dann etwas mehr dazu sagen kann.
Viele Grüße
Zeitabhängige Netze sind extrem kritisch zu handhaben, können leicht instabil werden und dann eskalieren. Außerdem muss man beim Training und Validieren auf so manches achten, da das Netz bei jedem Berechnungsschritt seinen internen Zustand ändert.
Am Einfachsten postest Du hier mal Dein Netz und einen repräsentativen Datensatz, sowie die Datei 'Teachers.mbt', die Du auf Deinem System unter:
C:\Dokumente und Einstellungen\<User>\Anwendungsdaten\MemBrain\Config
finden solltest.
Ich hoffe, dass ich mir das dann in den nächsten Tagen mal anschauen und dann etwas mehr dazu sagen kann.
Viele Grüße
Thomas Jetter
-
- Posts: 3
- Joined: Thu 27. May 2010, 13:13
Re: Populationsdynamik mit einem rekurrenten KNN
Schonmal vielen Dank für die schnelle Hilfe!
Das mit den Datensatz habe ich garnicht so beachtet. Ich habe einfach einen Datensatz genommen und den dann gesplitet.
Das Netz trainiert nämlich ganz gut, nur die Evaluierung geht immer schief.
Eventuell ist das Netz etwas überdimensioniert.
Herzlichen Dank und ein schönes Wochenende wünschend
Michael
Das mit den Datensatz habe ich garnicht so beachtet. Ich habe einfach einen Datensatz genommen und den dann gesplitet.
Das Netz trainiert nämlich ganz gut, nur die Evaluierung geht immer schief.
Eventuell ist das Netz etwas überdimensioniert.
Herzlichen Dank und ein schönes Wochenende wünschend
Michael
- Attachments
-
- MemBrain.rar
- (11.08 KiB) Downloaded 642 times
Re: Populationsdynamik mit einem rekurrenten KNN
Hallo Michael,
anbei findest Du ein kleines Script nebst Trainings- und Validierungslesson. Einfach alles in ein Verzeichnis packen und dann in MemBrain das Script 'TrainValidate.as' über das Menü <Scripting><Execute Script...> starten.
Wichtig: Vorher die Eigenschaft 'Lesson Pattern Selection' des RPROP Teachers in MemBrain auf 'Ordered' stallen. Auch die Option 'Reset Net Before Every Lesson' sollte aktiviert sein.
Das Script erledigt alles für Dich, Training und Validierung, Du musst nur zuschauen.
Die Trainingslesson habe ich aus den ersten 300 Mustern Deiner Lesson abgespaltet, die Validierungslesson besteht aus den restlichen 200 Mustern.
Das Skript lädt die Lessons, startet das Training auf Basis der Trainingslesson und schaltet die 'Net Error Lesson' während des Trainings immer mal wieder zwischen Trainings- und Validierungslesson hin und her, so dass alles immer mal zur Anzeige kommt. Das Umschalten der Net Error Lesson besinflusst das Training nicht: Das Netz traininert immer nur auf Basis der Trainingslesson, die Wahl der Net Error Lesson beeinflusst nur, was die Basis für die Anzeige im Error Viewer und im Pattern Error Viewer ist.
Ich finde die Validierungsergebnisse recht beeindruckend, für ein zeitabhängiges Netz. Das hätte ich nicht gedacht!
PS: Während des Trainings wird auch immer mal wieder das im Pattern Error Viewer überwachte Outputneuron umgeschaltet, so dass sowohl X(t+1) als auch Y(t+1) immer mal wieder angezeigt werden. Im Script-Trace Fenster siehst Du außerdem immer, welche der Lessons gerade zur Anzeige kommt.
Das Timing kannst Du im Script leicht selbst einstellen, ich bin sicher, Du findest mit Hilfe der Kommentare im Code die richtigen Stellen. Das Script ist auch nicht kopmpliziert, ich denke, Du wirst es verstehen, selbst wenn Du kein Programmierer sein solltest.
Noch ein PS: Das Script benutzt ein Netz von mir: Ich habe aus Deinem Netz einige Hidden-Neuronen rausgeschmissen und dafür noch Links von den Inputs X(t) und Y(t) in das Netz geführt. Diese haben aus Meiner Sicht noch gefehlt. Wenn Du das Script mit Deinem Netz ausprobieren willst, musst Du nur im Script oben den Dateinamen ändern.
Viele Grüße und lass hören, ob alles klappt bzw. was Deine Meinung zur Validierung ist.
anbei findest Du ein kleines Script nebst Trainings- und Validierungslesson. Einfach alles in ein Verzeichnis packen und dann in MemBrain das Script 'TrainValidate.as' über das Menü <Scripting><Execute Script...> starten.
Wichtig: Vorher die Eigenschaft 'Lesson Pattern Selection' des RPROP Teachers in MemBrain auf 'Ordered' stallen. Auch die Option 'Reset Net Before Every Lesson' sollte aktiviert sein.
Das Script erledigt alles für Dich, Training und Validierung, Du musst nur zuschauen.
Die Trainingslesson habe ich aus den ersten 300 Mustern Deiner Lesson abgespaltet, die Validierungslesson besteht aus den restlichen 200 Mustern.
Das Skript lädt die Lessons, startet das Training auf Basis der Trainingslesson und schaltet die 'Net Error Lesson' während des Trainings immer mal wieder zwischen Trainings- und Validierungslesson hin und her, so dass alles immer mal zur Anzeige kommt. Das Umschalten der Net Error Lesson besinflusst das Training nicht: Das Netz traininert immer nur auf Basis der Trainingslesson, die Wahl der Net Error Lesson beeinflusst nur, was die Basis für die Anzeige im Error Viewer und im Pattern Error Viewer ist.
Ich finde die Validierungsergebnisse recht beeindruckend, für ein zeitabhängiges Netz. Das hätte ich nicht gedacht!
PS: Während des Trainings wird auch immer mal wieder das im Pattern Error Viewer überwachte Outputneuron umgeschaltet, so dass sowohl X(t+1) als auch Y(t+1) immer mal wieder angezeigt werden. Im Script-Trace Fenster siehst Du außerdem immer, welche der Lessons gerade zur Anzeige kommt.
Das Timing kannst Du im Script leicht selbst einstellen, ich bin sicher, Du findest mit Hilfe der Kommentare im Code die richtigen Stellen. Das Script ist auch nicht kopmpliziert, ich denke, Du wirst es verstehen, selbst wenn Du kein Programmierer sein solltest.
Noch ein PS: Das Script benutzt ein Netz von mir: Ich habe aus Deinem Netz einige Hidden-Neuronen rausgeschmissen und dafür noch Links von den Inputs X(t) und Y(t) in das Netz geführt. Diese haben aus Meiner Sicht noch gefehlt. Wenn Du das Script mit Deinem Netz ausprobieren willst, musst Du nur im Script oben den Dateinamen ändern.
Viele Grüße und lass hören, ob alles klappt bzw. was Deine Meinung zur Validierung ist.
- Attachments
-
- TrainValidateScriptPackage.rar
- Lessons und Script zum Training und zur Validierung
- (13.76 KiB) Downloaded 618 times
Thomas Jetter
-
- Posts: 3
- Joined: Thu 27. May 2010, 13:13
Re: Populationsdynamik mit einem rekurrenten KNN
Hallo,
funktioniert alles super und die Validierung ist auch richtig gut.
Ich danke für die Hilfe!
Das Programm ist wirklich super una auch gut zu bedienen. Wenn ich da an das Programm an der Hochschule denke... teuer und kann weitaus weniger.
Das mit dem Script ist auch eine super Sache, gerade bei Präsentationen.
Also alles im allen eine super Sache!
Viele Grüße und dankend
Michael
funktioniert alles super und die Validierung ist auch richtig gut.
Ich danke für die Hilfe!
Das Programm ist wirklich super una auch gut zu bedienen. Wenn ich da an das Programm an der Hochschule denke... teuer und kann weitaus weniger.
Das mit dem Script ist auch eine super Sache, gerade bei Präsentationen.
Also alles im allen eine super Sache!
Viele Grüße und dankend
Michael