Project Sharing | MindSpore está conectado al nuevo entorno y nuevos algoritmos de aprendizaje por refuerzo

Autor: **** Yan Kexi, Jing Yuheng, Liu Zhihao, Feng Xiaokun, Lei Shiqi-** Instituto de Automatización, Academia de Ciencias de China

Resumen

Para este experimento de aprendizaje por refuerzo, el tema elegido por nuestro equipo es "Nuevo entorno/nuevo algoritmo para el acceso de MindSpore al aprendizaje por refuerzo". Conectamos un entorno de prueba de juegos para escenarios de cooperación de múltiples agentes: SISL (Stanford Intelligent Systems Laboratory) a la plataforma MindSpore e implementamos la prueba comparativa de rendimiento de los algoritmos QMIX y MAPPO en este entorno experimental. En este intercambio, realizaremos la introducción y el análisis correspondientes en torno a los cinco aspectos de selección de tema, entorno, algoritmo, resultados experimentales y conclusiones.

 

Consulte el archivo adjunto para conocer los códigos relacionados con el proyecto.

https://gitee.com/lemonifolds/reinforcement/tree/c03e5f8e6104b5880fdfa53d579332078c7dfb99

01

Introducción al tema

El aprendizaje por refuerzo es una disciplina que estudia la toma de decisiones en secuencia. Aprende estrategias de optimización para maximizar los rendimientos acumulativos analizando el proceso de interacción entre un agente y el entorno. Entre ellos, el entorno es un elemento importante en el aprendizaje por refuerzo. No solo determina directamente el formato de los datos de entrada del modelo de algoritmo, sino que también está estrechamente relacionado con las tareas de investigación del aprendizaje por refuerzo. Algunos algoritmos clásicos de aprendizaje por refuerzo suelen ir acompañados de algunos entornos de verificación clásicos. Por ejemplo, para tareas de percepción y toma de decisiones de un solo agente, su algoritmo clásico DQN (Deep Q-learning) [1] fue verificado en el juego Atari, un entorno clásico para esta tarea para tareas de juegos de suma cero con información completa; y tareas multijugador con información incompleta Para tareas de juegos mixtos, sus representantes trabajan AlphaGo[2][3] y AlphaStar[4] incluso nombraron el algoritmo de acuerdo con el entorno de verificación correspondiente (Go, StarCraft). Esto muestra el importante papel del entorno de verificación en el campo del aprendizaje por refuerzo.

Hay muchos tipos de entornos utilizados en el aprendizaje por refuerzo. Los entornos típicos incluyen Gym[5], MuJoCo[6], MPE[7], Atari[1], PySC2[8], SMAC[9], TORCS, ISAAC, etc. En la actualidad, la arquitectura StarCraft MindSpore se ha conectado a dos entornos: Gym y SMAC (StarCraft Multi-Agent Challenge), que están orientados respectivamente a escenarios de aprendizaje por refuerzo de un solo agente y de aprendizaje por refuerzo de múltiples agentes. Para este último, debido al espacio de estado, acción y decisión complejo y de alta dimensión del juego StarCraft, se ha convertido en un importante punto de referencia desafiante para los algoritmos de aprendizaje por refuerzo de múltiples agentes. Sin embargo, en la práctica real de la investigación científica, cuando proponemos un nuevo algoritmo, a menudo lo verificamos primero en algunos entornos pequeños (como el entorno de juego Atari en Gym). En base a esto, nuestro equipo eligió un pequeño entorno de prueba para escenarios de múltiples agentes: SISL (Laboratorio de Sistemas Inteligentes de Stanford) y lo conectó a la plataforma MindSpore para proporcionar a la plataforma un entorno de certificación de experiencias de inteligencia múltiple más diverso. Además, también implementamos dos algoritmos típicos de aprendizaje por refuerzo de múltiples agentes, MAPPO [10] y QMIX [11], para el entorno SISL, y proporcionamos los resultados de las pruebas comparativas correspondientes.

