ML-Agents v2.0 Veröffentlichung: Unterstützt jetzt das Training komplexer kooperativer Verhaltensweisen

MARWAN MATTAR / UNITY TECHNOLOGIESContributor
May 5, 2021|15 Min.
ML-Agents v2.0 Veröffentlichung: Unterstützt jetzt das Training komplexer kooperativer Verhaltensweisen
Diese Website wurde aus praktischen Gründen für Sie maschinell übersetzt. Die Richtigkeit und Zuverlässigkeit des übersetzten Inhalts kann von uns nicht gewährleistet werden. Sollten Sie Zweifel an der Richtigkeit des übersetzten Inhalts haben, schauen Sie sich bitte die offizielle englische Version der Website an.

Vor etwa einem Jahr haben wir die Veröffentlichung des ML-Agents v1.0 Unity-Pakets angekündigt, das für die Version 2020.2 des Editors verifiziert wurde. Wir freuen uns, heute die Version 2.0 des ML-Agents Unity-Pakets ankündigen zu können, das derzeit für die Version 2021.2 des Editors verifiziert werden soll. Im Laufe des letzten Jahres haben wir mehr als fünfzehn wichtige Aktualisierungen am ML-Agents GitHub-Projekt vorgenommen, darunter Verbesserungen des Benutzer-Workflows, neue Trainingsalgorithmen und -funktionen sowie eine erhebliche Leistungssteigerung. In diesem Blogbeitrag werden wir drei zentrale Entwicklungen hervorheben: Die Fähigkeit, kooperative Verhaltensweisen zu trainieren, Agenten in die Lage zu versetzen, verschiedene Entitäten in ihrer Umgebung zu beobachten, und die Aufgabenparametrisierung zu nutzen, um das Training mehrerer Aufgaben zu unterstützen. Die Kombination dieser Fortschritte bringt ML-Agenten der vollständigen Unterstützung komplexer kooperativer Umgebungen näher.

In unserem Blogbeitrag zum Jahresende 2020 haben wir eine kurze Zusammenfassung aller Fortschritte gegeben, die wir seit der Veröffentlichung von v1.0 im Mai 2020 bis Dezember desselben Jahres gemacht haben. Außerdem haben wir drei wichtige algorithmische Verbesserungen vorgestellt, auf die wir uns in der ersten Jahreshälfte 2021 konzentrieren wollen: Kooperatives Multi-Agenten-Verhalten, die Fähigkeit eines Agenten, eine unterschiedliche Anzahl von Einheiten zu beobachten und ein einziges Modell zur Lösung mehrerer Aufgaben zu erstellen. Wir können nun mit Stolz sagen, dass alle drei wichtigen Verbesserungen in ML-Agents verfügbar sind.

Zusätzlich zu diesen drei Funktionen haben wir die folgenden Änderungen am Hauptpaket ML-Agents vorgenommen:

Hinzufügen einer Reihe von Funktionen, die zuvor Teil unserer Erweiterungen Unity-Paket - z. B. Grid Sensors-Komponente und Match-3-Spielbretter.

Verbesserte Speicherzuweisung während der Inferenz. In einigen unserer Demoszenen konnten wir eine Reduzierung um bis zu 98 % feststellen.

Wir haben veraltete APIs entfernt und unseren API-Fußabdruck reduziert. Diese API-verändernden Anpassungen machten ein Versions-Upgrade von 1.x auf 2.0 erforderlich. In unseren Versionshinweisen und im Migrationsleitfaden finden Sie weitere Einzelheiten zum problemlosen Upgrade.

Im weiteren Verlauf dieses Blogeintrags werden wir auf die Rolle von kooperativem Verhalten, Beobachtung mit variabler Länge und Aufgabenparametrisierung sowie auf zwei inkrementelle Verbesserungen eingehen: Förderung der Funktionen des Erweiterungspakets und der übergreifenden Leistung. Wir werden auch ein Update zu unserem ML-Agents Cloud-Angebot geben und eine Vorschau auf unsere aufregende neue Spielumgebung geben, die komplexe kooperative Verhaltensweisen hervorheben wird, bevor sie in wenigen Wochen veröffentlicht wird.

Training kooperativer Verhaltensweisen

