algorithm - refuerzo - aprendizaje supervisado
Entrenar una red neuronal con aprendizaje de refuerzo (2)
Conozco los conceptos básicos de las redes neuronales predictivas y cómo entrenarlas utilizando el algoritmo de retropropagación, pero estoy buscando un algoritmo que pueda usar para entrenar una ANN en línea con el aprendizaje de refuerzo.
Por ejemplo, el problema de oscilación del poste del carrito es uno que me gustaría resolver con una ANN. En ese caso, no sé qué se debe hacer para controlar el péndulo, solo sé lo cerca que estoy de la posición ideal. Necesito que el ANN aprenda basado en la recompensa y el castigo. Por lo tanto, el aprendizaje supervisado no es una opción.
Otra situación es algo así como el juego de serpientes , donde los comentarios se retrasan y se limitan a los objetivos y a los objetivos, en lugar de la recompensa.
Puedo pensar en algunos algoritmos para la primera situación, como escalar montañas o algoritmos genéticos, pero supongo que ambos serán lentos. También podrían ser aplicables en el segundo escenario, pero increíblemente lento y no conducen al aprendizaje en línea.
Mi pregunta es simple: ¿hay un algoritmo simple para entrenar una red neuronal artificial con aprendizaje de refuerzo? Estoy interesado principalmente en situaciones de recompensa en tiempo real, pero si hay disponible un algoritmo para situaciones basadas en objetivos, aún mejor.
Hay algunos trabajos de investigación sobre el tema:
- El refuerzo eficiente del aprendizaje a través de las topologías de redes neuronales en evolución (2002)
- Aprendizaje de refuerzo utilizando redes neuronales, con aplicaciones para el control de motores
- Refuerzo de aprendizaje de la red neuronal al problema del robot móvil autónomo Evitación de obstáculos
Y algo de código:
- Ejemplos de código para el aprendizaje de refuerzo de redes neuronales.
Esos son solo algunos de los principales resultados de búsqueda de Google sobre el tema. Los primeros dos documentos parecen bastante buenos, aunque no los he leído personalmente. Creo que encontrará aún más información sobre redes neuronales con refuerzo de aprendizaje si hace una búsqueda rápida en Google Scholar.
Si el resultado que conduce a una recompensa r
se propaga de nuevo a la red r
veces, se reforzará la red proporcionalmente a la recompensa. Esto no es directamente aplicable a las recompensas negativas, pero puedo pensar en dos soluciones que producirán diferentes efectos:
1) Si tiene un conjunto de recompensas en un rango rmin-rmax, reescalórelas a 0-(rmax-rmin)
para que todas sean no negativas. Cuanto mayor es la recompensa, más fuerte es el refuerzo que se crea.
2) Para una recompensa negativa -r
, vuelva a propagar una salida aleatoria r
veces, siempre que sea diferente de la que conduce a la recompensa negativa. Esto no solo reforzará los resultados deseables, sino que también difundirá o evitará los malos resultados.