A continuación, este intercambio brindará primero una introducción preliminar al entorno SISL conectado (Capítulo 2), así como los algoritmos QMIX y MAPPO utilizados (Capítulo 3, luego, el proceso de implementación de acceso al entorno, experimentos y resultados de las pruebas comparativas); y se muestran y analizan los problemas encontrados en el experimento (Capítulo 4), finalmente, con base en los resultados experimentales, damos las conclusiones correspondientes (Capítulo 5);

02

Introducción al medio ambiente

PettingZoo [12] es una biblioteca de Python comúnmente utilizada en la investigación de aprendizaje por refuerzo de múltiples agentes. SISL (Stanford Intelligent Systems Laboratory) es uno de los paquetes de entorno, que incluye tres subentornos: Multiwalker, Pursuit y Waterworld.

El uso básico de PettingZoo es similar al de Gym. El siguiente es un ejemplo de código para crear un agente que actúa aleatoriamente en el entorno Waterworld:

from pettingzoo.sisl import waterworld_v4
env = waterworld_v4.env(render_mode='human')

env.reset()
for agent in env.agent_iter():
    observation, reward, termination, truncation, info = env.last()
    if termination or truncation:
        action = None
    else:
        action = env.action_space(agent).sample()
    env.step(action)
env.close()

La siguiente es una introducción a los tres subentornos de SISL.

2.1 Caminante múltiple

En el entorno Multiwalker, los robots bípedos intentan transportar su carga y caminar hacia la derecha. Varios robots transportan una carga grande y necesitan trabajar juntos, como se muestra en la siguiente imagen.

imagenDiagrama de entorno de Multiwalker

Cada agente recibirá la devolución de forward_reward multiplicado por el cambio en la posición del paquete en comparación con el momento anterior. Si al menos uno de los paquetes cae o el paquete excede el límite izquierdo del terreno, el entorno finaliza y cada agente recibe -100 de beneficio. Si el paquete cae desde el borde derecho del terreno, el entorno también terminará, con una ganancia de 0.

Si un agente cae, recibe un beneficio adicional de -10. Si terminate_on_fall = False, entonces el entorno no terminará cuando el agente caiga; de lo contrario, el entorno terminará una vez que el agente caiga y traerá un beneficio de -100. Si remove_on_fall = True, entonces el agente que cayó será eliminado del entorno. Cada agente también recibe -5 veces el cambio del ángulo de la cabeza para mantener la cabeza nivelada. Si share_reward = True, entonces la recompensa personal de cada agente se promedia y se devuelve a cada agente.

Cada agente ejerce fuerza sobre las dos articulaciones de sus dos piernas, por lo que su espacio de acción continuo es un vector de 4 dimensiones. El espacio de observación de cada agente es un vector de 31 dimensiones que contiene datos de radar ruidosos sobre el entorno y los agentes circundantes, los ángulos y velocidades de cada articulación de su propio cuerpo y otra información.

2.2 Persecución

En el entorno de Persecución, algunos agentes de persecución intentan perseguir y rodear a los fugitivos, como se muestra en la siguiente figura (el rojo es el agente de persecución controlado, el azul es el movimiento aleatorio de los fugitivos).

imagen

Diagrama del entorno de persecución.

Por defecto, hay 30 agentes fugitivos y 8 agentes perseguidores en una cuadrícula de 16X16, y hay un obstáculo (parte blanca) en el centro del mapa. Si un agente rodea completamente a un fugitivo, cada agente circundante recibe un beneficio de 5 y el fugitivo es eliminado del entorno. Cada vez que el agente toque a un fugitivo, también recibirá un beneficio de 0,01.

Cada agente tiene un espacio de acción discreto: arriba, abajo, izquierda, derecha, detener. El espacio de observación de cada agente es una cuadrícula de 7X7 a su alrededor, que está representada en naranja en la figura.

2.3 Mundo acuático

El entorno de Waterworld simula las condiciones en las que las arqueas intentan sobrevivir en el entorno. Cada agente debe intentar consumir alimentos y evitar toxinas, como se muestra en la siguiente imagen.

imagen

Diagrama del entorno de Waterworld

