Estoy tratando de usar una red neuronal para aproximar el valor Q en Q-learning como en Preguntas sobre Q-Learning usando redes neuronales . Como se sugiere en la primera respuesta, estoy usando una función de activación lineal para la capa de salida, mientras sigo usando la función de activación sigmoidea en las capas ocultas (2, aunque puedo cambiar esto más adelante). También estoy usando un solo NN que devuelve una salida para cada acción como se recomienda.
Sin embargo, el algoritmo sigue siendo divergente para el simple problema de equilibrio del carro-poste. Entonces, me temo que mi actualización Q está mal. Después de la inicialización, lo que he hecho en cada paso es lo siguiente:
- Calcule usando la propagación hacia adelante del NN para todas las acciones.
- Seleccione una nueva acción, , aterrice en un nuevo estado .
- Calcule usando la propagación hacia adelante del NN para todas las acciones.
- Establezca el valor Q objetivo como: solo para la acción actual, a_t , mientras se configura Q_ {t + 1} (s, a_t) = Q_ {t} (s, a_t) para los otros estados. Nota, creo que este es el problema.
- Establezca el vector de error en
- Volver a propagar el error a través del NN para actualizar las matrices de peso.
¿Alguien podría señalarme dónde me he equivocado?
Además, ¿cree que también debería incluir un término de sesgo en la capa de entrada y la primera capa oculta (es decir, para las funciones sigmoideas)? ¿Hará la diferencia?
Muchas gracias de antemano por tu ayuda. Puedo ayudar a aclarar la pregunta o compartir código si es necesario.
fuente