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
Rekurrente Verbindung alle 24 Schritte "aussetzen" lassen
Re: Rekurrente Verbindung alle 24 Schritte "aussetzen" lasse
Nein, eine solche Möglichkeit gibt es momentan nicht.Toddster wrote:Gibt es eine Möglichkeit die rekurrente Verbindung für diesen Schritt "aussetzen" zu lassen?
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
Re: Rekurrente Verbindung alle 24 Schritte "aussetzen" lasse
Habs verstanden, vielen dank ![Smile :)](./images/smilies/icon_e_smile.gif)
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
![Smile :)](./images/smilies/icon_e_smile.gif)
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
Re: Rekurrente Verbindung alle 24 Schritte "aussetzen" lasse
Nein, das müssen Sie nicht und das sollten sie sinnvollerweise auch nicht. Einfach einen Wert außerhalb des Normalisierungsbereiches festlegen.Toddster wrote:Müssen die act. ignore Values innerhalb des noramlisierten Bereichs des Neurons liegen? Eigentlich nicht oder?
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.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?
Viele Grüße
Thomas Jetter