Dependiendo de los parámetros de entrada, es posible que los agentes necesiten cooperar para consumir alimentos, por lo que el modelo puede ser cooperativo y competitivo al mismo tiempo. De manera similar, los beneficios también pueden ser diferentes o promediados para cada agente. Todo el entorno es un espacio bidimensional continuo y los beneficios se basan en la exposición a alimentos y toxinas.

El espacio de acción de cada agente es un vector bidimensional, es decir, avance (aceleración) en dirección horizontal y vertical. El espacio de observación de cada agente es la información que recibe cada sensor sobre la distancia a los alimentos, toxinas, otros agentes y si choca con alimentos o toxinas. La dimensión total es imageno imagen, según los parámetros.

03

Introducción al algoritmo

En esta sección, presentaremos el algoritmo MAPPO [10] y el algoritmo QMIX [11] utilizados en el experimento.

3.1 algoritmo MAPPO

El nombre completo de MAPPO es Optimización de políticas próximas de múltiples agentes. Como puede verse en el nombre, el algoritmo MAPPO es un algoritmo de aprendizaje por refuerzo clásico: el algoritmo PPO [13], que se expande en un entorno de inteligencia múltiple. Para entornos de múltiples agentes, a menudo se imagendescriben usando < > siete tuplas. Entre ellos, n representa el número de agentes; S representa el espacio de estados del entorno; imagenes el espacio de comportamiento compuesto por las acciones de todos los agentes; imagenrepresenta la observación local obtenida por el agente i del estado global s; entorno completamente observable, entonces imagen); imagenrepresenta la probabilidad de transformarse de s a s' dada una acción conjunta; R (s, A) representa la función de recompensa compartida imagen;

El algoritmo MAPPO utiliza la estructura clásica actor-crítico, que requiere entrenar dos redes neuronales separadas: la red de políticas imageny la función de valor imagen(como actor y crítico respectivamente).

ParaRed de políticas imagen, se utiliza para aprender un mapeo desde la observación o_i hasta la distribución de acciones a_i, y el objetivo de optimización correspondiente es:

imagen

Entre ellos, B representa el tamaño del lote, que imagense calcula utilizando el método GAE [14], imagenrepresenta la entropía de la política y imagenrepresenta el hiperparámetro del coeficiente de peso.

Para la función de valor imagen, que se utiliza para aprender el mapeo del estado S a la estimación de recompensa imagen, el objetivo de optimización correspondiente es:

imagen

donde imagenrepresenta el rendimiento descontado calculado. Dado que MAPPO adopta un método de entrenamiento centralizado y de ejecución distribuida, la función de valor puede dividir directamente el estado global , mientras que la función de política solo puede procesar imagenla información de observación local de cada agente ;imagen

Con base en la fórmula del objetivo de optimización anterior, se puede obtener el proceso de operación de MAPPO. El proceso de procesamiento del algoritmo MAPPO cíclico proporcionado en el artículo original [10] se organiza de la siguiente manera:

imagen

3.1 algoritmo MAPPO

En esta sección, u se usa para denotar acciones y u imagense usa para denotar el historial de observación de acciones. La idea de diseño del algoritmo QMIX es similar a la de VDN. Se espera que imagencada uno se pueda obtener calculando uno global imagen. solo necesito

imagen

Eso satisfará el requisito. Para que la fórmula anterior se cumpla, imagendebe haber monotonicidad con respecto a Q_i, es decir

imagen

La estructura de la red neuronal de QMIX se muestra en la siguiente figura: imagenDiagrama del marco QMIX

Para cada agente i, se utiliza una red de agentes para calcularlo imagen, como se muestra en la Figura (c). Esta red es una red DRQN, es decir, la capa completamente conectada en DQN se reemplaza por GRU y la entrada es la observación del agente en el momento t imageny la acción en el momento t-1 imagen.

La red híbrida es una red neuronal de avance que recibe n salidas de la red de agentes y las mezcla monótonamente, y la salida imagenes el resultado, como se muestra en la Figura (a). Los pesos de la red híbrida son generados por una superred separada. La superred toma el estado global s_t como entrada y genera los pesos de una capa de red híbrida. Cada superred consta de una única capa lineal con una función de activación de valor absoluto para garantizar que los pesos de la red híbrida no sean negativos.

