ES3040548T3 - Real-time real-world reinforcement learning systems and methods - Google Patents

Real-time real-world reinforcement learning systems and methods

Info

Publication number
ES3040548T3
ES3040548T3 ES19857984T ES19857984T ES3040548T3 ES 3040548 T3 ES3040548 T3 ES 3040548T3 ES 19857984 T ES19857984 T ES 19857984T ES 19857984 T ES19857984 T ES 19857984T ES 3040548 T3 ES3040548 T3 ES 3040548T3
Authority
ES
Spain
Prior art keywords
state
buffer
joint
reinforcement learning
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES19857984T
Other languages
English (en)
Inventor
Ashique Rupam Mahmood
Brent J Komer
Dmytro Korenkevych
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kindred Systems II Inc
Original Assignee
Kindred Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kindred Systems Inc filed Critical Kindred Systems Inc
Application granted granted Critical
Publication of ES3040548T3 publication Critical patent/ES3040548T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Program-controlled manipulators
    • B25J9/16Program controls
    • B25J9/1628Program controls characterised by the control loop
    • B25J9/163Program controls characterised by the control loop learning, adaptive, model based, rule based expert control
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Program-controlled manipulators
    • B25J9/16Program controls
    • B25J9/1602Program controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • G06F18/2178Validation; Performance evaluation; Active pattern learning techniques based on feedback of a supervisor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/778Active pattern-learning, e.g. online learning of image or video features
    • G06V10/7784Active pattern-learning, e.g. online learning of image or video features based on feedback from supervisors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/96Management of image or video recognition tasks
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40499Reinforcement learning algorithm
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Fuzzy Systems (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Manipulator (AREA)

Abstract

Se presenta una arquitectura de aprendizaje por refuerzo para facilitar dicho aprendizaje en el contexto de la operación de un sistema externo en tiempo real que incluye múltiples dispositivos en un entorno real. Esta arquitectura comprende varios comunicadores, un gestor de tareas y un agente de aprendizaje por refuerzo que interactúan entre sí para implementar una política que permita alcanzar un objetivo definido en el entorno real. Cada comunicador recibe datos sensoriales de un dispositivo correspondiente, y el gestor de tareas genera un vector de estado conjunto a partir de estos datos. El agente de aprendizaje por refuerzo genera, a partir del vector de estado conjunto, un vector de acción conjunto, que el gestor de tareas interpreta como múltiples comandos de actuación. Los comunicadores transmiten estos comandos a los dispositivos en el entorno real. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Sistemas y métodos de aprendizaje por refuerzo en tiempo real en el mundo real
Antecedentes
Campo técnico
La presente divulgación se refiere a sistemas y métodos informáticos y, más particularmente, a un marco general de aprendizaje por refuerzo para operar dispositivos en un entorno del mundo real.
Descripción de la técnica relacionada
Los modelos de aprendizaje por refuerzo son un campo de estudio atractivo en entornos interactivos en los que se entrena a un agente para lograr un objetivo o maximizar un resultado en relación con un proceso determinado. Por ejemplo, usando el aprendizaje por refuerzo, puede entrenarse a un agente para lograr una puntuación más alta en un videojuego mediante el intercambio de estados y recompensas. La robótica y los dispositivos relacionados están infrautilizados en el campo del aprendizaje por refuerzo debido a problemas de fiabilidad y un bajo rendimiento del aprendizaje con robots. Algunos modelos de aprendizaje por refuerzo han demostrado ser algo eficaces en simulaciones informáticas, que son entornos distintos del mundo real que no implican el control de robótica y dispositivos físicos. Sin embargo, cuando se aplican a entornos del mundo real en los que la robótica y los dispositivos físicos operan en tiempo real, estos modelos simulados de aprendizaje por refuerzo son ineficaces y se caracterizan por un bajo rendimiento. Las deficiencias de los modelos de aprendizaje por refuerzo que operan en tiempo real en entornos físicos del mundo real se atribuyen a una variedad de factores, incluidos una baja velocidad en la recogida de datos, observabilidad parcial, sensores ruidosos, seguridad y fragilidad de los dispositivos físicos implicados.
Además de las deficiencias anteriores, un problema importante al que se enfrentan los sistemas de aprendizaje por refuerzo es que los retrasos o desfases temporales entre eventos en el sistema pueden inhibir el aprendizaje por refuerzo por parte de un agente. Por ejemplo, las variabilidades y los retrasos temporales asociados con la recepción de paquetes sensoriomotores por parte de un sistema de aprendizaje por refuerzo y la recepción de comandos de acción por parte de un sistema robótico externo al sistema de aprendizaje por refuerzo deterioran significativamente el rendimiento de aprendizaje del sistema de aprendizaje por refuerzo. En entornos de aprendizaje por refuerzo del mundo real, el retraso en la recepción de diversa información recibida por el agente de aprendizaje por refuerzo puede disociar la causalidad entre una recompensa o estado y una acción correspondiente. En resumen, tales retrasos pueden añadir incertidumbre en cuanto a cómo afectan las acciones a las observaciones posteriores y también pueden afectar a la capacidad de respuesta del sistema robótico a los comandos de acción y estímulos. Como resultado, el rendimiento de los sistemas de aprendizaje por refuerzo del mundo real que implican robótica ha sido hasta ahora inferior al rendimiento teórico de las simulaciones de aprendizaje por refuerzo que implican una respuesta simulada de la robótica y los dispositivos.
El documento US 2016/288323 A1 se refiere a un método para operar un robot que implica generar acciones combinadas a partir de un conjunto de acciones originales almacenadas en una biblioteca de acciones y almacenar las acciones combinadas en la biblioteca de acciones. Se aplica un algoritmo de aprendizaje por refuerzo al conjunto de acciones almacenadas en la biblioteca de acciones para aprender una política de control que hace uso de las acciones originales y las acciones combinadas. El robot se opera basándose en la biblioteca de acciones resultante.
Khashayar Rohanimaneshet al:“Coarticulation: An approach for Generating Concurrent Plans in Markov Decision Processes” se refiere a un enfoque para realizar actividades concurrentes en procesos de decisión de Markov (MDP) basándose en el marco de coarticulación.
Breve sumario
En pocas palabras, las realizaciones divulgadas en el presente documento están dirigidas a sistemas y métodos para implementar una arquitectura de aprendizaje por refuerzo que interactúa con un entorno externo del mundo real que tiene una pluralidad de dispositivos físicos que operan en el mismo.
La invención es como se define en la reivindicación 1, con respecto a un método, y en la reivindicación 8, con respecto a un sistema informático, del conjunto de reivindicaciones adjunto.
Breve descripción de las varias vistas de los dibujos
La Figura 1 muestra un diagrama de un modelo de aprendizaje por refuerzo;
la Figura 2 muestra un entorno y un sistema informático que implementa una arquitectura de aprendizaje por refuerzo para facilitar el aprendizaje por refuerzo en conexión con el funcionamiento de dispositivos en el entorno según una o más realizaciones;
la Figura 3 muestra una vista frontal de un robot que opera en el entorno de la Figura 2;
la Figura 4 muestra un diagrama esquemático del robot de la Figura 3 y del sistema informático de la Figura 2;
la Figura 5 muestra un diagrama de la arquitectura de aprendizaje por refuerzo de la Figura 2 según una o más realizaciones;
la Figura 6 muestra un comunicador de dispositivo de la arquitectura de aprendizaje por refuerzo;
la Figura 7 muestra un gestor de tareas y un agente de aprendizaje por refuerzo de la arquitectura de aprendizaje por refuerzo;
la Figura 8 muestra un método de funcionamiento del comunicador de dispositivo de la arquitectura de aprendizaje por refuerzo;
la Figura 9 muestra un método de funcionamiento del gestor de tareas de la arquitectura de aprendizaje por refuerzo; y
la Figura 10 muestra un método de funcionamiento del agente de aprendizaje por refuerzo de la arquitectura de aprendizaje por refuerzo.
Descripción detallada
La Figura 1 muestra un diagrama de un proceso 100 de aprendizaje por refuerzo según una o más realizaciones. El proceso 100 de aprendizaje por refuerzo es un modelo de aprendizaje automático por refuerzo en el que un agente 104 de aprendizaje por refuerzo aprende mediante la interacción con un entorno 102. En particular, el agente 104 de aprendizaje por refuerzo determina un estado 106 que representa un estado del entorno 102 en un tiempo t y determina una recompensa 108 asociada con la última transición o cambio que el agente 104 provocó en el entorno 102. El estado 106 puede representar características del entorno 102, como la posición, el estado operativo, la velocidad, la dirección o la orientación de una entidad u objeto en el entorno 102. La recompensa 108 representa si la última transición o cambio en el entorno 102 tuvo éxito con respecto a un objetivo definido. La recompensa 108 puede representar además el grado de éxito o fracaso de la transición o cambio. El estado 106 y la recompensa 108 pueden comprender cada uno un conjunto de valores escalares, cada uno representativo de un aspecto del entorno 102.
El agente 104 adapta un modelo de aprendizaje por refuerzo para el comportamiento al interactuar con el entorno 102 en intervalos de tiempo discretos para maximizar la recompensa acumulada recibida por el agente 104 en asociación con la realización de acciones en conexión con el entorno 102. El agente 104 procesa el estado 106 y la recompensa 108 recibidas durante el tiempo t y determina una acción 110 a realizar en función del estado 106 y la recompensa 108. A continuación, el agente 104 realiza o provoca la realización de la acción 110 que implica el entorno 102, como controlando un dispositivo que opera en un espacio físico para realizar una operación definida. Posteriormente, una entidad que opera en el entorno 102 determina una recompensa 112 y un estado 114 para un tiempo t+1 como resultado de la acción 110. El agente 104 adapta su modelo de aprendizaje por refuerzo en respuesta al éxito o fracaso indicado por la recompensa 112 y el nuevo estado 114 del entorno 102 y/o del agente 104. Según el proceso 100 de aprendizaje por refuerzo, el comportamiento del agente 104 puede adaptarse mediante ensayo y error/éxito para optimizar la recompensa recibida, que puede estar asociada a un objetivo a alcanzar.
En el contexto de la robótica o la operación de un conjunto de dispositivos en tiempo real y en un entorno físico del mundo real, desarrollar el modelo de aprendizaje por refuerzo del agente 104 de aprendizaje por refuerzo ha resultado ser un reto difícil. Por ejemplo, controlar dispositivos robóticos que operan en un entorno de trabajo real es difícil debido a la variabilidad temporal asociada a las etapas del proceso. Los retrasos temporales entre una decisión del agente de aprendizaje por refuerzo y las lecturas de los sensores obtenidas pueden variar entre los dispositivos asociados con los sensores. El procesamiento de datos sensoriales y de estado puede requerir cantidades de tiempo diferentes para diferentes dispositivos en el sistema del mundo real y, como resultado, la precisión de la decisión tomada por el agente de aprendizaje por refuerzo puede no reflejar el estado real del sistema del mundo real. Otro problema es que el agente de aprendizaje por refuerzo puede obtener secuencialmente datos sensoriales de los dispositivos que operan en el entorno del mundo real y procesar secuencialmente los datos sensoriales para determinar las acciones a realizar, lo que puede conducir a una desconexión entre el estado observado del entorno del mundo real y el estado real del entorno del mundo real. Por ejemplo, un agente de aprendizaje por refuerzo puede hacer que un primer dispositivo realice una primera acción en respuesta a un estado observado para el primer dispositivo en un primer momento y, a continuación, hacer que un segundo dispositivo realice una segunda acción en respuesta a un estado observado para el segundo dispositivo en un segundo momento. Sin embargo, puede surgir un problema en el que la primera acción cambia el estado del segundo dispositivo, por lo que la segunda acción realizada puede no tener el efecto deseado o previsto. Peor aún, el agente de aprendizaje por refuerzo puede recibir retroalimentación que indique que la segunda acción fue indeseable y cambiar su política en respuesta cuando, en realidad, la segunda acción podría haber sido efectiva si el segundo dispositivo la hubiera realizado en relación con la primera acción.
La presente divulgación proporciona un marco operativo en el que las características de aprendizaje y rendimiento de las tareas de aprendizaje por refuerzo en el mundo real, realizadas por el agente 104 de aprendizaje por refuerzo, son similares o se aproximan a las características de aprendizaje y rendimiento de un algoritmo de aprendizaje por refuerzo simulado. Las tecnologías divulgadas en el presente documento proporcionan numerosos beneficios a un sistema de aprendizaje por refuerzo que opera para lograr un objetivo definido en un sistema externo en tiempo real del mundo real mediante el control de una pluralidad de dispositivos. Una característica del sistema de aprendizaje por refuerzo divulgado en el presente documento es que los retrasos temporales entre las lecturas sensoriales y las acciones iniciadas por un agente de aprendizaje por refuerzo se reducen mediante la recopilación y generación de vectores conjuntos basados en una pluralidad de instancias de datos. El retraso temporal también se reduce al hacer que el agente de aprendizaje por refuerzo opere en un estado suspendido durante un período de tiempo definido antes de pasar a un estado activo, en el que se aplica una política. El sistema de aprendizaje por refuerzo de la presente divulgación también mejora la consistencia de los intervalos de tiempo entre los momentos en que el agente de aprendizaje por refuerzo toma decisiones sobre las acciones que deben realizar los dispositivos que operan en el entorno en tiempo real. Una característica adicional de la presente divulgación es proporcionar un marco adaptable para operar diferentes tipos y diferentes configuraciones de dispositivos para facilitar el aprendizaje por refuerzo. Por ejemplo, el marco proporcionado en el presente documento permite añadir nuevos tipos de dispositivos o cambiar la configuración actual de los dispositivos que operan en un entorno del mundo real para lograr un objetivo deseado según un proceso de aprendizaje por refuerzo.
La siguiente descripción, junto con los dibujos adjuntos, presenta ciertos detalles específicos para proporcionar una comprensión completa de las diversas realizaciones divulgadas. Sin embargo, un experto en la técnica pertinente reconocerá que las realizaciones divulgadas pueden ponerse en práctica en diversas combinaciones, sin uno o más de estos detalles específicos, o con otros métodos, componentes, dispositivos, materiales, etc. En otros casos, no se han mostrado ni descrito estructuras o componentes bien conocidos asociados con el entorno de la presente divulgación, incluidos, entre otros, los sistemas y redes de comunicación y el entorno, para evitar oscurecer innecesariamente las descripciones de las realizaciones. Además, las diversas realizaciones pueden ser métodos, sistemas, medios o dispositivos. Por consiguiente, las diversas realizaciones pueden ser realizaciones completamente de hardware, realizaciones completamente de software o realizaciones que combinan aspectos de software y hardware.
A lo largo de la memoria descriptiva, las reivindicaciones y los dibujos, los siguientes términos tienen el significado que se les atribuye explícitamente en el presente documento, a menos que el contexto indique claramente lo contrario. El término “en el presente documento” se refiere a la memoria descriptiva, las reivindicaciones y los dibujos asociados con la solicitud actual. Las frases “en una realización”, “en otra realización”, “en diversas realizaciones”, “en algunas realizaciones”, “en otras realizaciones” y otras variaciones de las mismas se refieren a una o más características, estructuras, funciones, limitaciones o características de la presente divulgación, y no se limitan a las mismas realizaciones ni a otras diferentes, a menos que el contexto indique claramente lo contrario. Como se usa en el presente documento, el término “o” es un operador “o” inclusivo y equivale a las frases “A o B, o ambos” o “A o B o C, o cualquier combinación de los mismos”, y las listas con elementos adicionales se tratan de forma similar. El término “basado en” no es excluyente y permite basarse en características, funciones, aspectos o limitaciones adicionales no descritos, a menos que el contexto indique claramente lo contrario. Además, a lo largo de la memoria descriptiva, el significado de “un”, “una” y “el/la” incluyen referencias en singular y plural.
Las referencias al término “conjunto” (por ejemplo, “un conjunto de elementos”), como se usa en el presente documento, a menos que se indique lo contrario o el contexto lo contradiga, deben interpretarse como una colección no vacía que comprende uno o más miembros o instancias.
Las referencias al término “subconjunto” (por ejemplo, “un subconjunto del conjunto de elementos”), como se usa en el presente documento, a menos que se indique lo contrario o el contexto lo contradiga, deben interpretarse como una colección no vacía que comprende uno o más miembros o instancias de un conjunto o una pluralidad de miembros o instancias.
La Figura 2 muestra un diagrama en el que un sistema informático 200 se comunica en tiempo real con dispositivos externos que operan en un entorno 202. El sistema informático 200 incluye uno o más procesadores y memoria que almacena un conjunto de instrucciones que, como resultado de su ejecución por los uno o más procesadores, hacen que el sistema informático 200 realice las operaciones descritas en el presente documento. El conjunto de instrucciones, como resultado de su ejecución por los uno o más procesadores, hace que el sistema informático 200 invoque y ejecute un agente de aprendizaje por refuerzo de un sistema de aprendizaje por refuerzo, como se describe con respecto a la Figura 1 y en otras partes del presente documento. El sistema informático 200, en particular, opera, al menos en parte, según una arquitectura 204 de aprendizaje por refuerzo que incluye una o más políticas n que definen el comportamiento del sistema informático 200 con respecto al entorno 202. Las una o más políticas n de la arquitectura 204 de aprendizaje por refuerzo dictan las acciones que deben realizarse en función de un estado y/o una recompensa observada en relación con el funcionamiento de los dispositivos en el entorno 202 y que pueden corresponder a asociaciones o reglas relativas a las relaciones entre el estímulo (estado, recompensa) y la respuesta (acción). La arquitectura 204 de aprendizaje por refuerzo puede incluir funciones de valor para determinar un retorno de valor a largo plazo de un estado actual bajo una política particular n. La arquitectura 204 de aprendizaje por refuerzo puede incluir un modelo representativo del entorno 202.
El sistema informático 200 es independiente de los dispositivos del entorno 202, de modo que el sistema informático 200 no está incluido como componente de ninguno de los dispositivos en el entorno 202. El sistema informático 200 se comunica con los dispositivos del entorno 202 a través de una o más redes 206 de comunicación. Las una o más redes 206 pueden incluir redes cableadas y/o inalámbricas para facilitar las comunicaciones entre el sistema informático 200 y los dispositivos del entorno 202. Las una o más redes 206 pueden incluir redes de proveedores de servicios que proporcionan interconectividad de comunicación entre una pluralidad de entidades en una o más regiones, redes públicas (p. ej., Internet, la World Wide Web), redes privadas, redes de área extensa, redes de área local, redes satelitales, redes en malla, redes intermedias que conectan redes independientes, redes de área local, redes satelitales y/o combinaciones de las mismas, a modo de ejemplo no limitativo. Como ejemplo no limitativo particular, las una o más redes 206 pueden ser una red de área local a la que se conectan el sistema informático 200 y los dispositivos del entorno 202, y a través de la cual el sistema informático 200 y los dispositivos pueden comunicarse mediante conexiones cableadas o inalámbricas. Aunque no se muestra, el entorno 202 puede incluir un enrutador para dirigir las comunicaciones inalámbricas entre el sistema informático 200 y los dispositivos del entorno 202. Las comunicaciones entre un dispositivo del entorno 202 y el sistema informático 200 pueden presentar un retardo temporal que puede contribuir a las dificultades mencionadas anteriormente asociadas con el aprendizaje por refuerzo en tiempo real y en un entorno del mundo real.
En algunas realizaciones, el sistema informático 200 puede implementarse como un entorno distribuido de computación en la nube en el que se ejecutan diferentes procesos en dispositivos, ordenadores o servidores separados, distribuidos entre dos o más redes o ubicaciones que están ubicadas de forma remota respecto al entorno 202. Por ejemplo, un primer proceso de la arquitectura 204 de aprendizaje por refuerzo puede ejecutarse en un primer ordenador ubicado en una primera ubicación geográfica, y un segundo proceso de la arquitectura 204 de aprendizaje por refuerzo puede ejecutarse en un segundo ordenador ubicado en una segunda ubicación geográfica. El primer ordenador y el segundo ordenador pueden ser ordenadores diferentes en la misma instalación, o pueden ser ordenadores que están distribuidos geográficamente entre sí.
Los ejemplos de dispositivos en el entorno 202 incluyen un robot 208 para realizar tareas en el espacio físico del entorno 202 y un sensor 210 para detectar condiciones en el espacio físico del entorno 202. El robot 208 incluye un conjunto de dispositivos controlables (p. ej., brazo robótico, sensores de obtención de imágenes, pinzas robóticas, dispositivos de locomoción, actuadores), uno o más controladores configurados para controlar el conjunto de dispositivos controlables, una interfaz de comunicación que incluye uno o más dispositivos de comunicación (p. ej., adaptador de comunicación Wi-Fi, adaptador de comunicación Zigbee, adaptadores de comunicación Bluetooth, adaptador de red cableada, puerto de bus serie universal), un cuerpo, uno o más procesadores y memoria que almacena instrucciones para controlar el funcionamiento del robot 208. El robot 208 puede recibir, del sistema informático 200 a través del dispositivo de comunicación, instrucciones que, como resultado de su ejecución, hacen que el robot 208 interactúe en y con el entorno 202. Por ejemplo, el robot 208 podría recibir instrucciones ejecutables que hagan que el robot 208 recoja uno o más elementos 212 y 214 y coloque los elementos 212 y 214 sobre una báscula 216 y luego en la caja 218. Los dispositivos del robot 208 pueden incluir un sensor que detecta un estado del dispositivo, como una posición, orientación, velocidad o aceleración del dispositivo.
El sensor 210, mostrado en el entorno 202, es una cámara que captura imágenes o vídeos del entorno 202. El sensor 210 incluye una interfaz de comunicación (p. ej., un adaptador de red inalámbrica, un puerto de salida de vídeo) mediante la cual el sensor 210 transmite las imágenes o los vídeos capturados al sistema informático 200 a través de la red 206. El sensor 210 puede recibir señales de comunicación del sistema informático 200 a través de la red 206 que hacen que el sensor 210 realice diversas operaciones. El sensor 210 puede recibir instrucciones que hacen que el sensor 210 ajuste su modo de funcionamiento, como ajustando la configuración (p. ej., enfoque, velocidad de fotogramas, resolución). El sensor 210 puede tener varios dispositivos asociados con el mismo que pueden controlarse en respuesta a las comunicaciones del sistema informático 200; por ejemplo, puede unirse un conjunto de motores al sensor 210 para ajustar selectivamente una orientación del sensor 210 y una fuente de luz acoplada al sensor 210 puede ser operable selectivamente para iluminar áreas en el entorno 202. Los ejemplos no limitativos de otros sensores que pueden incluirse en el entorno 202 incluyen sensores de tiempo de vuelo, sensores de temperatura, micrófonos, telémetro láser (p. ej., Lidar), radar, sensores de velocidad, sensores de fuerza (p. ej., báscula), sensores de presión, giroscopios, sensores electromagnéticos (p. ej., sensor de efecto Hall), galgas extensométricas y sensores de proximidad.
El entorno 202 puede incluir dispositivos distintos del robot 208, controlables por el sistema informático 200 y que pueden proporcionar información al sistema informático 200 sobre el estado del dispositivo en un momento dado. Tales dispositivos incluyen brazos robóticos, motores, cintas transportadoras y/o ruedas, tolvas, actuadores, dispositivos de clasificación, interruptores, válvulas, y similares.
Durante un tiempo t en el entorno 202, pueden transmitirse señales a través de la red 206 que indican un estado 220 asociado con uno o más robots 208 o dispositivos que operan en el entorno 202, o detectado por uno o más sensores 210 que observan el entorno 202. Cada uno de los dispositivos 208 que operan en el entorno 200 puede proporcionar una observación que describe parcialmente el estado 220 del entorno 200. También pueden transmitirse señales que indican un conjunto de recompensas 222 asociadas con uno o más robots 208, sensores 210 y dispositivos en el entorno 202 durante el tiempo t. El estado 220 es información sensorial que indica el estado del dispositivo correspondiente en el entorno 202. Para un brazo robótico, el estado 220 puede indicar información sobre la posición, la orientación, el movimiento, etc., del brazo. Para el sensor 210, el estado 220 puede ser una medición del tiempo t, como una imagen capturada del entorno 202 en el tiempo t. La recompensa 222 es un valor escalar alfanumérico correspondiente a la última acción o transición experimentada por los robots 208, los sensores 210 y los dispositivos en el entorno 202. En al menos algunas realizaciones, la recompensa 222 se calcula o se determina mediante un proceso que se ejecuta en el sistema informático 200, como un proceso de la arquitectura 204 de aprendizaje por refuerzo. La recompensa 222 puede indicar, al menos en parte, la deseabilidad de un estado actual del correspondiente dispositivo, sensor, robot, etc., en el entorno 202 en relación con un objetivo definido. Para un estado del robot 208 deseable, por ejemplo, la recompensa 222 puede ser un número entero positivo que tiene un valor proporcional al grado de deseabilidad del estado del robot 208 en relación con uno o más objetivos. Por el contrario, la recompensa 222 puede ser un número entero negativo que tiene un valor proporcional a un grado de indeseabilidad del estado del robot 208 en relación con uno o más objetivos.
El sistema informático 200 procesa el conjunto de estado(s) 220 durante el tiempo t y genera un conjunto de acciones 224 que el robot 208, el sensor 210 y/o los dispositivos del entorno 202 deben realizar. El conjunto de acciones 224 se transmite a través de la red 206 a los robots 208, sensores 210 y dispositivos correspondientes que deben realizar las acciones. El conjunto de acciones 224 puede seleccionarse de una pluralidad definida de acciones especificadas en la memoria del sistema informático 200. Para un brazo robótico, una acción del conjunto de acciones 224 puede hacer que una pinza del brazo robótico se mueva a una posición y orientación particulares. El sistema informático 200 procesa el conjunto de recompensa(s) 222 en conexión con un proceso de aprendizaje por refuerzo. Otras acciones pueden incluir el movimiento de engranajes para mover el robot a una ubicación determinada en el entorno 202. Cada una de las acciones 224 puede incluir parámetros que especifican un dispositivo de destino, robot o sensor; la acción a realizar; y parámetros que indican características de la acción (por ejemplo, posición, velocidad, dirección).
La Figura 3 muestra una vista del robot 208 en el entorno 202, según una o más realizaciones. El robot 208 comprende una variedad de dispositivos, cada uno de los cuales realiza una o más funciones u operaciones. El robot 208 mostrado, por ejemplo, incluye una cámara 302 que captura imágenes del entorno 202, un par de brazos robóticos 304 para interactuar con objetos y características del entorno 202, y un conjunto de motores 306 para proporcionar la fuerza motriz para mover y orientar el robot 208 dentro del entorno 202.
Cada uno de los dispositivos puede configurarse para proporcionar información sensorial sobre el estado del respectivo dispositivo y/o sobre el entorno 202. La cámara 302 puede proporcionar información sensorial en forma de imágenes que representan el estado del entorno 202 desde la perspectiva del robot 208. El brazo robótico 304 puede incluir una sección 310 de agarre y una pluralidad de segmentos 312a a 312c que se mueven independientemente para posicionar y orientar la sección 310 de agarre. Cada uno de los segmentos 312a a 312c y la sección 310 de agarre incluyen servomotores que proporcionan información sensorial sobre la posición, orientación, estado, etc., asociados a las correspondientes porciones. La sección 310 de agarre puede incluir sensores (p. ej., capacitivos, de galga extensométrica o resistivos) configurados para proporcionar información sensorial que indica si la sección 310 de agarre está agarrando un objeto o característica y la presión aplicada al objeto o característica. El brazo robótico 304 puede incluir otros sensores que proporcionan información sensorial sobre el objeto o característica. El conjunto de motores 306 pueden ser motores paso a paso o servomotores que proporcionan información sensorial sobre la posición rotacional o lineal de cada respectivo motor.
Cada uno de los dispositivos puede configurarse para recibir información de actuación para controlar el funcionamiento del respectivo dispositivo. La cámara 302, por ejemplo, puede recibir información de actuación para ajustar los parámetros de la misma. La cámara 302 también puede tener asociados con la misma uno o más motores que reciben información de actuación que controla una posición y/o una orientación de la cámara 302, como ajustando la posición de rotación del cabezal 308 del robot 208. El brazo robótico 304 recibe información de actuación que controla los segmentos 312a a 312c y el funcionamiento de la porción 310 de agarre. El conjunto de motores 306 recibe información de actuación que provoca la aplicación de fuerza motriz para mover u orientar el cuerpo 314 del robot 208 en el entorno 202.
En un entorno del mundo real el que el robot 208 opera en tiempo real y se comunica con el sistema informático 200 a través de la red 206, cada uno de los motores tiene características operativas diferentes. Como configuración a modo de ejemplo del robot 208, la cámara 302 transmite imágenes a una frecuencia de 20 hercios (Hz), un motor del brazo robótico 304 transmite paquetes de información sensorial a 100 Hz y se acciona a una frecuencia de 100 Hz, y un motor del conjunto de motores 306 se acciona a una frecuencia de 500 Hz y transmite paquetes de información sensorial a una frecuencia de 60 Hz. Anteriormente, era difícil implementar una arquitectura en la que el agente de aprendizaje por refuerzo del sistema informático 200 pudiera recibir la información sensorial del robot 208 y controlar los motores en un plazo particular debido a las diferencias en las características de rendimiento entre los dispositivos. La arquitectura 204 de aprendizaje por refuerzo proporciona una interfaz y un marco uniformes en los que múltiples procesos operan de forma independiente y en paralelo para realizar procesamiento de datos, computación específica de la tarea y computación específica del agente, como se describe con más detalle en el presente documento.
La Figura 4 muestra un diagrama esquemático 400 del sistema informático 200 y los dispositivos que operan en el entorno 202, según una o más realizaciones. Como se comenta en el presente documento, los robots pueden adoptar cualquiera de una amplia variedad de formas. La Figura 3 muestra esquemáticamente partes del robot 208. El robot 208 incluye al menos un cuerpo y un subsistema 402 de control que incluye al menos un procesador 404, al menos un almacenamiento 406 de datos tangible no transitorio legible por ordenador y procesador, y al menos un bus 408 al que están acoplados comunicativamente el al menos un procesador 404 y el al menos un almacenamiento 406 de datos tangible no transitorio legible por ordenador o procesador.
El al menos un procesador 404 puede ser cualquier unidad de procesamiento lógico, como uno o más microprocesadores, unidades centrales de procesamiento (CPU), procesadores de señales digitales (DSP), unidades de procesamiento gráfico (GPU), circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables (PGA), unidades lógicas programadas (PLU), y similares. En el presente documento, puede hacerse referencia a al menos un procesador 404 en singular, pero pueden ser dos o más procesadores.
El robot 208 puede incluir un subsistema 410 de comunicaciones acoplado comunicativamente (por ejemplo, en comunicación con) el/los bus(es) 408 y que proporciona comunicación bidireccional con otros sistemas (por ejemplo, sistemas externos al robot 208) a través de un canal de comunicación en red o fuera de red, como la(s) red(es) 206 descrita(s) en el presente documento. El subsistema 410 de comunicaciones puede incluir uno o más búferes. El subsistema 410 de comunicaciones recibe y envía datos para el robot 208, como información sensorial e información de actuación.
El subsistema 410 de comunicaciones puede ser cualquier circuito que realice la comunicación bidireccional de datos legibles por el procesador e instrucciones ejecutables por el procesador, por ejemplo, radios (p. ej., transmisores, receptores y transceptores de radiofrecuencia o microondas), puertos de comunicaciones y/o controladores asociados. Los protocolos de comunicación adecuados incluyen FTP, HTTP, servicios Web, SOAP con XML, compatibilidad con Wi-Fi, compatibilidad con Bluetooth, telefonía móvil (p. ej., GSM, CDMA), y similares.
El robot 208 incluye un subsistema 412 de entrada. En cualquiera de las implementaciones, el subsistema 412 de entrada puede incluir uno o más sensores que miden las condiciones o estados del robot 208 y/o las condiciones del entorno en el que opera el robot 208. Tales sensores incluyen cámaras u otros dispositivos de obtención de imágenes (p. ej., sensibles en los intervalos invisible y/o no visible del espectro electromagnético, incluidos por ejemplo infrarrojo y ultravioleta), radares, sonares, sensores táctiles, sensores de presión, celdas de carga, micrófonos, sensores meteorológicos, sensores químicos, o similares. Tales sensores incluyen sensores internos, sensores de presión, celdas de carga, galgas extensométricas, sensores de vibración, micrófonos, amperímetros, voltímetros, o similares. En algunas implementaciones, el subsistema 412 de entrada incluye receptores para recibir información de posición y/u orientación. Por ejemplo, un receptor de sistema de posicionamiento global (GPS) recibe datos de GPS y dos señales horarias adicionales para que el subsistema 402 de control genere una medición de posición basada en datos de las señales, como el tiempo de vuelo, la intensidad de la señal u otros datos para efectuar (por ejemplo, realizar) una medición de posición. Además, por ejemplo, uno o más acelerómetros pueden proporcionar datos inerciales o direccionales en uno, dos o tres ejes. En algunas implementaciones, el subsistema 412 de entrada incluye receptores para recibir información que representa la postura. Por ejemplo, uno o más acelerómetros o una o más unidades de medición inercial pueden proporcionar datos inerciales o direccionales en uno, dos o tres ejes al subsistema 402 de control para generar mediciones de posición y orientación. El subsistema 402 de control puede recibir datos de ángulo de articulación del subsistema 412 de entrada o del subsistema de manipulación descrito en el presente documento.
El robot 208 incluye un subsistema 414 de salida que comprende dispositivos de salida, como altavoces, luces y pantallas. El subsistema 412 de entrada y el subsistema 414 de salida están acoplados comunicativamente con el/los procesador(es) 404 a través del/de los bus(es) 408.
El robot 208 incluye un subsistema 416 de propulsión o movimiento que comprende motores, actuadores, tren de transmisión, ruedas, orugas, bandas de rodadura y similares para impulsar o mover el robot 208 dentro de un espacio físico e interactuar con el mismo. El subsistema 416 de propulsión o movimiento comprende uno o más motores, solenoides u otros actuadores, y el hardware asociado (p. ej., tren de transmisión, rueda(s), bandas de rodadura) para impulsar el robot 208 en un espacio físico. Por ejemplo, el subsistema 416 de propulsión o movimiento puede incluir un tren de transmisión y ruedas, o puede incluir patas operables independientemente mediante motores eléctricos. El subsistema 416 de propulsión o movimiento puede mover el cuerpo 314 del robot 208 dentro del entorno 202 como resultado de la fuerza motriz aplicada por el conjunto de motores 306.
El robot 208 incluye un subsistema 418 de manipulación, que comprende, por ejemplo, uno o más brazos, efectores terminales, motores asociados, solenoides, otros actuadores, engranajes, conexiones, correas de transmisión y similares, acoplados y operables para mover el/los brazo(s) y/o efector(es) terminal(es) dentro de un rango de movimientos. Por ejemplo, el subsistema 418 de manipulación acciona el brazo robótico 304 u otro dispositivo para interactuar con objetos o características del entorno 202. El subsistema 418 de manipulación está acoplado comunicativamente con el/los procesador(es) 404 a través del/de los bus(es) 408, comunicaciones que pueden ser bidireccionales o unidireccionales.
Los componentes del robot 208 pueden variarse, combinarse, dividirse, omitirse, o similares. Por ejemplo, el robot 208 podría incluir un par de cámaras (p. ej., un par estéreo) o una pluralidad de micrófonos. El robot 208 puede incluir uno, dos o tres brazos robóticos o manipuladores robóticos asociados al subsistema 418 de manipulación. En algunas implementaciones, el/los bus(es) 408 incluyen una pluralidad de diferentes tipos de buses (p. ej., buses de datos, buses de instrucciones, buses de alimentación) incluidos en al menos un cuerpo 314. Por ejemplo, el robot 208 puede incluir una arquitectura informática modular donde los dispositivos de recursos computacionales se distribuyen entre los componentes del robot 208. En algunas implementaciones, un robot (p. ej., el robot 208) podría tener un procesador en el brazo izquierdo y almacenamiento de datos en el tórax. En algunas implementaciones, los recursos computacionales se ubican en los espacios intersticiales entre los componentes estructurales o mecánicos del robot 208. Un dispositivo de almacenamiento de datos podría estar en una pata y un dispositivo de almacenamiento de datos separado en otra extremidad o apéndice. En algunas implementaciones, los recursos computacionales distribuidos por el cuerpo incluyen recursos computacionales redundantes.
El al menos un almacenamiento 406 de datos incluye al menos un dispositivo de almacenamiento no transitorio o tangible. El al menos un almacenamiento 406 de datos puede incluir dos o más dispositivos de almacenamiento no transitorios distintos. El almacenamiento 406 de datos puede incluir, por ejemplo, uno o más dispositivos de almacenamiento volátiles, por ejemplo una memoria de acceso aleatorio (RAM), y/o uno o más dispositivos de almacenamiento no volátiles, por ejemplo una memoria de solo lectura (ROM), memoria flash, disco duro magnético (HDD), disco óptico, disco de estado sólido (SSD), y similares. Un experto en la técnica comprenderá que el almacenamiento puede implementarse en una variedad de estructuras no transitorias, por ejemplo una memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), un disco duro (HDD), una unidad de red, memoria flash, disco versátil digital (DVD), cualquier otra forma de memoria o medio de almacenamiento legible por ordenador y procesador, y/o una combinación de los mismos. El almacenamiento puede ser de solo lectura o de lectura y escritura, según sea necesario. Además, el almacenamiento volátil y almacenamiento no volátil pueden combinarse, por ejemplo, mediante el almacenamiento en caché, el uso de dispositivos de estado sólido como discos duros, el procesamiento de datos en memoria y similares.
El al menos un almacenamiento 406 de datos incluye o almacena instrucciones ejecutables por el procesador y/o datos 420 legibles por el procesador asociados con el funcionamiento del robot 208 u otros dispositivos. En este caso, las instrucciones ejecutables por el procesador y/o los datos legibles por el procesador pueden abreviarse como instrucciones y/o datos ejecutables por el procesador.
La ejecución de las instrucciones y/o datos 420 ejecutables por el procesador hace que el al menos un procesador 404 lleve a cabo diversos métodos y acciones, por ejemplo, a través del subsistema 416 de movimiento o del subsistema 418 de manipulación. El/los procesador(es) 404 y/o el subsistema 402 de control pueden hacer que el robot 208 lleve a cabo diversos métodos y acciones, incluidos recibir, transformar y presentar información; moverse en el entorno 202; manipular elementos; y adquirir datos de sensores. Las instrucciones y/o datos 420 ejecutables por el procesador pueden incluir, por ejemplo, un sistema básico de entrada/salida (BIOS) 422, un sistema operativo 424, controladores 426, instrucciones y datos 428 de comunicación, instrucciones y datos 430 de entrada, instrucciones y datos 432 de salida, instrucciones y datos 434 de movimiento, e instrucciones y datos 436 de ejecución.
Los sistemas operativos 424 a modo de ejemplo incluyen ANDROID™, LINUX® y WINDOWS®. Los controladores 426 incluyen instrucciones y/o datos ejecutables por el procesador que permiten al subsistema 402 de control controlar los circuitos del robot 208. Las instrucciones y/o datos de comunicación ejecutables por el procesador 428 incluyen instrucciones y datos ejecutables por el procesador para implementar las comunicaciones entre el robot 208 y una interfaz de operador, un terminal, un ordenador o similar. Las instrucciones y/o datos 430 de entrada ejecutables por el procesador guían al robot 208 para procesar la entrada de los sensores en el subsistema 412 de entrada. Las instrucciones y/o datos 430 de entrada ejecutables por el procesador implementan, en parte, los métodos descritos en el presente documento. Las instrucciones y/o datos 432 de salida ejecutables por el procesador guían al robot 208 para proporcionar información que representa, o producir una señal de control que transforma, la información para su visualización. Las instrucciones y/o datos 434 de movimiento ejecutables por el procesador, al ejecutarse, hacen que el robot 208 se mueva en un espacio físico y/o manipule uno o más elementos. Las instrucciones y/o datos 434 de movimiento ejecutables por el procesador, al ejecutarse, pueden guiar al robot 208 en su desplazamiento dentro de su entorno mediante componentes del subsistema 416 de propulsión o movimiento y/o del subsistema 418 de manipulación. Las instrucciones y/o datos 436 de ejecución ejecutables por el procesador, al ejecutarse, guían al robot 208 en la aplicación o tarea correspondiente para dispositivos y sensores en el entorno 202. Las instrucciones y/o datos 436 de ejecución ejecutables por el procesador, al ejecutarse, guían al robot 208 en el razonamiento, la resolución de problemas, la planificación de tareas, la ejecución de tareas, y similares.
El sistema informático 200 incluye uno o más procesadores 438, memoria 440 y una interfaz 442 de comunicación. La memoria 440 es un almacenamiento de datos no transitorio legible por ordenador que almacena un conjunto de instrucciones de programa informático que los uno o más procesadores 438 pueden ejecutar para implementar una o más realizaciones de la presente divulgación. La memoria 440 generalmente incluye RAM, ROM y/u otros medios de almacenamiento persistentes o no transitorios legibles por ordenador, como discos duros magnéticos, unidades de estado sólido, unidades ópticas, y similares. La memoria 440 puede almacenar un sistema operativo que comprende instrucciones de programa informático utilizables por los o uno o más procesadores 438 para la administración y operación generales del sistema informático 200. La memoria 440 también almacena instrucciones que, como resultado de su ejecución, hacen que los uno o más procesadores 438 implementen la arquitectura 204 de aprendizaje por refuerzo descrita en el presente documento.
La interfaz 442 de comunicación incluye uno o más dispositivos de comunicación para transmitir y recibir comunicaciones a través de la red 206. Los uno o más dispositivos de comunicación de la interfaz de comunicación pueden incluir dispositivos de comunicación cableados y/o inalámbricos. Los ejemplos no limitativos de dispositivos de comunicación inalámbricos incluyen adaptadores de comunicación por radiofrecuencia (p. ej., adaptadores Zigbee, adaptadores Bluetooth, adaptadores Wi-Fi) que usan protocolos de comunicación correspondientes, transceptores de comunicación por satélite, dispositivos de comunicación óptica en espacio libre, transceptores de red celular, y similares. Los ejemplos no limitativos de dispositivos de comunicación cableados incluyen interfaces de comunicación en serie (p. ej., RS-232, Bus Serie Universal, IEEE 139), interfaces de comunicación en paralelo, interfaces Ethernet, interfaces coaxiales, interfaces de fibra óptica e interfaces de comunicación por línea eléctrica.
La Figura 5 muestra un entorno computacional del sistema informático 200 en el que se implementa la arquitectura 204 de aprendizaje por refuerzo según una o más realizaciones. La arquitectura 204 de aprendizaje por refuerzo incluye un agente 502 de aprendizaje por refuerzo, un gestor 504 de tareas que se comunica con el agente 502 de aprendizaje por refuerzo y una pluralidad de comunicadores 506a, 506b,..., 506N de dispositivo (denominados colectivamente comunicadores 506) que se comunican con el gestor 504 de tareas y que se comunican con una pluralidad de dispositivos 508a, 508b,... , 508N que operan en el entorno 202. El agente 502 de aprendizaje por refuerzo es un proceso que se ejecuta en los uno o más procesadores 438 del sistema informático 200 como resultado de la ejecución del conjunto de instrucciones almacenadas en la memoria 440. El gestor 504 de tareas es un proceso que se ejecuta independientemente de y en paralelo con el proceso del agente 502 de aprendizaje por refuerzo en los uno o más procesadores 438 del sistema informático 200 como resultado de la ejecución del conjunto de instrucciones almacenadas en la memoria 440.
Los comunicadores 506 de dispositivo son un conjunto de procesos que se ejecutan independientemente de y en paralelo con el agente 502 de aprendizaje por refuerzo y el gestor 504 de tareas en uno o más procesadores 438 del sistema informático 200 como resultado de la ejecución del conjunto de instrucciones almacenadas en la memoria 440. En algunas realizaciones, cada uno de los comunicadores 506 de dispositivo es un proceso que se ejecuta independientemente de y en paralelo con los demás procesos del comunicador de dispositivo. Por ejemplo, el comunicador 506a de dispositivo corresponde a un primer proceso y el comunicador 506b de dispositivo es un segundo proceso que se ejecuta independientemente de y en paralelo con el primer proceso. En algunas realizaciones, los comunicadores 506 de dispositivo pueden implementarse colectivamente como un solo proceso o una pluralidad de procesos menores en número que el número de comunicadores 506 de dispositivo. En algunas situaciones, los recursos computacionales (p. ej., número de ciclos de procesamiento) asociados con un grupo de comunicadores 506 de dispositivo pueden ser relativamente bajos, y de ese modo agrupar dos o más comunicadores 506 de dispositivo en un solo proceso puede ser beneficioso.
Se considera que un primer proceso y un segundo proceso se ejecutan en paralelo entre sí si el primer proceso y el segundo proceso están ejecutándose por diferentes núcleos de un procesador del sistema informático 200 o por diferentes procesadores del sistema informático 200. Por lo tanto, el rendimiento computacional de un primer núcleo o procesador asociado con la ejecución del primer proceso no afecta al rendimiento computacional de un segundo núcleo o procesador asociado con la ejecución del segundo proceso.
Cada uno de los comunicadores 506 está configurado para comunicarse con un controlador de uno solo de los dispositivos 508 del entorno 202. Por ejemplo, el comunicador 506a se comunica con un controlador del dispositivo 508a, el comunicador 506b se comunica con un controlador del dispositivo 508b, y así sucesivamente. El número de comunicadores 506 instanciados en el sistema informático 200 puede corresponder al número de dispositivos 508 que un usuario ha configurado para controlar la arquitectura 204 de aprendizaje por refuerzo. Sin embargo, el número de comunicadores 506 puede ser mayor que el número de dispositivos controlables que operan en el entorno 200; por ejemplo, algunos de los dispositivos 506 pueden ser dispositivos a partir de los cuales se leen datos sensoriales (p. ej., una cámara, un sensor de temperatura) y que no reciben comandos de actuación para el control operativo del dispositivo. La arquitectura 204 de aprendizaje por refuerzo incluye una interfaz de usuario con la que el usuario puede interactuar para configurar los comunicadores 506 para que se comuniquen con los dispositivos 508. El usuario puede interactuar con la interfaz de usuario, por ejemplo, para hacer que el sistema informático 200 detecte dispositivos descubribles (p. ej., los dispositivos 508), determine el conjunto de comunicadores 506 que se instanciarán y asocie cada uno del conjunto de comunicadores con un dispositivo correspondiente de los dispositivos descubribles. Cada uno de los comunicadores 506 está configurado para comunicarse con un dispositivo correspondiente de los dispositivos 508 a través de la interfaz 442 de comunicación descrita en el presente documento.
Cada uno de los dispositivos 508a, 508b, ..., 508N puede enviar datos sensoriales 510a, 510b, ..., 510N sobre el estado del dispositivo respectivo, como la posición, la velocidad, la orientación, etc. En algunas realizaciones, los dispositivos 508 pueden enviar continuamente los datos sensoriales 510 como un flujo de datos que comprende una secuencia de señales o paquetes codificados discretos. Por ejemplo, uno o más de los comunicadores 506 pueden enviar un comando a los correspondientes dispositivos 508 que instruyen a los controladores para que hagan que los datos sensoriales 510 estén disponibles en un modo de transmisión. En algunas realizaciones, uno o más de los dispositivos 508 envían los datos sensoriales 510 en respuesta a una solicitud de un comunicador 506 para proporcionar la información sensorial 510; por ejemplo, en respuesta a un comunicador que envía un comando de lectura a un controlador correspondiente de un dispositivo. El comando de lectura puede hacer que el comunicador 506 espere un periodo de llegada de paquetes PA que tiene una duración de tiempo t1. Los comunicadores 506 reciben respectivamente los datos sensoriales 510a, 510b, ..., 510N de los correspondientes dispositivos 508a, 508b, ..., 508N que operan en el entorno 202. Los datos sensoriales 510 para los dispositivos sensores son un valor escalar que tiene un formato alfanumérico; sin embargo, en algunas realizaciones, los datos sensoriales 510 pueden ser una matriz de valores escalares para algunos tipos de datos de sensores, como datos de imagen.
La arquitectura 204 de aprendizaje por refuerzo incluye varios búferes 512a, 512b, ..., 512N de sensor (denominados colectivamente búferes 512 de sensor), cada uno asociado o acoplado respectivamente a un comunicador correspondiente de los comunicadores 506a, 506b, ..., 506N. En respuesta a la recepción de los datos sensoriales 510, los comunicadores 506a, 506b, ..., 506N almacenan los datos sensoriales 510a, 510b, ..., 510N en el búfer de sensor asociado de la pluralidad de búferes 512a, 512b, ..., 512N de sensor. Cada uno de los búferes 512 de sensor es una estructura de datos en la memoria 440 configurada para almacenar datos sensoriales 510. Los búferes 512 de sensor pueden ser, por ejemplo, búferes circulares que tienen un tamaño definido, en los que los datos sensoriales 510 se escriben secuencialmente en las ubicaciones de memoria del búfer y, posteriormente a que los datos se escriban en una ubicación de memoria final del búfer, los datos en una ubicación de memoria inicial del búfer circular se sobrescriben con nuevos datos. Cada uno de los búferes 512 de sensor puede tener un tamaño y/o configuración definidos según el dispositivo 508 al que está asociado el búfer 512 de sensor. Por ejemplo, un búfer 512 de sensor para almacenar datos de imagen de una cámara puede tener asignada una cantidad de memoria significativamente mayor que un búfer de sensor para almacenar datos de un servomotor. Cada uno de los búferes 512a, 512b, ..., 512N de sensor puede almacenar muestras de datos sensoriales 510 obtenidas por un dispositivo 508 correspondiente una pluralidad de veces.
El gestor 504 de tareas obtiene los datos sensoriales 510 almacenados en los búferes 512 de sensor y procesa los datos sensoriales 510. En particular, el gestor 504 de tareas lee los siguientes datos sensoriales no leídos 510a, 510b, ..., 510N de cada uno de los búferes sensoriales 512a, 512b, ..., 512N y genera un vector 514 de estado conjunto basado en los datos sensoriales 510a, 510b, ..., 510N leídos. El vector 514 de estado conjunto puede incluir datos de observación y datos de recompensa para su uso en un algoritmo de aprendizaje por refuerzo implementado por el agente 502 de aprendizaje por refuerzo. El vector 514 de estado conjunto puede organizarse como una matriz de elementos que corresponden secuencialmente a los dispositivos 508a, 508b, .... , 508N. Por ejemplo, un primer elemento del vector 514 de estado conjunto puede corresponder al dispositivo 508a, un segundo elemento del vector 514 de estado conjunto puede corresponder al dispositivo 508b, y así sucesivamente.
El sistema informático 200 incluye un objetivo definido, como una tarea u objetivo a alcanzar, en el entorno 202.
El gestor 504 de tareas evalúa los estados del entorno 202, p. ej., según se observan en vista de los datos 510 de estado, y las acciones realizadas en el entorno 202, p. ej., en vista de los comandos 522 de actuación proporcionados por el agente 502 de aprendizaje por refuerzo, y genera el vector 514 de estado conjunto basado en el resultado de la evaluación. El vector 514 de estado conjunto puede incluir una pluralidad de valores que corresponden a observaciones del entorno 202 (p. ej., lecturas del dispositivo) y valores que corresponden a recompensas asociadas a uno o más estados del entorno 202. El objetivo definido puede corresponder a un conjunto de condiciones definidas almacenadas en la memoria 440, a las que el gestor 504 de tareas accede para evaluar estados y acciones. El vector 514 de estado conjunto puede incluir información de recompensa representativa de un cambio en el estado del entorno 202 como resultado de un conjunto de comandos de acción anteriores con respecto al objetivo definido. Por ejemplo, una recompensa positiva puede indicar que las últimas acciones proporcionadas por el agente 502 de aprendizaje por refuerzo acercaron el estado del entorno 202 al logro del objetivo definido, mientras que una recompensa negativa puede indicar que las últimas acciones proporcionadas por el agente 502 de aprendizaje por refuerzo alejaron el estado del entorno 202 del logro del objetivo definido. El gestor 504 de tareas puede considerar un valor a largo plazo del estado actual del entorno 202 o el retorno estimado de las últimas acciones al generar el vector 514 de estado conjunto, por ejemplo, ajustando la recompensa para tener en cuenta un resultado a largo plazo más favorable del estado del entorno 202.
El gestor 504 de tareas almacena el vector 514 de estado conjunto en un búfer 516 de estado en la memoria 440. El agente 502 de aprendizaje por refuerzo obtiene el vector 514 de estado conjunto del búfer 516 de estado y determina, según una política n definida en el agente 502 de aprendizaje por refuerzo, un conjunto de acciones que deben realizar los dispositivos 508a, 508b, ..., 508N en función de los estados percibidos del entorno 202, como lo indica el vector 514 de estado conjunto.
La política n es un conjunto de instrucciones almacenadas en la memoria 440 que hacen que el proceso del agente 502 de aprendizaje por refuerzo genere una acción en respuesta a los datos de observación y/o datos de recompensa en el vector 514 de estado conjunto. La política n asigna estados del entorno 202, como estados de los dispositivos 508, a acciones que se realizarán en respuesta a los estados detectados. La política n la define un usuario en función de tareas, objetivos o estados finales deseados a alcanzar en el entorno 202. La política n puede tener asociados con la misma valores V o valores de acción Q que indican un retorno o valor a largo plazo para lograr la tarea en función de un estado del entorno 202. El agente 502 de aprendizaje por refuerzo también puede realizar un proceso de actualización de aprendizaje en el que se ajustan los parámetros de aprendizaje (p. ej., ponderaciones, sesgos) del modelo de aprendizaje por refuerzo para mejorar la capacidad del agente 502 de aprendizaje por refuerzo para lograr la tarea, el objetivo, el estado final, etc. deseados, en el entorno 202. La política n puede incluir una distribución de probabilidad que indica las probabilidades de un siguiente estado o recompensa que se alcanzaría en respuesta a la realización de una acción específica en respuesta a un estado dado. Por ejemplo, la distribución de probabilidad puede indicar las probabilidades asociadas con cada una de un conjunto discreto de acciones definidas de hacer que un brazo robótico avance a un estado más deseable en relación con el objetivo de recoger un objeto.
El agente 502 de aprendizaje por refuerzo genera, según la política n, un vector 518 de acción conjunta que incluye comandos de actuación que indican las acciones que los dispositivos 508 correspondientes realizarán en el siguiente periodo de tiempo. Por ejemplo, el vector 518 de acción conjunta indica una primera acción que realizará el dispositivo 508a, una segunda acción que realizará el dispositivo 508b, y así sucesivamente. El agente 502 de aprendizaje por refuerzo almacena el vector 518 de acción conjunta en un búfer 520 de actuación. Como resultado de generar y almacenar el vector 518 de acción conjunta, el agente 502 de aprendizaje por refuerzo vuelve al estado suspendido durante el periodo de tiempo Ps. El búfer 520 de acción es una región asignada en la memoria 440 para almacenar el vector 518 de acción conjunta. El búfer 520 de acción es una región compartida en la memoria que se comparte entre el gestor 504 de tareas y el agente 502 de aprendizaje por refuerzo, y que es inaccesible para otros procesos que se ejecutan en el sistema informático 200.
El agente 602 de aprendizaje por refuerzo puede determinar el período de tiempo Ps basándose en un tiempo de etapa S para el agente 502 de aprendizaje por refuerzo. El tiempo de etapa S puede ser un período de tiempo definido (p.ej., por un usuario) que incluye el período de tiempo Ps en el que el agente 502 de aprendizaje por refuerzo opera en un estado suspendido y un período de tiempo P<a>en el que el agente 502 de aprendizaje por refuerzo opera en el estado activo, de modo que se satisface la siguiente ecuación 1:
S = Ps P<a>[1]
Un usuario puede definir un tiempo de etapa S de 100 ms, por ejemplo, para el agente 502 de aprendizaje por refuerzo. El agente de aprendizaje por refuerzo puede pasar del estado suspendido al estado activo y obtener un vector 514 de estado conjunto del búfer 516 de estado en el estado activo. El tiempo que tarda el vector 514 de estado conjunto puede variar en función de diversos factores asociados con el vector 514 de estado conjunto, como el número de observaciones que comprende el vector 514 de estado conjunto. En una primera iteración de ejemplo de la arquitectura 204 de aprendizaje por refuerzo, el agente de aprendizaje por refuerzo puede tardar 27 ms en procesar el vector 514 de estado conjunto y almacenar el vector 518 de acción conjunta generado en el búfer 520 de acción. Por lo tanto, el agente 502 de aprendizaje por refuerzo determina que el periodo de tiempo activo P<a>es de 27 ms y que el periodo de tiempo suspendido Ps es de 73 ms, según la ecuación 1. El agente 502 de aprendizaje por refuerzo pasa del estado activo al estado suspendido durante los 73 ms restantes del tiempo de etapa S. En una segunda iteración de ejemplo después de la primera iteración de ejemplo, el agente 502 de aprendizaje por refuerzo puede pasar más tiempo en el estado activo debido, p. ej., a una mayor carga total de CPU, suficiente para procesar otro vector 514 de estado conjunto. En cuyo caso, el agente 502 de aprendizaje por refuerzo opera en el estado activo durante un período de tiempo más corto que la primera iteración de ejemplo para garantizar que los tiempos de etapa S para cada iteración sean aproximadamente iguales al tiempo de etapa deseado S de 100 ms.
El gestor 504 de tareas obtiene el vector 518 de acción conjunta del búfer 520 de acción y analiza el vector 518 de acción conjunta en los comandos 522a, 522b, ..., 522<n>de actuación, que indican acciones que deben realizar los dispositivos 508a, 508b, ..., 508N. Cada instancia de los comandos 522 de actuación puede tener un formato particular para el correspondiente dispositivo 508 al que se transmitirá la instancia de los comandos 522 de actuación. Las instancias o elementos individuales de los comandos 522 de actuación pueden ser un valor que especifica tanto la magnitud como la dirección; por ejemplo, un valor positivo de coma flotante de los comandos 522 de actuación puede hacer que un dispositivo se mueva en una dirección determinada en una cantidad correspondiente al valor.
La arquitectura 204 de aprendizaje por refuerzo incluye una pluralidad de búferes 524a, 524b, ..., 524N de actuador, cada uno de los cuales corresponde a uno de los comunicadores 506a, 506b, ..., 506N de dispositivo. Cada uno de los búferes 524a, 524b, ..., 524N de actuador es una estructura de datos en la memoria 440, cada una configurada para almacenar una instancia o un elemento de datos de los uno o más comandos 522a, 522b, ..., 522N de actuación. Cada uno de los búferes 524a, 524b, ..., 524N de actuador es, por ejemplo, un búfer circular que tiene un tamaño definido y en el que los comandos 522 de actuación se escriben secuencialmente en las ubicaciones de memoria del búfer y, posteriormente a que los datos se escriban en una ubicación de memoria final del búfer, los datos en la ubicación de memoria inicial del búfer circular se sobrescriben con nuevos datos. Cada uno de los búferes 524 de acción puede tener un tamaño y/o una configuración definidos según el dispositivo 508 al que está asociado el búfer 524 de acción. Por ejemplo, un primer búfer de los búferes 524 de acción para almacenar datos para operar un brazo robótico, puede tener un tamaño o una configuración diferente a un segundo búfer de los búferes 524 de acción para operar una cinta transportadora.
El gestor 504 de tareas carga cada elemento de datos o instancia de los comandos 522a, 522b, ..., 522N de actuación analizados a partir del vector 518 de acción conjunta en un búfer correspondiente de los búferes 524 de acción. El gestor 504 de tareas, como ejemplo, puede analizar y almacenar un primer elemento del vector 518 de acción conjunta en el búfer 524a de acción, puede analizar y almacenar un segundo elemento del vector 518 de acción conjunta en el búfer 524 de acción, etc., hasta que todos los elementos del vector 518 de acción conjunta se almacenen en un correspondiente búfer 524 de acción. En algunas realizaciones, el gestor 524 de tareas puede almacenar los comandos 522a, 522b, ..., 522N de actuación en los búferes 524a, 524b, ... 524N de actuador secuencialmente en el orden en que se analizan los comandos de actuación. En algunas realizaciones, el gestor 524 de tareas puede analizar todo el vector 518 de acción conjunta y luego almacenar los comandos 522 de actuación obtenidos a partir del mismo en los búferes 524 de actuador. En algunas implementaciones, el vector 518 de acción conjunta puede no incluir un elemento de acción para cada uno de los dispositivos 508; por ejemplo, puede que no se proporcionen elementos de acción para dispositivos inactivos (p. ej., cámaras, sensores de medición) que no se mueven ni interactúan con el entorno 202. En algunas realizaciones, puede asignarse un valor nulo o cero a elementos de acción correspondientes a dispositivos inactivos en el entorno 202.
Posteriormente, cada uno de los comunicadores 506a, 506b, ..., 506N de dispositivo obtiene los comandos 522a, 522b, ..., 522N de actuación almacenados en uno correspondiente de los búferes 524a, 524b, ..., 524N de actuador. Los comunicadores 506 transmiten luego los comandos 522 de actuación al dispositivo asociado 508, haciendo de ese modo que el dispositivo asociado 508 funcione según los comandos de actuación proporcionados.
La Figura 6 muestra un entorno computacional del sistema informático 200 en el que opera un proceso comunicador 600 de la arquitectura 204 de aprendizaje por refuerzo para comunicarse con un dispositivo 602, según una o más realizaciones. El proceso comunicador 600 es un proceso multihilo, correspondiente al comunicador 506 de dispositivo de la Figura 5 y de otras partes del presente documento. El proceso comunicador 600 está asignado al dispositivo 602 y se encarga de recibir datos sensoriales del dispositivo 602 y transmitir comandos de actuación al dispositivo 602. Como se describió anteriormente, la arquitectura 204 de aprendizaje por refuerzo puede incluir un proceso comunicador 600 para cada dispositivo 602 que se controlará por la arquitectura 204 de aprendizaje por refuerzo en el entorno 202.
El proceso comunicador 600 se ejecuta independientemente del agente 502 de aprendizaje por refuerzo y del gestor 504 de tareas. El proceso comunicador 600 es un proceso multihilo que se ejecuta en el sistema informático 200 e incluye un hilo 604 de lectura y un hilo 606 de escritura. El hilo 604 de lectura y el hilo 606 de escritura pueden ejecutarse en diferentes ciclos del proceso comunicador 600. Por ejemplo, un procesador del sistema informático 200 puede realizar operaciones según las instrucciones del hilo 604 de lectura durante un primer conjunto de ciclos, y el procesador del sistema informático 200 puede realizar operaciones durante un segundo conjunto de ciclos diferente del primer conjunto.
El hilo 604 de lectura se dedica a leer y almacenar datos sensoriales del dispositivo 602. En particular, mientras se ejecuta la arquitectura 204 de aprendizaje por refuerzo, el hilo 604 de lectura lee los datos sensoriales 608 transmitidos por el dispositivo 602 a través de la red 206 y almacena los datos sensoriales 608 en un búfer 610 de sensor, que puede ser un búfer circular dedicado al proceso comunicador 600 particular. Los datos sensoriales 608 pueden recibirse como un paquete de datos o una secuencia de paquetes de datos. El almacenamiento de los datos sensoriales 608 en el búfer circular puede provocar la actualización de un puntero de escritura asociado al búfer circular. En algunas realizaciones, el hilo 604 de lectura puede evaluar si los datos sensoriales 608 proporcionados por el dispositivo 602 son válidos antes de almacenar los datos sensoriales 608 en el búfer 610 de sensor.
El hilo 606 de escritura se dedica a obtener los comandos de actuador proporcionados por el gestor 504 de tareas y a transmitir los comandos de actuador al dispositivo 602. Mientras se ejecuta la arquitectura 204 de aprendizaje por refuerzo, el hilo 606 de escritura lee un comando 612 de actuación de un búfer 614 de actuador y hace que el comando 612 de actuación se transmita al dispositivo 602 a través de la red 206. El búfer 614 de actuación puede ser un búfer circular, y la lectura del comando 612 de actuación a partir del búfer 614 de actuación puede actualizar un puntero de lectura asociado al búfer circular. En algunos casos, el búfer 614 de actuación puede esperar a que se actualice el búfer 614 de actuación antes de leer el comando 612 de actuación; p. ej., si el puntero de escritura del búfer 614 de actuación coincide con el puntero de lectura, el hilo 606 de escritura puede esperar a que se actualice el puntero de escritura antes de leer el comando 612 de actuación a partir del mismo.
La Figura 7 muestra un entorno computacional del sistema informático 200 en el que un agente 702 de aprendizaje por refuerzo de la arquitectura 204 de aprendizaje por refuerzo interactúa con un gestor 704 de tareas para controlar las operaciones de los dispositivos que operan en el entorno 202 según una política de aprendizaje por refuerzo n. El agente 702 de aprendizaje por refuerzo y el gestor 704 de tareas son realizaciones respectivas del agente 502 de aprendizaje por refuerzo y del gestor 504 de tareas descritos en el presente documento. El agente 702 de aprendizaje por refuerzo es un primer proceso de la arquitectura 204 de aprendizaje por refuerzo que se ejecuta en un primer procesador del sistema informático 200, y el gestor 704 de tareas es un segundo proceso de la arquitectura 204 de aprendizaje por refuerzo que se ejecuta en un segundo procesador del sistema informático 200. El proceso del agente 702 de aprendizaje por refuerzo es independiente del proceso del gestor 704 de tareas.
El gestor 704 de tareas obtiene una pluralidad de datos sensoriales 706 de una pluralidad de búferes 708 de sensor, cada uno asociado a un proceso de comunicador correspondiente. El gestor 704 de tareas puede obtener la pluralidad de datos sensoriales 706 colectivamente como una unidad, por ejemplo, ejecutando operaciones de lectura para leer la pluralidad de datos sensoriales 706 de los búferes 708 de sensor en paralelo. El gestor 704 de tareas puede monitorizar el estado de los búferes 708 de sensor y leer datos sensoriales de uno o más de los búferes 708 de sensor en respuesta a la detección de una actualización en un búfer de sensores (p. ej., un cambio en un puntero de escritura).
El gestor 704 de tareas genera un vector 710 de estado conjunto basado en la pluralidad de datos sensoriales 706 obtenidos de la pluralidad de búferes 708 de sensor. La generación del vector 710 de estado conjunto puede incluir la generación de datos de observación y puede incluir la generación de datos de recompensa. Los datos de observación pueden corresponder a un estado observado del entorno 202, como la relación entre los dispositivos que operan en el entorno 202 para lograr un objetivo definido (p. ej., recoger un objeto y colocarlo en una caja). Los datos de recompensa pueden corresponder a una contribución de las acciones anteriores comandadas por el agente 702 de aprendizaje por refuerzo en relación con el logro del objetivo definido; por ejemplo, la cantidad de progreso realizado hacia o lejos del objetivo definido como resultado de la ejecución de comandos de acción previos.
El gestor 704 de tareas almacena el vector 710 de estado conjunto en un búfer 716 de estado. El búfer de estado 716 es una región asignada en la memoria 440 para almacenar el vector 714 de estado conjunto. El tamaño del búfer 716 de estado puede determinarse en función de las características de los datos sensoriales 706 proporcionados por los dispositivos 508 que operan en el entorno 202. El búfer 716 de estado es una región compartida en la memoria entre el gestor 704 de tareas y el agente 702 de aprendizaje por refuerzo, y que es inaccesible para otros procesos que se ejecutan en el sistema informático 200. El gestor 704 de tareas puede actualizar el vector 710 de estado conjunto como resultado de la detección de una actualización o un cambio en los datos sensoriales 706 almacenados en uno o más de los búferes 708 de sensor. El gestor 704 de tareas puede calcular un nuevo vector 710 de estado conjunto para cada cambio detectado o actualizar una porción del vector 710 de estado conjunto.
El agente 702 de aprendizaje por refuerzo obtiene el vector 714 de estado conjunto del búfer 716 de estado e invoca una política n para determinar una respuesta basada en el vector 714 de estado conjunto. El agente 702 de aprendizaje por refuerzo pasa de un estado suspendido, en el que el vector 714 de estado conjunto no se lee del búfer 716 de estado ni se procesa, a un estado activo, en el que el agente 702 de aprendizaje por refuerzo obtiene y procesa el vector 714 de estado conjunto.
En el estado activo, el agente 702 de aprendizaje por refuerzo determina, según la política n, un conjunto de acciones que deben realizar los dispositivos 508a, 508b, ... 508N, basándose en los estados percibidos del entorno 202, representados por el vector 714 de estado conjunto. El agente 702 de aprendizaje por refuerzo opera en estado suspendido durante una etapa o periodo de tiempo Ps, luego obtiene y procesa un único vector 714 de estado conjunto y regresa luego al estado suspendido durante el periodo de tiempo Ps. El periodo de tiempo Ps es un parámetro operativo definido del agente 702 de aprendizaje por refuerzo y que el usuario puede ajustar selectivamente.
En el estado activo, el agente 702 de aprendizaje por refuerzo genera un vector 718 de acción conjunta basado en el vector 714 de estado conjunto y almacena el vector 718 de acción conjunta en un búfer 720 de acción. El vector 718 de acción conjunta puede organizarse como una matriz de elementos que corresponden secuencialmente a las acciones que deben realizar los correspondientes dispositivos 508a, 508b,..., 508N, como se describe con respecto al vector 714 de estado conjunto. Por ejemplo, un primer elemento del vector 718 de acción conjunta puede corresponder al dispositivo 508a, un segundo elemento del vector 718 de acción conjunta puede corresponder al dispositivo 508b, y así sucesivamente. El agente 702 de aprendizaje por refuerzo puede alternar entre el estado suspendido y el estado activo mientras la arquitectura 204 de aprendizaje por refuerzo está en ejecución.
El vector 718 de acción conjunta incluye comandos de actuación que hacen que los dispositivos 508 correspondientes que operan en el entorno 202 realicen las acciones especificadas en los mismos. Por ejemplo, el vector 718 de acción conjunta puede indicar una primera acción que debe realizar el dispositivo 508a, una segunda acción que debe realizar el dispositivo 508b, y así sucesivamente, cuando los reciben los dispositivos. Como resultado de generar y almacenar el vector 718 de acción conjunta, el agente 702 de aprendizaje por refuerzo vuelve al estado suspendido durante el periodo de tiempo Ps. El búfer 720 de acción es una región asignada en la memoria 440 para almacenar el vector 718 de acción conjunta. El búfer 720 de acción es una región compartida en la memoria que se comparte entre el gestor 704 de tareas y el agente 702 de aprendizaje por refuerzo, y que es inaccesible para otros procesos que se ejecutan en el sistema informático 200.
El gestor 704 de tareas lee el vector 718 de acción conjunta del búfer 720 de acción. El gestor 704 de tareas puede supervisar el búfer 720 de acción y esperar hasta que el búfer 720 de acción se complete o se actualice con el vector 718 de acción conjunta en respuesta al almacenamiento del vector 714 de estado conjunto en el búfer 716 de estado. El gestor 704 de tareas analiza el vector 718 de acción conjunta en una pluralidad de comandos 722 de actuación y distribuye cada uno de los comandos 722 de actuación analizados a un búfer de actuación de una pluralidad de búferes 724 de acción. Cada uno de los búferes 724 de acción está asociado a un comunicador, como el proceso 600 de comunicación.
La Figura 8 muestra un método de funcionamiento de un comunicador de dispositivo de la arquitectura 204 de aprendizaje por refuerzo, como los comunicadores 506 de dispositivo o el proceso comunicador 600, según una o más realizaciones. Como se describe en otra parte del presente documento, el comunicador de dispositivo es un proceso que se ejecuta en un procesador del sistema informático 200 y es un proceso diferente de los procesos del gestor de tareas y del agente de aprendizaje por refuerzo. Cada comunicador de dispositivo puede ejecutar el método 800 independientemente de y en paralelo con otros comunicadores de dispositivo de la arquitectura 204 de aprendizaje por refuerzo. El método 800 incluye el establecimiento 802 de comunicaciones con el dispositivo que opera en el entorno 202 a través de la red 206. El establecimiento 802 de comunicaciones puede incluir el establecimiento de un canal de comunicación según uno o más protocolos de comunicación definidos. Por ejemplo, el comunicador de dispositivo puede hacer que la interfaz 442 de comunicación establezca una conexión Wi-Fi con el dispositivo correspondiente o se “empareje” con el dispositivo correspondiente según un protocolo Bluetooth. En conexión con el establecimiento 802 de comunicaciones con el dispositivo, el comunicador de dispositivo puede enviar un comando al dispositivo para hacer que éste pase a un modo de transmisión de datos en el que el dispositivo transmite datos sensoriales, p. ej., en una secuencia continua de paquetes de datos.
Posteriormente, el método 800 incluye la obtención 804 de datos sensoriales del dispositivo, indicando un estado medido del dispositivo por un sensor asociado con el dispositivo. En algunas implementaciones, el comunicador de dispositivo puede invocar una operación de lectura para obtener un paquete de datos o un conjunto de paquetes de datos de datos sensoriales del flujo de datos. En algunas implementaciones, el comunicador de dispositivo puede hacer que la interfaz 442 de comunicación envíe una solicitud al dispositivo correspondiente para proporcionar datos sensoriales. El método 800 incluye luego la carga 806 de los datos sensoriales obtenidos en 804 en un búfer de sensor, como se describe con respecto a las Figuras 5, 6 y 7, como un elemento en un búfer circular. El comunicador de dispositivo puede verificar si los datos sensoriales son válidos (p. ej., no corruptos, legibles) como condición previa para cargar 806 los datos sensoriales en un búfer de sensor. Cada uno de los comunicadores de dispositivo está configurado para cargar independientemente, en 806, datos sensoriales en un búfer de sensor correspondiente asociado con el mismo. La obtención 804 y la carga 806 pueden comprender un ciclo realizado por el hilo 604 de lectura durante el cual el hilo 606 de escritura se bloquea o se impide que realice operaciones.
A continuación, el comunicador de dispositivo obtiene 808 un comando de actuación de un búfer de actuador. Por ejemplo, el hilo 606 de escritura del comunicador de dispositivo puede monitorizar el estado del búfer de actuador asociado con el comunicador de dispositivo. En respuesta a la detección de un cambio, el hilo 606 de escritura puede leer el comando de actuación del búfer de actuador. El hilo 606 de escritura puede realizar una operación de lectura desde el búfer de actuador que un puntero de lectura como resultado de la detección de que el puntero de lectura del búfer de actuador no coincide con el puntero de escritura. El comando de actuación obtenido en 808 puede ser un comando en respuesta a los datos de sensor cargados en 806. En respuesta a obtener 808 satisfactoriamente un comando de actuación del búfer de actuador, el método incluye la transmisión 810 del comando de actuación al dispositivo asociado al comunicador de dispositivo. En particular, el comunicador de dispositivo hace que la interfaz 442 de comunicación transmita el comando de actuación a través de la red 206 para hacer que el dispositivo realice la acción especificada en el comando de actuación en el entorno 202. La obtención 808 y la transmisión 810 pueden comprender un ciclo realizado por el hilo 606 de escritura durante el cual el hilo 604 de lectura se bloquea o se impide que realice operaciones.
Las operaciones del método 800 pueden realizarse en un orden diferente al mostrado en la Figura 8. Por ejemplo, la obtención 808 y la transmisión 810 pueden realizarse antes de la obtención 804 y la carga 806. El método 800 puede ser un proceso iterativo en el que partes del método se realizan repetidamente. El método 800 puede volver a obtener 804 datos sensoriales de un dispositivo que opera en el entorno 202 después de la transmisión 810 de los datos de acción.
La Figura 9 muestra un método de funcionamiento de un gestor de tareas de la arquitectura 204 de aprendizaje por refuerzo, como el gestor 504 de tareas o el gestor 704 de tareas, según una o más realizaciones. Como se describe en el presente documento, el gestor de tareas es un proceso que se ejecuta en un procesador del sistema informático 200 y es un proceso que es diferente de los procesos del comunicador de dispositivo y del agente de aprendizaje por refuerzo. El método 900 incluye la obtención 902 de datos de sensor de la pluralidad de búferes de sensor. Por ejemplo, el gestor de tareas puede leer una sola instancia de datos de sensor de cada uno de la pluralidad de búferes de sensor.
El método 900 incluye la generación 904 de un vector de estado conjunto representativo de los datos de sensor obtenidos en 902. La generación 904 del vector de estado conjunto puede incluir el cálculo de datos de observación representativos del estado del entorno 202 en relación con un objetivo definido del gestor de tareas y datos de recompensa representativos del progreso hacia o lejos del objetivo definido como resultado de la ejecución de un conjunto anterior de acciones. En algunas soluciones implementadas previamente, un agente de aprendizaje por refuerzo obtendría datos sensoriales secuencialmente y procesaría los datos para determinar las acciones a adoptar, lo que puede causar una desconexión entre la acción y el efecto en el bucle de retroalimentación del aprendizaje por refuerzo debido a retrasos temporales, inhibiendo de ese modo la capacidad del agente de aprendizaje por refuerzo para aprender de forma eficaz y eficiente a alcanzar el objetivo definido.
La generación 904 del vector de estado conjunto por parte del gestor de tareas tiene numerosos beneficios con respecto a los enfoques anteriores. Por ejemplo, dado que los comunicadores operan de forma independiente y en paralelo entre sí, los datos sensoriales almacenados se correlacionan eficazmente con un período de tiempo más preciso, a diferencia de la recopilación secuencial de información en implementaciones anteriores. Además, la generación 904 de un vector de estado conjunto ayuda a distribuir los recursos computacionales del agente de aprendizaje por refuerzo en un proceso independiente, disminuyendo de ese modo los recursos computacionales usados por el agente de aprendizaje por refuerzo para determinar un conjunto de acciones a realizar. Este procedimiento también mejora el progreso del aprendizaje del agente de aprendizaje por refuerzo al reducir la latencia del sistema y mejorar la coherencia temporal de los datos de sensor.
El método 900 incluye la carga 906 del vector de estado conjunto en un búfer de estado de la arquitectura 204 de aprendizaje por refuerzo, como el búfer 516 de estado o el búfer 716 de estado. El método 900 también incluye la obtención 908 de un vector de acción conjunta de un búfer de acción de la arquitectura 204 de aprendizaje por refuerzo, como el búfer 520 de acción o el búfer 720 de acción. La obtención 908 del vector de acción conjunta es en respuesta a la carga 906 del vector de estado conjunto. Por ejemplo, después de la carga 906, el gestor de tareas espera hasta que el búfer de acción se actualice con un nuevo vector de acción conjunta, momento en el cual el gestor de tareas lee el vector de acción conjunta del búfer de acción.
El método 900 implica además el análisis 910 del vector de acción conjunta en comandos de actuación que se transmitirán a los dispositivos que operan en el entorno 202. El análisis 910 del vector de acción conjunta puede incluir la comprobación de los límites y restricciones del entorno 200 y la evaluación del riesgo asociado a la ejecución del comando de actuación por parte del dispositivo correspondiente en el entorno 200. Por ejemplo, el gestor de tareas puede determinar si la ejecución del comando de actuación daría como resultado una colisión; si superaría los límites de seguridad definidos del entorno 200; si representaría un riesgo para personas, animales, propiedades, etc., en el entorno 200, etc. Los límites y restricciones del entorno 200 pueden ser un conjunto definido de reglas o límites físicos asociados con el entorno 200 que la realización del comando de actuación no debe infringir. Si el riesgo asociado a la realización del comando de actuación infringiera o superara un límite o restricción definidos, el gestor de tareas puede optar por no enviar el/los comando(s) de actuación. La evaluación del riesgo de realización del comando de actuación es un procedimiento no trivial que, al ejecutarse de forma asincrónica por el gestor de tareas, facilita la reducción de retrasos o eventos adicionales que podrían resultar adversos para el logro del objetivo definido de forma eficiente y de acuerdo al modelo de aprendizaje por refuerzo.
El método 900 también incluye la carga 912 de los comandos de actuación en la pluralidad de búferes de actuador. En algunas realizaciones, el gestor de tareas puede analizar 910 cada comando de actuación del vector de acción conjunta y luego cargar 912 los comandos de actuación en los búferes de actuador. En algunas realizaciones, el gestor de tareas puede cargar 912 cada comando de actuación en el búfer de actuación correspondiente después de analizarlo 910 a partir del vector de acción conjunta y antes de analizar 910 el siguiente comando de actuación del vector de acción conjunta.
Las operaciones del método 900 pueden realizarse en un orden diferente al mostrado en la Figura 9. Por ejemplo, la obtención 908, el análisis 910 y la carga 912 pueden realizarse antes de la obtención 902, la generación 904 y la carga 906. El método 900 puede ser un proceso iterativo en el que partes del método se realizan repetidamente. Por ejemplo, el método 900 puede volver a obtener 902 datos sensoriales de la pluralidad de búferes de sensor después de cargar los comandos de actuación en 912.
La Figura 10 muestra un método 1000 para operar un agente de aprendizaje por refuerzo de la arquitectura 204 de aprendizaje por refuerzo, como el agente 502 de aprendizaje por refuerzo o el agente 702 de aprendizaje por refuerzo. Como se describe en el presente documento, el agente de aprendizaje por refuerzo es un proceso que se ejecuta en un procesador del sistema informático 200 y es un proceso que es diferente de los procesos del comunicador de dispositivo y del gestor de tareas.
El método 1000 incluye la obtención 1002 de un vector de estado conjunto de un búfer de estado, que cargó el gestor de tareas en 906. La obtención 1002 puede realizarla el agente de aprendizaje por refuerzo tras pasar del estado suspendido al estado activo después de un periodo de tiempo definido Ps en el estado suspendido. Posteriormente, el método 1000 implica el procesamiento 1004 de la información de observación y/o información de recompensa incluida en el vector de estado conjunto obtenido en 1002. El método 1000 también incluye la determinación 1006 de un conjunto de acciones que deben realizar los dispositivos que operan en el entorno 202, basándose en una política n del agente de aprendizaje por refuerzo. Por ejemplo, el agente de aprendizaje por refuerzo puede ejecutar una función correspondiente a la política n usando la información de observación como entrada para la misma. Una salida de la política n puede ser el vector de acción conjunta representativo de las acciones que deben realizarse en el entorno 200 para alcanzar el siguiente estado. El agente de aprendizaje por refuerzo genera 1008 un vector de acción conjunta basado en el conjunto de acciones determinadas en 1006 y carga 1010 el vector de acción conjunta en el búfer de acción. El agente de aprendizaje por refuerzo puede desconocer los dispositivos específicos que operan en el entorno 200, por lo que el vector de acción conjunta generado en 1008 puede indicar que se realice un cambio de estado del entorno 200 para acercar el estado del entorno 200 al objetivo definido.
El método 1000 incluye la actualización 1012 de un modelo de aprendizaje o modelo de planificación del agente de aprendizaje por refuerzo, basándose en el vector de estado conjunto y un vector de acción conjunta previo generado que provocó un cambio de estado en el entorno 202 correspondiente al vector de estado conjunto. La actualización del modelo de aprendizaje puede incluir la actualización de la política n en función de la información de recompensa y la información de valor opcionalmente asociada con la misma. La actualización de la política n forma parte del proceso de aprendizaje por refuerzo, mediante el cual el agente de aprendizaje por refuerzo mejora su eficiencia y eficacia para realizar el objetivo definido. La actualización 1012 puede incluir la actualización de las ponderaciones o sesgos de la política n, una función de valor, una función de valor Q u otras funciones del agente de aprendizaje por refuerzo.
El método 1000 incluye el paso 1014 del agente de aprendizaje por refuerzo del estado activo al estado suspendido durante un período de tiempo definido Ps. El período de tiempo definido Ps puede ser una cantidad de tiempo definida por el usuario, como 100 milisegundos, durante el cual el agente de aprendizaje por refuerzo no obtiene 1002 ni procesa 1004 un nuevo vector de estado conjunto del búfer de estado. El agente de aprendizaje por refuerzo realiza ciertas operaciones mientras está en el estado suspendido. Por ejemplo, la actualización 1012 se realiza cuando el agente de aprendizaje por refuerzo está en el estado suspendido durante el período de tiempo Ps. Como resultado de la carga 1010 del vector de acción conjunta en el búfer de acción, el agente de aprendizaje por refuerzo pasa 1014 al estado suspendido antes de o sin actualizar 1012 el modelo de aprendizaje o planificación. Actualizar el modelo de aprendizaje o planificación 1012 durante el estado suspendido mejora la eficiencia del agente de aprendizaje por refuerzo. El período de tiempo Ps debe seleccionarse, en tales instancias, para proporcionar tiempo suficiente para que el agente de aprendizaje por refuerzo complete la actualización 1012.
El método 1000 es un proceso iterativo que luego vuelve a obtener 1002 el vector de estado conjunto del búfer de estado posterior a la expiración del período de tiempo Ps.
La arquitectura 204 de aprendizaje por refuerzo puede implementarse en un entorno de desarrollo de programación informática y compilarse como un conjunto de instrucciones legibles por ordenador que el sistema informático 200 está configurado para ejecutar para realizar las operaciones descritas en el presente documento. Cada uno del comunicador, el gestor de tareas y los agentes de aprendizaje por refuerzo pueden ser clases independientes en un lenguaje de programación orientado a objetos, como Python o C++. Los comunicadores pueden configurarse según el dispositivo deseado con el que está previsto específicamente que cada comunicador se comunique. El tamaño y la configuración del búfer también pueden determinarse mediante la entrada proporcionada por el usuario. En algunas realizaciones, puede proporcionarse una interfaz de usuario para recibir la entrada del usuario sobre los dispositivos del entorno 202, el objetivo a alcanzar, el modelo de aprendizaje por refuerzo que implementará el agente de aprendizaje por refuerzo, información de red, etc. Como resultado de recibir la entrada del usuario a través de la interfaz, el sistema informático 200 puede generar la arquitectura 204 de aprendizaje por refuerzo. La arquitectura 204 de aprendizaje por refuerzo puede incluir además una interfaz de usuario para facilitar la operación por parte del usuario del agente 104 de aprendizaje por refuerzo.

