Wie definiert sich die Eingabe des Input Layer des neuronalen Netzwerks

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Wie definiert sich die Eingabe des Input Layer des neuronalen Netzwerks
Mir ist aus der letzen Vorlesung nicht ganz ersichtlich geworden, was das Neuronale Netz nun vorhersagen soll. Übernimmt es nun die Aufgabe, den State EINER Firma einer Action zuzuweisen oder beschreibt der state vielmehr beide Companies ?
Im ersten Fall würde das bedeuten, dass das Netzwerk pro Aufruf von trade() jeweils zwei predictions ausführen soll sowie auch zwei unterschiedliche State,Action State Kombinationen im Memory gespeichert werden. In diesem Fall kann das neuronal Netz nicht zwischen den beiden Companies unterscheiden was ja nicht sehr hilfreich ist.

Im zweiten Fall würde das bedeuten, dass pro Aufruf nur eine prediction ausgeführt wird, aus welcher sich zwei Aktionen ableiten lassen. In diesem Fall ergibt sich für mich die Frage, wie man mit nur zwei Attributen (size of input layer = 2) den Zustand beider Companies abbilden soll?


Zur ersten Frage: Du liegst richtig mit dem, was Du als “im zweiten Fall” beschrieben hast. Das Netz sollte in einer Abfrage vorhersagen, was ausgehend von einem State für BEIDE Aktien zu tun ist.

Die zweite Frage, warum da nun theoretisch zwei Eingaben (state size) ausreichen KÖNNTEN - das lasse ich mal für kreatives Nachdenken offen stehen.


Die Eingabe des neuronalen Netzes kannst du beliebig definieren. Lass dich da nicht auf input layer = 2 einschränken.


Vielen Dank für das schnelle und hilfreiche Feedback.

Nur um sicherzustellen, dass ich das richtig verstanden habe:
Ein Output Node des ANN repräsentiert eine Aktion (welche zwei Orders repräsentiert).
Bei nur buy und sell ergeben sich somit 4 Aktionen (wenn immer alles verkauft oder gekauft wird) z.B. (Buy A, Buy B) == Aktion 0

Wenn ich nun noch “Hold” hinzufügen würde, ergeben sich somit 9 mögliche Aktionen? Ich frage deshalb, weil mir dann nicht klar ist, warum ich last_aktion_a und last_aktion_b separat in der Klasse hinterlegen soll und nicht nur die eine Aktion, welche mir das neuronale Netz ausgibt (welche ja stellvertretend für zwei Orders steht)

1 „Gefällt mir“

Würde mich auch sehr interessieren, hänge am selben Punkt…
Außerdem wäre es noch interessant bestätigt zu bekommen, dass die von Ihnen vorgestellte Trade-Kurve mit den hinterlegten ANN-Parametern self.state_size = 2, self.action_size = 10 und self.hidden_size = 50 erreicht wurden. Auch wenn Sie hier jetzt nicht die Lösung verraten werden wie sich die 10. action ergibt, wäre ein Tipp hierzu echt hilfreich, weil meine Trade-Kurve momentan eher betroffen macht…

1 „Gefällt mir“

Prinzipiell repräsentiert eine output node den Q-Wert von einem State s und einer Aktion a.
Bei nur buy und sell also die von dir beschriebenen vier Aktionen.

last_aktion_a und last_aktion_b ist als Hilfe in der Klasse gedacht, weil ihr euch die Aktions vermutlich merken müsst.
Du kannst dir stattdessen gerne auch nur die eine Aktion (= Ausgabe des ANN) merken.


Die Trade-Kurve wurde mit den hinterlegten Parametern erreicht.

Aber: Die hinterlegten Parameter sind Teil unserer Musterlösung, sprich: Wo wir die Aufgabe schnell gelöst haben, um zu zeigen, dass das ANN läuft.
Du kannst die Parameter gerne ändern: Ich bin sicher es gibt noch deutlich bessere Lösungen als unsere Musterlösung.

Wenn dich die Trade-Kurve betroffen macht, dann stelle als erstes überhaupt mal fest, dass dein ANN wirklich lernt.