La red QMIX está entrenada de extremo a extremo para minimizar las siguientes pérdidas:

imagen

Entre ellos, imagenestán imagenlos parámetros de la red de destino (similar a DQN).

04

Resultados experimentales

Esta sección lleva a cabo un análisis experimental específico basado en la introducción anterior al entorno SISL y los algoritmos MAPPO y QMIX. Primero, presentamos el proceso de acceso al entorno SISL (Sección 4.1); luego, según los algoritmos MAPPO y QMIX proporcionados en el almacén MindSporeRL original, después de modificarlos y ajustarlos, intentamos aplicarlos en el entorno al que se accede recientemente. El experimento de prueba (secciones 4.2 y 4.3) se completa en el entorno SISL. Mostraremos e introduciremos los puntos de mejora de ingeniería correspondientes, los resultados experimentales y las ideas.

4.1 Proceso de acceso al entorno SISL

Usamos el comando pip install pettingzoo[sisl] para instalar la biblioteca del entorno básico de SISL. Por supuesto, también puede instalar el entorno básico localmente mediante el siguiente método:

cd ~/reinforcement/mindspore_rl/environment
git clone https://github.com/Farama-Foundation/PettingZoo.git
cd PettingZoo
pip install -e .[sisl]

Sobre la base de este entorno básico, encapsulamos SISL de acuerdo con el modo de encapsulación de MindSpore Reinforcement de su entorno existente. Para una implementación de código específica, consulte sisl_environment.py.

La clase Wrapper del entorno SISL hereda principalmente las siguientes clases:

from mindspore_rl.environment import Environment

Para ser compatible con MindSpore Reinforcement y el marco de entrenamiento de MindSpore, heredamos o utilizamos la siguiente estructura de datos en la clase Wrapper del entorno SISL:

import mindspore as ms
from mindspore.ops import operations as P
from mindspore_rl.environment.space import Space

Después de observar el marco del código de MindSpore Reinforcement, descubrimos que los diferentes algoritmos solo se adaptan a entornos específicos, y no todos los entornos y algoritmos son universales. Por ejemplo, el algoritmo MAPPO solo está adaptado al entorno MPE, por lo que el algoritmo solo admite un espacio de estado vectorial continuo y un espacio de acción discreto. Además, dado que la implementación del entorno MPE utiliza múltiples procesos, el algoritmo MAPPO también se implementa para múltiples procesos. Adaptación especializada. Para otro ejemplo, el algoritmo QMIX solo está adaptado al entorno SMAC, por lo que el algoritmo solo admite un espacio de estado vectorial continuo y un espacio de acción discreto. El entorno SMAC es un proceso único, por lo que el algoritmo QMIX solo es adecuado para un proceso único. Por lo tanto, los algoritmos existentes de MindSpore Reinforcement no pueden admitir universalmente espacios de acción o estados discretos y continuos, y los espacios de estados generalmente solo son adecuados para formas vectoriales. Para otras formas de entrada, como imágenes, es necesario implementar redes troncales adicionales como CNN. Además, el entorno de acceso también requiere una adaptación específica basada en la implementación del algoritmo en un solo proceso o en varios procesos.

Para adaptarnos al algoritmo QMIX, implementamos la versión de proceso único del entorno SISL Clase Wrapper SISLEnvironment y encapsulamos todas las API del entorno de acuerdo con el formato de encapsulación MindSpore Reinforcement.

Para adaptarnos al algoritmo MAPPO, implementamos la versión multiproceso del entorno SISL, la clase Wrapper SISLMultiEnvironment y la biblioteca de multiprocesamiento basada en Python para implementar la clase de programación multiproceso EnvironmentProcessNew y encapsulamos todas las API del entorno. según el formato de encapsulación MindSpore Reinforcement.

4.2 Experimento de prueba de referencia del algoritmo MAPPO

