¿Qué tan eficiente es Q-learning con redes neuronales cuando hay una unidad de salida por acción?

9

Antecedentes:
estoy usando la aproximación del valor Q de la red neuronal en mi tarea de aprendizaje de refuerzo. El enfoque es exactamente el mismo que el descrito en esta pregunta , sin embargo, la pregunta en sí es diferente.

En este enfoque, el número de resultados es el número de acciones que podemos tomar. Y en palabras simples, el algoritmo es el siguiente: realice la acción A, explore la recompensa, solicite a NN que prediga los valores de Q para todas las acciones posibles, elija el valor máximo de Q, calcule Q para la acción A particular R + max(new_state_Q). Ajuste el modelo en los valores de Q predichos con solo uno de ellos reemplazado por R + max(new_state_Q).

Pregunta: ¿Qué tan eficiente es este enfoque si el número de salidas es grande?

Intento: Digamos que hay 10 acciones que podemos tomar. En cada paso le pedimos al modelo que prediga 10 valores, a temprana edad del modelo esta predicción es un desastre total. Luego modificamos 1 valor de la salida y ajustamos el modelo en estos valores.

Tengo dos pensamientos opuestos sobre qué tan bueno / malo es este enfoque y no puedo decidir cuál es el correcto:

  • Desde un punto de vista, estamos entrenando a cada neurona 9 veces en datos aleatorios y solo una vez en los datos que están cerca del valor real. Si NN predijo 5 para la acción A en el estado S, pero el valor real es -100, ajustaremos NN 9 veces con el valor 5 y luego una vez con el valor -100. Suena loco.
  • Desde otro punto de vista, el aprendizaje de la red neuronal se implementa como propagación hacia atrás de un error , por lo que cuando el modelo predice 5 y lo estamos entrenando en 5, no aprenderá nada nuevo, ya que el error es 0. No se tocan los pesos . Y solo cuando calculemos -100 y lo ajustemos al modelo, hará el recálculo de peso.

¿Qué opción es la correcta? ¿Quizás hay algo más que no estoy teniendo en cuenta?

ACTUALIZACIÓN: Por "cuán eficiente" me refiero a la comparación con un enfoque con una salida: recompensa predicha. Por supuesto, la acción será parte de la entrada en este caso. Entonces, el enfoque n. ° 1 hace predicciones para todas las acciones basadas en algún estado, el enfoque n. ° 2 hace predicciones para acciones específicas tomadas en algún estado.

Serhiy
fuente
Es muy difícil dar una respuesta definitiva a esta pregunta en su forma actual: "¿qué tan eficiente es este enfoque?" Bueno, eso depende ... ¿en comparación con qué? ¿Qué enfoque alternativo propondría que puede o no ser más eficiente?
Dennis Soemers
Hola @DennisSoemers. Gracias por tu pregunta He actualizado mi publicación. Básicamente, el enfoque alternativo es tener una salida: la recompensa. Y N entradas adicionales para todas las acciones posibles. El enfoque principal es ENTRADA (Estado) y SALIDA (N Recompensas por N acciones). La alternativa es I (Estado + Acción) y O (Recompensa).
Serhiy

Respuestas:

1

Entonces, las dos opciones que queremos comparar son:

  1. Entradas = representación de estado, Salidas = 1 nodo por acción
  2. Entradas = representación de estado + codificación de acciones en caliente, Salidas = 1 nodo

Siguiendo mi propia intuición, dudo que haya una diferencia significativa en términos de poder de representación o velocidad de aprendizaje (en términos de iteraciones) entre esas dos opciones.

Para poder de representación, la primera opción ofrece una red un poco más pequeña cerca de las entradas y una red más amplia cerca de las salidas. Si por alguna razón fuera beneficioso tener más pesos cerca de los nodos de entrada, por ejemplo, eso podría lograrse haciendo que la primera capa oculta (cerca de las entradas) también sea un poco más grande.

En cuanto a la velocidad de aprendizaje, la preocupación que parece tener es básicamente similar a tener generalmente una señal de aprendizaje precisa para una de las salidas, y no para las demás. Sin embargo, con la segunda opción, se puede decir exactamente lo mismo para los pesos conectados a los nodos de entrada, por lo que dudo que haya una diferencia significativa allí.

Como mencioné, todo lo anterior se basa solo en mi intuición, sin embargo, sería interesante ver referencias más creíbles sobre eso.

Una ventaja importante que veo para la primera opción es la velocidad de cálculo; suponga que desea calcular los valores para todas las acciones para decidir qué acción seleccionar; un solo paso hacia adelante a través de la red, que le brinda todos los valores a la vez, será mucho más eficiente computacionalmente que tener pasos hacia adelante separados (para un conjunto de acciones de tamaño ).QQnortenorte

Dennis Soemers
fuente