Q-Learning minesweeping Verhalten lernen

stimmen
0

Ich versuche zu verwenden Q-Learning minesweeping Verhalten auf einer diskreten Version von Mat Buckland Smart Kehrer zu lernen, das Original finden Sie hier http://www.ai-junkie.com/ann/evolved/nnt1.html , für eine Zuordnung. Die Zuordnung begrenzt uns auf 50 Iterationen 2000 bewegt sich auf einem Gitter , das in einem zufälligen Ort jeder Iteration effektiv 40x40, wobei die Gruben und die Rückstellmittel hervorgebracht wird , ist.

Ich habe zum Fegen Mine und Strafen für die Bewegung, Belohnungen mit Strafen leistungs q Lernen versucht für keine Mine zu treffen. Die Kehrmaschine Agent scheint nicht in der Lage zu lernen, wie Minen effektiv innerhalb der 50 Iterationen fegen, weil sie erfährt, dass auf bestimmte Zelle gehen ist gut, aber nach einem der Mine gegangen ist, wird es nicht mehr belohnt, sondern bestraft für die Bewegung zu dieser Zelle gehen Kosten

Ich wollte nur die Bereitstellung Belohnungen versuchen, wenn alle Minen in einem Versuch abgeräumt die Umwelt statisch zu machen, da es nur ein Zustand der nicht alle Minen würden gesammelt, oder alle Minen gesammelt, aber ich kämpfen diese aufgrund der Mittel zur Umsetzung mit nur 2000 bewegt sich pro Iteration und in der Lage, einen Rückzieher, es schafft nie für das Sammeln von Minen, alle Minen in einer Iteration innerhalb der Grenze mit oder ohne Belohnungen zu fegen.

Eine weitere Idee, die ich hatte, war für jeden Mine eine effektiv neue Q-Matrix haben, so dass, sobald eine Mine gesammelt, die Kehrmaschine Übergänge zu dieser Matrix und arbeitet aus, dass, wo die aktuelle Mine aus der Betrachtung ausgeschlossen.

Gibt es bessere Ansätze, die ich mit diesem nehmen, oder vielleicht mehr praktische Verbesserungen zu meinem eigenen Ansatz, den ich versuchen kann?

Veröffentlicht am 09/10/2019 um 19:01
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Da die Kehrmaschine kann die nächste Mine immer sehen, sollte dies recht einfach sein. Aus Ihrer Frage gehe ich davon aus dem einzigen Problem eine gute Belohnung Funktion und Darstellung für Ihren Agentenstatus wird zu finden.

Definieren eines Staates

Absolute Positionen sind selten nützlich in einer zufälligen Umgebung, vor allem, wenn die Umgebung wie in Ihrem Beispiel unendlich ist (da der Bot über die Grenzen und respawnen auf der anderen Seite fahren kann). Dies bedeutet, dass die Größe der Umgebung nicht für die Agenten benötigt wird, zu arbeiten (wir müssen es tatsächlich den unendlichen Raum, tho zu simulieren).

Eine Belohnungsfunktion berechnet den Rückgabewert auf der Basis des aktuellen Status des Mittels im Vergleich zu seinem vorhergehenden Zustand. Aber wie definieren wir einen Staat? Mal sehen, was wir wirklich brauchen, um den Agenten zu arbeiten, wie wir es wollen.

  1. Die Position des Mittels.
  2. Die Position der nächstgelegenen Mine.

Das ist alles, was wir brauchen. Nun sagte ich erlier dass absolute Positionen schlecht sind. Dies ist, weil es die Q-Tabelle macht (Sie nennen es Q-Matrix) statisch und sehr zerbrechlich Zufälligkeit. So wollen sie versuchen, völlig abosulte Positionen von der Belohnungsfunktion zu beseitigen und sie mit relativen Positionen zu ersetzen. Glücklicherweise ist dies sehr einfach in Ihrem Fall: statt die absoluten Positionen zu verwenden, verwenden wir die relative Position zwischen der nächstgelegenen Mine und dem Agenten.

Jetzt gehen wir nicht mit den Koordinaten mehr, sondern Vektoren. Lässt den Vektor zwischen unseren Punkten berechnen: v = pos_mine - pos_agent. Dieser Vektor gibt uns zwei sehr wichtige Informationen:

  1. die Richtung, in der die nearst Mine ist, und
  2. die Entfernung zur nächstgelegenen Mine.

Und das ist alles, was wir brauchen, um unseren Agenten betriebsbereit zu machen. Daher kann eine Agentenzustand definiert werden als

State: Direction x Distance

von dem Abstand ist ein Gleitkommawert und Richtung entweder ein Schwimmer, der den Winkel oder einen normalisierten Vektors beschreibt.

Definieren einer Belohnungsfunktion

Aufgrund unserer neu Zustand definiert, das einzige, was uns wichtig in unserer Belohnungsfunktion ist der Abstand. Da alles, was wir wollen, ist das Mittel gegen Minen zu bewegen, ist die Entfernung alles, was zählt. Hier sind ein paar Vermutungen, wie die Belohnungsfunktion funktionieren könnte:

  1. Wenn der Agent eine Mine (Entfernung == 0) fegt, Rückkehr eine riesige Belohnung (ex. 100).
  2. Wenn das Mittel in Richtung einer Mine bewegt (Abstand schrumpft), gibt eine neutrale (oder klein) Belohnung (ex. 0).
  3. Wenn der Agent aus einer Mine weg bewegt (Entfernung zunimmt), retuan eine negative Belohnung (ex. -1).

Theoretisch, da wir aus einer Mine penaltize weg bewegt, wissen wir nicht einmal Regel 1 hier brauchen.

Fazit

Das einzige, was links ist die Bestimmung, eine gute Lernrate und Rabatt, so dass Ihr Agent gut nach 50 Iterationen durchführt. Aber die Einfachheit der Umwelt gegeben, soll dies nicht einmal wichtig, dass viel. Experiment.

Beantwortet am 10/10/2019 um 16:59
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more