¿Cómo calcular exactamente la función de pérdida profunda de Q-Learning?


11

Tengo una duda sobre cómo se entrena exactamente la función de pérdida de una red Deep Q-Learning. Estoy usando una red de alimentación de 2 capas con capa de salida lineal y capas ocultas relu.

  1. Supongamos que tengo 4 acciones posibles. Por lo tanto, la salida de mi red para el estado actual es . Para hacerlo más concreto, supongamos questQ(st)R4Q(st)=[1.3,0.4,4.3,1.5]
  2. Ahora tomo la acción correspondiente al valor es decir, la tercera acción, y un nuevo estado .at=24.3st+1
  3. Luego, calculo el paso directo con el estado y digamos que obtengo los siguientes valores en la capa de salida . Digamos también la recompensa y .st+1Q(st+1)=[9.1,2.4,0.1,0.3]rt=2γ=1.0
  4. Es la pérdida dada por:

    L=(11.14.3)2

    O

    L=14i=03([11.1,11.1,11.1,11.1][1.3,0.4,4.3,1.5])2

    O

    L=14i=03([11.1,4.4,2.1,2.3][1.3,0.4,4.3,1.5])2

Gracias, lo siento, tuve que escribir esto de una manera muy básica ... Estoy confundido por toda la notación. (Creo que la respuesta correcta es la segunda ...)


1
Esta pregunta con el claro ejemplo me hizo comprender el aprendizaje profundo q más que cualquier otro artículo medio que haya leído la semana pasada.
dhruvm

Respuestas:


6

Después de revisar las ecuaciones unas pocas veces más. Creo que la pérdida correcta es la siguiente:

L=(11.14.3)2

Mi razonamiento es que la regla de actualización de q-learning para el caso general solo está actualizando el valor q para un específico par de .state,action

Q(s,a)=r+γmaxaQ(s,a)

Esta ecuación significa que la actualización ocurre solo para un específico par de y para la red q neuronal, lo que significa que la pérdida se calcula solo para una unidad de salida específica que corresponde a una específica .state,actionaction

En el ejemplo proporcionado y el es .Q(s,a)=4.3targetr+γmaxaQ(s,a)=11.1


0
TLDR:

Probablemente no importará a menos que tenga un gran espacio de acción.

Si su función de pérdida es MSE , entonces la pérdida calculada es la mitad del término pérdida específica (si el espacio de acción = 2). Esto puede importar si su espacio de acción es grande y puede ralentizar el entrenamiento ya que la pendiente de la función de pérdida se reduce en un factor igual al espacio de acción de su problema.

        next_q = self.model.predict(next_obss)
        next_q[np.where(dones)] = np.zeros([self.action_shape])

        qs = self.model.predict(obss)
        qs[range(len(qs)), actions] = rewards + GAMMA * np.max(next_q, axis=1)

        h = self.model.fit(obss, qs, verbose=0)

Como mencionó, solo se actualizan los valores q que corresponden a la acción actual realizada. Por lo tanto, el numerador de pérdidas permanece constante.

Suponiendo un espacio de acción de 2 (valores posibles: {0,1}).

L = 1/2[ Q - Q_old ]^2 # Capital implying Vector
L = 1/2[ (q_0 - q_old_0)^2 + (q_1 - q_old_1)^2]

Si la acción seleccionada fue 1entonces el 0valor th permanece sin cambios, por lo tanto, se cancela y viceversa. Por lo tanto, todos los términos se cancelan, excepto la acción que se realiza actualmente. Sin embargo, el denominador seguiría aumentando según el espacio de acción.

Para un espacio de acción de n = 2,

MSE(Q(s)) = 1/n * (squared error for Q(s,a))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.