reinforcement_MAPPO
├─ example
│  ├─ make_plot.py
│  ├─ scripts
│  │  ├─ mappo_train_log.txt
│  │  └─ run_standalone_train.sh
│  └─ train_SISL.py
└─ mindspore_rl
   ├─ algorithm
   │  ├─ config.py
   │  ├─ config_SISL.py
   │  ├─ mappo.py
   │  ├─ mappo_replaybuffer.py
   │  ├─ mappo_session.py
   │  ├─ mappo_trainer.py
   │  ├─ mappo_vmap.py
   │  ├─ mappo_vmap_trainer.py
   │  ├─ mpe
   │  ├─ mpe_environment.patch
   │  ├─ mpe_environment.py
   │  ├─ on-policy
   │  ├─ sisl_environment.py
   │  └─ __init__.py
   └─ environment
      └─ sisl_environment.py

Árbol de código de entorno SISL implementado por el algoritmo MAPPO

El algoritmo MAPPO**** está desacoplado del entorno.

MAPPO en Shengsi Mindspore está conectado de forma nativa al entorno MPE y, en los intentos de los miembros del equipo, puede ejecutarse directamente en el entorno MPE, completando con éxito los pasos de interacción con el entorno, capacitación, actualización de parámetros, etc., asegurando la corrección. del código del algoritmo MAPPO. SISL tiene diferentes mapas como entornos experimentales, incluidos Multiwalker, Pursuit y Waterworld. Sin embargo, cambiar directamente el archivo config.py no se puede ejecutar correctamente en el entorno SISL. Después de investigar y discutir entre los miembros del equipo, descubrieron que en la implementación de MAPPO en el marco de MindSpore, el algoritmo MAPPO está altamente acoplado con el entorno. Por ejemplo, en MAPPOSession.py, todas las variables relacionadas con el entorno, como el número de agentes, la dimensión de observación de la dimensión de estado y la dimensión de acción factible, se implementan como valores específicos en lugar de variables de entorno; de manera similar, en sisl_environment.py; Se eliminan variables definidas explícitamente, como el número de agentes que deben ser parámetros de configuración. Esta definición explícita evita que los cambios en el archivo config.py se pasen dentro del algoritmo, lo que genera errores de tiempo de ejecución en la interfaz de la red de entrada de funciones.

Hemos mejorado el algoritmo original y hemos agregado una parte de desacoplamiento del entorno, lo que permite que el marco lea correctamente la información del entorno correspondiente del archivo config.py y use correctamente la información del entorno para pasarla al algoritmo, logrando realmente desacoplar el entorno y Algoritmo MAPPO.

Acceso MAPPO al entorno SISL****

Una vez completado el trabajo anterior, podemos asegurarnos de que el algoritmo MAPPO sea correcto y que los parámetros del archivo de configuración se puedan pasar correctamente al algoritmo. Posteriormente, los miembros del equipo comenzaron a conectarse al entorno SISL. En el marco de MindSpore, diferentes algoritmos corresponden a diferentes entornos y tienen diferentes ejecuciones. Durante el proceso de depuración, descubrimos que para la versión de subprocesos múltiples del entorno SISL, la cantidad de subprocesos de múltiples subprocesos y la cantidad de entornos existentes en cada subproceso no se pueden cambiar directamente cambiando la cantidad de procesos o la cantidad de. Los entornos harán que el algoritmo se atasque en un determinado punto. Además, durante la ejecución del código, debido a una falta de coincidencia de tipos de datos, por ejemplo, numpy.int32 no es compatible con int32, lo que provocará problemas con el entorno. conversión; lo que se devuelve del entorno es la codificación one-hot de la acción, que no puede ingresarla directamente en la red mappo definida para capacitación y otros problemas.

