Angewandtes Verstärkungslernen
Ich beschäftige mich nun schon seit ein paar Jahren mit verstärktem Lernen und Entscheidungsfindung. Eines der schwierigsten Dinge, auf die ich gestoßen bin, hängt nicht unbedingt mit den Konzepten zusammen, sondern damit, wie diese Konzepte erklärt wurden. Für mich geschieht Lernen dann, wenn man in der Lage ist, eine Verbindung zu den vermittelten Konzepten herzustellen. Hierzu ist häufig eine intuitive Erklärung erforderlich, und wahrscheinlich hilft ein praktischer Ansatz dabei, dieses Verständnis aufzubauen.
Mein Ziel für dieses Repository ist es, gemeinsam mit der Community eine Ressource zu schaffen, die Neulingen hilft, Reinforcement Learning auf intuitive Weise zu verstehen. Betrachten Sie, was Sie hier sehen, meinen ersten Versuch, einige dieser Konzepte so klar und einfach zu vermitteln, wie ich sie nur erklären kann.
Wenn Sie zusammenarbeiten möchten, sei es ein Tippfehler oder eine vollständige Ergänzung des Textes, vielleicht eine Korrektur eines Notizbuchs oder ein ganz neues Notizbuch, können Sie gerne Ihr Problem und/oder Ihre Pull-Anfrage senden, um die Dinge zu verbessern. Solange Ihre Pull-Anfrage mit dem Ziel des Repositorys übereinstimmt, ist es sehr wahrscheinlich, dass wir zusammenführen. Ich bin nicht der beste Lehrer oder Forscher für Reinforcement Learning, aber ich glaube, dass wir Reinforcement Learning und Entscheidungsfindung für jedermann leicht verständlich machen können. Na ja, zumindest einfacher.
Inhaltsverzeichnis
- Notebook-Installation
- Git installieren
- Installieren Sie Docker
- Führen Sie Notebooks aus
- TL;DR-Version
- Eine etwas detailliertere Version:
- Öffnen Sie die Notizbücher in Ihrem Browser:
- Öffnen Sie TensorBoard unter der folgenden Adresse:
- Docker-Tipps
- Teil I: Einführung
- 1. Einführung in die Entscheidungsfindung
- 1.1 Entscheidungsfindung
- 1.2 Weiterführende Literatur
- Teil II: Reinforcement Learning und Entscheidungsfindung
- 2. Sequentielle Entscheidungen
- 2.1 Modellierung von Entscheidungsproblemen
- 2.2 Lösungsdarstellung
- 2.3 Einfaches Sequenzproblem
- 2.4 Etwas komplexere Probleme
- 2.5 Lösungen bewerten
- 2.6 Lösungen verbessern
- 2.7 Optimale Lösungen finden
- 2.8 Verbesserung der Richtlinieniteration
- 2.9 Übungen
- 2.10 Weiterführende Literatur
- 3. Deterministische und stochastische Aktionen
- 3.1 Wir können die Welt nicht perfekt kontrollieren
- 3.2 Umgang mit Stochastizität
- 3.3 Übungen
- 3.4 Weiterführende Literatur
- 4. Bekannte und unbekannte Umgebungen
- 4.1 Was ist, wenn wir kein Modell der Umwelt haben?
- 4.2 Das Bedürfnis zu erforschen
- 4.3 Was soll ich lernen?
- 4.4 Was tun mit dem, was wir lernen?
- 4.5 Fügen Sie Ihren Aktionen kleine Zufälligkeiten hinzu
- 4.6 Übungen
- 4.7 Weiterführende Literatur
- Teil III: Entscheidungsfindung bei schwierigen Problemen
- 5. Diskrete und kontinuierliche Zustände
- 5.1 Zu groß, um im Speicher gespeichert zu werden
- 5.2 Diskretisierung des Zustandsraums
- 5.3 Verwendung der Funktionsnäherung
- 5.4 Übungen
- 5.5 Weiterführende Literatur
- 6. Diskrete und kontinuierliche Aktionen
- 6.1 Kontinuierlicher Aktionsraum
- 6.2 Diskretisierung des Handlungsraums
- 6.3 Verwendung der Funktionsnäherung
- 6.4 Suche nach der Police
- 6.5 Übungen
- 6.6 Weiterführende Literatur
- 7. Beobachtbare und teilweise beobachtbare Zustände
- 7.1 Ist das, was wir sehen, was es ist?
- 7.2 Zustandsschätzung
- 7.3 Kontrolle in teilweise beobachtbaren Umgebungen
- 7.4 Weiterführende Literatur
- Teil IV: Mehrere Entscheidungsträger
- 8. Einzel- und Mehrfachagenten
- 8.1 Agenten mit gleichen Zielen
- 8.2 Was passiert, wenn andere Agenten im Spiel sind?
- 8.3 Weiterführende Literatur
- 9. Kooperative und gegnerische Agenten
- 9.1 Agenten mit widersprüchlichen Zielen
- 9.2 Agententeams mit widersprüchlichen Zielen
- 9.3 Weiterführende Literatur
- Teil V: Menschliche Entscheidungsfindung und darüber hinaus
- 10. Entscheidungsfindung und Menschen
- 10.1 Ähnlichkeiten zwischen den besprochenen Methoden und dem Menschen
- 10.2 Unterschiede zwischen besprochenen Methoden und Menschen
- 10.3 Weiterführende Literatur
- 11. Fazit
- 12. Empfohlene Bücher
- 12. Empfohlene Kurse
Notebook-Installation
Dieses Repository enthält Jupyter-Notizbücher, die Sie zusammen mit den Vorlesungen verfolgen können. Es gibt jedoch mehrere Pakete und Anwendungen, die installiert werden müssen. Um Ihnen die Arbeit zu erleichtern, habe ich etwas länger gebraucht, um eine reproduzierbare Umgebung einzurichten, die Sie zum Mitverfolgen verwenden können.
Git installieren
Befolgen Sie die Anweisungen unter (https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
Installieren Sie Docker
Befolgen Sie die Anweisungen unter (https://docs.docker.com/engine/getstarted/step_one/#step-2-install-docker)
Führen Sie Notebooks aus
TL;DR-Version
-
git clone [email protected]:mimoralea/applied-reinforcement-learning.git && cd applied-reinforcement-learning
-
docker pull mimoralea/openai-gym:v1
-
docker run -it --rm -p 8888:8888 -p 6006:6006 -v $PWD/notebooks/:/mnt/notebooks/ mimoralea/openai-gym:v1
Eine etwas detailliertere Version:
- Klonen Sie das Repository an einen gewünschten Ort (z. B.
git clone [email protected]:mimoralea/applied-reinforcement-learning.git ~/Projects/applied-reinforcement-learning
) - Geben Sie in das Repository-Verzeichnis ein (z. B.
cd ~/Projects/applied-reinforcement-learning
). - Entweder selbst erstellen oder den bereits erstellten Docker-Container abrufen:
3.1. Um es zu erstellen, verwenden Sie den folgenden Befehl: docker build -t mimoralea/openai-gym:v1 .
3.2. Um es vom Docker-Hub abzurufen, verwenden Sie: docker pull mimoralea/openai-gym:v1
- Führen Sie den Container aus:
docker run -it --rm -p 8888:8888 -p 6006:6006 -v $PWD/notebooks/:/mnt/notebooks/ mimoralea/openai-gym:v1
Öffnen Sie die Notizbücher in Ihrem Browser:
-
http://localhost:8888
(oder folgen Sie dem Link, der aus dem Ausführungsbefehl stammt und das Token enthält)
Öffnen Sie TensorBoard unter der folgenden Adresse:
Dies wird Ihnen helfen, das neuronale Netzwerk im Unterricht mit Funktionsnäherung zu visualisieren.
Docker-Tipps
- Wenn Sie auf eine Bash-Sitzung eines laufenden Containers zugreifen möchten, gehen Sie wie folgt vor:
** docker ps
# zeigt Ihnen aktuell ausgeführte Container an – notieren Sie sich die ID des Containers, auf den Sie zugreifen möchten
** docker exec --user root -it c3fbc82f1b49 /bin/bash
# in diesem Fall ist c3fbc82f1b49 die ID - Wenn Sie eine neue Containerinstanz direkt in Bash starten möchten (ohne Jupyter oder TensorBoard auszuführen)
** docker run -it --rm mimoralea/openai-gym:v1 /bin/bash
# Dadurch wird die Bash-Sitzung als Notebook-Benutzer ausgeführt
** docker run --user root -e GRANT_SUDO=yes -it --rm mimoralea/openai-gym:v1 /bin/bash
# Dadurch wird die Bash-Sitzung als Root ausgeführt