Ich füge der längsten Blogserie, die ich je geschrieben habe, einen weiteren interessanten Artikel hinzu (mittlerweile quick 15 Beiträge, Sie können sie unten nachlesen). Multi-Agent-Umgebungen und Algorithmen zum Trainieren solcher Umgebungen im Reinforcement Studying, die auf Q-Studying basieren. Die meisten Spiele, die wir spielen, sei es Contra, PubG oder Want For Velocity, beinhalten mehrere Spieler/Charaktere. Nun kann es sich bei diesen Mehrfachspielern um drei Typen handeln
Tatsächlicher Spieler: Wie du und ich
NPC: Nicht-Spieler-Charakter. Solche Charaktere konkurrieren nicht mit Ihnen, können aber als Nebencharaktere im Spiel verwendet werden. Beispiel: In Mario kann der Drache als NPC angenommen werden. Beachten Sie, dass NPCs normalerweise nicht von Menschen, sondern von einer Computerlogik verwaltet werden
Bots: Solche Charaktere werden auch nicht von Menschen gesteuert, sondern mithilfe einer Computerlogik, sie konkurrieren jedoch mit echten Spielern. Zum Beispiel: Sie müssen in PUBG gehört haben, dass Leute „Bots“ sagen, die nicht so clever sind wie menschliche Konkurrenten, oder in vielen Spielen den „V/S-Computermodus“.
Notiz: Die Leute verwechseln normalerweise NPCs und Bots. Der einzige Unterschied besteht darin, dass Bots gegen den tatsächlichen Spieler antreten und NPCs nicht.
Um dies zu verstehen, benötigen Sie möglicherweise ein paar Referenzen (Zeitdifferenz, Q-Lernen und DQNs) aus meinen vorherigen Beiträgen zum Thema Reinforcement Studying.
Ob NPCs oder Bots, in der Regel wird ein Algorithmus verwendet, um sie zu steuern. Excessive-Finish-Spiele verwenden jedoch auch KI zum Trainieren dieser Charaktere, um ein realistischeres Erlebnis zu bieten. Multi-Agent-Verstärkungslernen wird in solchen Fällen eingesetzt, in denen Sie die meiste Zeit über mehrere NPCs/Bots verfügen.
Das Coaching in einer Multi-Agent-Umgebung bringt eine große Herausforderung mit sich, die wir berücksichtigen sollten, bevor wir loslegen, d. h
Eine von jedem Agenten ausgeführte Aktion wirkt sich auf die von anderen Agenten ausgeführten Aktionen aus.
Daher die Die Umgebung ist nicht stationär Wenn nur der Kontext des Zustands verwendet wird, kann die Aktion/der Q-Wert für einen Agenten ausgewählt werden.
Bevor Sie fortfahren, müssen Sie die DQNs kennen, die ich in meinen vorherigen Beiträgen behandelt habe
Wir beginnen mit einem naiven Ansatz
Wenn man sich für einen Basisansatz entscheidet, ist es die einfachste Methode, die man sich sofort vorstellen kann separate DQNs für jeden beteiligten Agenten. Füttere ihn mit dem Zustand, erhalte Q-Werte und wähle schließlich für jede Aktion eine Aktion aus. Bei dieser Lösung gehen wir davon aus, dass andere Agenten Teil der Umgebung sind und über keine Denkfähigkeiten verfügen. Daher werden sie als stationäre Elemente angenommen.
Dies magazine in einigen Fällen funktionieren, aber das Drawback liegt auf der Hand, denn es wird davon ausgegangen, dass andere Agenten stationär sind, was nicht stimmt. Wenn die Anzahl der NPCs sehr hoch ist, ist es außerdem nicht möglich, so viele DQNs zu trainieren. Und daher funktioniert dieser Ansatz in den meisten Umgebungen möglicherweise nicht.
Irgendwie müssen wir potenzielle Aktionen einbeziehen, die von anderen in der Umgebung vorhandenen Agenten ausgeführt werden können, bevor wir Maßnahmen für einen Agenten auswählen.
Außerdem müssen wir eine geringere Anzahl von DQNs verwenden
Eine weitere Grundidee besteht darin, die Aktionen anderer Agenten bei der Berechnung des Q-Werts für einen Agenten einzubeziehen Stellen Sie neben dem aktuellen Standing auch die Aktionen anderer Agenten als Eingabe bereit und nicht nur den aktuellen Stand, wie wir es im traditionellen DQN tun. Das folgende Diagramm kann die Dinge besser erklären
Obwohl diese Methode für einige Umgebungen intestine funktionieren sollte, weist sie erhebliche Nachteile auf
Wenn die Anzahl der NPCs groß ist, kann die Eingabedimension riesig sein (z. B. bei einigen Kriegsspielen, bei denen wir eine Armee von Tausenden von Soldaten haben können, von denen jeder ein NPC/Bot ist).
Wenn Sie einen neuen NPC hinzufügen möchten, muss möglicherweise das gesamte Modell neu trainiert werden, da Architekturänderungen erforderlich sind.
Die Idee, neben Statusinformationen auch Aktionen von anderen Agenten zu einem DQN hinzuzufügen, ist intestine. Diese muss aber eine konstante Größe haben und darf auch nicht zu groß sein.
Die Idee der nächsten Nachbarschaft ist von KNN inspiriert, wo wir davon ausgehen, dass ein Agent am meisten von seinen Ok nächsten Nachbarn beeinflusst wird und der Relaxation der anderen NPCs ignoriert werden kann.
Was bedeutet das?
Wenn Sie PUBG spielen und in „Pochinki“ gelandet sind, würden Sie Ihre Aktionen abhängig von den Feinden in „Pochinki“ auswählen, aber nicht abhängig von den Spielern in „Krankenhaus“ oder „Schule“. Sie werden sich nicht um sie kümmern, bis sie näher bei Ihnen sind
Kurz gesagt, wir müssen die meiste Zeit nicht alle NPCs/Bots berücksichtigen, wenn wir eine Entscheidung treffen aber die nächsten sind die wichtigsten und kommen daher zum Nearest Neighbor Q-Studying. Selbst wenn es Hunderte von Bots gibt, abhängig von „Ok“, Wir würden die potenziellen Aktionen von „ok“ Nachbarn eines Agenten zusammen mit dem aktuellen Standing an DQN weiterleiten, um den q-Wert für den aktuellen Agenten vorherzusagen.
Wie Sie bestimmt schon verstanden haben, kann dies dabei helfen, die Größe des Eingabevektors beizubehalten, denn selbst wenn wir NPCs/Bots hinzufügen oder entfernen, sind die berücksichtigten Nachbarn konstant und die Größe des Eingabevektors ist konstant. Außerdem kann die Größe des Eingabevektors auch mit „ok“ gesteuert werden.
In manchen Spielen
- Möglicherweise müssen wir alle NPCs/Bots berücksichtigen
- „Ok“ kann groß sein
In solchen Fällen sind die nächsten Nachbarn möglicherweise keine große Hilfe. Imply Discipline Q-Studying kann additionally dort eingesetzt werden, wo wir mit a fortfahren Grundannahme, dass sich alle anderen Agenten im gleichen Durchschnitt verhalten oder gemein als aktueller Agent. Anstatt die Aktion jedes Agenten separat dem DQN zuzuführen, würden wir daher einen einzigen mittleren Aktionsvektor für alle Agenten berechnen
Konvertieren von Aktionen verschiedener Agenten in Vektoren
Hinzufügen dieser Vektoren
Normalisierung dieses hinzugefügten Vektors, sodass alle Elemente eins ergeben.
Gehen Sie additionally davon aus, dass Agent A motion= hat[1,0,0]B=[0,0,1],C=[0,0,1]dann normalisierter mittlerer Aktionsvektor=[1,0,2]/3 = [0.33,0,0.66]
Geben Sie diesen Vektor nun zusammen mit dem Standing an den DQN weiter, um den -Wert zu erhalten. Obwohl der Ansatz recht einfach ist, hilft er dabei, konstante Eingaben aufrechtzuerhalten und mehr Nachbarn und somit mehr Informationen zu berücksichtigen. Denken Sie auch daran, dass die Annahme, dass sich Agenten im Durchschnitt auf die gleiche Weise verhalten, manchmal nicht korrekt ist, was zu Approximationsfehlern führen kann.
Das ist alles für heute. Als nächstes werde ich Codes zum Trainieren einer Multi-Agenten-Umgebung mit MAgent behandeln