Después de resolver los problemas de tipo de datos e interacción con el entorno, los miembros del equipo entrenaron a MAPPO en el entorno SISL. Sin embargo, según el código de entrenamiento predeterminado, el programa informó un error y salió después de cada entrenamiento de 19 episodios. Después de la discusión entre los miembros del equipo y la depuración línea por línea, de acuerdo con el código de entrenamiento original, después de cada entrenamiento, no contiene la información de aviso de truncamiento para finalizar el episodio, por lo que cuando comienza la siguiente ronda de entrenamiento, el entorno de la anterior. La ronda continuará. La ejecución comienza en el estado y el número de pasos en ejecución de la ronda anterior del entorno no se borrará. Dado que el entorno Pursuit está configurado para tener un número máximo de pasos en ejecución, después de ejecutar hasta el número máximo de ejecuciones del entorno, de acuerdo con el marco del entorno, todas las recompensas y observaciones en la función de ejecución de sisl_environment.py que se ejecutan en el El entorno del paso final se borrará y la función de ejecución no. Las variables borradas no se procesan, por lo que durante la ejecución de la función, cada vez que se alcanza el número máximo de pasos especificado por el entorno, el programa falla. por qué el programa informa un error cada 19 episodios de entrenamiento. Por lo tanto, los miembros del equipo agregaron una prueba para ver si se alcanza el número máximo establecido. Si se alcanza el número máximo, el entorno envía una señal de truncamiento, finaliza la función de ejecución y reinicia el entorno.

Después de resolver las dificultades anteriores, el algoritmo MAPPO pudo ejecutarse con éxito en el entorno SISL. Establezca la información de estado requerida para que MAPPO sea la unión de todas las observaciones del agente y ejecute un máximo de 500 episodios. Cada episodio contiene 500 pasos de tiempo. Realice experimentos MAPPO en el entorno SISL y dibuje las curvas de recompensa y pérdida durante el entrenamiento. Una vez finalizado el entrenamiento, obtenemos los siguientes resultados:

imagen

4.3 Experimento de prueba comparativa del algoritmo QMIX

reinforcement_QMIX
├─ example
│  ├─ qmix
│  │  ├─ eval.py
│  │  ├─ scripts
│  │  │  ├─ run_standalone_eval.sh
│  │  │  └─ run_standalone_train.sh
│  │  └─ train.py
│  └─ __init__.py
└─ mindspore_rl
   ├─ algorithm
   │  ├─ qmix
   │  │  ├─ config.py
   │  │  ├─ qmix.py
   │  │  ├─ qmix_session.py
   │  │  ├─ qmix_trainer.py
   │  │  ├─ _config.py
   │  │  ├─ __init__.py
   │  └─ __init__.py
   └─ environment
      ├─ sc2_environment.py
      └─ sisl_environment.py

Árbol de código de entorno SISL implementado por el algoritmo QMIX

Corrección del algoritmo QMIX

Durante nuestra implementación, descubrimos que en el marco MindSpore, el algoritmo QMIX original y su correspondiente entorno experimental SMAC no se podían ejecutar, y la rutina eval.py también informó un error y no se pudo ejecutar. Por lo tanto, para probar la corrección del algoritmo y la viabilidad del entorno, primero revisamos el algoritmo QMIX y el entorno correspondiente implementado en el marco.

Como era la primera vez que utilizaban el marco MindSpore, los miembros del equipo descubrieron que el mensaje de error del marco no era obvio durante el experimento. Después de la discusión y cooperación entre los miembros del equipo, se descubrió que esto se debe al uso repetido de herencia y sobrecarga en el marco, y la lógica informática subyacente para traducir el lenguaje Python al gráfico de cálculo de cpp para el cálculo, lo que resulta en casi Los mismos informes de error y el depurador en el marco no siempre pueden devolver la ubicación del error correspondiente.

A través de la depuración línea por línea, encontramos que en la clase QMIXTrainer implementada, se debería haber devuelto save_reward, pero Step_info en el entorno SMAC se devolvió incorrectamente. Después de la depuración, el algoritmo QMIX se puede verificar correctamente en uno de los entornos SMAC.


Desacoplar el algoritmo QMIX del entorno

 