Claims (15)

REIVINDICACIONES
1. Un método (800, 900, 1000), que comprende:
establecer (802), a través de una o más interfaces de comunicación, comunicaciones en tiempo real entre un sistema informático (200) y un sistema que comprende una pluralidad de dispositivos que operan en un entorno (202) del mundo real;
obtener (804), mediante un conjunto de primeros procesos que se ejecutan en el sistema informático, una pluralidad de datos de estado que indican respectivamente estados de la pluralidad de dispositivos; cargar (806), mediante el conjunto de primeros procesos, datos de estado individuales de la pluralidad de datos de estado en un búfer correspondiente de una pluralidad de primeros búferes;
generar (904), mediante un segundo proceso que se ejecuta en el sistema informático, un vector de estado conjunto basado en la pluralidad de datos de estado almacenados en la pluralidad de primeros búferes; pasar, mediante un tercer proceso que se ejecuta en el sistema informático, de un estado suspendido, en el que el tercer proceso opera durante un período de tiempo predefinido durante el cual el tercer proceso no obtiene ni procesa un nuevo vector de estado conjunto de un segundo búfer, a un estado activo; generar (1008), mediante el tercer proceso durante el estado activo, un vector de acción conjunta basado en el vector de estado conjunto según una política definida del tercer proceso, en donde la política definida es un conjunto de instrucciones almacenadas en una memoria (440) que hace que el tercer proceso genere una acción en respuesta a datos de observación y/o datos de recompensa en el vector (514) de estado conjunto y se define por un usuario en función de tareas, objetivos o estados finales deseados a alcanzar en el entorno (202) del mundo real;
pasar (1014), mediante el tercer proceso en respuesta a la generación del vector de acción conjunta, de nuevo al estado suspendido;
actualizar, mediante el tercer proceso, la política definida en función del vector de estado conjunto durante un período de tiempo definido en el que el tercer proceso está en el estado suspendido;
analizar (910), mediante el segundo proceso, el vector de acción conjunta en una pluralidad de comandos de actuación que indican respectivamente operaciones que cada uno de la pluralidad de dispositivos debe realizar; y
hacer que, mediante cada uno del conjunto de primeros procesos, las una o más interfaces de comunicación transmitan (810) respectivos comandos de actuación de la pluralidad de comandos de actuación a un dispositivo correspondiente de la pluralidad de dispositivos.
2. El método de la reivindicación 1, que comprende:
obtener (902), mediante el segundo proceso, la pluralidad de datos de estado de la pluralidad de primeros búferes; y
cargar (906), mediante el segundo proceso, el vector de estado conjunto en el segundo búfer.
3. El método de la reivindicación 1, que comprende:
cargar (1010), mediante el tercer proceso durante el estado activo, el vector de acción conjunta en un tercer búfer;
obtener (908), mediante el segundo proceso, el vector de acción conjunta del tercer búfer;
cargar (912), mediante el segundo proceso, la pluralidad de comandos de actuación en búferes correspondientes de una pluralidad de cuartos búferes; y
obtener (808), mediante el conjunto de primeros procesos, los comandos de actuación de la pluralidad de cuartos búferes.
4. El método de la reivindicación 1, en donde el vector de estado conjunto se genera en función de un objetivo definido del segundo proceso, objetivo definido que debe lograrse en el entorno (202) del mundo real del sistema.
5. El método de la reivindicación 1, que comprende:
generar, mediante el segundo proceso, información que tiene un valor representativo de un estado de un entorno físico del sistema en relación con un objetivo definido, en donde la información está incluida en el vector de estado conjunto.
6. El método de la reivindicación 1, en donde la política definida asigna un estado del sistema que comprende la pluralidad de dispositivos a una acción correspondiente que debe realizar un dispositivo de la pluralidad de dispositivos.
7. El método de la reivindicación 1, en donde el conjunto de primeros procesos se ejecuta en uno o más primeros procesadores del sistema informático, el segundo proceso se ejecuta en un segundo procesador del sistema informático y el tercer proceso se ejecuta en un tercer procesador del sistema informático.
8. Un sistema informático (200), que comprende:
una o más interfaces (442) de comunicación configuradas para comunicarse a través de una o más redes (206);
uno o más procesadores (438) acoplados a las una o más interfaces (442) de comunicación; memoria (440) que almacena un conjunto de instrucciones que hacen que los uno o más procesadores (438) establezcan, a través de las una o más interfaces (442) de comunicación, comunicaciones en tiempo real entre el sistema informático (200) y un sistema que comprende una pluralidad de dispositivos (508a, 508b, 508N) que operan en un entorno (202) del mundo real, y que hacen que los uno o más procesadores (438) ejecuten procesos que incluyen:
un primer comunicador (506a) configurado para recibir primeros datos (510a) de estado que indican un estado de un primer dispositivo (508a) de la pluralidad de dispositivos, almacenar los primeros datos (510a) de estado en un primer búfer (512a) y hacer que se transmita un primer comando (522a) de actuación al primer dispositivo (508a) a través de las una o más interfaces (442) de comunicación;
un segundo comunicador (506b) configurado para recibir segundos datos (510b) de estado que indican un estado de un segundo dispositivo (508b) de la pluralidad de dispositivos, almacenar los segundos datos (510b) de estado en un segundo búfer (512b) y hacer que se transmita un segundo comando (522b) de actuación al segundo dispositivo (508b) a través de las una o más interfaces (442) de comunicación; un gestor (504) de tareas configurado para:
generar un vector (514) de estado conjunto basado en los primeros datos (510a) de estado y los segundos datos (510b) de estado; y
analizar un vector (518) de acción conjunta en el primer comando (522a) de actuación y el segundo comando (522b) de actuación; y
un agente (502) de aprendizaje por refuerzo configurado para:
pasar de un estado suspendido, en el que el agente (502) de aprendizaje por refuerzo opera durante un período de tiempo predefinido durante el cual el agente (502) de aprendizaje por refuerzo no obtiene ni procesa un nuevo vector de estado conjunto de un tercer búfer (516), a un estado activo;
generar, en el estado activo, el vector (518) de acción conjunta basado en el vector (514) de estado conjunto según una política definida del agente (502) de aprendizaje por refuerzo, en donde la política definida es un conjunto de instrucciones almacenadas en la memoria (440) que hace que el agente de refuerzo (502) genere una acción en respuesta a datos de observación y/o datos de recompensa en el vector (514) de estado conjunto y se define por un usuario en función de tareas, objetivos o estados finales deseados a alcanzar en el entorno (202) del mundo real;
pasar, en respuesta a la generación del vector (518) de acción conjunta, de nuevo al estado suspendido; y actualizar la política definida en función del vector (514) de estado conjunto durante un período de tiempo definido en el que el agente (502) de aprendizaje por refuerzo está en el estado suspendido.
9. El sistema informático (200) de la reivindicación 8, en donde, como resultado de la ejecución del conjunto de instrucciones por los uno o más procesadores (438):
el gestor (504) de tareas está configurado para obtener los primeros datos (510a) de estado del primer búfer (512a) y los segundos datos (510b) de estado del segundo búfer (512b); y
el gestor (504) de tareas está configurado para almacenar el vector (514) de estado conjunto en el tercer búfer (516).
10. El sistema informático (200) de la reivindicación 8, en donde, como resultado de la ejecución del conjunto de instrucciones por los uno o más procesadores (438):
el agente (502) de aprendizaje por refuerzo está configurado para, en el estado activo, obtener el vector (514) de estado conjunto del tercer búfer (516) y almacenar el vector (518) de acción conjunta en un cuarto búfer (520);
el gestor (504) de tareas está configurado para obtener el vector (518) de acción conjunta del cuarto búfer (520) y almacenar el primer comando (522a) de actuación en un quinto búfer (524a) y almacenar el segundo comando (522b) de actuación en un sexto búfer (524b);
el primer comunicador (506a) está configurado para leer el primer comando (522a) de actuación desde el quinto búfer (524a); y
el segundo comunicador (506b) está configurado para leer el segundo comando (522b) de actuación desde el sexto búfer (524b).
11. El sistema informático (200) de la reivindicación 8, en donde, como resultado de la ejecución del conjunto de instrucciones por los uno o más procesadores (438), el gestor (504) de tareas está configurado para generar el vector (514) de estado conjunto en función de un objetivo definido que debe lograrse en el entorno (202) del mundo real del sistema.
12. El sistema informático (200) de la reivindicación 8, en donde, como resultado de la ejecución del conjunto de instrucciones por los uno o más procesadores (438), el gestor (504) de tareas está configurado para generar un valor, que se incluirá en el vector (514) de estado conjunto, representativo de un cambio en el estado del entorno (202) del mundo real, en relación con un objetivo definido, causado por un vector (518) de acción conjunta previo generado por el agente (502) de aprendizaje por refuerzo.
13. El sistema informático (200) de la reivindicación 8, en donde los uno o más procesadores (438) son de un sistema informático distribuido ubicado de forma remota respecto al sistema que comprende la pluralidad de dispositivos (508a, 508b, 508N).
14. El sistema informático (200) de la reivindicación 8, en donde el gestor (504) de tareas es un primer proceso que se ejecuta en un primer procesador de los uno o más procesadores (438), y el agente (502) de aprendizaje por refuerzo es un segundo proceso que se ejecuta en un segundo procesador de los uno o más procesadores (438).
15. Al menos un medio legible por ordenador no transitorio que almacena un conjunto de instrucciones que, como resultado de su ejecución por uno o más procesadores de un sistema informático, hacen que los uno o más procesadores implementen el método de una cualquiera de las reivindicaciones 1 a 7.
ES19857984T 2018-09-04 2019-09-04 Real-time real-world reinforcement learning systems and methods Active ES3040548T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862726788P 2018-09-04 2018-09-04
PCT/CA2019/051231 WO2020047657A1 (en) 2018-09-04 2019-09-04 Real-time real-world reinforcement learning systems and methods