In vielen Umgebungen, z. B. in Multiplayer-Spielen wie Among Us, müssen die Spieler zusammenarbeiten, um die anstehenden Aufgaben zu lösen. Während es früher möglich war, ML-Agenten mit mehreren Agenten in der Szene zu trainieren, konnten Sie bis Release 15 (März 2020) keine spezifischen Agentengruppen mit gemeinsamen Zielen definieren. ML-Agents unterstützt jetzt ausdrücklich das Training kooperativer Verhaltensweisen. Auf diese Weise können Gruppen von Akteuren auf ein gemeinsames Ziel hinarbeiten, wobei der Erfolg jedes Einzelnen an den Erfolg der gesamten Gruppe gebunden ist.

In solchen Szenarien erhalten die Agenten in der Regel Belohnungen als Gruppe. Wenn also ein Team von Agenten ein Spiel gegen ein gegnerisches Team gewinnt, werden alle belohnt, auch die Agenten, die nicht direkt zu diesem Sieg beigetragen haben, was es schwierig macht, selbstständig zu lernen, was zu tun ist. Deshalb haben wir einen neuartigen Multi-Agenten-Trainer entwickelt (genannt MA-POCA für Multi-Agent POsthumous Credit Assignment; vollständiges arXiv-Papier folgt in Kürze), um einen zentralen Kritiker zu trainieren - ein neuronales Netzwerk, das als "Coach" für die gesamte Gruppe von Agenten fungiert.

Mit dieser Ergänzung können Sie das Team als Ganzes weiterhin belohnen, aber die Mitarbeiter lernen auch, wie sie am besten zu ihrer gemeinsamen Leistung beitragen können. Die Agenten können sogar individuelle Auszeichnungen erhalten, damit sie motiviert bleiben und sich gegenseitig helfen, ihre Ziele zu erreichen. Während einer Episode können Sie Agenten zu der Gruppe hinzufügen oder aus ihr entfernen, z. B. wenn Agenten in einem Spiel auftauchen oder sterben. Wenn Agenten mitten in einer Episode entfernt werden, können sie immer noch nachvollziehen, ob ihre Handlungen später zum Sieg des Teams beigetragen haben oder nicht. Dadurch werden sie befähigt, die Gruppe in ihren Handlungen an die erste Stelle zu setzen, selbst wenn sie sich durch Selbstaufopferung oder andere Spielentscheidungen aus dem Spiel entfernen. Durch die Kombination von MA-POCA mit dem Selbstspiel können Sie auch Teams von Agenten trainieren, die gegeneinander spielen.

Darüber hinaus haben wir zwei neue Beispielumgebungen entwickelt: Kooperativer Push-Block und Dungeon Escape. Der kooperative Push-Block zeigt eine Aufgabe, für deren Erledigung mehrere Agenten erforderlich sind. Das Video unten zeigt Dungeon Escape, in dem ein Agent den Drachen töten muss, so dass er mitten in der Episode entfernt wird, damit seine Teamkollegen den Schlüssel abholen und aus dem Kerker entkommen können.

Lesen Sie unsere Dokumentation, um zu erfahren, wie Sie kooperative Agenten in Ihr Projekt einbinden können.

Beobachtung einer unterschiedlichen Anzahl von Entitäten

Eine der am häufigsten geforderten Funktionen für das Toolkit war die Möglichkeit, die Reaktionen von Spielfiguren auf eine unterschiedliche Anzahl von Objekten zu ermöglichen. In Videospielen lernen die Charaktere oft, wie sie mit mehreren Gegnern oder Gegenständen gleichzeitig umgehen können. Um diesem Bedarf gerecht zu werden, ist es in Release 15 (März 2020) nun möglich, ein beliebig langes Feld von Beobachtungen, den so genannten "Beobachtungspuffer", anzugeben. Agenten können lernen, einen beliebig großen Puffer durch ein Aufmerksamkeitsmodul zu nutzen, das eine unterschiedliche Anzahl von Beobachtungen kodiert und verarbeitet.

Das Aufmerksamkeitsmodul ist eine großartige Lösung für Situationen, in denen eine Spielfigur beispielsweise lernen muss, Geschossen auszuweichen, die Anzahl der Geschosse in der Szene aber nicht festgelegt ist. In diesem Video wird jedes Projektil durch vier Werte dargestellt: Zwei für die Positionierung und zwei für die Geschwindigkeit. Für jedes Projektil in der Szene werden diese vier Werte an einen Puffer mit Projektilbeobachtungen angehängt. Der Agent kann dann lernen, die Geschosse, die sich nicht auf einer Kollisionsbahn befinden, zu ignorieren und stattdessen den gefährlicheren Geschossen besondere Aufmerksamkeit zu schenken.