Basado en la experiencia previa de los miembros del equipo, SMAC cuenta con diferentes mapas como entornos experimentales, como 2s3z que se ha implementado en Shengsi MindSpore, así como 3m, 3s5z, etc. Sin embargo, cuando cambiamos el archivo config.py correspondiente como se describe en el documento, el programa original no se puede ejecutar directamente. Después de investigar y discutir entre los miembros del equipo, descubrieron que en la implementación de QMIX en el marco de MindSpore, el algoritmo QMIX está altamente acoplado con el entorno. Por ejemplo, en QMIXTrainer, casi todas las variables relacionadas con el entorno, como el número de agentes Agent_num, la dimensión de observación obs_shape y la dimensión de acción factible, se implementan como valores específicos en lugar de variables de entorno.


  • La función de evaluación () anterior se reutiliza en las fases de entrenamiento y prueba, y ocurren los problemas anteriores. Sepárelos aquí para evitar confusión funcional.

  • Agent_num, obs_shape y otras variables están relacionadas con el entorno y no tienen nada que ver con el algoritmo. Se agregaron variables locales y el código se refactorizó de acuerdo con la documentación de MindSporeRL para desacoplar el algoritmo del entorno y cumplir con las especificaciones del marco.

En resumen, a través de la depuración y revisión del marco, resolvimos el problema del acoplamiento excesivo entre el entorno y el algoritmo, y realmente logramos el desacoplamiento del algoritmo QMIX y el entorno SMAC. También enviamos una solicitud de extracción para esta versión del código en el repositorio de código original para comodidad de los usuarios posteriores del marco.

En el entorno 3s5z, usando nuestro código para probar QMIX obtenemos los siguientes resultados:

imagen

Acceso QMIX al entorno SISL

Una vez completado el trabajo anterior, podemos asegurarnos de que el algoritmo QMIX sea correcto y obtener los resultados correspondientes en el entorno SMAC correspondiente. Posteriormente, los miembros del equipo comenzaron a conectarse al entorno SISL. Como se mencionó anteriormente, en el marco de MindSpore, diferentes algoritmos corresponden a diferentes entornos y tienen diferentes ejecuciones. El algoritmo QMIX solo implementa una versión de un solo subproceso, por lo que no es interoperable con el entorno MAPPO antes mencionado. Durante el proceso de depuración, descubrimos que la versión de un solo subproceso del entorno SISL nunca podía ejecutarse normalmente. La ubicación del error es difícil de localizar. Su contenido es: No se puede convertir la instancia de Python al tipo C++.

Los miembros del equipo discutieron y depuraron línea por línea y descubrieron que el marco MindSpore utiliza la capa inferior de Cpp para compilar en un gráfico de cálculo para cálculos acelerados, por lo que existe un proceso de traducción de Python a CPP, y este proceso es ligeramente diferente del Proceso de ejecución tradicional de Python. El programa Python tradicional es un lenguaje interpretado y el programa se ejecuta casi línea por línea, mientras que cpp, como lenguaje compilado, debe compilarse y ejecutarse por completo. Debido a esto, los miembros del equipo especularon que dicha mezcla conducía al problema de informe de errores poco claro mencionado anteriormente. Al mismo tiempo, es necesario verificar el tipo de datos de cada variable en todo momento durante el proceso de escritura de un programa. A diferencia del Python tradicional, numpy.int32 no es compatible con int32, lo que resulta en la necesidad de dedicar mucho tiempo. comprobar el tipo de datos de cada paso desde el entorno hasta el algoritmo.

Ante las dificultades encontradas, los estudiantes del grupo intentaron verificar los tipos de datos de cada dato en el entorno y algoritmo por turno, pero aún no pudieron ubicar la variable específica donde ocurrió el problema y la ubicación donde ocurrió el problema. Además, hemos implementado una versión multiproceso del entorno SISL y ejecutamos el código MAPPO. Después de la discusión, los miembros del equipo concluyeron que el problema se debía a la inconsistencia entre el tipo de datos y el tipo de datos C++ subyacente al que llama. Es difícil localizar el problema mediante la depuración de un solo punto. Debe intentar compilar y depurar. Al mismo tiempo, este problema tiene poco que ver con el contenido del curso de aprendizaje reforzado, por lo que no continuamos dedicando tiempo a depurar la implementación del algoritmo QMIX en un entorno SISL de proceso único.

05

en conclusión

