Neuronale Netzwerke in der RL-Programmierung: Funktionen approximieren
Inhaltsverzeichnis
- Einführung
- Warum neuronale Netzwerke verwenden?
- 2.1 Verwendung von Tabellen und Funktionsübertragung
- 2.2 Aufbau von neuronalen Netzwerken
- Zwei Arten von neuronalen Netzwerken und ihre Komplementarität
- 3.1 Der Akteur
- 3.2 Der Evaluierer
- Herausforderungen bei der Auswahl der Netzwerkarchitektur
- 4.1 Die Rolle der Aktivierungsfunktionen
- 4.2 Anzahl der versteckten Schichten und Neuronen
- 4.3 Interne Struktur des Netzwerks
- Der Policy-Gradient-Algorithmus
- 5.1 Verwendung einer zufälligen Strategie
- 5.2 Optimierung der zukünftigen Belohnung
- 5.3 Begrenzungen des Policy-Gradient-Algorithmus
- Der Wertbasierte Algorithmus
- 6.1 Verwendung eines Q-Tabellenansatzes
- 6.2 Nutzung des Bellman-Gleichungskonzepts
- Der Actor-Critic-Algorithmus
- 7.1 Kombination von Aktionsauswahl und Bewertung
- 7.2 Vorteile des Actor-Critic-Algorithmus
- Anwendung von neuronalen Netzwerken in der Praxis: das Beispiel des Inverted Pendulum
- Bereitstellung des Algorithmus auf Hardware
- 9.1 Offline-Lernen und statische Strategien
- 9.2 Kontinuierliches Lernen und Anpassung an Umgebungsveränderungen
- Fazit
👨💻 Warum neuronale Netzwerke verwenden?
In unserer vorherigen Videopräsentation konzentrierten wir uns hauptsächlich auf Umgebungseinstellungen und wie Belohnungen in der Umgebung verwendet werden können, um das Verhalten eines KI-Agenten zu lenken. In diesem Video werden wir uns darauf konzentrieren, wie wir den Agenten selbst einrichten können, insbesondere auf die letzten drei Schritte des RL-Arbeitsablaufs. Es würde mehrere Semester dauern, um diese Schritte vollständig abzudecken, aber keine Sorge - das ist nicht das Ziel dieses 17-minütigen Videos. Stattdessen möchten wir einige hochrangige Themen behandeln, um Ihnen einen groben Überblick über diese Schritte zu geben, damit Sie besser mit anderen vollständigen Kursen lernen können. In diesem Video werden wir daher die folgenden beiden Hauptfragen behandeln: Warum verwenden wir neuronale Netzwerke zur Darstellung von Funktionen anstelle von Tabellen oder Transferfunktionen? Warum brauchen wir zwei neuronale Netzwerke und wie ergänzen sie sich in einer leistungsstarken Methode namens "Actor-Critic"? Lassen Sie uns anfangen.
💡 Warum neuronale Netzwerke verwenden?
Neuronale Netzwerke sind eine Gruppe von Knoten oder künstlichen Neuronen, die miteinander verbunden sind und als universelle Funktionsapproximatoren dienen. Mit der richtigen Kombination von Knoten und Verbindungen können wir ein Netzwerk einrichten, das jede Eingabe-Ausgabe-Beziehung modellieren kann. Das ist sehr vorteilhaft für uns, denn wir können beispielsweise hunderte von Pixelwerten aus einem Robotervisionssystem als Eingabe für diese Funktion verwenden, während die Ausgabe Anweisungen für die Steuerung der Roboterarme und Beine sein kann. Obwohl diese Funktion sehr komplex sein kann, wissen wir, dass es irgendeine Art von neuronalem Netzwerk gibt, das sie erreichen kann. Falls Sie mit den mathematischen Grundlagen neuronaler Netzwerke nicht vertraut sind, empfehle ich Ihnen dringend die vierteilige Videoserie von 3Blue1Brown. Er erklärt die interne Funktionsweise des Netzwerks sehr gut, daher werde ich in diesem Video nicht weiter darauf eingehen. Aber ich möchte einige Punkte betonen. Auf der linken Seite haben wir die Eingabeknoten, die jedem Eingang der Funktion entsprechen. Auf der rechten Seite haben wir die Ausgabeknoten. In der Mitte haben wir eine Schicht von Knoten, die als "versteckte Schicht" bezeichnet wird. Das Netzwerk hat 2 Eingänge, 2 Ausgänge und 2 versteckte Schichten, von denen jede 3 Knoten hat. Für ein vollständig verbundenes Netzwerk gibt es einen Pfeil oder eine gewichtete Verbindung von jedem Eingabeknoten zu jedem Knoten in der nächsten Schicht und von diesen Knoten zu den Knoten in der nächsten Schicht usw., bis zu den Ausgabeknoten. Der Wert eines Knotens ergibt sich aus der Summe der Produkte der Werte jedes Eingabeknotens mit ihrem jeweiligen Gewichtsfaktor, zuzüglich einer Versatzgröße. Wir können diese Berechnung für jeden Knoten in der Schicht durchführen und sie als lineares Gleichungssystem in kompakter Matrizengestalt darstellen. Wenn wir die Werte der Knoten auf diese Weise einfach berechnen und sie als Eingabewerte in die nächste Schicht weitergeben, um die gleiche lineare Operation auszuführen und dann in die Ausgabeschicht einzugeben, stoßen wir auf ein Problem. Wie kann ein Stapel linearer Gleichungen als universeller Funktionsapproximator dienen? Insbesondere wie kann er eine nichtlineare Funktion darstellen? Das liegt daran, dass ich einen Schritt übersprungen habe, der wahrscheinlich einer der wichtigsten Aspekte künstlicher neuronaler Netzwerke ist. Nachdem die Werte der Knoten berechnet wurden, muss ein Aktivierungsfunktion auf sie angewendet werden, um die Werte der Knoten auf irgendeine Weise zu verändern. Zwei häufig verwendete Aktivierungsfunktionen sind die Sigmoid-Funktion und die ReLU-Funktion. Ersteres komprimiert die Node-Werte auf den Bereich zwischen 0 und 1, während letzteres alle negativen Node-Werte auf null setzt. Es gibt viele verschiedene Aktivierungsfunktionen, aber sie haben alle gemeinsam, dass sie nichtlinear sind. Das ist entscheidend für den Aufbau eines Netzwerks, das jede Funktion approximieren kann. Warum das so ist, werde ich an dieser Stelle nicht weiter erläutern, aber ich empfehle Ihnen dringend das Paper von Brendon Fortuner und Michael Neilson zu diesem Thema. Sie zeigen dies sehr gut anhand der ReLU- und Sigmoid-Aktivierungsfunktionen. Ich habe in der Beschreibung einen Link zu ihren Blogs hinzugefügt. Ok, um das Ganze jetzt zusammenzufassen: Wir versuchen, eine Funktion zu finden, die eine große Anzahl von Beobachtungen akzeptiert und Daten in eine Reihe von Aktionen umwandelt, um eine nichtlineare Umgebung zu steuern. Aufgrund der meist zu komplexen Struktur dieser Funktion können wir sie nicht direkt lösen. Daher möchten wir ein neuronales Netzwerk verwenden, um es anzunähern, wobei das Netzwerk mit der Zeit lernt. Es mag sehr einfach klingen, nur ein beliebiges Netzwerk einzusetzen und dann mithilfe von Verstärkungslernalgorithmen die richtige Kombination von Gewichtungen und Versatz zu finden. Aber wie üblich ist dies nicht der Fall. Wir müssen im Voraus einige Entscheidungen über das neuronale Netzwerk treffen, um sicherzustellen, dass es ausreichend komplex ist, um die von uns gesuchte Funktion zu approximieren, aber nicht so komplex, dass es das Training zu schwierig oder zu langsam macht. Zum Beispiel, wie wir gesehen haben, müssen wir eine Aktivierungsfunktion, die Anzahl der versteckten Schichten und die Anzahl der Neuronen in jeder Schicht auswählen. Aber darüber hinaus können wir auch die interne Struktur des Netzwerks steuern. Sollte es wie das vollständig verbundene Netzwerk aussehen, das ich gezeichnet habe, oder sollte es bestimmte Schichten beim Verbinden überspringen, wie dies bei Residual Neural Networks der Fall ist? Sollte es internes Gedächtnis durch rekursive neuronale Netzwerke haben? Sollten die Neuronengruppen wie bei konvolutionellen neuronalen Netzen zusammenarbeiten? Und so weiter... Wir haben viele Optionen, aber wie bei anderen Steuerungstechniken gibt es keinen richtigen Weg. In vielen Fällen kann es hilfreich sein, mit einer Netzwerkarchitektur zu beginnen, die bereits erfolgreich mit ähnlichen Problemtypen umgegangen ist, und dann entsprechende Anpassungen vorzunehmen. Ich habe die ganze Zeit über von der Verwendung dieser neuronalen Netzwerke zur Darstellung der Politik in einem Agenten gesprochen, aber was bedeutet das eigentlich? Werfen wir einen Blick auf eine generische Beschreibung von hochrangigen Kategorien von Verstärkungslernalgorithmen: policy-based, value-based und actor-critic. In der vereinfachten Darstellung, die ich hier gegeben habe, glaube ich, dass die policy-based-Ansätze auf der obersten Ebene Sinn ergeben, da wir versuchen, ein neuronales Netzwerk zu trainieren, das Zustandsbeobachtungen erhält und Aktionen ausgibt, ähnlich wie ein Regler in einem Regelungssystem. Wir nennen dieses neuronale Netzwerk den "Akteur", da es direkt dem Agenten sagt, was zu tun ist. Das Ganze sieht so einfach aus, und die aktuell beste Methode zur Lösung dieser Probleme wird tatsächlich als Proximal Policy Optimization bezeichnet. Aber wie immer ist die Realität nicht so einfach. Wir müssen einige Entscheidungen über das neuronale Netzwerk im Voraus treffen, um sicherzustellen, dass es komplex genug ist, um die Zielfunktion anzunähern, und dann müssen wir es mit Verstärkungslernalgorithmen nutzen, um die richtigen Kombinationen von Gewichtungen und Versatz zu finden, und dann sind wir fertig.
Highlights
- ● Neuronale Netzwerke werden verwendet, um Funktionen zu approximieren.
- ● Aktivierungsfunktionen sind entscheidend für die Nichtlinearität des Netzwerks.
- ● Policy-Gradient-, Wert-basierte und Actor-Critic-Algorithmen sind Kategorien von RL-Algorithmen.
- ● Der Actor-Critic-Algorithmus kombiniert Aktionsauswahl und Bewertung.
- ● Die Wahl der Netzwerkarchitektur in RL ist komplex und erfordert Abwägungen.
- ● Die Bereitstellung des RL-Algorithmus auf Hardware ermöglicht kontinuierliches Lernen und Anpassung an Umgebungsänderungen.
FAQ
Q: Was sind die Vorteile von neuronalen Netzwerken gegenüber Tabellen und Funktionsübertragung in der RL-Programmierung?
A: Neuronale Netzwerke können komplexe Funktionen approximieren und ermöglichen die Verarbeitung großer Datenmengen, während Tabellen und Funktionen in der Regel begrenzt sind und schwierig sein können, für komplexe Umgebungen korrekte Funktionen zu erstellen.
Q: Warum sind Aktivierungsfunktionen wichtig in neuronalen Netzwerken?
A: Aktivierungsfunktionen ermöglichen es, nichtlineare Beziehungen zwischen Eingabe- und Ausgabewerten zu modellieren, was für die Approximation komplexer Funktionen entscheidend ist.
Q: Was ist der Unterschied zwischen dem Policy-Gradient-Algorithmus, dem Wert-basierten Algorithmus und dem Actor-Critic-Algorithmus?
A: Der Policy-Gradient-Algorithmus konzentriert sich auf strategiebasiertes Lernen und die Optimierung zukünftiger Belohnungen. Der wertbasierte Algorithmus verwendet eine Q-Tabelle, um Aktionen basierend auf ihrem erwarteten Wert auszuwählen. Der Actor-Critic-Algorithmus kombiniert die Auswahl von Aktionen und die Bewertung der Aktionen, um das Lernen zu verbessern.
Q: Wie kann ich die richtige Netzwerkarchitektur für mein RL-Problem auswählen?
A: Die Auswahl der Netzwerkarchitektur erfordert Abwägungen zwischen Komplexität und Trainierbarkeit. Es kann hilfreich sein, mit einem existierenden Netzwerk zu beginnen, das ähnliche Probleme gelöst hat, und dann anzupassen.
Q: Was sind die Vorteile der Bereitstellung eines RL-Algorithmus auf Hardware?
A: Die kontinuierliche Lernfähigkeit und Anpassungsfähigkeit an Umgebungsveränderungen ist entscheidend für Problemstellungen, bei denen die Umgebung schwer genau zu modellieren ist oder sich im Laufe der Zeit verändert.