-
Hintergrund
-
Viele Roboter sind programmiert, um einen oder mehrere Endeffektoren zu verwenden, um ein oder mehrere Objekte zu manipulieren. Ein Roboter kann beispielsweise einen Endeffektor verwenden, um eine Kraft auf ein Objekt aufzubringen und eine Bewegung dieses Objekts zu bewirken. Ein Roboter kann beispielsweise einen greifenden Endeffektor oder einen anderen Endeffektor verwenden, um ein Objekt zu verlagern, ohne notwendigerweise dieses Objekt zu ergreifen. Ein Roboter kann beispielsweise auch einen greifenden Endeffektor wie z. B. einen „klemmenden“ Greifer oder „ingressiven“ Greifer (z. B. der physikalisch in ein Objekt unter Verwendung von Stiften, Nadeln usw. eindringt) verwenden, um ein Objekt von einem ersten Ort aufzugreifen, das Objekt zu einem zweiten Ort zu bewegen, und das Objekt am zweiten Ort abzusetzen.
-
Zum Schutz als Gebrauchsmuster und der Gegenstand des Gebrauchsmusters sind gemäß den Anforderungen der Gebrauchsmusterverordnung nur Geräte, wie in den beigefügten Ansprüchen definiert, aber keine Verfahren. Falls in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich zum Erläutern des Geräts oder der Geräte, für die Schutz mit den beigefügten Ansprüchen angestrebt wird.
-
Zusammenfassung
-
Die nachstehend beschriebenen Implementierungen schaffen Verbesserungen an der Betriebsleistung von einem oder mehreren Robotern, wenn sie eine oder mehrere Aufgaben ausführen. Die Leistung des einen oder der mehreren Roboter wird unter Verwendung eines Verstärkungslernprozesses verbessert, wie hier beschrieben, der das schnelle Lernen von optimalen Methoden oder Richtlinien zum Durchführen von speziellen physikalischen Aufgaben unter Verwendung des einen oder der mehreren Roboter erleichtert. Die Roboter können die gelernten Richtlinien verwenden, um Effizienzsteigerungen bei der Durchführung der Aufgaben zu erlangen. Physikalische Aufgaben können beispielsweise durch die Roboter schneller und/oder mit weniger elektrischem Leistungsverbrauch durchgeführt werden, wenn der beschriebene Verstärkungslernprozess stattfindet. Solche physikalischen Aufgaben können zusätzlich oder alternativ sicherer durchgeführt werden oder können weiterhin innerhalb definierter Sicherheitsparameter ausgeführt werden, wenn sich andere Aspekte der Leistung der Roboter mit dem Lernprozess verbessern.
-
Wie aus der folgenden Offenbarung ersichtlich ist, kann der Lernprozess iterativ sein. Der eine oder die mehreren Roboter können gemäß jeder neuen verbesserten Iteration der Richtlinie/Methode für eine spezielle Aufgabe arbeiten, wenn die neuen Iterationen an das Rechengerät (die Rechengeräte) weitergeleitet werden, die für das Steuern der physikalischen Handlungen der Roboter verantwortlich sind. An sich können die vorstehend angeführten Effizienzsteigerungen hinsichtlich der durch die Roboter durchgeführten physikalischen Handlungen häufig stattfinden, wenn der Lernprozess fortfährt. Insgesamt kann die Rate, mit der sich die Leistung der Roboter verbessert, zusammen mit den resultierenden Effizienzsteigerungen besonders schnell sein und kann dazu führen, dass die Roboter physikalische Aufgaben in einer optimalen Weise in weniger Zeit als mit anderen Lerntechniken ausführen. Es ist zu erkennen, dass dies zu den vorstehend erwähnten Vorteilen führt, wie z. B. verbesserter Leistungsverbrauch an den Robotern, die in einer früheren Stufe erfahren werden. Dies wird nachstehend beispielsweise als Teil der Erläuterung einer Entkopplung zwischen Trainings-Threads und Erfahrungs-Threads für den einen oder die mehreren Roboter in verschiedenen Computerprozessoren beschrieben. Insbesondere wird erläutert, dass das Parallelisieren eines Trainingsalgorithmus über mehrere Roboter, die ihre Richtlinienaktualisierungen asynchron zusammenfassen, zu einem neuronalen Richtliniennetz führt, das nach einer gegebenen Anzahl von Trainingsiterationen genauer und/oder robuster ist.
-
Das Ziel beim Verstärkungslernen besteht darin, einen Agenten zu steuern, der versucht, eine Belohnungsfunktion zu maximieren, die im Zusammenhang mit einer Roboterfähigkeit (hier auch als Aufgabe bezeichnet) eine vom Benutzer bereitgestellte Definition dessen bezeichnet, was der Roboter durchzuführen versuchen sollte. Im Zustand xt in der Zeit t wählt der Agent die Handlung ut gemäß seiner Richtlinie π(ut|xt) und führt diese aus, geht in einen neuen Zustand xt gemäß der Dynamik des Roboters p(xt|xt,ut) über und empfängt eine Belohnung r(xt,ut). Das Ziel des Verstärkungslernens besteht darin, die optimale Richtlinie π * zu finden, die die erwartete Summe von Belohnungen von einer anfänglichen Zustandsverteilung maximiert. Die Belohnung wird auf der Basis der Belohnungsfunktion bestimmt, die, wie vorstehend erwähnt, von der durchzuführenden Roboteraufgabe abhängt. Folglich strebt das Verstärkungslernen im Roboterzusammenhang an, eine optimale Richtlinie für die Durchführung einer gegebenen Roboteraufgabe zu lernen.
-
Die hier offenbarten Implementierungen verwenden tiefes Verstärkungslernen, um ein Richtliniennetz zu trainieren, das eine Richtlinie zum Bestimmen einer Roboterhandlung auf der Basis eines aktuellen Zustandes parametrisiert. Der aktuelle Zustand kann den Zustand des Roboters (z. B. Winkel von Gelenken des Roboters, Position(en) von Endeffektor(en) des Roboters und/oder ihre Zeitableitungen) und/oder den aktuellen Zustand von einer oder mehreren Komponenten in der Umgebung des Roboters (z. B. einen aktuellen Zustand von Sensor(en) in der Umgebung des Roboters, aktuelle Stellung(en) von Zielobjekt(en) in der Umgebung des Roboters) umfassen. Das Richtliniennetz kann ein neuronales Netz wie z. B. ein tiefes neuronales Netz sein. Das Richtliniennetz kann beispielsweise ein neuronales Netz sein, das den aktuellen Zustand als Eingabe annimmt und das auf der Basis der Eingabe und von gelernten Richtlinienparametern des neuronalen Netzes eine Ausgabe erzeugt, die eine zu implementierende Handlung angibt. Die Ausgabe kann beispielsweise Geschwindigkeitsbefehle, die zu jedem der Aktuatoren des Roboters geliefert werden sollen, oder Drehmomente, die auf jeden der Aktuatoren des Roboters angewendet werden sollen, angeben. Ein Roboter kann ein neuronales Richtliniennetz durch Anwenden eines aktuellen Zustandes auf das neuronale Richtliniennetz in jedem Steuerzyklus des Roboters, Erzeugen einer Ausgabe durch Verarbeiten des aktuellen Zustandes unter Verwendung des neuronalen Richtliniennetzes und Implementieren von Steuerbefehlen, um die durch die Ausgabe angegebene Handlung zu bewirken, verwenden. Der Zustand nach der Implementierung der Steuerbefehle kann dann als aktueller Zustand im nächsten Steuerzyklus verwendet werden.
-
Die hier offenbarten Implementierungen sammeln Erfahrungsdaten von mehreren Robotern, die gleichzeitig arbeiten. Jeder Roboter erzeugt Instanzen von Erfahrungsdaten während der iterativen Durchführung von Episoden, die jeweils Untersuchungen der Durchführung einer Ausgabe sind, und die jeweils auf der Basis des Richtliniennetzes und der aktuellen Richtlinienparameter für das Richtliniennetz während der Episode geführt werden. Während einer Episode kann ein Roboter beispielsweise eine Instanz von Erfahrungsdaten in jedem Steuerzyklus von mehreren Steuerzyklen des Roboters während der Episode erzeugen. Jede Instanz von Erfahrungsdaten kann einen entsprechenden aktuellen/Anfangszustand, anschließenden Zustand, in den vom Anfangszustand übergegangen wird, eine Roboterhandlung, die ausgeführt wird, um vom Anfangszustand in den anschließenden Zustand überzugehen (wobei die Handlung auf der Anwendung des Anfangszustandes auf das Richtliniennetz und seinen aktuellen Richtlinienparametern basiert) und optional eine Belohnung für die Handlung (wie auf der Basis der Belohnungsfunktion bestimmt) angeben. Die gesammelten Erfahrungsdaten werden während der Episoden erzeugt und werden verwendet, um das Richtliniennetz durch iteratives Aktualisieren von Richtlinienparameteren des Richtliniennetzes auf der Basis eines Stapels von gesammelten Erfahrungsdaten zu trainieren. Vor der Durchführung von jeder von mehreren Episoden, die durch die Roboter durchgeführt werden, können ferner die aktuellen aktualisierten Richtlinienparameter für die Nutzung bei der Durchführung der Episode bereitgestellt (oder abgerufen) werden. Jeder Roboter kann beispielsweise vor der Durchführung von jeder seiner Episoden die aktualisierten Richtlinienparameter von einer jüngsten Iteration des Trainings erhalten und die aktualisierten Richtlinienparameter bei der Durchführung der Episode verwenden. Folglich basieren die Erfahrungsdaten von jeder Episode auf dem Richtliniennetz mit aktualisierten Richtlinienparametern von einer jüngsten (relativ zum Start der Episode) Iteration des Trainings.
-
In vielen Implementierungen ist das Training des Richtliniennetzes asynchron relativ zur Erzeugung und Sammlung der Erfahrungsdaten von den mehreren Robotern. Das heißt, ein Thread (Threads), die das Richtliniennetz trainieren/aktualisieren, werden von dem Thread (den Threads) abgekoppelt, die die Erfahrungsdaten von den mehreren Robotern erzeugen und/oder sammeln. Die Trainings/Aktualisierungs-Threads können beispielsweise auf einem oder mehreren Prozessoren arbeiten und die Erfahrungs-Threads können auf einem oder mehreren zusätzlichen Prozessoren arbeiten, die von dem einen oder den mehreren Prozessoren separat sind, die die Trainings/Aktualisierungs-Threads betreiben. Die Entkopplung zwischen den Trainings- und Erfahrungs-Threads kann sicherstellen, dass eine Differenz der Trainingsgeschwindigkeit und Erfahrungssammelgeschwindigkeit Steuerprogramme der Roboter nicht anhält, die die Erfahrungsdaten erzeugen, die häufig Steuerungen mit festen Frequenzen senden müssen. Mit anderen Worten, die Entkopplung kann ermöglichen, dass die Erfahrungsdatensammlung weiterhin durch entsprechende Erfahrungs-Threads stattfindet, ohne diese Threads für Trainingszwecke anzuhalten. Überdies ermöglicht die Entkopplung, dass die Trainings-Threads parallel mit den Erfahrungs-Threads arbeiten, asynchron und iterativ Richtlinienparameter für das Richtliniennetz aktualisieren und iterativ aktualisierte Richtlinienparameter für Episoden bereitstellen. In vielen Implementierungen kann (können) der Trainings-Thread (die Trainings-Threads) eine Frequenz (z. B. 60 Hz) betreiben, die größer ist als eine oder mehrere (z. B. alle) der Steuerfrequenzen der Roboter (z. B. 20 Hz). In diesen Implementierungen können Trainingszeiten der realen Welt (z. B. Uhr an der Wand) verringert werden (relativ zu Techniken, die keine Erfahrungsdaten von mehreren Robotern verwenden) durch Erhalten von Erfahrungsdaten von mehreren Robotern, die parallel arbeiten, und durch asynchrones Durchführen des Trainings in (einem) separaten Thread (Threads). Das Training kann beispielsweise ohne irgendwelche (oder ohne weniger) Verzögerungen stattfinden, die daran liegen, dass keine neuen Erfahrungsdaten in einem Puffer zur Verfügung stehen. Die separaten Threads können beispielsweise auch den Bedarf verhindern, die Erfahrungsdatensammlung anzuhalten, um zu ermöglichen, dass das Training stattfindet, oder umgekehrt.
-
Überdies können die Verwendung von Erfahrungsdaten von mehreren Robotern und die Entkopplung der Trainings- und Erfahrungssammlungs-Threads zu einem Modell führen, das nach einer gegebenen Anzahl von Trainingsiterationen genauer und/oder robuster ist, als wenn solche Techniken nicht verwendet werden würden. Dies kann beispielsweise an Erfahrungsdaten liegen, die durch einen Roboter in einer gegebenen Episode erzeugt werden, die auf Richtlinienparametern basieren, die aktualisiert werden sowohl auf der Basis von vergangenen Instanzen von Erfahrungsdaten vom Roboter als auch vergangenen Instanzen von Erfahrungsdaten von (einem) anderen Roboter(n), die parallel arbeiten. In einer dritten Episode eines Roboters können beispielsweise die Richtlinienparameter, die in der dritten Episode verwendet werden, nicht nur auf Erfahrungsdaten von der ersten und/oder der zweiten Episode des Roboters, sondern auch auf Erfahrungsdaten von einer ersten und/oder zweiten Episode eines Roboters (von Robotern), die parallel arbeiten, basieren. In dieser Weise basieren die in der dritten Episode erzeugten Erfahrungsdaten auf dem Richtliniennetz mit aktualisierten Richtlinienparametern, die angesichts der Erfahrungsdaten von mehr als nur zwei vorherigen Episoden trainiert werden, die bewirken können, dass Erfahrungsdaten in der dritten Episode erzeugt werden, die zu einer schnelleren Konvergenz führen, als wenn die Aktualisierungsrichtlinienparameter nur angesichts von Erfahrungsdaten von zwei vorherigen Episoden trainiert werden würden.
-
In verschiedenen hier beschriebenen Implementierungen können einer oder mehrere der mehreren Roboter, die Erfahrungsdaten erzeugen, asynchron relativ zueinander arbeiten und/oder die aktualisierten Richtlinienparameter können vor der Episodendurchführung asynchron zu den Robotern geliefert (oder von diesen abgerufen) werden. In dieser Weise können aktualisierte Richtlinienparameter, die zu jedem von mehreren Robotern geliefert werden, relativ zueinander variieren. Zu einer ersten Zeit kann beispielsweise ein erster Roboter aktualisierte Richtlinienparameter für die Verwendung in einer durch den ersten Roboter durchzuführenden Episode erhalten. Zur ersten Zeit kann der zweite Roboter immer noch eine vorherige Episode durchführen. Zu einer zweiten Zeit im Anschluss an die erste Zeit kann der zweite Roboter dann weiter aktualisierte Richtlinienparameter für die Verwendung in einer Episode erhalten, die durch den zweiten Roboter durchgeführt werden soll und die unmittelbar im Anschluss an die vorherige Episode ist. Zur zweiten Zeit können die erhaltenen weiter aktualisierten Richtlinienparameter von den aktualisierten Richtlinienparametern verschieden sein, die durch den ersten Roboter zur ersten Zeit erhalten werden (aufgrund von weiterem Training, das zwischen der ersten und der zweiten Zeit stattgefunden hat). In dieser Weise werden die zur ersten Zeit durch den ersten Roboter erhaltenen aktualisierten Richtlinienparameter nicht zum zweiten Roboter zur Verwendung geliefert. Vielmehr werden die aktuelleren weiter aktualisierten Richtlinienparameter erhalten.
-
In einigen Implementierungen wird ein Verfahren geschaffen, das die Durchführung der folgenden Schritte während der Durchführung von mehreren Episoden durch jeden von mehreren Robotern umfasst, wobei jede der Episoden eine Untersuchung der Durchführung einer Aufgabe auf der Basis eines neuronalen Richtliniennetzes ist, das eine Verstärkungslernrichtlinie für die Aufgabe darstellt: Speichern von Instanzen von Robotererfahrungsdaten, die während der Episoden durch den Roboter erzeugt werden, in einem Puffer, wobei jede der Instanzen der Robotererfahrungsdaten während einer entsprechenden der Episoden erzeugt wird, und zumindest teilweise an einer entsprechenden Ausgabe erzeugt wird, die unter Verwendung des neuronalen Richtliniennetzes mit entsprechenden Richtlinienparametern für das neuronale Richtliniennetz für die entsprechende Episode erzeugt wird; iteratives Erzeugen von aktualisierten Richtlinienparametern des neuronalen Richtliniennetzes, wobei jede der Iterationen des iterativen Erzeugens das Erzeugen der aktualisierten Richtlinienparameter unter Verwendung einer Gruppe von einer oder mehreren der Instanzen der Robotererfahrungsdaten im Puffer während der Iteration umfasst; und durch jeden der Roboter in Verbindung mit einem Start von jeder von mehreren der Episoden, die durch den Roboter durchgeführt werden, Aktualisieren des neuronalen Richtliniennetzes, das vom Roboter in der Episode verwendet werden soll, wobei das Aktualisieren des neuronalen Richtliniennetzes die Verwendung der aktualisierten Richtlinienparameter einer jüngsten Iteration des iterativen Erzeugens der aktualisierten Richtlinienparameter umfasst.
-
Diese und andere Implementierungen, die hier offenbart sind, können eines oder mehrere der folgenden Merkmale umfassen.
-
Jeder der aktualisierten Richtlinienparameter kann einen entsprechenden Wert für einen entsprechenden Knoten einer entsprechenden Schicht des neuronalen Richtliniennetzes definieren.
-
Die Instanzen der Robotererfahrungsdaten für einen gegebenen Roboter der Roboter können in einem Puffer mit einer ersten Frequenz gespeichert werden, die eine niedrigere Frequenz ist als eine Erzeugungsfrequenz des iterativen Erzeugens der aktualisierten Richtlinienparameter.
-
Die Instanzen der Robotererfahrungsdaten für jeden der Roboter können im Puffer mit entsprechenden Frequenzen gespeichert werden, die jeweils niedriger sind als eine Erzeugungsfrequenz des iterativen Erzeugens der aktualisierten Richtlinienparameter.
-
Das Speichern der Instanzen der Robotererfahrungsdaten im Puffer kann durch einen oder mehrere Prozessoren in einem ersten Thread durchgeführt werden und das iterative Erzeugen kann durch einen oder mehrere der Prozessoren in einem zweiten Thread durchgeführt werden, der vom ersten Thread separat ist. Der erste Thread kann beispielsweise durch eine erste Gruppe von einem oder mehreren der Prozessoren durchgeführt werden und der zweite Thread kann durch eine zweite Gruppe von einem oder mehreren der Prozessoren durchgeführt werden, wobei die zweite Gruppe mit der erste Gruppe nicht überlappt.
-
Jede der Iterationen des iterativen Erzeugens kann das Erzeugen der aktualisierten Richtlinienparameter auf der Basis des Minimierens einer Verlustfunktion angesichts einer Gruppe von einer oder mehreren der Instanzen der Robotererfahrungsdaten im Puffer während der Erzeugungsiteration umfassen.
-
Jede der Iterationen des iterativen Erzeugens kann Lernen außerhalb der Richtlinie angesichts einer Gruppe von einer oder mehreren der Instanzen der Robotererfahrungsdaten im Puffer während der Erzeugungsiteration umfassen. Das Lernen außerhalb der Richtlinie kann beispielsweise Q-Lernen wie z. B. Q-Lernen, das einen Algorithmus einer normierten Vorteilsfunktion (NAF) oder einen Algorithmus eines tiefen deterministischen Richtliniengradienten (DDPG) verwendet, sein.
-
Jede der Instanzen der Erfahrungsdaten kann einen entsprechenden Roboteranfangszustand, anschließenden Roboterzustand, in den vom Roboteranfangszustand übergegangen wird, eine Handlung, die ausgeführt wird, um vom Roboteranfangszustand in den anschließenden Roboterzustand überzugehen, und eine Belohnung für die Handlung angeben. Die Handlung, die ausgeführt wird, um vom Roboteranfangszustand in den anschließenden Roboterzustand überzugehen, kann auf der Basis der Verarbeitung des Roboteranfangszustandes unter Verwendung des neuronalen Richtliniennetzes mit den aktualisierten Richtlinienparametern für die entsprechende Episode erzeugt werden. Die Belohnung für die Handlung kann auf der Basis einer Belohnungsfunktion für die Verstärkungslernrichtlinie erzeugt werden.
-
Das Verfahren kann ferner umfassen: Beenden der Durchführung der mehreren Episoden und Beenden des iterativen Erzeugens auf der Basis von einem oder mehreren Kriterien; und Versehen des neuronalen Richtliniennetzes zur Verwendung durch einen oder mehrere zusätzliche Roboter mit einer zuletzt erzeugten Version der aktualisierten Richtlinienparameter.
-
In einigen Implementierungen wird ein Verfahren geschaffen, das durch einen oder mehrere Prozessoren eines gegebenen Roboters umfasst: Durchführen einer gegebenen Episode von Untersuchungen der Durchführung einer Aufgabe auf der Basis eines Richtliniennetzes mit einer ersten Gruppe von Richtlinienparametern; Bereitstellen von ersten Instanzen von Robotererfahrungsdaten, die auf der Basis des Richtliniennetzes während der gegebenen Episode erzeugt werden; und vor der Durchführung einer anschließenden Episode des Durchführens der Aufgabe auf der Basis des Richtliniennetzes durch den gegebenen Roboter: Ersetzen von einem oder mehreren der Richtlinienparameter der ersten Gruppe durch aktualisierte Richtlinienparameter, wobei die aktualisierten Richtlinienparameter auf der Basis von zusätzlichen Instanzen von Robotererfahrungsdaten erzeugt werden, die durch einen zusätzlichen Roboter während einer zusätzlichen Roboterepisode von Untersuchungen der Durchführung der Aufgabe durch den zusätzlichen Roboter erzeugt werden; wobei die anschließende Episode der ersten Episode unmittelbar folgt; und wobei das Durchführen der Aufgabe auf der Basis des Richtliniennetzes in der anschließenden Episode die Verwendung der aktualisierten Richtlinienparameter anstelle der ersetzten Richtlinienparameter umfasst.
-
Diese und andere Implementierungen, die hier offenbart sind, können eines oder mehrere der folgenden Merkmale umfassen.
-
In einigen Implementierungen kann das Verfahren ferner das Erzeugen von weiter aktualisierten Richtlinienparametern auf der Basis von einer oder mehreren der ersten Instanzen der Robotererfahrungsdaten, die während der ersten Episode erzeugt werden, durch einen oder mehrere zusätzliche Prozessoren und während der Durchführung der anschließenden Episode umfassen. Das Verfahren kann ferner das Bereitstellen der weiter aktualisierten Richtlinienparameter zur Verwendung durch den zusätzlichen Roboter bei der Durchführung einer entsprechenden Episode durch den zusätzlichen Roboter umfassen. In einigen dieser Implementierungen startet der zusätzliche Roboter die Durchführung der entsprechenden Episode während der Durchführung der anschließenden Episode durch den gegebenen Roboter und/oder die weiter aktualisierten Richtlinienparameter werden durch den gegebenen Roboter bei der Durchführung von beliebigen Episoden durch den gegebenen Roboter nicht verwendet. In einigen von diesen Implementierungen kann das Verfahren ferner umfassen: Erzeugen von noch weiter aktualisierten Richtlinienparametern durch einen oder mehrere der zusätzlichen Prozessoren, wobei die noch weiter aktualisierten Richtlinienparameter während der Durchführung der anschließenden Episode erzeugt werden und im Anschluss an die Erzeugung der weiter aktualisierten Richtlinienparameter erzeugt werden; und Bereitstellen der noch weiter aktualisierten Richtlinienparameter zur Verwendung durch den gegebenen Roboter bei der Durchführung einer weiteren anschließenden Episode der Durchführung der Aufgabe durch den gegebenen Roboter auf der Basis des Richtliniennetzes. Die weitere anschließende Episode folgt unmittelbar der anschließenden Episode. In einer gewissen Version dieser Implementierungen: startet der gegebene Roboter die Durchführung der weiteren anschließenden Episode während der Durchführung der entsprechenden Episode durch den zusätzlichen Roboter; die aktualisierten Richtlinienparameter und die noch weiter aktualisierten Richtlinienparameter werden durch den zusätzlichen Roboter bei der Durchführung beliebiger Episoden durch den zusätzlichen Roboter nicht verwendet; und/oder die aktualisierten Richtlinienparameter werden durch den zusätzlichen Roboter bei der Durchführung von beliebigen Episoden durch den zusätzlichen Roboter nicht verwendet.
-
Das Richtliniennetz kann ein neuronales Netzmodell umfassen oder daraus bestehen, und jeder der aktualisierten Richtlinienparameter kann einen entsprechenden Wert für einen entsprechenden Knoten einer entsprechenden Schicht des neuronalen Netzmodells definieren.
-
In einigen Implementierungen umfasst das Verfahren ferner während der Durchführung der gegebenen Episode der Durchführung der Aufgabe: Bestimmen einer Verletzung von einem oder mehreren Kriterien für den gegebenen Roboter in einer gegebenen Iteration der Ausgabe aus dem Richtliniennetz; Modifizieren der Ausgabe der gegebenen Iteration, so dass das eine oder die mehreren Kriterien nicht mehr verletzt werden; und Erzeugen einer gegebenen Instanz der Instanzen von Erfahrungsdaten auf der Basis der modifizierten Ausgabe. Die Kriterien können eines oder mehrere von Gelenkpositionsgrenzen; Gelenkgeschwindigkeitsgrenzen und Endeffektorpositionsgrenzen umfassen.
-
In einigen Implementierungen umfasst das Verfahren ferner das Erzeugen einer gegebenen Untersuchung der Untersuchungen während der gegebenen Episode durch: Anwenden einer aktuellen Zustandsdarstellung als Eingabe auf das Richtliniennetz, wobei die aktuelle Zustandsdarstellung einen aktuellen Zustand zumindest des gegebenen Roboters darstellt; Erzeugen einer Ausgabe durch Verarbeiten der Eingabe unter Verwendung des Richtliniennetzes; und Liefern von Steuerbefehlen zu einem oder mehreren Aktuatoren des gegebenen Roboters auf der Basis der Ausgabe. Das Liefern der Steuerbefehle zu den Aktuatoren auf der Basis der Ausgabe kann das Erzeugen einer modifizierten Ausgabe durch Hinzufügen von Rauschen zur Ausgabe; und das Liefern der Steuerbefehle auf der Basis der modifizierten Ausgabe umfassen. Die Ausgabe kann eine Geschwindigkeit oder ein Drehmoment für jeden von mehreren Aktuatoren des Roboters umfassen und das Liefern der Steuerbefehle kann das Liefern der Steuerbefehle so, dass die Aktuatoren die Geschwindigkeiten oder Drehmomente anwenden, umfassen.
-
Jede der ersten Instanzen der Erfahrungsdaten kann einen entsprechenden Roboteranfangszustand, anschließenden Roboterzustand, in den vom Roboteranfangszustand übergegangen wird, eine Handlung, die ausgeführt wird, um vom Roboteranfangszustand in den anschließenden Roboterzustand überzugehen, und eine Belohnung für die Handlung angeben.
-
In einigen Implementierungen wird ein Verfahren geschaffen, das das Empfangen einer gegebenen Instanz von Robotererfahrungsdaten, die durch einen gegebenen Roboter von mehreren Robotern erzeugt werden, umfasst. Die gegebene Instanz der Robotererfahrungsdaten wird während einer gegebenen Episode von Untersuchungen des Durchführens einer Aufgabe auf der Basis einer gegebenen Version von Richtlinienparametern eines Richtliniennetzes erzeugt, das durch den gegebenen Roboter beim Erzeugen der gegebenen Instanz verwendet wird. Das Verfahren umfasst ferner das Empfangen von zusätzlichen Instanzen von Robotererfahrungsdaten von zusätzlichen Robotern der mehreren Roboter. Die zusätzlichen Instanzen werden während Episoden von Untersuchungen der Durchführung der Aufgabe auf der Basis des Richtliniennetzes durch die zusätzlichen Roboter erzeugt. Das Verfahren umfasst ferner, während der gegebene Roboter und die zusätzlichen Roboter die Episoden von Untersuchungen der Durchführung der Aufgabe fortsetzen, das Erzeugen einer neuen Version der Richtlinienparameter des Richtliniennetzes auf der Basis des Trainings des Richtliniennetzes zumindest teilweise auf der Basis der gegebenen Instanz und der zusätzlichen Instanzen. Das Verfahren umfasst ferner das Liefern der neuen Version der Richtlinienparameter zum gegebenen Roboter zum Durchführen einer unmittelbar anschließenden Episode von Untersuchungen der Durchführung der Aufgabe durch den gegebenen Roboter auf der Basis der neuen Version der Richtlinienparameter.
-
Diese und andere Implementierungen, die hier offenbart sind, können eines oder mehrere der folgenden Merkmale umfassen.
-
Das Empfangen der gegebenen Instanz kann in einer Iteration von mehreren Erfahrungsdateniterationen des Empfangens von Instanzen von Erfahrungsdaten vom gegebenen Roboter stattfinden, wobei die mehreren Erfahrungsdateniterationen mit einer ersten Frequenz stattfinden. Das Trainieren des Verstärkungsmodells, um die aktualisierten Parameter zu erzeugen, kann das Durchführen von mehreren Trainingsiterationen umfassen, die umfassen: eine erste Trainingsiteration zum Trainieren des Richtliniennetzes zumindest teilweise auf der Basis der gegebenen Instanz und der zusätzlichen Instanzen; und eine oder mehrere zusätzliche Trainingsiterationen zum Trainieren des Richtliniennetzes auf der Basis von noch weiteren Instanzen von Erfahrungsdaten von mehreren der Roboter. Die Trainingsiterationen können mit einer zweiten Frequenz stattfinden, die eine größere Frequenz ist als die Erfahrungsdateniterationen.
-
In einigen Implementierungen wird ein Verfahren geschaffen, das das iterative Empfangen von Instanzen von Erfahrungsdaten umfasst, die durch mehrere Roboter erzeugt werden, die asynchron und gleichzeitig arbeiten. Jede der Instanzen von Erfahrungsdaten wird durch einen entsprechenden Roboter der mehreren Roboter während einer entsprechenden Episode einer Aufgabenuntersuchung auf der Basis eines neuronalen Richtliniennetzes erzeugt. Das Verfahren umfasst ferner das iterative Trainieren des Richtliniennetzes auf der Basis der empfangenen Erfahrungsdaten von den mehreren Robotern, um einen oder mehrere aktualisierte Parameter des Richtliniennetzes in jeder der Trainingsiterationen zu erzeugen. Das Verfahren umfasst ferner das iterative und asynchrone Liefern von Instanzen der aktualisierten Parameter zu den Robotern zum Aktualisieren der neuronalen Richtliniennetze der Roboter vor den Episoden der Aufgabenuntersuchungen, auf denen die Instanzen von Erfahrungsdaten basieren.
-
Andere Implementierungen können ein nichttransitorisches computerlesbares Speichermedium umfassen, das Anweisungen speichert, die durch einen oder mehrere Prozessoren (z. B. eine oder mehrere Zentraleinheiten (CPUs), eine oder mehrere Graphikverarbeitungseinheiten (GPUs) und/oder eine oder mehrere Tensorverarbeitungseinheiten (TPUs)) ausführbar sind, um ein Verfahren wie z. B. ein oder mehrere der vorstehend und/oder anderswo hier beschriebenen Verfahren durchzuführen. Noch eine andere Implementierung kann ein System von einem oder mehreren Computern und/oder einem oder mehreren Robotern umfassen, die einen oder mehrere Prozessoren umfassen, die betriebsfähig sind, um gespeicherte Anweisungen auszuführen, um ein Verfahren wie z. B. eines oder mehrere der vorstehend und/oder anderswo hier beschriebenen Verfahren durchzuführen.
-
Es sollte erkannt werden, dass alle Kombinationen der vorangehenden Konzepte und zusätzlichen Konzepte, die hier genauer beschrieben werden, als Teil des hier offenbarten Gegenstandes in Betracht gezogen werden. Alle Kombinationen des beanspruchten Gegenstandes, die am Ende dieser Offenbarung erscheinen, werden beispielsweise als Teil des hier offenbarten Gegenstandes in Betracht gezogen.
-
Figurenliste
-
- 1 stellt eine Beispielumgebung dar, in der hier offenbarte Implementierungen implementiert werden können.
- 2 stellt einen der Roboter von 1 und ein Beispiel einer Bewegung eines greifenden Endeffektors des Roboters entlang eines Pfades dar.
- 3 ist ein Ablaufplan, der ein Beispiel der Durchführung einer Episode durch einen Roboter darstellt.
- 4 ist ein Ablaufplan, der ein Beispielverfahren zum Speichern von Instanzen von Erfahrungsdaten darstellt.
- 5 ist ein Ablaufplan, der ein Beispielverfahren zum Trainieren, um Parameter eines Richtliniennetzes zu aktualisieren, darstellt.
- 6 stellt schematisch eine Beispielarchitektur eines Roboters dar.
- 7 stellt schematisch eine Beispielarchitektur eines Computersystems dar.
-
Ausführliche Beschreibung
-
Roboteranwendungen von Verstärkungslernen gefährden häufig die Autonomie des Lernprozesses zugunsten des Erreichens von Trainingszeiten, die für reale physikalische Systeme praktisch sind. Dieser Kompromiss des Verstärkungslernprozesses kann an der Einführung von handkonstruierten Richtliniendarstellungen und/oder vom Menschen gelieferten Demonstrationen liegen.
-
Implementierungen dieser Beschreibung sind auf Erweiterungen von tiefen Verstärkungslernverfahren gerichtet, um die Betriebsleistung von einem oder mehreren Robotern zu verbessern. Wie vorher beschrieben, schaffen die Implementierungen Betriebsvorteile, wie z. B. Effizienzsteigerungen in den physikalischen Handlungen, die durch die Roboter ausgeführt werden, und mildern auch Nachteile von früheren Roboteranwendungen des Verstärkungslernens. Diese können das Mildern des Bedarfs an handkonstruierten Richtliniendarstellungen (z. B. Richtliniendarstellungen „auf Modellbasis“) und/oder das Mildern des Bedarfs an vom Menschen gelieferten Demonstrationen umfassen. In einigen hier beschriebenen Implementierungen wird ein neuronales Richtliniennetz, das die Richtlinie parametrisiert, durch tiefes Verstärkungslernen trainiert, was den Bedarf an handkonstruierten Richtliniendarstellungen mildert. Überdies kann das neuronale Richtliniennetz insofern „modellfrei“ sein, als es nicht explizit ein Modell einer Roboterumgebung lernt. Als ein spezielles Beispiel können in einigen Implementierungen Algorithmen von tiefem Verstärkungslernen auf der Basis von Training außerhalb der Richtlinie von tiefen Q-Funktionen auf komplexe 3D-Manipulationsaufgaben skalieren und können Richtlinien des tiefen neuronalen Netzes effizient genug lernen, um auf der Basis von Erfahrungsdaten zu trainieren, die durch reale physikalische Roboter erzeugt werden. In einigen von diesen Implementierungen können Trainingszeiten der realen Welt (z. B. Uhr an der Wand) durch Parallelisieren des Algorithmus über mehrere Roboter verringert werden, die ihre Richtlinienaktualisierungen asynchron zusammenfassen. In einigen von diesen Implementierungen kann das Parallelisieren des Algorithmus über mehrere Roboter, die ihre Richtlinienaktualisierungen asynchron zusammenfassen, zusätzlich und/oder alternativ zu einem neuronalen Richtliniennetz führen, das nach einer gegebenen Anzahl von Trainingsiterationen genauer und/oder robuster ist, als wenn eine solche Parallelisierung nicht verwendet werden würde. Dies kann beispielsweise an Erfahrungsdaten liegen, die durch einen Roboter in einer gegebenen Instanz erzeugt werden, die auf Richtlinienparametern basiert, die auf der Basis von sowohl vergangenen Instanzen von Erfahrungsdaten vom Roboter als auch vergangenen Instanzen von Erfahrungsdaten von (einem) anderen Roboter(n), die parallel arbeiten, aktualisiert werden. Überdies ermöglichen einige Implementierungen von Techniken, die hier offenbart sind, das Lernen von dreidimensionalen („3D“) Robotermanipulationsaufgaben (z. B. eine Türöffnungsaufgabe, eine Bestückungsaufgabe) an realen Robotern, ohne irgendwelche vorherige Demonstrationen oder manuell konstruierte Richtliniendarstellungen (z. B. „auf Modellbasis“) zu benötigen.
-
Wie nachstehend genauer beschrieben, werden in verschiedenen Implementierungen Verstärkungslernverfahren außerhalb der Richtlinie (z. B. Q-Lernen auf der Basis von Training außerhalb der Richtlinie von tiefen Q-Funktionen) erweitert, um komplexe Manipulationsrichtlinien von Grund auf zu erlenen. In einigen von diesen verschiedenen Implementierungen werden die komplexen Manipulationsrichtlinien ohne vom Benutzer bereitgestellte Demonstrationen gelernt und/oder werden unter Verwendung von neuronalen Netzdarstellungen gelernt, die keine aufgabenspezifische Domänenkenntnis erfordern. In einigen von diesen verschiedenen Implementierungen werden auch die Richtlinien unter Verwendung eines tiefen Q-Funktionsalgorithmus außerhalb der Richtlinie, wie z. B. des Algorithmus des tiefen deterministischen Richtliniengradienten (DDPG) oder des Algorithmus der normierten Vorteilsfunktion (NAF), gelernt. Asynchrones tiefes Verstärkungslernen kann beispielsweise verwendet werden, wie z. B. asynchrones tiefes Verstärkungslernen, das einen parallelen NAF-Algorithmus über mehrere reale physikalische Roboter verwendet. Dies kann ein probeneffizientes Training an realen Roboterplattformen ermöglichen, kann eine größere Zeiteffizienz im Training unter Verwendung der geteilten Erfahrung von mehreren Robotern ermöglichen und/oder kann ein robusteres Training aufgrund von Variationen zwischen den mehreren Robotern und/oder ihren Umgebungen ermöglichen. Die verbesserte Zeiteffizienz des Trainings führt beispielsweise dazu, dass die realen physikalischen Roboter die verbesserten Richtlinien verwenden, um physikalische Aufgaben zu einer früheren Zeit auszuführen. Dies führt zu technischen Vorteilen in Form von beispielsweise verbessertem Leistungsverbrauch an den Robotern in einer früheren Stufe und/oder beispielsweise einer niedrigeren Gesamtrate von Verschleiß von Robotergelenken aufgrund von früheren Verbesserungen der Richtlinien und resultierenden physikalischen Handlungen der Roboter.
-
In einigen vergangenen Anwendungen des Zusammenfassens der Erfahrung von mehreren Robotern (kollektives Roboterlernen) streben diese Anwendungen danach, die gesamte Trainingszeit unter der Annahme zu verringern, dass die Simulationszeit teuer ist und das Training durch die Rückpropagierung des neuronalen Netzes dominiert wird. Dagegen streben einige Implementierungen dieser Beschreibung danach, die Trainingszeit zu minimieren, wenn auf der Basis von Daten von realen physikalischen Robotern trainiert wird, wobei die Erfahrung teuer ist und die Rückpropagierung des neuronalen Netzes vergleichsweise preiswert ist. Verschiedene hier offenbarte Implementierungen sammeln beispielsweise Erfahrungsdaten von mehreren Robotern, die asynchron voneinander arbeiten. Überdies verwenden verschiedene Implementierungen die gesammelten Erfahrungsdaten beim Trainieren eines neuronalen Richtliniennetzes asynchron von (aber gleichzeitig mit) dem Betrieb der mehreren Roboter. Ein Puffer der gesammelten Erfahrungsdaten von einer Episode von einem der Roboter kann beispielsweise verwendet werden, um das neuronale Richtliniennetz zu aktualisieren, und aktualisierte Richtlinienparameter vom aktualisierten neuronalen Richtliniennetz, die für die Implementierung durch einen oder mehrere der mehreren Roboter vor der Durchführung von entsprechenden nächsten Episoden bereitgestellt werden. In dieser Weise kann die Sammlung von Erfahrungsdaten unter mehreren Robotern asynchron sein und zur Aktualisierung des neuronalen Richtliniennetzes asynchron sein. Die mehreren Roboter können jedoch jeweils aktualisierte Richtlinienparameter in jeder Episode verwenden, wobei diese aktualisierten Richtlinienparameter auf Erfahrungsdaten von vergangenen Episoden des Roboters und vergangenen Episoden von anderen Robotern basieren. Eine solche asynchrone Ausführung und das Training eines neuronalen Netzes kann eine Beschleunigung in der gesamten Trainingszeit als Ergebnis des gleichzeitigen Sammelns von Erfahrungen über mehrere Roboterplattformen erreichen.
-
In realen Roboterumgebungen, insbesondere jenen mit Kontaktereignissen, steht die Umgebungsdynamik häufig nicht zur Verfügung oder kann nicht genau modelliert werden. Angesichts dessen konzentrieren sich die hier offenbarten Implementierungen auf ein modellfreies Verstärkungslernen, das Richtliniensuchverfahren und Wertiterationsverfahren umfasst. Obwohl Richtliniensuchverfahren eine direkte Weise bieten, um ein wahres Ziel zu optimieren, erfordern sie häufig signifikant mehr Daten als Wertiterationsverfahren aufgrund des Lernens an der Richtlinie. Folglich konzentrieren sich einige hier offenbarte Implementierungen insbesondere auf Wertiterationsverfahren wie z. B. Wertiterationsverfahren auf der Basis von Q-Lernen mit Funktionsnäherung. Zwei Beispiele von Wertiterationsverfahren sind DDPG und NAF, die tiefes Q-Lernen auf einen kontinuierlichen Handlungsraum erweitern und probeneffizienter sind als konkurrierende Richtliniensuchverfahren beispielsweise aufgrund von Lernen außerhalb der Richtlinie durch einen Wiederholungspuffer.
-
Das Ziel beim Verstärkungslernen besteht darin, einen Agenten zu steuern, der versucht, eine Belohnungsfunktion zu maximieren, die im Zusammenhang mit einer Roboterfähigkeit (hier auch als Aufgabe bezeichnet) eine vom Benutzer bereitgestellte Definition dessen bezeichnet, was der Roboter durchzuführen versuchen sollte. Im Zustand x
t in der Zeit t wählt der Agent eine Handlung u
t gemäß seiner Richtlinie π(u
t|x
t) und führt diese aus, geht in einen neuen Zustand x
t gemäß der Dynamik p(x
t|x
t, u
t) über und empfängt eine Belohnung r(x
t, u
t). In hier beschriebenen Implementierungen werden diskontierte Rückführungsprobleme mit unendlichem Horizont betrachtet. Das Ziel der diskontierten Rückführungsprobleme mit unendlichem Horizont ist die zukünftige γ-diskontierte zukünftige Rückführung von der Zeit t bis zu T, die durch
gegeben ist. Das Ziel besteht darin, die optimale Richtlinie π * zu finden, die die erwartete Summe von Rückführungen von der anfänglichen Zustandsverteilung maximiert, die durch
gegeben ist.
-
Unter Verstärkungslernverfahren können Verfahren außerhalb der Richtlinie wie z. B. Q-Lernen Dateneffizienzsteigerungen im Vergleich zu Varianten an der Richtlinie bieten. Dies kann für Roboteranwendungen vorteilhaft sein. Das Q-Lernen lernt eine erfolgshungrige deterministische Richtlinie π(u
t|x
t) = δ(u
t = µ(x
t)) durch Iterieren zwischen dem Lernen der Q-Funktion,
einer Richtlinie und dem Aktualisieren der Richtlinie durch erfolgshungriges Maximieren der Q-Funktion µ
n+1(x
t) = arg max
uQ
πn(x
t,u
t). θ
Q parametrisiert die Handlungs-Wert-Funktion, β ist eine beliebige Untersuchungsrichtlinie und p
β ist die Zustandsbesichtigung, die durch β induziert wird, das Lernziel besteht darin, den Bellman-Fehler zu minimieren, wobei die Zielsetzung y
t festgelegt ist als:
-
Für kontinuierliche Handlungsprobleme kann der Richtlinienaktualisierungsschritt für eine Q-Funktion unlösbar sein, die durch tiefe neuronale Netze parametrisiert wird. Folglich können Erweiterungen von Q-Lernen mit Funktionsnäherung in verschiedenen hier beschriebenen Implementierungen verwendet werden. Zwei Beispiele von Erweiterungen des Q-Lernens mit Funktionsnäherung sind DDPG und NAF. DDPG umgeht das Unlösbarkeitsproblem durch Übernehmen eines aktorkritischen Verfahrens, während NAF Klassen von Q-Funktion auf den nachstehenden Ausdruck einschränkt, um eine Aktualisierung in geschlossener Form wie im diskreten Handlungsfall zu ermöglichen. Während der Untersuchung kann ein zeitlich korreliertes Rauschen wahlweise zur Richtliniennetzausgabe hinzugefügt werden.
-
Diese Verstärkungslernformulierung kann auf Robotersysteme angewendet werden, um eine Vielfalt von Roboterfähigkeiten zu lernen, die durch Belohnungsfunktionen definiert sind. Der Lernprozess ist jedoch typischerweise zeitraubend. Folglich kann in hier offenbarten Implementierungen eine parallelisierte Variante von NAF oder eine parallelisierte Version von DDPG verwendet werden, um eine oder beide dieser Sorgen zu mildern. Dies kann das Lernen einer durch ein neuronales Netz parametrisierten Q-Funktion von Grund auf an komplexen realen Roboteraufgaben ermöglichen. In praktischen tiefen Roboterlernanwendungen wird die Lernzeit durch die Datensammelrate von realen Robotern, die auf Echtzeit begrenzt ist, anstatt die Netztrainingsgeschwindigkeit eingeschränkt. Folglich schlagen verschiedene hier offenbarte Implementierungen die Verwendung von asynchronem NAF vor, um mehrere reale Roboter effektiv für die Datensammlung zu verwenden und die Geschwindigkeit des Lernens in der realen Welt zu erhöhen. Dies erreicht natürlich eine schnellere Verbesserung der Roboterleistung in der realen Welt zusammen mit entsprechenden Effizienzsteigerungen, wie vorher erörtert, wenn die gelernten Richtlinien durch die Roboter implementiert werden, die physikalische Aufgaben ausführen. Überdies erreichen verschiedene hier offenbarte Implementierungen eine aggressive Untersuchung während des Q-Lernens (z. B. durch Hinzufügen von großem zeitlich korreliertem Rauschen zur Richtliniennetzausgabe, um einen Untersuchungsgrad zu erhöhen), was nützlich und/oder erforderlich sein kann, wenn von Grund auf gelernt wird. In einigen von diesen Implementierungen können Techniken auch verwendet werden, um eine aggressive Untersuchung zu erreichen, während die Verletzung von einem oder mehreren Kriterien der Roboter, die die Untersuchung durchführen, minimiert oder verhindert wird (z. B. Sicherheitskriterien und/oder andere Kriterien).
-
In Implementierungen von asynchronem NAF, die hier offenbart werden, sind der Trainer-Thread (die Trainer-Threads) (die das neuronale Richtliniennetz aktualisieren/trainieren) von dem (den) Erfahrungssammler-Thread (Erfahrungssammler-Threads) (die jeweils Erfahrungsdaten von einem oder mehreren Robotern während der Untersuchung sammeln), getrennt. In einigen von diesen Implementierungen kann die Entkopplung zwischen den Trainings- und Sammler-Threads sicherstellen, dass die Differenz der Trainingsgeschwindigkeit Steuerprogramme der Roboter, die die Erfahrungsdaten erzeugen, nicht anhält, die häufig Steuerungen mit festen Frequenzen senden müssen. Während der Trainer-Thread (die Trainer-Threads) das Training von einem Wiederholungspuffer (durch den (die) Erfahrungssammler-Thread (Erfahrungssammler-Threads) belegt) beibehält (beibehalten), synchronisiert (synchronisieren) der (die) Erfahrungssammler-Thread (Erfahrungssammler-Threads) jeweils ihre Richtlinienparameter mit dem (den) Trainer-Thread (Trainer-Threads) am Beginn jeder Episode (z. B. aktualisieren sie ihr neuronales Richtliniennetz mit aktualisierten Parametern, die in einer jüngsten Iteration des Trainings-Threads erzeugt werden), führen Befehle an den Robotern aus und schieben Instanzen von Erfahrungsdaten in den Wiederholungspuffer.
-
Nachstehend wird ein Überblick eines Beispielalgorithmus zum Durchführen von asynchronem NAF mit N Sammler-Threads und einem Trainings-Thread dargestellt. Obwohl der Beispielalgorithmus mit einem Trainings-Thread dargestellt wird, können in einigen Implementierungen mehrere Trainings-Threads vorgesehen sein (z. B. verteiltes Training über mehrere Threads).
-
Wie hier beschrieben, kann in verschiedenen Implementierungen ein neuronales Netz die Handlungs-Wert-Funktionen und Richtlinien parametrisieren. In einigen von diesen Implementierungen können verschiedene Zustandsdarstellungen als Eingabe in das Modell, beim Erzeugen einer Ausgabe, die eine zu implementierende Handlung auf der Basis der Richtlinien angibt, verwendet werden. Die Zustandsdarstellungen können den Zustand des Roboters und wahlweise den Zustand von einem oder mehreren Umgebungsobjekten angeben. Als ein Beispiel kann eine Roboterzustandsdarstellung Gelenkwinkel und Endeffektorpositionen sowie ihre Zeitableitungen umfassen. In einigen Implementierungen kann ein Erfolgssignal (z. B. eine Zielposition) an die Roboterzustandsdarstellung angehängt werden. Wie hier beschrieben, kann das Erfolgssignal beim Bestimmen einer Belohnung für eine Handlung und/oder für andere Zwecke verwendet werden. Das spezielle Erfolgssignal hängt von der Aufgabe ab, für die Verstärkungslernen stattfindet. Für eine Erreichungsaufgabe kann beispielsweise das Erfolgssignal das Ziel/die Zielposition für den Endeffektor sein. Als anderes Beispiel kann für eine Türöffnungsaufgabe das Erfolgssignal die Griffposition, wenn die Tür geschlossen ist, und die Quaternion-Messung eines Sensors, der am Türrahmen befestigt ist (z. B. eine Trägheitsmesseinheit, die am Türrahmen befestigt ist), umfassen. In verschiedenen Implementierungen können Standardmitkopplungsnetze als neuronales Richtliniennetz verwendet werden, um die Handlungs-Wert-Funktionen und Richtlinien zu parametrisieren. Als ein Beispiel kann ein Netz mit zwei verborgenen Schichten mit einer Größe von jeweils 100 Einheiten verwendet werden, um jedes von m(x), L(x) (Cholesky-Zerlegung von P(x)) und V(x) in NAF und m(x) und Q(x;u) in DDPG zu parametrisieren. Für Q(x;u) in DDPG kann der Handlungsvektor u als andere Eingabe zu einer zweiten verborgenen Schicht hinzugefügt werden, gefolgt von einer linearen Projektion. ReLU kann als verborgene Aktivierungen verwendet werden und der hyperbolische Tangens (Tanh) kann für die Endschichtaktivierung nur in Richtliniennetzen m(x) verwendet werden, um die Handlungsskala zu begrenzen.
-
Wie hier beschrieben, können in einigen Implementierungen Techniken verwendet werden, um eine aggressive Untersuchung zu erreichen, während die Verletzung von einem oder mehreren Kriterien der Roboter, die die Untersuchung durchführen, minimiert oder verhindert wird (z. B. Sicherheitskriterien und/oder andere Kriterien). In einigen von diesen Implementierungen können die Kriterien Geschwindigkeitsgrenzen für jedes Gelenk eines Roboters, Positionsgrenzen jedes Gelenks eines Roboters und/oder andere kinematische und/oder dynamische Einschränkungen des Roboters umfassen. Wenn beispielsweise eine befohlene Ausgabe (z. B. durch das verwendete Richtliniennetz) während der Untersuchung durch einen Roboter eine Geschwindigkeit für ein Gelenk angibt, die seine Geschwindigkeitsgrenze überschreiten würde, kann diese Geschwindigkeit vor der Implementierung der Ausgabe modifiziert werden (z. B. auf die Geschwindigkeitsgrenze zurück skaliert), oder alternativ kann ein Fehler gemeldet werden und eine neue Episode der Untersuchung kann beginnen.
-
In einigen Implementierungen kann eine Begrenzungskugel (oder (eine) andere Begrenzungsform(en)) für eine Endeffektorposition als Kriterien verwendet werden. Wenn eine befohlene Ausgabe während der Untersuchung durch einen Roboter den Endeffektor des Roboters außerhalb die Begrenzungskugel schicken würde, kann die Vorwärtskinematik des Roboters verwendet werden, um die befohlene Geschwindigkeit auf die Oberfläche der Kugel zu projizieren, plus eine gewisse Korrekturgeschwindigkeit. Zusätzliche und/oder alternative Kriterien können verwendet werden. Wenn beispielsweise die Untersuchung durchgeführt wird, um bestimmte Aufgaben zu lernen, wie z. B. Öffnen/Schließen von Türen, können Kriterien bereitgestellt werden, um zu verhindern, dass der Roboter zu hart gegen bestimmte Objekte (z. B. die Tür) schiebt. Eine zusätzliche Begrenzungsebene kann beispielsweise mehrere Zentimeter vor einer geschlossenen Position einer Tür hinzugefügt werden und/oder Drehmomentgrenzen können zu einem oder mehreren Gelenken des Roboters hinzugefügt werden (z. B. so dass, wenn die befohlenen Geschwindigkeiten aufgrund von Kontakten mit der Tür oder dem Griff nicht erreicht werden könnten, der Roboter kein übermäßiges Ausmaß an Drehmoment anwenden würde).
-
Mit Bezug nun auf die Figuren wird eine zusätzliche Beschreibung der obigen und zusätzlichen Implementierungen bereitgestellt. 1 stellt eine Beispielumgebung dar, in der die hier offenbarten Implementierungen implementiert werden können. Beispielroboter 180A und 180B sind in 1 enthalten. Die Roboter 180A und 180B sind „Roboterarme“ mit mehreren Freiheitsgraden, um durch die Bewegung der Roboter ein Verfahren von greifenden Endeffektoren 182A und 182B entlang irgendeines von mehreren potentiellen Pfaden zu ermöglichen, um die greifenden Endeffektoren 182A und 182B an gewünschten Stellen zu positionieren. Mit Bezug auf 2 ist beispielsweise ein Beispiel eines Roboters 180A, der seinen Endeffektor entlang eines Pfades 201 verfährt, dargestellt. 2 umfasst ein Phantom- und ein Nicht-Phantom-Bild des Roboters 180A, die zwei verschiedene Stellungen eines Satzes von Stellungen zeigen, die durch den Roboter 180A und seinen Endeffektor beim Verfahren entlang des Pfades 201 getroffen werden. Mit erneutem Bezug auf 1 steuern die Roboter 180A und 180B jeweils weiter die zwei gegenüberliegenden „Klauen“ ihres entsprechenden greifenden Endeffektors 182A, 182B, um die Klauen zwischen zumindest einer offenen Position und einer geschlossenen Position (und/oder wahlweise mehreren „teilweise geschlossenen“ Positionen) zu betätigen.
-
Beispielsichtsensoren 184A und 184B sind auch in 1 dargestellt. In 1 ist ein Sichtsensor 184A in einer festen Stellung relativ zur Basis oder zu einem anderen stationären Referenzpunkt des Roboters 180A montiert. Der Sichtsensor 184B ist auch in einer festen Stellung relativ zur Basis oder einem anderen stationären Referenzpunkt des Roboters 180B montiert. Wie in 1 dargestellt, ist die Stellung des Sichtsensors 184A relativ zum Roboter 180A anders als die Stellung des Sichtsensors 184B relativ zum Roboter 180B. Wie hier beschrieben, kann dies in einigen Implementierungen vorteilhaft sein, um eine Vielfalt von Erfahrungsdaten bereitzustellen, die durch jeden der Roboter 180A und/oder 180B erzeugt werden (wenn die Erfahrungsdaten zumindest teilweise durch Sensordaten von den Sichtsensoren 184A und 184B beeinflusst werden). Die Sichtsensoren 184A und 184B sind Sensoren, die Bilder oder andere Sichtdaten in Bezug auf Form, Farbe, Tiefe und/oder andere Merkmale eines Objekts (von Objekten) erzeugen können, die sich in der Sichtlinie der Sensoren befinden. Die Sichtsensoren 184A und 184B können beispielsweise monographische Kameras, stereographische Kameras und/oder 3D-Laserscanner sein. Ein 3D-Laserscanner umfasst einen oder mehrere Laser, die Licht emittieren, und einen oder mehrere Sensoren, die Daten in Bezug auf Reflexionen des emittierten Lichts sammeln. Ein 3D-Laserscanner kann beispielsweise ein Laufzeit-3D-Laserscanner oder ein 3D-Laserscanner auf Triangulationsbasis sein und kann einen positionsempfindlichen Detektor (PSD) oder einen anderen optischen Positionssensor umfassen.
-
Der Sichtsensor 184A weist ein Blickfeld von zumindest einem Abschnitt des Arbeitsplatzes des Roboters 180A wie z. B. dem Abschnitt des Arbeitsplatzes, der eine Beispielspachtel 191A umfasst, auf. Obwohl eine Auflageoberfläche für die Spachtel 191A in 1 nicht dargestellt ist, kann sie auf einem Tisch, einem Behälter und/oder (einer) anderen Oberfläche(n) aufliegen. In anderen Implementierungen können mehr Objekte, weniger Objekte, zusätzliche Objekte und/oder alternative Objekte während einer oder mehrerer Episoden vorgesehen sein, die durch den Roboter 180A durchgeführt werden, wie hier beschrieben. Jede der Episoden kann eine Untersuchung beim Durchführen einer Aufgabe sein, die entsprechende der Spachtel 191A und eines Hefters 191B beinhaltet (z. B. um die Objekte zu berühren, um die Objekte „zu bestücken“). Zusätzliche und/oder alternative Objekte können vorgesehen sein. Für eine Aufgabe „Öffnen einer Tür“, kann beispielsweise eine Tür in der Umgebung von jedem der Roboter 180A und 180B vorgesehen sein. Der Sichtsensor 184B weist ein Blickfeld von zumindest einem Abschnitt des Arbeitsplatzes des Roboters 180B, wie z. B. dem Abschnitt des Arbeitsplatzes, der den Beispielhefter 191B umfasst, auf. Obwohl eine Auflageoberfläche für den Hefter 191 B in 1 nicht dargestellt ist, kann er auf einem Tisch, einem Behälter und/oder (einer) anderen Oberfläche(n) aufliegen. In anderen Implementierungen können mehr Objekte, weniger Objekte, zusätzliche Objekte und/oder alternative Objekte während einer oder mehreren Episoden vorgesehen sein, die durch den Roboter 180B durchgeführt werden, wie hier beschrieben.
-
Obwohl die speziellen Roboter 180A und 180B in 1 dargestellt sind, können zusätzliche und/oder alternative Roboter verwendet werden, einschließlich zusätzlicher Roboterarme, die zu den Robotern 180A und 180B ähnlich sind, Roboter mit anderen Roboterarmformen, Roboter mit humanoider Form, Roboter mit tierischer Form, Roboter, die sich über ein oder mehrere Räder bewegen (z. B. selbstausgleichende Roboter), Tauchfahrzeugroboter, ein unbemanntes Luftfahrzeug („UAV“) und so weiter. Obwohl spezielle greifende Endeffektoren in 1 dargestellt sind, können auch zusätzliche und/oder alternative Endeffektoren verwendet werden. Endeffektoren, die nicht zum Greifen in der Lage sind, können beispielsweise verwendet werden. Obwohl spezielle Montagen der Sichtsensoren 184A und 184B in 1 dargestellt sind, können außerdem zusätzliche und/oder alternative Montagen verwendet werden - oder die Sichtsensoren können weggelassen werden. In einigen Implementierungen können beispielsweise Sichtsensoren direkt an Robotern montiert sein, wie z. B. an nicht betätigbaren Komponenten der Roboter oder an betätigbaren Komponenten der Roboter (z. B. am Endeffektor oder an einer Komponente nahe dem Endeffektor). In einigen Implementierungen kann beispielsweise auch ein Sichtsensor an einer nicht stationären Struktur montiert sein, die von ihrem zugehörigen Roboter separat ist, und/oder kann in einer nicht stationären Weise an einer Struktur montiert sein, die von ihrem zugehörigen Roboter separat ist.
-
Die Roboter 180A, 180B und/oder andere Roboter können verwendet werden, um mehrere Episoden durchzuführen, die jeweils Untersuchungen der Durchführung einer Aufgabe auf der Basis eines modellfreien Verstärkungslernnetzes sind. Der Roboter 180A und der Roboter 180B können beispielsweise jeweils ein Richtliniennetz wie z. B. ein tiefes neuronales Netz umfassen, das eine deterministische Richtlinienfunktion darstellt. Am Beginn einer Episode kann ein aktueller Zustand des Roboters (z. B. ein pseudozufällig ausgewählter Startzustand) als Eingabe auf das Richtliniennetz zusammen mit einem Erfolgssignal (z. B. eine Zielposition eines Endeffektors zum Erreichen einer Aufgabe) und einer Ausgabe, die über das Richtliniennetz auf der Basis der Eingabe erzeugt wird, angewendet werden. Die Richtliniennetzausgabe gibt eine in einem nächsten Steuerzyklus des Roboters durchzuführende Handlung an. Die Richtliniennetzausgabe kann beispielsweise Geschwindigkeitsbefehle im Gelenkraum für jeden der Aktuatoren des Roboters sein. Als anderes Beispiel kann die Richtliniennetzausgabe Motordrehmomente für jeden der Aktuatoren des Roboters sein. Die Handlung wird dann durch den Roboter implementiert. Der Zustand des Roboters nach dem Implementieren der Handlung kann dann als Eingabe auf das Richtliniennetz zusammen mit dem Erfolgssignal und einer zusätzlichen Ausgabe, die über das Netz auf der Basis der Eingabe erzeugt wird, angewendet werden. Dies kann weiterhin iterativ durchgeführt werden (z. B. in jedem Steuerzyklus des Roboters), bis das Erfolgssignal erreicht wird (z. B. wie auf der Basis einer Belohnung, die Kriterien erfüllt, bestimmt) und/oder andere Kriterien erfüllt sind. Die anderen Kriterien können beispielsweise sein, dass eine zeitliche Dauer der Episode einen Schwellenwert (z. B. X Sekunden) erfüllt hat oder dass eine Schwellenmenge an Steuerzyklen stattgefunden hat. Eine neue Episode kann beginnen, nachdem das Erfolgssignal und/oder andere Kriterien erfüllt sind.
-
Wie in 1 dargestellt und hier genauer beschrieben, empfängt die Erfahrungssammlermaschine 112 Instanzen von Erfahrungsdaten, die durch den Roboter 180A und den Roboter 180B (und wahlweise (einen) zusätzliche(n) Roboter) erzeugt werden, während sie Episoden durchführen. Der Roboter 180A kann beispielsweise eine neue Instanz von Erfahrungsdaten zur Erfahrungssammlermaschine 112 in jedem seiner Steuerzyklen liefern, während er eine Episode durchführt. Als anderes Beispiel kann der Roboter 180A alle Instanzen von Erfahrungsdaten, die während einer Episode erzeugt werden, zur Erfahrungssammlermaschine 112 beim Abschluss der Episode liefern. Als noch anderes Beispiel kann der Roboter 180A neue Instanzen von Erfahrungsdaten alle 0,2 Sekunden oder in (einem) anderen regelmäßigen oder nicht regelmäßigen Intervall(en) liefern. Jede Instanz von Erfahrungsdaten wird durch einen entsprechenden Roboter auf der Basis einer Eingabe, die auf das Richtliniennetz des Roboters in einer entsprechenden Iteration angewendet wird, und/oder einer Ausgabe, die über dieses erzeugt wird, erzeugt. Jede Instanz von Erfahrungsdaten kann beispielsweise einen aktuellen Zustand des Roboters, eine durchzuführende Handlung auf der Basis der Ausgabe des Richtliniennetzes, einen Zustand des Roboters nach der Implementierung der Handlung und/oder eine Belohnung für die Handlung (wie durch die Ausgabe, die über das Richtliniennetz erzeugt wird, und/oder eine separate Belohnungsfunktion angegeben) angeben.
-
Die Erfahrungssammlermaschine 112 speichert empfangene Instanzen von Erfahrungsdaten in einem Wiederholungspuffer 122. Der Wiederholungspuffer 122 kann einen Arbeitsspeicher und/oder eine Datenbank umfassen, die für die Trainingsmaschine 114 zugänglich sind. Obwohl eine einzelne Erfahrungssammlermaschine 112 dargestellt ist, ist selbstverständlich, dass mehrere Erfahrungssammlermaschinen 112 vorgesehen sein können. Jeder Roboter kann beispielsweise seine eigene Erfahrungssammlermaschine umfassen oder dieser zugeordnet sein und die Maschinen können alle die Instanzen von Erfahrungsdaten im Wiederholungspuffer 122 speichern.
-
Die Trainingsmaschine 114 trainiert iterativ einen oder mehrere Parameter des Richtliniennetzes 124 unter Verwendung von Techniken, wie z. B. den hier beschriebenen (z. B. jenen in Bezug auf Q-Lernen wie z. B. die NAF- und/oder DDPG-Varianten). In jeder Iteration des Trainings kann die Trainingsmaschine 114 aktualisierte Richtlinienparameter unter Verwendung einer Gruppe von einer oder mehreren Instanzen von Erfahrungsdaten des Wiederholungspuffers 122 erzeugen. Die Trainingsmaschine 114 kann wahlweise die verwendete(n) Instanz(en) aus dem Wiederholungspuffer 122 löschen und/oder sie können anderweitig gelöscht werden (z. B. auf der Basis eines First-in-First-out-Schemas).
-
Vor jeder Durchführung einer neuen Episode durch einen der Roboter 180A und 180B kann der Roboter sein Richtliniennetz mit den Richtlinienparametern aktualisieren, die zuletzt durch die Trainingsmaschine 114 erzeugt wurden. In einigen Implementierungen können die Richtlinienparameter durch die Trainingsmaschine 114 zu den Robotern 180A und 180B „geschoben“ werden. In einigen anderen Implementierungen können die Richtlinienparameter durch die Roboter 180A und 180B „gezogen“ werden. Folglich können in Implementierungen von 1 der Roboter 180A, der Roboter 180B und wahlweise zusätzliche Roboter parallel arbeiten, während sie jeweils mehrere Episoden auf der Basis desselben modellfreien Verstärkungsnichtliniennetzes durchführen. Die Richtlinienparameter, die von einem oder mehreren der Roboter verwendet werden, können jedoch von einem oder mehreren anderen der Roboter zu einer oder mehreren Zeiten verschieden sein. Zur Zeit T1 und vor dem Beginn einer gegebenen Episode kann beispielsweise der Roboter 180A seine Richtlinienparameter mit den zuletzt aktualisierten Richtlinienparametern synchronisieren. Zur Zeit T1 kann jedoch der Roboter 180B sich in einer Episode befinden und kann immer noch unter weniger aktualisierten Richtlinienparametern von einer vorherigen Iteration (unmittelbar vor oder mehrere Iterationen vor) der Trainingsmaschine 114 arbeiten. Zur Zeit T2 kann der Roboter 180B seine Richtlinienparameter mit noch weiter aktualisierten Richtlinienparametern synchronisieren, aber der Roboter 180A kann sich immer noch in der gegebenen Episode zur Zeit T2 befinden und immer noch unter den (nun weniger) aktualisierten Richtlinienparametern der Zeit T1 arbeiten.
-
Wie hier beschrieben, können Instanzen von Erfahrungsdaten von jedem der Roboter 180A, 180B und/oder anderen Robotern zum Wiederholungspuffer 122 durch die Erfahrungssammlermaschine 112 hinzugefügt werden, wenn diese Instanzen von Erfahrungsdaten während des parallelen Betriebs der Roboter erzeugt werden. In einigen Implementierungen können die Erfahrungsdaten von jedem der Roboter zum Wiederholungspuffer 122 mit entsprechenden (und wahlweise denselben) Frequenzen der Roboter (z. B. mit Steuerzyklusfrequenzen der Roboter) hinzugefügt werden. Ein Roboter kann beispielsweise eine Steuerfrequenz von 60 Hz aufweisen und Erfahrungsdaten mit 60 Hz liefern (d. h. 60 Instanzen von Erfahrungsdaten in jeder Sekunde liefern). In einigen von diesen Implementierungen kann die Trainingsmaschine 114 Trainingsiterationen mit einer Frequenz durchführen, die größer ist als eine oder mehrere (z. B. alle) der Frequenzen der Roboter - und kann diese Iterationen durchführen, während die Roboter weiterhin parallel arbeiten und Erfahrungsdaten auf der Basis von Episoden erzeugen. Eine oder mehrere dieser Techniken können ermöglichen, dass eine Konvergenz eines Richtliniennetzes schneller auftritt, als wenn solche Techniken nicht verwendet werden würden.
-
Die Erfahrungssammlermaschine 112, der Wiederholungspuffer 122, die Trainingsmaschine 114 und das Richtliniennetz 124 sind in 1 als von den Robotern 180A und 180B separat dargestellt. In einigen Implementierungen können jedoch alle oder Aspekte von einer oder mehreren dieser Komponenten am Roboter 180A und/oder Roboter 180B (z. B. über einen oder mehrere Prozessoren der Roboter 180A und 180B) implementiert werden. Die Roboter 180A und 180B können beispielsweise jeweils eine Instanz der Erfahrungssammlermaschine 112 umfassen. In einigen Implementierungen können alle oder Aspekte von einer oder mehreren dieser Komponenten an einem oder mehreren Computersystemen implementiert werden, die von den Robotern 180A und 180B separat sind, aber mit diesen in Netzkommunikation stehen. In einigen von diesen Implementierungen können Erfahrungsdaten von einem Roboter zu den Komponenten über ein oder mehrere Netze übertragen werden und aktualisierte Richtlinienparameter können von den Komponenten zum Roboter über eines oder mehrere der Netze übertragen werden.
-
3 ist ein Ablaufplan, der ein Beispielverfahren 300 zum Durchführen von Objektbewegungsversuchen und Speichern von Daten, die den Objektbewegungsversuchen zugeordnet sind, darstellt. Der Zweckmäßigkeit halber werden die Operationen des Ablaufplans mit Bezug auf ein System beschrieben, das die Operationen durchführt. Dieses System kann eine oder mehrere Komponenten eines Roboters wie z. B. einen Prozessor und/oder ein Robotersteuersystem des Roboters 180A, 180B, 640 und/oder eines anderen Roboters umfassen. Obwohl Operationen des Verfahrens 300 in einer speziellen Reihenfolge gezeigt sind, soll darüber hinaus dies nicht begrenzend sein. Eine oder mehrere Operationen können umgeordnet, weggelassen oder hinzugefügt werden.
-
Im Block 352 beginnt eine Episode, eine Aufgabe durchzuführen.
-
Im Block 354 synchronisiert das System die Richtlinienparameter eines Richtliniennetzes, das vom System verwendet wird, auf der Basis von aktualisierten Parametern, wenn irgendwelche aktualisierten Parameter verfügbar sind. Das System kann beispielsweise einen oder mehrere Richtlinienparameter des Richtliniennetzes durch einen oder mehrere zuletzt aktualisierten Richtlinienparameter ersetzen, die auf der Basis des Verfahrens 500 von 5 erzeugt werden. In einigen Implementierungen umfasst das Ersetzen eines Richtlinienparameters durch einen anderen Richtlinienparameter das Ersetzen eines Werts eines Knotens eines neuronalen Netzmodells durch einen anderen Wert.
-
Im Block 356 initialisiert das System einen beliebigen Prozess für die Aufgabenuntersuchung. Wie hier verwendet, umfasst beliebig pseudobeliebig sowie echt beliebig. Als ein Beispiel kann das System bewirken, dass sich ein Endeffektor des Roboters zu einer beliebigen Startposition bewegt. Als anderes Beispiel kann das System bewirken, dass jedes der Gelenke des Roboters einen speziellen Bewegungszustand (z. B. eine spezielle Position, Geschwindigkeit und/oder Beschleunigung) annimmt.
-
Im Block 358 identifiziert das System einen aktuellen Zustand. Der aktuelle Zustand kann den aktuellen Roboterzustand und/oder den aktuellen Zustand von einem oder mehreren Umgebungsobjekten umfassen. Der aktuelle Zustand der Umgebungsobjekte kann auf der Basis von Sensoren, die an diesen Umgebungsobjekten befestigt sind, und/oder auf der Basis von Sensordaten vom Roboter bestimmt werden. Der aktuelle Zustand eines Umgebungsobjekts kann beispielsweise auf Sensordaten von einem oder mehreren Sensoren basieren, wie z. B. einer Trägheitsmesseinheit („IMU“), die an einer Tür befestigt ist, wenn die Aufgabe darin besteht, die Tür zu öffnen. Der aktuelle Zustand eines Umgebungsobjekts kann beispielsweise auch auf Sichtsensordaten basieren, die durch einen Sichtsensor des Roboters erfasst werden (z. B. kann eine aktuelle Position eines Objekts auf der Basis von Sichtsensordaten von einem Sichtsensor des Roboters bestimmt werden). In der ersten Iteration des Blocks 358 ist der Roboterzustand des aktuellen der anfängliche Roboterzustand nach der Initialisierung des Blocks 356. Der anfängliche Roboterzustand kann beispielsweise den aktuellen Zustand von einer oder mehreren Komponenten des Roboters umfassen, wie z. B. Positionen, Geschwindigkeit und/oder Beschleunigung von jedem der Gelenke und/oder des Endeffektors.
-
Im Block 360 wählt das System eine zu implementierende Handlung auf der Basis des aktuellen Zustandes und auf der Basis des Richtliniennetzes aus. Das System kann beispielsweise den aktuellen Zustand als Eingabe auf ein Verstärkungslernrichtlinienmodell anwenden und über das Modell auf der Basis der Eingabe eine Ausgabe erzeugen, die eine zu implementierende Handlung angibt. Das System kann die Handlung auf der Basis der Ausgabe auswählen. In einigen Implementierungen umfasst die Ausgabe Drehmomentwerte und/oder andere Werte zur Anwendung auf Aktuatoren eines Roboters und das Auswählen der Handlung kann das Auswählen dieser Werte als Handlung umfassen. In Implementierungen, in denen zusätzliche und/oder alternative aktuelle Beobachtungen im Block 358 identifiziert werden, können sie auch als Eingabe auf das Richtliniennetz angewendet werden.
-
Im Block 362 führt das System die Handlung aus und beobachtet die Belohnung und den anschließenden Zustand, der sich aus der Handlung ergibt. Das System kann beispielsweise einen oder mehrere Bewegungsbefehle erzeugen, um zu bewirken, dass einer oder mehrere der Aktuatoren sich bewegen und die Handlung bewirken. Das System kann die Belohnung auf der Basis einer Belohnungsfunktion und wahlweise auf der Basis eines Erfolgssignals, das zum System geliefert wird, beobachten. Die Belohnungsfunktion für eine Aufgabe eines Endeffektors, der eine Zielstellung erreicht, kann beispielsweise auf einer Differenz zwischen einer Stellung des Endeffektors, die sich aus der Handlung ergibt, und der Zielstellung basieren (wobei die Zielstellung als Erfolgssignal geliefert wird). Der anschließende Zustand kann einen anschließenden Roboterzustand und/oder einen anschließenden Zustand von einem oder mehreren Umgebungsobjekten umfassen. Der anschließende Roboterzustand kann beispielsweise den Zustand von einer oder mehreren Komponenten des Roboters als Ergebnis der Handlung umfassen, wie z. B. Positionen, Geschwindigkeit und/oder Beschleunigung von jedem der Gelenke und/oder des Endeffektors. In einigen Implementierungen identifiziert das System im Block 362 zusätzlich oder alternativ andere Beobachtungen als Ergebnis der Handlung, wie z. B. Sichtsensordaten, die durch einen Sichtsensor des Roboters nach der Implementierung der Handlung erfasst werden, und/oder andere Sensordaten von (einem) anderen Sensor(en) nach der Implementierung der Handlung.
-
Im Block 364 sendet das System eine Instanz von Erfahrungsdaten zu einem Wiederholungspuffer. Das System kann beispielsweise selbst die Instanz im Wiederholungspuffer speichern oder die Instanz zu einer separaten Komponente liefern, die die Instanz im Wiederholungspuffer speichert. Wie mit Bezug auf das Verfahren 500 von 5 beschrieben, können die Instanz und andere Instanzen von anderen Robotern während des Trainings verwendet werden, um die Richtlinienparameter zu aktualisieren. In einigen Implementierungen können die Erfahrungsdaten Daten umfassen, die den aktuellen Zustand des Blocks 358, die Handlung von 360 und/oder die beobachtete Belohnung und/oder den anschließenden Zustand des Blocks 362 angeben.
-
Im Block 366 bestimmt das System, ob ein Erfolg oder andere Kriterien erfüllt wurden. Das System kann beispielsweise den Erfolg bestimmen, wenn die im Block 362 beobachtete Belohnung einen Schwellenwert erfüllt. Andere Kriterien können beispielsweise auch darin bestehen, dass eine Schwellenzeit und/oder eine Schwellenanzahl von Iterationen der Blöcke 358, 360, 362 und 364 erfüllt wurden.
-
Wenn das System bestimmt, dass der Erfolg oder andere Kriterien erfüllt wurden, geht das System zum Block 352 weiter und startet eine neue Episode. Es wird angemerkt, dass in der neuen Episode das System im Block 354 der neuen Episode die Richtlinienparameter mit einem oder mehreren aktualisierten Parametern synchronisieren kann, die relativ zu jenen in der unmittelbar vorherigen Episode aktualisiert sind (als Ergebnis der gleichzeitigen Aktualisierung dieser Parameter durch das Verfahren 500 von 5 und/oder andere Verfahren). Die aktualisierten Parameter können beispielsweise durch das Verfahren 500 von 5 unter Verwendung von Erfahrungsdaten von einem oder mehreren anderen Robotern aktualisiert werden, die asynchron Erfahrungsdaten gemäß dem Verfahren 300 von 3 erzeugen. In diesen und anderen Weisen kann jede Episode von 3 die Richtlinienparameter verwenden, die auf der Basis von Erfahrungsdaten von (einem) anderen Roboter(n) aktualisiert werden. Dies kann dazu führen, dass jede Episode Erfahrungsdaten erzeugt, die ein effizienteres Training ermöglichen. Mehrere Episoden können durch das System unter Verwendung des Verfahrens 300 durchgeführt werden, bis das Training (durch das Verfahren 500 von 5 und/oder andere Verfahren) vollendet ist und/oder bis irgendein anderes Signal empfangen wird (z. B. ein Fehler auftritt).
-
Wenn das System bestimmt, dass der Erfolg oder andere Kriterien nicht erfüllt wurden, geht das System zum Block 358 weiter und führt eine zusätzliche Iteration der Blöcke 358, 360, 362 und 364 durch.
-
In 3 sind Blöcke 370, 372 und 374 auch dargestellt und stellen optionale Blöcke dar, die implementiert werden können, um zu bestimmen, ob irgendwelche der Handlungen des Blocks 360 ein oder mehrere Kriterien für den Roboter verletzen, und wenn ja, eine Korrekturhandlung vor der Ausführung der Handlung im Block 362 zu unternehmen. Im Block 370 bestimmt das System, ob die Handlung des Blocks 360 ein oder mehrere Roboterkriterien verletzt. Wenn nicht, geht das System zum Block 362 weiter und führt die Handlung aus.
-
Wenn das System bestimmt, dass die Handlung des Blocks 360 ein oder mehrere Roboterkriterien verletzt, geht das System zum Block 372 oder zum Block 374 weiter. Im Block 372 kann das System die Handlung modifizieren, so dass sie die Kriterien nicht mehr verletzt, und die modifizierte Handlung für die Ausführung im Block 362 anstelle der Handlung bereitstellen. Wenn beispielsweise die Verletzung von einer Geschwindigkeitseinschränkung ist, kann die Handlung so modifiziert werden, dass die Geschwindigkeitseinschränkung nicht mehr verletzt wird. Die modifizierte Handlung kann in der Instanz von Erfahrungsdaten anstelle der nicht modifizierten Handlung bereitgestellt werden.
-
Im Block 374 kann das System wahlweise die Episode in Reaktion auf bestimmte Verletzungen von Roboterkriterien beenden. Wenn das System die Episode im Block 374 beendet, kann das System zum Block 352 zurückkehren und/oder auf einen Eingriff (z. B. menschlichen Eingriff) warten.
-
Wie hier beschrieben, kann das Verfahren 300 von 3 in vielen Implementierungen an jedem von mehreren Roboteren implementiert werden, die während einer oder mehreren (z. B. allen) ihrer jeweiligen Iterationen des Verfahrens 300 parallel arbeiten. Ein oder mehrere Prozessoren eines ersten Roboters können beispielsweise eine Instanziierung des Verfahrens 300 durchführen, ein oder mehrere Prozessoren eines zweiten Roboters können eine Instanziierung des Verfahrens 300 durchführen usw. Dies kann ermöglichen, dass mehr Instanzen von Erfahrungsdaten in einer gegebenen Zeitdauer erzeugt werden, als wenn nur ein Roboter das Verfahren 300 betreiben würde. Dies kann zu einem zeiteffizienten Training eines neuronalen Richtliniennetzes in Implementierungen führen, in denen das Training des neuronale Richtliniennetzes mit einer größeren Frequenz als die Erzeugung von Erfahrungsdaten durch einen gegebenen Roboter stattfindet. Außerdem kann dies ermöglichen, dass jede Episode des Verfahrens 300 durch einen gegebenen Roboter Erfahrungsdaten verwendet, die auf der Basis von Erfahrungsdaten von (einem) anderen Roboter(n) aktualisiert werden. Dies kann zu einem Training eines neuronalen Richtliniennetzes führen, das in weniger Iterationen konvergiert, als wenn asynchrones Training auf der Basis von asynchronen Erfahrungsdaten nicht verwendet werden würde. In Implementierungen, in denen Endeffektoren, Sensoren, Aktuatoren und/oder andere Hardwarekomponenten der mehreren Roboter variieren und/oder unterschiedlich verschleißen, und/oder in denen verschiedene Roboter mit verschiedenen Objekten (z. B. Objekten mit verschiedenen Größen, verschiedenen Gewichten, verschiedenen Formen, verschiedenen Lichtdurchlässigkeiten, verschiedenen Materialen) und/oder in verschiedenen Umgebungen (z. B. verschiedenen Oberflächen, verschiedener Beleuchtung, verschiedenen Umgebungshindernissen) zusammenwirken, kann überdies die Verwendung von Erfahrungsdaten im Training, die durch die mehreren Roboter erzeugt werden, Robustheit im trainierten Richtliniennetz für verschiedene Roboter- und/oder Umgebungskonfigurationen vorsehen.
-
4 ist ein Ablaufplan, der ein Beispielverfahren 400 zum Speichern von Instanzen von Erfahrungsdaten darstellt. Der Zweckmäßigkeit halber werden die Operationen des Ablaufplans mit Bezug auf ein System beschrieben, das die Operationen durchführt. Dieses System kann eine oder mehrere Komponenten von einem oder mehreren Computersystemen wie z. B. einen Prozessor umfassen und/oder kann eine oder mehrere Komponenten von einem oder mehreren Robotern wie z. B. einen Prozessor und/oder ein Robotersteuersystem eines Roboters umfassen. Obwohl Operationen des Verfahrens 400 in einer speziellen Reihenfolge gezeigt sind, soll dies darüber hinaus nicht begrenzend sein. Eine oder mehrere Operationen können umgeordnet, weggelassen oder hinzugefügt werden.
-
Im Block 452 startet die Erfahrungsdatensammlung.
-
Im Block 454 empfängt das System eine Instanz von Erfahrungsdaten für einen Roboter. Der Roboter ist einer von mehreren Robotern, die Erfahrungsdaten zum System und/oder anderen Systemen parallel liefern (aber wahlweise mit verschiedenen Frequenzen). Die Roboter können beispielsweise jeweils das Verfahren 300 von 3 implementieren und der Block 454 kann in Reaktion auf jede Instanz der Durchführung des Blocks 364 des Verfahrens 300 durchgeführt werden.
-
Im Block 456 speichert das System die Instanz der Erfahrungsdaten in einem Wiederholungspuffer. Im Block 458 bestimmt das System, ob das Training vollständig ist. Das System kann bestimmen, dass das Training vollständig ist, in Reaktion auf ein Signal von einem wahlweise separaten Trainingssystem, das Richtlinienparameter auf der Basis der Erfahrungsdaten, die im Wiederholungspuffer gespeichert sind, aktualisiert.
-
Wenn das System im Block 458 bestimmt, dass das Training nicht vollständig ist, kehrt das System zum Block 454 zurück und empfängt eine zusätzliche Instanz von Erfahrungsdaten (vom gleichen Roboter oder einem anderen Roboter). Selbstverständlich können mehrere Threads von einem oder mehreren der Blöcke des Verfahrens 400 implementiert werden, um den gleichzeitigen Empfang von Erfahrungsdaten von mehreren Robotern zu ermöglichen.
-
Wenn das System im Block 458 bestimmt, dass das Training vollständig ist, endet die Erfahrungsdatensammlung im Block 460.
-
Obwohl das Verfahren 300 und das Verfahren 400 hier der Deutlichkeit halber in separaten Figuren dargestellt sind, können selbstverständlich ein oder mehrere Blöcke des Verfahrens 400 durch dieselbe(n) Komponente(n) durchgeführt werden, die einen oder mehrere Blöcke des Verfahrens 300 durchführen. Einer oder mehrere (z. B. alle) der Blöcke des Verfahrens 300 und des Verfahrens 400 können beispielsweise durch (einen) Prozessor(en) eines Roboters durchgeführt werden. Selbstverständlich können auch ein oder mehrere Blöcke des Verfahrens 400 in Kombination mit, oder vor oder nach einem oder mehreren Blöcken des Verfahrens 300 durchgeführt werden.
-
5 ist ein Ablaufplan, der ein Beispielverfahren 500 zum Trainieren, um Parameter eines Richtliniennetzes zu aktualisieren, darstellt. Der Zweckmäßigkeit halber werden die Operationen des Ablaufplans mit Bezug auf ein System beschrieben, das die Operationen durchführt. Dieses System kann eine oder mehrere Komponenten eines Computersystems wie z. B. einen Prozessor (z. B. eine GPU und/oder CPU) zum Trainieren der Maschine 114 und/oder eines anderen Computersystems umfassen. Obwohl die Operationen des Verfahrens 500 in einer speziellen Reihenfolge gezeigt sind, soll dies darüber hinaus nicht begrenzend sein. Eine oder mehrere Operationen können umgeordnet, weggelassen oder hinzugefügt werden.
-
Im Block 552 beginnt das Training.
-
Im Block 554 initialisiert das System ein normiertes Q-Netz wie z. B. ein normiertes Q-Netz, das eine beliebig initialisierte Q-Funktionsabschätzung parametrisiert. Das System kann beispielsweise das normierte Q-Netz Q(x,u|θQ) initialisieren, wobei θQ = (θµ, θP, θV}.
-
Im Block 556 initialisiert das System ein Zielrichtliniennetz, das Handlungen ausgibt, die Eingaben in das normierte Q-Netz sind, das im Block 554 initialisiert wird. Das System kann beispielsweise ein Zielrichtliniennetz Q' mit dem Gewicht θQ' ← θQ initialisieren.
-
Im Block 558 tastet das System einen Stapel von Erfahrungsdaten von einem Wiederholungspuffer ab. Das System kann beispielsweise einen Stapel von einer oder mehreren Instanzen von Erfahrungsdaten abtasten, die in einem Wiederholungspuffer auf der Basis des Verfahrens 300 von 3 und/oder des Verfahrens 400 von 4 gespeichert werden.
-
In einigen Implementierungen legt das System für die Erfahrungsdaten fest
-
Im Block
560 aktualisiert das System das normierte Q-Netz auf der Basis der im Block
558 abgetasteten Erfahrungsdaten. Das System kann beispielsweise eine Rückpropagierung und/oder andere Techniken am Q-Netz auf der Basis einer Verlustfunktion durchführen. Das System kann beispielsweise das Gewicht θ
Q des Q-Netzes durch Minimieren des Verlusts aktualisieren:
-
Im Block 562 aktualisiert das System das Zielrichtliniennetz auf der Basis der Aktualisierung des normierten Q-Netzes. Das System kann beispielsweise das Zielrichtliniennetz auf der Basis des Gradienten der Verlustfunktion in Bezug auf die Netzparameter aktualisieren. Das System kann beispielsweise das Zielrichtliniennetz aktualisieren auf der Basis von: Θ2' ← τ}Q + (1 - τ)θQ'.
-
Im Block 564 stellt das System Aktualisierungen für die Verwendung durch die Roboter in bevorstehenden Episoden bereit. Das System kann beispielsweise aktualisierte Richtlinienparameter und/oder andere Parameter zur Verwendung durch die Roboter in bevorstehenden Episoden bereitstellen.
-
Im Block 566 bestimmt das System, ob das Training vollständig ist. In einigen Implementierungen kann das Bestimmen, dass das Training vollständig ist, basieren auf: Bestimmen, dass eine Konvergenz erreicht wurde, eine Schwellenmenge von Iterationen der Blöcke 558-564 stattgefunden hat, alle verfügbaren Erfahrungsdaten verarbeitet wurden, eine Schwellenmenge an Zeit vergangen ist, und/oder andere Kriterien erfüllt wurden.
-
Wenn das System bestimmt, dass das Training vollständig ist, endet das Training im Block 568. Wenn das System bestimmt, dass das Training nicht vollständig ist, geht das System zum Block 558 zurück. Wie hier beschrieben, kann das Verfahren 500 gleichzeitig mit den Verfahren 300 und 400 durchgeführt werden, die hier beschrieben sind. In einigen von diesen Implementierungen kann die Frequenz der Durchführung einer Iteration des Verfahrens 500 größer sein als die Frequenz der Durchführung einer Iteration des Verfahrens 300 und/oder 400. Als ein nicht begrenzendes Beispiel kann das Verfahren 500 mit einer Rate von 100 Hz durchgeführt werden und das Verfahren 300 kann mit einer Rate von 20 Hz durchgeführt werden. Es wird angemerkt, dass in einigen Implementierungen das Verfahren 300, das Verfahren 400 und/oder das Verfahren 500 „kontinuierlich“ insofern durchgeführt werden können, als Erfahrungsdaten kontinuierlich durch einen oder mehrere Roboter der realen Welt erzeugt werden und verwendet werden, um das Zielrichtliniennetz kontinuierlich zu aktualisieren.
-
Um ein gewisses zusätzliches Detail über die hier beschriebenen Implementierungen zu schaffen, werden einige Beispielaufgaben, die durch die hier offenbarten Verstärkungslerntechniken gelernt werden können, genauer beschrieben. Einige Beispiele von Aufgaben umfassen das Erreichen eines beliebigen Ziels, das Schieben und/oder Ziehen einer Tür und das Bestücken. In einer Erreichungsaufgabe kann beispielsweise ein Roboterarm versuchen, ein beliebiges Ziel im Raum von einer festen anfänglichen Konfiguration zu erreichen. Ein beliebiges Ziel wird pro Episode durch Abtastpunkte gleichmäßig von einem Würfel mit der Größe 0,2 m, der um einen Punkt zentriert ist, erzeugt. Das beliebige Ziel kann als Erfolgssignal bereitgestellt werden. In Anbetracht der Endeffektorposition e und der Zielposition y kann die Belohnungsfunktion sein: r(x; u) = c1d(y; e(x)) c2uTu.
-
In einer Türschiebe- und Türziehaufgabe kann beispielsweise auch ein Roboterarm versuchen, eine Tür durch Schieben oder Ziehen eines Griffs der Tür zu öffnen. Der Griff kann für bis zu 90 Grad nach unten gedreht werden, während die Tür bis zu 90 Grad in beiden Richtungen geöffnet werden kann. Die Tür weist eine Feder auf, so dass sie sich allmählich schließt, wenn keine Kraft aufgebracht wird. Die Tür weist ein Schloss auf, so dass er die Tür nur öffnen könnte, wenn der Griff an ungefähr 60 Grad vorbei gedreht wird. Ein IMU-Sensor, der an der Tür befestigt ist, kann für Türwinkelmessungen verwendet werden, und Quaternion-Messwerte vom IMU-Sensor können verwendet werden, um den Verlust zu berechnen. Die Belohnungsfunktion kann beispielsweise aus zwei Teilen bestehen: der Nähe des Endeffektors zum Griff und der Messung, wie weit die Tür in der richtigen Richtung geöffnet ist. Der erste Teil der Belohnungsfunktion hängt vom Abstand zwischen der Endeffektorposition e und der Griffposition h in ihrem neutralen Zustand ab. Der zweite Teil der Belohnungsfunktion hängt vom Abstand zwischen dem Quaternion des Griffs q und seinem Wert ab, wenn der Griff gedreht wird und die Tür geöffnet wird, qO. Zustandsmerkmale können die Gelenkwinkel des Roboterarms und ihre Zeitableitungen, die Endeffektorposition, die Ruhetürgriffposition, die Türrahmenposition, den Türwinkel und den Griffwinkel umfassen.
-
6 stellt schematisch eine Beispielarchitektur eines Roboters 640 dar. Der Roboter 640 umfasst ein Robotersteuersystem 660, eine oder mehrere Betriebskomponenten 640a-640n und einen oder mehrere Sensoren 642a-642m. Die Sensoren 642a-642m können beispielsweise Sichtsensoren, Lichtsensoren, Drucksensoren, Druckwellensensoren (z. B. Mikrophone), Nähesensoren, Beschleunigungsmesser, Gyroskope, Thermometer, Barometer und so weiter umfassen. Obwohl die Sensoren 642a-m als einteilig mit dem Roboter 620 dargestellt sind, soll dies nicht begrenzend sein. In einigen Implementierungen können die Sensoren 642a-m außerhalb des Roboters 620 angeordnet sein, z. B. als eigenständige Einheiten.
-
Die Betriebskomponenten 640a-640n können beispielsweise einen oder mehrere Endeffektoren und/oder einen oder mehrere Servomotoren oder andere Aktuatoren, um eine Bewegung von einer oder mehreren Komponenten des Roboters zu bewirken, umfassen. Der Roboter 620 kann beispielsweise mehrere Freiheitsgrade aufweisen und jeder der Aktuatoren kann die Betätigung des Roboters 620 innerhalb eines oder mehrerer der Freiheitsgrade in Reaktion auf die Steuerbefehle steuern. Wie hier verwendet, umfasst der Begriff Aktuator eine mechanische oder elektrische Vorrichtung, die eine Bewegung erzeugt (z. B. einen Motor), zusätzlich zu irgendeiner (irgendwelchen) Antriebseinrichtung(en), die dem Aktuator zugeordnet sein können und die empfangene Steuerbefehle in ein oder mehrere Signale zum Antreiben des Aktuators übersetzen. Folglich kann das Liefern eines Steuerbefehls zu einem Aktuator das Liefern des Steuerbefehls zu einer Antriebseinrichtung umfassen, die den Steuerbefehl in geeignete Signale zum Antreiben einer elektrischen oder mechanischen Vorrichtung übersetzt, um eine gewünschte Bewegung zu erzeugen.
-
Das Robotersteuersystem 660 kann in einem oder mehreren Prozessoren wie z. B. einer CPU, GPU und/oder (einer) anderen Steuereinheit(en) des Roboters 620 implementiert werden. In einigen Implementierungen kann der Roboter 620 einen „Gehirnkasten“ umfassen, der alles oder Aspekte des Steuersystems 660 umfassen kann. Der Gehirnkasten kann beispielsweise Echtzeit-Datenbündel zu den Betriebskomponenten 640a-n liefern, wobei jedes der Echtzeitbündel einen Satz von einem oder mehreren Steuerbefehlen umfasst, die unter anderem die Parameter der Bewegung (falls vorhanden) für jede der einen oder der mehreren Betriebskomponenten 640a-n vorgeben. In einigen Implementierungen kann das Robotersteuersystem 660 einen oder mehrere Aspekte der Verfahren 300, 400 und/oder 500, die hier beschrieben werden, durchführen.
-
Wie hier beschrieben, können in einigen Implementierungen alle oder Aspekte der Steuerbefehle, die durch das Steuersystem 660 beim Bewegen von einer oder mehreren Komponenten eines Roboters erzeugt werden, auf einer Ausgabe basieren, die über ein Richtliniennetz auf der Basis eines aktuellen Roboterzustandes und/oder anderer Beobachtungen erzeugt wird. Obwohl das Steuersystem 660 in 6 als integraler Teil des Roboters 620 dargestellt ist, können in einigen Implementierungen alles oder Aspekte des Steuersystems 660 in einer Komponente implementiert werden, die vom Roboter 620 separat ist, aber mit diesem in Kommunikation steht. Alles oder Aspekte des Steuersystems 660 können beispielsweise an einer oder mehreren Rechenvorrichtungen implementiert werden, die mit dem Roboter 620 in verdrahteter und/oder drahtloser Kommunikation stehen, wie z. B. die Rechenvorrichtung 710.
-
7 ist ein Blockdiagramm einer Beispielrechenvorrichtung 710, die wahlweise verwendet werden kann, um einen oder mehrere Aspekte der hier beschriebenen Techniken durchzuführen. Die Rechenvorrichtung 710 umfasst typischerweise mindestens einen Prozessor 714, der mit einer Anzahl von Peripherievorrichtungen über ein Busuntersystem 712 kommuniziert. Diese Peripherievorrichtungen können ein Speicheruntersystem 724 beispielsweise mit einem Arbeitsspeicheruntersystem 725 und einem Dateispeicheruntersystem 726, Benutzerschnittstellen-Ausgabevorrichtungen 720, Benutzerschnittstellen-Eingabevorrichtungen 722 und ein Netzschnittstellenuntersystem 716 umfassen. Die Eingabe- und Ausgabevorrichtungen ermöglichen eine Benutzerzusammenwirkung mit der Rechenvorrichtung 710. Das Netzschnittstellenuntersystem 716 schafft eine Schnittstelle zu äußeren Netzen und ist mit entsprechenden Schnittstellenvorrichtungen in anderen Rechenvorrichtungen gekoppelt.
-
Die Benutzerschnittstellen-Eingabevorrichtungen 722 können eine Tastatur, Zeigevorrichtungen wie z. B. eine Maus, eine Rollkugel, ein Berührungsfeld oder ein Graphik-Tablet, einen Scanner, einen Berührungsbildschirm, der in die Anzeige eingebaut ist, Audioeingabevorrichtungen wie z. B. Spracherkennungssysteme, Mikrophone und/oder andere Typen von Eingabevorrichtungen umfassen. Im Allgemeinen soll die Verwendung des Begriffs „Eingabevorrichtung“ alle möglichen Typen von Vorrichtungen und Weisen umfassen, um Informationen in die Rechenvorrichtung 710 oder in ein Kommunikationsnetz einzugeben.
-
Die Benutzerschnittstellen-Ausgabevorrichtungen 720 können ein Anzeigeuntersystem, einen Drucker, ein Faxgerät oder nicht visuelle Anzeigen wie z. B. Audioausgabevorrichtungen umfassen. Das Anzeigeuntersystem kann eine Kathodenstrahlröhre (CRT), eine Flachfeldvorrichtung wie z. B. eine Flüssigkristallanzeige (LCD), eine Projektionsvorrichtung oder irgendeinen anderen Mechanismus zum Erzeugen eines sichtbaren Bildes umfassen. Das Anzeigeuntersystem kann auch eine nicht visuelle Anzeige wie z. B. über Audioausgabevorrichtungen bereitstellen. Im Allgemeinen soll die Verwendung des Begriffs „Ausgabevorrichtung“ alle möglichen Typen von Vorrichtungen und Weisen umfassen, um Informationen aus der Rechenvorrichtung 710 an den Benutzer oder eine andere Maschine oder Rechenvorrichtung auszugeben.
-
Das Speicheruntersystem 724 speichert Programmierungs- und Datengebilde, die die Funktionalität von einigen oder allen der hier beschriebenen Module bereitstellen. Das Speicheruntersystem 724 kann beispielsweise die Logik umfassen, um ausgewählte Aspekte des Verfahrens von 3, 4 und/oder 5 durchzuführen.
-
Diese Softwaremodule werden im Allgemeinen durch den Prozessor 714 allein oder in Kombination mit anderen Prozessoren ausgeführt. Der Arbeitsspeicher 725, der im Speicheruntersystem 724 verwendet wird, kann eine Anzahl von Arbeitsspeichern umfassen, einschließlich eines Hauptdirektzugriffsarbeitsspeichers (RAM) 730 zum Speichern von Anweisungen und Daten während der Programmausführung und eines Festwertarbeitsspeichers (ROM) 732, in dem feste Anweisungen gespeichert sind. Ein Dateispeicheruntersystem 726 kann eine dauerhafte Speicherung für Programm- und Datendateien bereitstellen und kann ein Festplattenlaufwerk, ein Diskettenlaufwerk zusammen mit zugehörigen entnehmbaren Medien, ein CD-ROM-Laufwerk, ein optisches Laufwerk oder entnehmbare Medienkassetten umfassen. Die Module, die die Funktionalität von bestimmten Implementierungen implementieren, können durch das Dateispeicheruntersystem 726 im Speicheruntersystem 724 oder in anderen Maschinen, die für den (die) Prozessor(en) 714 zugänglich sind, gespeichert werden.
-
Das Busuntersystem 712 stellt einen Mechanismus bereit, um die verschiedenen Komponenten und Untersysteme der Rechenvorrichtung 710 miteinander kommunizieren zu lassen, wie beabsichtigt. Obwohl das Busuntersystem, 712 schematisch als einzelner Bus gezeigt ist, können alternative Implementierungen des Busuntersystems mehrere Busse verwenden.
-
Die Rechenvorrichtung 710 kann von variierenden Typen sein, einschließlich eines Arbeitsplatzrechners, eines Servers, eines Rechenclusters, eines Blade-Servers, einer Serverfarm oder irgendeines anderen Datenverarbeitungssystems oder irgendeiner anderen Rechenvorrichtung. Aufgrund der sich ständig ändernden Art von Computern und Netzen ist die Beschreibung der Rechenvorrichtung 710, die in 7 dargestellt ist, nur als spezielles Beispiel für Zwecke der Erläuterung von einigen Implementierungen vorgesehen. Viele andere Konfigurationen der Rechenvorrichtung 710 sind möglich mit mehr oder weniger Komponenten als die in 7 dargestellte Rechenvorrichtung.
-
Implementierungen verwenden tiefes Verstärkungslernen, um ein neuronales Richtliniennetz zu trainieren, das eine Richtlinie zum Bestimmen einer Roboterhandlung auf der Basis eines aktuellen Zustandes parametrisiert. Einige von diesen Implementierungen sammeln Erfahrungsn von mehreren Robotern, die gleichzeitig arbeiten. Jeder Roboter erzeugt Instanzen von Erfahrungsdaten während der iterativen Durchführung von Episoden, die jeweils Untersuchungen der Durchführung einer Aufgabe sind, und die jeweils auf der Basis des Richtliniennetzes und der aktuellen Richtlinienparameter für das Richtliniennetz während der Episode geführt werden. Die gesammelten Erfahrungsdaten werden während der Episoden erzeugt und werden verwendet, um das Richtliniennetz durch iteratives Aktualisieren von Richtlinienparametern des Richtliniennetzes auf der Basis eines Stapels von gesammelten Erfahrungsdaten zu trainieren. Vor der Durchführung von jeder von mehreren Episoden, die durch die Roboter durchgeführt werden, können ferner die aktuellen aktualisierten Richtlinienparameter für die Nutzung bei der Durchführung der Episode bereitgestellt (oder abgerufen) werden.
-
Obwohl mehrere Implementierungen hier beschrieben und erläutert wurden, kann eine Vielfalt von anderen Mitteln und/oder Strukturen zum Durchführen der Funktion und/oder Erhalten der Ergebnisse und/oder eines oder mehrerer der Vorteile, die hier beschrieben sind, verwendet werden, und jede von solchen Variationen und/oder Modifikationen soll innerhalb des Schutzbereichs der hier beschriebenen Implementierungen liegen. Allgemeiner sollen alle Parameter, Abmessungen, Materialien und Konfigurationen, die hier beschrieben sind, beispielhaft sein und die tatsächlichen Parameter, Abmessungen, Materialien und/oder Konfigurationen hängen von der speziellen Anwendung oder den speziellen Anwendungen ab, für die die Lehren verwendet werden. Unter Verwendung von nicht mehr als Routineexperimentierung erkennt der Fachmann auf dem Gebiet viele Äquivalente zu den hier beschriebenen speziellen Implementierungen oder kann diese feststellen. Daher soll selbstverständlich sein, dass die vorangehenden Implementierungen nur als Beispiel dargestellt sind und dass sie innerhalb des Schutzbereichs der beigefügten Ansprüche und Äquivalente zu diesen Implementierungen anders als speziell beschrieben und beansprucht ausgeführt werden können. Implementierungen der vorliegenden Offenbarung sind auf jedes individuelle Merkmal, jedes individuelle System, jeden individuellen Gegenstand, jedes individuelle Material, jede individuelle Ausrüstung und/oder jedes individuelle Verfahren, die hier beschrieben sind, gerichtet. Außerdem ist irgendeine Kombination von zwei oder mehr solchen Merkmalen, Systemen, Gegenständen, Materialien, Ausrüstungen und/oder Verfahren, wenn solche Merkmale, Systeme, Gegenstände, Materialien, Ausrüstungen und/oder andere Verfahren nicht miteinander inkonsistent sind, innerhalb des Schutzbereichs der vorliegenden Offenbarung enthalten.