Una época en el descenso de gradiente estocástico se define como un solo paso a través de los datos. Para cada minibatch SGD, se extraen muestras, se calcula el gradiente y se actualizan los parámetros. En la configuración de época, las muestras se extraen sin reemplazo.
Pero esto parece innecesario. ¿Por qué no dibujar cada minibatch SGD como extrae al azar del conjunto de datos completo en cada iteración? A lo largo de un gran número de épocas, las pequeñas desviaciones de las cuales se ven muestras con mayor o menor frecuencia parecerían no ser importantes.
neural-networks
deep-learning
gradient-descent
Reinstalar a Mónica
fuente
fuente
Respuestas:
Además de la respuesta de Franck sobre aspectos prácticos, y la respuesta de David sobre la observación de subgrupos pequeños, los cuales son puntos importantes, de hecho hay algunas razones teóricas para preferir el muestreo sin reemplazo. La razón tal vez esté relacionada con el punto de David (que es esencialmente el problema del coleccionista de cupones ).
En 2009, Léon Bottou comparó el rendimiento de convergencia en un problema particular de clasificación de texto ( ).n = 781 , 265
Entrenó una máquina de vectores de soporte a través de SGD con tres enfoques:
Examinó empíricamente la convergencia , donde C es la función de costo, θ t los parámetros en el paso t de optimización, y la expectativa es sobre la combinación de lotes asignados.E [C( θt) - minθC( θ ) ] C θt t
Esta es su Figura 1 que ilustra que:
Esto fue confirmado teóricamente más tarde por el artículo:
Su prueba solo se aplica al caso donde la función de pérdida es fuertemente convexa, es decir, no a las redes neuronales. Sin embargo, es razonable esperar que un razonamiento similar pueda aplicarse al caso de la red neuronal (que es mucho más difícil de analizar).
fuente
De hecho, es bastante innecesario desde el punto de vista del rendimiento con un gran conjunto de entrenamiento, pero el uso de épocas puede ser conveniente, por ejemplo:
[1] da una razón más, que no es tan relevante dada la configuración actual de la computadora:
[1] Bengio, Yoshua. " Recomendaciones prácticas para la formación basada en gradientes de arquitecturas profundas " . Redes neuronales: trucos del oficio. Springer Berlin Heidelberg, 2012. 437-478.
fuente
No estoy de acuerdo en algo que claramente no importará. Digamos que hay un millón de ejemplos de entrenamiento, y tomamos diez millones de muestras.
En R, podemos ver rápidamente cómo se ve la distribución con
plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")
Algunos ejemplos se visitarán más de 20 veces, mientras que el 1% de ellos se visitarán 3 o menos veces. Si el conjunto de capacitación se eligió cuidadosamente para representar la distribución esperada de ejemplos en datos reales, esto podría tener un impacto real en algunas áreas del conjunto de datos, especialmente una vez que comience a dividir los datos en grupos más pequeños.
Considere el caso reciente en el que un votante de Illinois se sobremuestreó 30 veces y cambió drásticamente las estimaciones del modelo para su grupo demográfico (y, en menor medida, para toda la población de los EE. UU.). Si accidentalmente sobremuestreamos imágenes de "Ruffed Grouse" tomadas contra fondos verdes en días nublados con una profundidad de campo estrecha y subestimamos los otros tipos de imágenes de grouse, el modelo podría asociar esas características irrelevantes con la etiqueta de categoría. Cuantas más formas haya de dividir los datos, más subgrupos habrá y más oportunidades habrá para este tipo de error.
fuente
samples = sample(1:1E6, size = 1E7, replace = TRUE)
plot(table(table(samples)) / 1E7)