Rekurrente Verbindung alle 24 Schritte "aussetzen" lassen

Dieses Forum beschäftigt sich mit allen Fragen, Kommentaren und Anregungen zu MemBrain Skripten. Auch der Austausch von Skripten zwischen MemBrain Benutzern soll hiermit gefördert werden.
Wenn Sie ein interessantes Skript haben, das Sie anderen MemBrain Benutzern zur Verfügung stellen wollen, dann Erstellen Sie dafür jeweils bitte ein neues Thema in diesem Forum. Der Titel des Themas sollte es anderen Benutzern erlauben möglichst schnell zu erfassen, wozu Ihr Skript dient.
Post Reply
Toddster
Posts: 15
Joined: Thu 17. Nov 2011, 17:49

Rekurrente Verbindung alle 24 Schritte "aussetzen" lassen

Post by Toddster »

Hallo Zusammen, hallo Herr Jetter,

ich habe eine große Trainingslesson mit verschiedenen Objekten einer Klasse. Ich habe für jedes Objekt Daten für einen Zeitraum von 24h zur Verfügung und gehe davon aus, dass der Output der vorhergehenden Stunde einen Einfluss auf die nachfolgende Stunde hat. Die Daten sind so aufbereitet, dass jedes Objekt von Stunde 1-24 als Muster präsentiert wird und dann folgt das nächste Objekt von 1-24. Ich möchte nun aber nicht, dass der 24 Uhr wert von Objekt 1 auf Objekt 2 übertragen wird, da die Objekte ja unabhängig voneinander sind. Gibt es eine Möglichkeit die rekurrente Verbindung für diesen Schritt "aussetzen" zu lassen?

Viele Grüße,
Toddster
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Rekurrente Verbindung alle 24 Schritte "aussetzen" lasse

Post by TJetter »

Toddster wrote:Gibt es eine Möglichkeit die rekurrente Verbindung für diesen Schritt "aussetzen" zu lassen?
Nein, eine solche Möglichkeit gibt es momentan nicht.
Es gibt aber folgendes:
Jedes Neuron hat einen optionalen 'Activation Ignore Value' (als Teil seiner Einstellungen). Dieser wird außerhalb des Aktivierungsbereichs des Neurons festgelegt.
Wenn nun in einer Lesson bei den Output-Aktivitäten eines Datensatzes dieser Wert eingetragen ist, so wird das Fehlersignal dieses Neurons nicht für den betreffenden Trainingsschritt verwendet.
Wenn also für alle Ausgängen des Netzes die Activation Ignore Values als Zielwerte in einem Pattern stehen, dann wird dieses Pattern nicht trainiert. Sehr wohl werden für dieses Pattern aber die Inputs an das Netz gelegt und der entsprechende 'Think Step' durchgeführt.

Dieses Feature könnte man verwenden, um einen Bruch in der Historie der Trainingspattern abzubilden: Jedes erste Pattern eines Objekts zwei mal in die Lesson aufnehmen, das erste Mal mit Outputs = Act Ignore Val, das zweite mal mit den echten Zielaktivitäten. Für die Inputs des ersten Patternn kann man auch ein konstantes 'Initialisierungspattern' verwenden, mit z.B. Null an allen Eingängen.
Das Ganze funktioniert aber nur mit einem Netz, welches mit einem ThinkStep in einen definierten Zustand gebracht werden kann. Mit einem rekurrenten Netz wird das also nicht gelingen. Sehr wohl aber mit einem Netz, dass Delay-Neuronen nutzt, um die Eingangswerte aus dem vorhergehenden Think Step mit zu verarbeiten.
Wenn man mehrere Vorgängerschritte 'auslöschen' möchte, kann man natürlich das Pattern-Duplikat mehrfach einführen, immer mit Ausgang = Act Ignore Val. Das führt dann i.d.R. auch bei einem rekurrenten Netz zu einem 'recht stabilen' Zustand des Netzes.

Ist die Idee klar geworden? Wenn nicht, dann bitte einfach wieder melden...

Viele Grüße
Thomas Jetter
Toddster
Posts: 15
Joined: Thu 17. Nov 2011, 17:49

Re: Rekurrente Verbindung alle 24 Schritte "aussetzen" lasse

Post by Toddster »

Habs verstanden, vielen dank :)
Müssen die act. ignore Values innerhalb des noramlisierten Bereichs des Neurons liegen? Eigentlich nicht oder?
Habe noch eine Frage: Ist es geschickter für jede Stunde ein extra Output Neuron zu erstellen? Oder genügt ein einziges Output Neuron für alle Stunden zusammen + ein zusätzliches Input Neuron, welches die Werte von 1-24 annimmt für die jeweilige Stunde und dem Netz damit signalisiert, um welche Stundenwerte es sich gerade handelt?

Viele Grüße,
Toddster
User avatar
TJetter
Posts: 346
Joined: Sat 13. Oct 2012, 12:04

Re: Rekurrente Verbindung alle 24 Schritte "aussetzen" lasse

Post by TJetter »

Toddster wrote:Müssen die act. ignore Values innerhalb des noramlisierten Bereichs des Neurons liegen? Eigentlich nicht oder?
Nein, das müssen Sie nicht und das sollten sie sinnvollerweise auch nicht. Einfach einen Wert außerhalb des Normalisierungsbereiches festlegen.
Toddster wrote:Ist es geschickter für jede Stunde ein extra Output Neuron zu erstellen? Oder genügt ein einziges Output Neuron für alle Stunden zusammen + ein zusätzliches Input Neuron, welches die Werte von 1-24 annimmt für die jeweilige Stunde und dem Netz damit signalisiert, um welche Stundenwerte es sich gerade handelt?
Ich würde auf jeden Fall letzteren Ansatz wählen, ein Output Neuron für jede Stunde macht aus meiner Sicht wenig Sinn, wenn die Bedeutung des Output Signals immer die selbe ist.

Viele Grüße
Thomas Jetter
Post Reply