Darüber hinaus können die Agenten die Bedeutung von Objekten auf der Grundlage ihrer Beziehungen zu anderen Objekten in der Szene lernen. Wenn die Agenten beispielsweise lernen müssen, wie man Kacheln in aufsteigender Reihenfolge sortiert, sind sie in der Lage, anhand der Informationen aller anderen Kacheln herauszufinden, welche Kachel die nächste richtige ist. Diese neue Umgebung mit dem Namen Sorter ist jetzt als Teil unserer Beispielumgebungen verfügbar, die Sie herunterladen und für die ersten Schritte verwenden können.

Lesen Sie unsere Dokumentation, um zu erfahren, wie Sie Beobachtungen mit variabler Länge in Ihr Projekt integrieren können.

Parametrisierung der Aufgabe: Ein Modell für alle Fälle

Videospielfiguren müssen in verschiedenen Spielmodi oft mehrere Aufgaben bewältigen. Eine Möglichkeit, dieses Problem anzugehen, besteht darin, mehrere Verhaltensweisen getrennt zu trainieren und dann zwischen ihnen zu wechseln. Es ist jedoch vorzuziehen, ein einziges Modell zu trainieren, das mehrere Aufgaben auf einmal erledigen kann. Schließlich verringert ein einziges Modell den Speicherbedarf im endgültigen Spiel und verkürzt damit die gesamte Trainingszeit, da das Modell einige Teile des neuronalen Netzes für mehrere Aufgaben wiederverwenden kann. Zu diesem Zweck haben wir in unserer neuesten Version(Release 17) die Möglichkeit hinzugefügt, dass ein einzelnes Modell mehrere Verhaltensweisen mit HyperNetworks kodieren kann.

In der Praxis verwenden wir eine neue Art von Beobachtung, das so genannte "Zielsignal", sowie ein kleines neuronales Netz, das so genannte "HyperNetwork", um einige der Gewichte eines anderen, größeren neuronalen Netzes zu erzeugen. Dieses größere Netzwerk ist dasjenige, das das Verhalten des Agenten steuert und es dem neuronalen Netzwerk des Verhaltens ermöglicht, je nach Ziel des Agenten unterschiedliche Gewichte zu haben, während einige gemeinsame Teile über die Ziele hinweg beibehalten werden, wenn dies notwendig ist.

Das folgende Video zeigt einen Agenten, der zwei Aufgaben aus den ML-Agenten-Beispielen(WallJump und PushBlock) gleichzeitig löst. Wenn die untere Farbe grün ist, muss der Agent den Block in die grüne Zone schieben. Wenn aber das rechte obere Feld grün ist, muss der Agent über die Mauer auf das grüne Feld springen.

Lesen Sie in unserer Dokumentation nach, wie Sie die Aufgabenparametrisierung mit Hilfe von Zielsignalen in Ihrem Projekt implementieren können.

Vom Erweiterungspaket geförderte Funktionen
Netzsensoren
ML-Agenten genannt Grid Sensor

Im November 2020 haben wir darüber berichtet, wie Eidos in ML-Agents einen neuen Sensortyp namens Grid Sensor entwickelt hat. Diese Grid-Sensor-Implementierung wurde damals zu unserem Erweiterungspaket hinzugefügt, bevor wir die Implementierung überarbeiteten und in die neueste Version des Hauptpakets ML-Agents aufnahmen.

Match-3

In Release 10 (November 2020) von ML-Agents haben wir eine neue Match-3-Umgebung eingeführt und unser Erweiterungspaket um Dienstprogramme ergänzt, die das Training von Match-3-Spielen ermöglichen. Wir haben uns mit Code Monkey zusammengetan, um ein Lehrvideo zu veröffentlichen. Ähnlich wie bei Grid Sensors haben wir unsere Dienstprogramme für das Training von 3-Gewinnt-Spielen zu einem Teil des ML-Agents-Kernpakets in unserer neuesten Version gemacht.

Verbesserungen der Leistung