Publications (1)

Publication Number Publication Date
ES3040548T3 true ES3040548T3 (en) 2025-11-03

Family

ID=69639933

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19857984T Active ES3040548T3 (en) 2018-09-04 2019-09-04 Real-time real-world reinforcement learning systems and methods

Country Status (5)

Country Link
US (1) US12005578B2 (es)
EP (1) EP3824358B1 (es)
ES (1) ES3040548T3 (es)
PL (1) PL3824358T3 (es)
WO (1) WO2020047657A1 (es)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018083667A1 (en) * 2016-11-04 2018-05-11 Deepmind Technologies Limited Reinforcement learning systems
EP3637256A1 (en) * 2018-10-12 2020-04-15 IMEC vzw Exploring an unexplored domain by parallel reinforcement
BR112021005358A2 (pt) 2018-12-13 2021-06-15 Andritz Inc. controlador de instalação industrial
US11227078B2 (en) * 2019-02-21 2022-01-18 Dodge Acquisition Co. Method and system for automated gear reducer design
US11288110B2 (en) * 2019-08-21 2022-03-29 Palantir Technologies Inc. Providing application programming interface endpoints for machine learning models
US11188413B1 (en) * 2020-09-03 2021-11-30 Netapp, Inc. Methods and systems for self-healing in connected computing environments
IT202100003821A1 (it) * 2021-02-19 2022-08-19 Univ Pisa Procedimento di interazione con oggetti
JP7538756B2 (ja) * 2021-03-18 2024-08-22 株式会社東芝 データ生成装置、データ生成方法、制御装置、制御方法及びプログラム
JP7563267B2 (ja) * 2021-03-24 2024-10-08 トヨタ自動車株式会社 物品回収システム、物品回収ロボット、物品回収方法、及び物品回収プログラム
KR102346900B1 (ko) * 2021-08-05 2022-01-04 주식회사 애자일소다 픽 앤 플레이스 시스템을 위한 심층 강화학습 장치 및 방법
US20230176552A1 (en) * 2021-12-02 2023-06-08 Microsoft Technology Licensing, Llc Reinforcement learning-based optimization of manufacturing lines
KR102841558B1 (ko) * 2022-04-21 2025-08-04 한국전자통신연구원 가상환경과 실제환경 간 학습장치 행동의 동기화 방법 및 장치
CN114800510B (zh) * 2022-05-06 2024-01-23 武汉理工大学 考虑产品零件失效特征的工业机器人拆解序列规划方法
CN120428573B (zh) * 2025-07-07 2025-09-09 广东天太机器人有限公司 一种基于强化学习的人形机器人控制系统和方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10310773B2 (en) * 2014-03-21 2019-06-04 GM Global Technology Operations LLC Systems and methods for retaining data in a memory
EP3075496B1 (en) 2015-04-02 2022-05-04 Honda Research Institute Europe GmbH Method for improving operation of a robot
DE202016004628U1 (de) 2016-07-27 2016-09-23 Google Inc. Durchqueren einer Umgebungsstatusstruktur unter Verwendung neuronaler Netze
US11400587B2 (en) 2016-09-15 2022-08-02 Google Llc Deep reinforcement learning for robotic manipulation
US10970527B2 (en) * 2017-09-01 2021-04-06 Digital Dream Labs, Llc Robot attention detection