En este experimento de aprendizaje por refuerzo, nuestro equipo conectó con éxito un entorno de prueba de juego para escenarios de cooperación de múltiples agentes: SISL (Stanford Intelligent Systems Laboratory) a la plataforma MindSpore e intentó utilizar los algoritmos QMIX y MAPPO para hacer esto. Se realizaron pruebas comparativas de rendimiento en el; ambiente experimental. Después de completar los diversos requisitos establecidos en la tarea, también tenemos una comprensión más profunda de la arquitectura subyacente de MindSpore, lo que nos ayudará a aplicar con mayor habilidad la biblioteca MindSporeRL a nuestras actividades de investigación científica en el futuro.

referencias

[1]. Mnih V, Kavukcuoglu K, Silver D, et al. Jugar a Atari con aprendizaje por refuerzo profundo[J]. Preimpresión de arXiv arXiv:1312.5602, 2013.

[2]. Silver D, Huang A, Maddison CJ, et al. Dominar el juego de Go con redes neuronales profundas y búsqueda de árboles[J]. naturaleza, 2016, 529(7587): 484-489.

[3]. Silver D, Schrittwieser J, Simonyan K, et al. Dominar el juego del go sin conocimiento humano[J]. naturaleza, 2017, 550(7676): 354-359.

[4]. Vinyals O, Babuschkin I, Czarnecki WM, et al. Nivel de gran maestro en StarCraft II usando el aprendizaje por refuerzo multiagente[J]. Naturaleza, 2019, 575(7782): 350-354.

[5]. Brockman G, Cheung V, Pettersson L, et al. Gimnasio Openai[J]. Preimpresión de arXiv arXiv:1606.01540, 2016.

[6]. Todorov E, Erez T, Tassa Y. Mujoco: Un motor de física para control basado en modelos[C]//Conferencia internacional IEEE/RSJ 2012 sobre robots y sistemas inteligentes. IEEE, 2012: 5026-5033.

[7]. Mordatch I, Abbeel P. Aparición de un lenguaje compositivo fundamentado en poblaciones de múltiples agentes [C] // Actas de la conferencia AAAI sobre inteligencia artificial. 2018, 32(1).

[8]. Romo L, Jain M. PySC2 Aprendizaje por refuerzo [J].

[9]. Samvelyan M, Rashid T, De Witt CS, et al. El desafío multiagente de Starcraft[J]. Preimpresión de arXiv arXiv:1902.04043, 2019.

[10]. Yu C, Velu A, Vinitsky E, et al. La sorprendente eficacia de ppo en juegos cooperativos multiagente[J]. Avances en sistemas de procesamiento de información neuronal, 2022, 35: 24611-24624.

[11]. Rashid T, Samvelyan M, De Witt CS, et al. Factorización de funciones de valor monótonas para un aprendizaje por refuerzo profundo de múltiples agentes [J]. Revista de investigación sobre aprendizaje automático, 2020, 21(1): 7234-7284.

[12]. https://pettingzoo.farama.org/environments/sisl/

[13]. Schulman J, Wolski F, Dhariwal P, et al. Algoritmos de optimización de políticas proximales [J]. Preimpresión de arXiv arXiv:1707.06347, 2017.

[14]. John Schulman, Philipp Moritz, Sergey Levine, Michael Jordan y Pieter Abbeel. Control continuo de alta dimensión mediante estimación de ventajas generalizadas. En Actas de la Conferencia Internacional sobre Representaciones del Aprendizaje (ICLR), 2016.

Un programador nacido en los años 90 desarrolló un software de portabilidad de vídeo y ganó más de 7 millones en menos de un año. ¡El final fue muy duro! Google confirmó despidos, relacionados con la "maldición de 35 años" de los codificadores chinos en los equipos Python Flutter Arc Browser para Windows 1.0 en 3 meses oficialmente GA La participación de mercado de Windows 10 alcanza el 70%, Windows 11 GitHub continúa disminuyendo. GitHub lanza la herramienta de desarrollo nativo de IA GitHub Copilot Workspace JAVA. es la única consulta de tipo fuerte que puede manejar OLTP + OLAP. Este es el mejor ORM. Nos encontramos demasiado tarde.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4736317/blog/11072547
Recomendado
Clasificación