Unser Ziel ist es, ML-Agents weiter zu verbessern. Nachdem wir Ihr Feedback zur Menge des während der Inferenz zugewiesenen Speichers gehört hatten, haben wir die Zuweisung umgehend erheblich reduziert. Die folgende Tabelle zeigt einen Vergleich der Garbage-Collection-Metriken (Kilobytes pro Academy-Schritt) in zwei unserer Beispielszenen zwischen den Versionen 1.0 (veröffentlicht im Mai 2020) und 2.0 (veröffentlicht im April 2021). Diese Metriken schließen den von Barracuda (der Unity Inference Engine, auf die sich ML-Agents für die plattformübergreifende Inferenz stützt) verwendeten Speicher aus:

ein Vergleich der Garbage-Collection-Metriken in zwei unserer Beispielszenen zwischen den Versionen 1.0 und 2.0
ML-Agents Cloud: Eine Aktualisierung

In unserem Blogbeitrag v1.0 haben wir erstmals einige Details über ML-Agents Cloud mitgeteilt. Mit unserem ML-Agents Cloud-Service können Sie mehrere Trainingssitzungen starten, die parallel auf unserer Cloud-Infrastruktur laufen, sodass Sie Ihre Experimente zeitnah abschließen können. Die Kernfunktionalität von ML-Agents Cloud bietet Ihnen heute die Möglichkeit,:

Laden Sie Ihre Spiel-Builds mit implementierten ML-Agenten hoch (C#).

Trainingsexperimente starten, unterbrechen, fortsetzen und beenden. Sie können mehrere Experimente gleichzeitig starten und High-End-Maschinen nutzen, um viele gleichzeitige Unity-Instanzen für jedes Trainingsexperiment zu erzeugen - und das bei kürzeren Fertigstellungszeiten.

Laden Sie die Ergebnisse von mehreren Trainingsexperimenten herunter.

Für den Rest des Jahres 2021 planen wir, die Entwicklung von ML-Agents Cloud zu beschleunigen, basierend auf dem Feedback der Alpha-Kunden. Weitere Funktionalitäten konzentrieren sich auf die Möglichkeit, Ihre Ergebnisse zu visualisieren, Ihre Experimente über eine Web-UI zu verwalten und die Abstimmung von Hyperparametern zu nutzen. In der Tat nehmen wir heute noch Bewerber für das Alpha-Programm an. Wenn Sie sich anmelden möchten, registrieren Sie sich bitte hier.

Was steht als Nächstes an?

In diesem Beitrag haben wir drei zentrale Verbesserungen vorgestellt, die ML-Agents näher an die Unterstützung komplexer kooperativer Spiele heranführen. Wir haben jede dieser drei Verbesserungen für sich demonstriert und auch die kürzlich zum Toolkit hinzugefügten Beispielumgebungen besprochen. Was wir noch nicht verraten haben, ist eine weitere kommende Showcase-Umgebung namens Dodgeball. Dodgeball ist ein Mannschaftsspiel, bei dem das Zusammenspiel aller drei Funktionen im Vordergrund steht. Agenten müssen sich in komplexen Umgebungen zurechtfinden, um mehrere Aufgaben zu lösen, mit Teamkollegen zusammenzuarbeiten und verschiedene Objekte in einer Szene zu beobachten. Wir planen, diese Umgebung in den kommenden Wochen zusammen mit einem weiteren Blogbeitrag zu veröffentlichen. Bis dahin sehen Sie sich diesen kleinen Einblick in das Dodgeball-Training unserer Agenten an.

Vielen Dank

Im Namen des gesamten Teams von Unity ML-Agents möchten wir Ihnen allen dafür danken, dass Sie uns über die Jahre hinweg auf diesem Weg begleitet und unterstützt haben.

Wenn Sie an dieser spannenden Schnittstelle zwischen maschinellem Lernen und Spielen arbeiten möchten, stellen wir mehrere Stellen ein und laden Sie ein, sich hier zu bewerben.

Und schließlich würden wir gerne Ihr Feedback hören! Für jegliches Feedback zum Unity ML-Agents Toolkit füllen Sie bitte die folgende Umfrage aus oder senden Sie uns direkt eine E-Mail an ml-agents@unity3d.com. Wenn Sie auf Probleme stoßen, zögern Sie nicht, uns auf der ML-Agents GitHub issues Seite zu kontaktieren. Wenn Sie weitere allgemeine Kommentare oder Fragen haben, lassen Sie es uns bitte in den Unity ML-Agents-Foren wissen.