KI: Deep Q Learning - Methoden Überlauf Fehler zu umgehen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
DDQN_Developer
User
Beiträge: 2
Registriert: Donnerstag 24. September 2020, 11:23

Hallo liebe Community,

ich befasse mich schon einige Zeit mit Neuronalen Netzwerken bzw. generell, wie künstliche Intelligenz arbeitet und programmiert wird.

Zur Zeit bin ich an einem Projekt dran, wo ich mit Double Deep Q Learning das Neuronale Netz trainieren möchte. (bedeutet einfach, die KI zeigt nach dem ersten Durchlaufen 19 verschiedene Q-Werte, wo der Maximalwert dann die Auswahl der Aktion ist, und schaut beim zweiten Durchlaufen mit dem daraufliegenden Status und den bisherigen Gewichten nach den Maximalwert, der theoretisch nach der Aktion erreicht werden kann).

Das Trainieren funktioniert selbst sehr gut - also der "Error" reduziert sich mit jedem Durchlaufen. Allerdings bekomme ich beim 3 Durchlauf, um die Gewichte anzupassen, ein Overflow Problem. Nach eigenen Forschungen liegt die Ursache bei der Loss Funktion, die letztendlich die Delta-Werte ermittelt, um die Gewichte anzupassen. In der Loss Funktion wird von einem hohen zu erwartenden Q-Wert ein kleiner Q-Wert vom ersten Durchlaufen abgezogen. Dieser Abstand wird in die Delta Funktion übernommen und somit werden die Gewichte in ähnlich großen Abstand korrigiert - aber das sorgt für den Überlauf.

Wie löst man dieses Phänomen?

Ein paar Ansätze konnte ich dazu finden, aber ich bin irgendwie gerade zu blöd, die Systematik dazu zu verstehen. Hier meine Quellen:
https://stackoverflow.com/questions/231 ... ementation

https://www.researchgate.net/publicatio ... l_networks

Das sieht am interessantesten aus, kann ich aber nicht ganz nachvollziehen:
https://machinelearningmastery.com/how- ... -clipping/

Ich hoffe, dass mir nun jemand bei dem Thema weiterhelfen kann.
DDQN_Developer
User
Beiträge: 2
Registriert: Donnerstag 24. September 2020, 11:23

so, ich habe jetzt eine Lösung gefunden. Für alle, die durchs Netz hierauf stoßen sollten:

ich habe das Gradienten Clipping verwendet - sprich eine Grenze für den zu aktivierenden Wert genommen, der bei zwischen -200 und 200 liegt.

Aber zum Erfolg führte letzten Endes die Umstellung der Regressions Loss Funktion auf die sogenannte Cross-Entropy Loss Funkion.

Allein bei einer Lernrate von 0,00000001 komme ich bereits nach 3-fachen wiederholten Gewichtsanpassen von 2100 auf 0,57.. und es verringert sich mit jeder weiteren Iteration und neuem Input.
Antworten