DeepMinds Framework für erweitertes Lernen Acme (a), das ich in Vorheriger Artikel ein wenig erwähnt habe Einführungsartikel über den Forschungsrahmen für das verstärkte Lernen)
(Wie üblich wurde der japanische Nachdruck des englischen Artikels in meinem Blog veröffentlicht.)
Öffentlich des Codes (Teil davon) des Frameworks für verbessertes Lernen, das DeepMind-Forscher tatsächlich täglich als OSS verwenden.
Acme bietet eine einfache Lernschleifen-API, die grob wie folgt codiert werden kann:
Lernschleife
loop = acme.EnvironmentLoop(environment, agent)
loop.run()
Acme unterstützt TensorFlow (* nur bestimmte nächtliche Builds) und JAX als Netzwerke. ..
Ich verwende auch Reverb für die Wiedergabe von Erfahrungen. (Mein Kommentar Artikel 1 und Kommentar Artikel 2)
Der Technische Bericht beschreibt ihn als "Acme: Ein Forschungsrahmen für verteiltes Reinforcement-Lernen", aber als [FAQ](https: / Soweit ich gelesen habe (/github.com/deepmind/acme/blob/master/docs/faq.md), wurde der verteilte Lernagent leider nicht veröffentlicht, und es scheint, dass der Zeitpunkt für die Veröffentlichung noch nicht festgelegt wurde.
Es ist veröffentlicht mit dem Paketnamen "dm-acme" in PyPI.
Es können fünf Optionen angegeben werden: "jax", "tf", "envs", "reverb" und "testing". Persönlich denke ich, dass "Reverb" für die Erfahrungswiedergabe erforderlich ist und entweder "tf" oder "jax" erforderlich ist. Speziell für TensorFlow wird "tf-nightly == 2.4.0.dev20200708" angegeben, und die Kompatibilität der Umgebung wird verworfen. Installieren Sie es daher in einer ruhigen und sauberen Umgebung mit der Acme-Installationsoption. empfehlen.
Durch die Angabe von "envs" wird die Umgebung für erweitertes Lernen wie "dm-control" und "gym" installiert. ("dm-control" erfordert eine Lizenz von MuJoCo)
Installation TensorFlow-Version
pip install dm-acme[reverb,tf]
Installation der JAX-Version
pip install dm-acme[reverb,jax]
Sie können eine Umgebung verwenden, die der DeepMind Environment API entspricht. Der große Unterschied zu "gym.Env" besteht darin, dass Mitgliedsfunktionen wie "step (action)" eine eindeutige Klasse namens "dm_env.TimeStep" anstelle von "tuple" zurückgeben. In der TimeStep-Klasse befinden sich die Schritte (Übergänge) zusätzlich zu den beobachteten Werten und Belohnungen am Anfang (StepType.FIRST
), in der Mitte ( StepType.MID
) und am Ende (StepType.LAST
) der Episode. Es enthält auch Informationen darüber, um welches es sich handelt.
Acme.wrappers.GymWrapper
wird für gym.Env
bereitgestellt, und Sie können es mit Acme verwenden, indem Sie es einfach einwickeln.
gym.Verwendung von Env
import acme
import gym
env = acme.wrappers.GymWrapper(gym.make("MountainCarContinuous-v0"))
Die implementierten Agenten finden Sie unter hier. Ab August 2020 stehen 11 Agenten zur Verfügung.
Diese Implementierungen werden durch Erweitern von "acme.agents.agent.Agent" implementiert. Wenn Sie also einen benutzerdefinierten Algorithmus implementieren, ist es möglich (und wahrscheinlich), ihn auch zu erweitern.
Die oben bereitgestellten Agenten sind DeepMinds Deep-Learning-Bibliotheken Sonnet (TensorFlow) oder Haiku. dm-haiku) (JAX) wird verwendet. Um das interne Netzwerk des implementierten Agenten zu definieren (soweit ich es kurz überprüft habe), wird daher angenommen, dass ein Deep-Learning-Modell von Sonnet oder Haiku erstellt und übergeben wird. (Natürlich hat es nichts mit der Schnittstelle zu tun, daher spielt es keine Rolle, wenn sie unabhängig implementiert wird.)
Acme bietet ein Schnellstart-Notizbuch (https://github.com/deepmind/acme/blob/master/examples/quickstart.ipynb). Wenn Sie eine Lizenz für MuJoCo haben, können Sie auch Tutorial Notebook verwenden. Sie können auch tutorial.ipynb) ausprobieren.
Wir untersuchten die Umrisse von Acme, einem von DeepMind veröffentlichten Framework für verbessertes Lernen. Es wird derselbe Code bereitgestellt, den Front-Line-Unternehmen normalerweise verwenden (wenn auch teilweise), was sehr interessant ist, einschließlich zukünftiger Entwicklungen.
Die Version von TensorFlow ist jedoch nachts auf einen bestimmten Build festgelegt, und es scheint, dass die Verwendung für allgemeine Benutzer etwas schwierig ist.
Ich möchte die Situation weiterhin beobachten.
Code zum Anzeigen der Gym-Umgebung auf einem Notebook, z. B. der in [Quickstart] neu geschriebene Code (https://github.com/deepmind/acme/blob/master/examples/quickstart.ipynb) Wird als Gym-Notebook-Wrapper verpackt und bereitgestellt. (Erklärender Artikel) Wenn Sie daran interessiert sind, verwenden Sie es bitte.
Recommended Posts