Para pasar del píxel sin procesar, una capa oculta no lo haría.
En su implementación, está utilizando la red neuronal para representar la función Q. Si te estás acercando a esto desde píxeles en bruto, incluso para un juego visualmente simple como el pong, una capa oculta no es suficiente para aprender la representación dentro de los píxeles. Le está pidiendo al NN que aprenda qué es una pelota, qué significa cada una de las dos posiciones del tablero, cómo se moverá después del golpe, etc. dentro de una capa oculta, esto no sería lo suficientemente profundo.
Sugiero al menos 2 capas ocultas, preferiblemente capas de convolución.
- ¿Cómo funciona la selección de características bayesianas?
- ¿Cuáles son algunos algoritmos que un científico de datos debe saber y comprender?
- Cómo comenzar con la visión por computadora
- ¿Qué recursos de tutoría están disponibles para que un ingeniero aprenda Machine Learning en Quora?
- ¿Cuáles son algunos métodos de aprendizaje automático supervisados y no supervisados para trabajar con conjuntos de datos que tienen características muy grandes y un bajo número de muestras?
Otras cosas que también debe considerar que ayudarían a su entrenamiento y convergencia en la red es usar la repetición de la experiencia (almacenar sus pares de acción de estado y muestrear aleatoriamente de esta memoria de experiencia durante la actualización de su red en lugar de entrenar directamente en los píxeles secuenciales que obtiene al jugar). Esto ayuda a evitar la deriva que sucedería si entrenaras en píxeles de juego secuenciales directos, debido a la alta correlación entre estados secuenciales. (Puede pensar en este paso como esencialmente convertirlo en capacitación supervisada, con actualizaciones de muestreo aleatorias)
Otra forma de ayudar es utilizar una red de destino. Esta es esencialmente una copia de su red Q para la cual su actualización de peso está retrasada para algunas instancias de entrenamiento, para proporcionar una señal de error más estable. (piense que si actualiza su red Q después de cada instancia de entrenamiento, su error MSE durante el entrenamiento oscilará enormemente, al mantener constante una copia antigua de los pesos de su red Q y usarla para calcular el error MSE, las actualizaciones de gradiente son menos oscilatorias y más estable).
Como otros han mencionado para probar que toda su implementación es correcta, primero puede entrenar una red superficial en una representación de estado de abstracción de nivel superior. Entonces, en lugar de píxeles sin procesar, usa la ubicación de la pelota y los tableros como estado en la red poco profunda. En este caso, probablemente debería funcionar con una capa oculta. Si esto funciona, puede cambiar su red a un covnet más profundo y usar píxeles sin procesar como entradas de estado
Editar: por último, no estoy seguro de cuál es la frecuencia de video de su emulador, pero recuerdo el DQN de deepmind entrenado en 4 cuadros anteriores en lugar de uno, simplemente porque muchas veces nada cambia mucho de cuadro a cuadro. El uso de más marcos puede ayudar a su entrenamiento de red