Also Published As

Publication number Publication date
EP3824358B1 (en) 2025-06-11
US20200074241A1 (en) 2020-03-05
EP3824358C0 (en) 2025-06-11
EP3824358A1 (en) 2021-05-26
US12005578B2 (en) 2024-06-11
EP3824358A4 (en) 2022-04-13
PL3824358T3 (pl) 2026-02-16
WO2020047657A1 (en) 2020-03-12

Similar Documents

Publication Publication Date Title
ES3040548T3 (en) Real-time real-world reinforcement learning systems and methods
CN111221748B (zh) 用于数据处理的存储器访问管理的方法和装置
US20210316447A1 (en) Systems, devices, and methods for distributed artificial neural network computation
Datta et al. Integrating egocentric localization for more realistic point-goal navigation agents
Swartling et al. Collective circumnavigation
CN110955242A (zh) 机器人导航方法、系统、机器人及存储介质
CN113510720B (zh) 一种实时分布式协作机器人控制系统
US20150088469A1 (en) Automatic Task-Specific Model Reduction for Humanoid Robots
WO2024021744A1 (zh) 一种控制足式机器人的方法、装置、电子设备、计算机可读存储介质、计算机程序产品及足式机器人
Huang et al. Transparent virtual coupler design for networked haptic systems with a mixed virtual wall
KR101994441B1 (ko) 관성항법장치를 포함한 비행체 유도조종 hwil 시뮬레이션 시스템 및 그 구성 방법
CN110728368B (zh) 一种仿真机器人深度强化学习的加速方法
CN119347772A (zh) 一种全尺度人形机器人协调控制方法及系统
CN109693237A (zh) 机器人及其弹跳控制方法、装置及计算机可读存储介质
Cholewiński et al. Software platform for practical verification of control algorithms developed for rescue and exploration mobile platform
Mañas-Álvarez et al. A vision based navigation platform for control learning
Iklima et al. Distributed path planning classification with web-based 3D visualization using deep neural network for internet of robotic things
WO2023157235A1 (ja) 計算装置
Schoof et al. An experimental platform for heterogeneous multi-vehicle missions
Garcia et al. Hardware and software architecture of a mobile robot with anthropomorphic arm
Leboutet et al. Online Configuration Selection for Redundant Arrays of Inertial Sensors: Application to Robotic Systems Covered with a Multimodal Artificial Skin
KR20120138579A (ko) 로봇 제어 장치
Morckos et al. Axon: A middleware for robotic platforms in an experimental environment
KR20180070766A (ko) 통합 로봇 운용 시스템
Filaretov et al. Information-control system for mobile robots