55

Conozco los conceptos básicos de las redes neuronales feedforward, y cómo entrenarlos usando el algoritmo backpropagation, pero estoy buscando un algoritmo que pueda usar para entrenar una ANN en línea con el aprendizaje de refuerzo.Entrenar una red neuronal con aprendizaje de refuerzo

Por ejemplo, el problema cart pole swing up 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 snake game, donde los comentarios se retrasan y se limitan a los objetivos y a los objetivos, en lugar de a 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ían 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: ¿Existe un algoritmo simple para el entrenamiento de una red neuronal artificial con refuerzo de aprendizaje? Principalmente estoy interesado en situaciones de recompensa en tiempo real, pero si hay disponible un algoritmo para situaciones basadas en objetivos, aún mejor.

+1

Buena pregunta, y estoy pensando casi exactamente lo mismo, donde en mi caso la red neuronal es recurrente. Un punto clave es que estás hablando de 2 algoritmos de aprendizaje diferentes. No puede aplicar 2 algoritmos de aprendizaje diferentes al mismo problema sin causar conflictos, a menos que tenga una manera de resolverlos. –

Respuesta

24

Hay algunos trabajos de investigación sobre el tema:

y algo de código:

  • Code examples para el aprendizaje de refuerzo de redes neuronales.

Estos 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.

+0

El tercer enlace menciona algo sobre Q-learning. ¿Eso es aplicable al problema del carrito de compras? –

+0

Parece ser aplicable ya que le permite comparar la utilidad esperada de las acciones disponibles sin tener un modelo del entorno. Entonces, si estás haciendo un problema real con el hardware, entonces va a ser útil. Para obtener más detalles sobre Q-learning, consulte: http://www.applied-mathematics.net/qlearning/qlearning.html – Kiril

+2

¿El Q-learning no implica un conjunto finito de acciones? El problema ideal de carrito de compras tendrá un conjunto continuo de acciones. ¿Es eso un problema? –

7

Si la salida que conduce a una recompensa r se vuelve a propagar en la red r veces, 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, vuelva a escalarlas a 0-(rmax-rmin) para que estén todo no es negativo 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 dio lugar a la recompensa negativa. Esto no solo reforzará los resultados deseables, sino que también difundirá o evitará los malos resultados.

+0

Interesante. Me pregunto cómo esto se aplica a la recompensa retrasada. Supongo que funcionaría especificar algo que no sea un objetivo como una pequeña recompensa negativa. –

+0

@Kendall Frey: Para una red neuronal que puede manejar mejor las demoras que las redes neuronales normales, consulte [Memoria larga a corto plazo] (https://en.wikipedia.org/wiki/Long_short_term_memory) ([Video de Youtube] (http://www.youtube.com/watch?v=izGl1YSH_JA)), o vea [memoria temporal jerárquica] (https://en.wikipedia.org/wiki/Herarchical_temporal_memory) ([Video de Youtube] (http://www.youtube) .com/watch? v = 48r-IeYOvG4)). – HelloGoodbye

+3

¿Por qué debería cambiar la escala de las recompensas de esa manera? ¿Necesitan volver a escalar? Al hacer eso, una recompensa 'rmin' se convierte en' 0' después del cambio de escala, por lo que lo que se suponía que sería una recompensa no tendría ningún efecto de refuerzo en la red. – HelloGoodbye

Cuestiones relacionadas