¿Por qué se deben barajar los datos para las tareas de aprendizaje automático?

30

En las tareas de aprendizaje automático, es común mezclar datos y normalizarlos. El propósito de la normalización es claro (por tener el mismo rango de valores de características). Pero, después de luchar mucho, no encontré ninguna razón valiosa para mezclar datos.

He leído esta publicación aquí discutiendo cuándo necesitamos barajar datos, pero no es obvio por qué deberíamos barajarlos. Además, he visto con frecuencia en algoritmos como Adam o SGD donde necesitamos el descenso del gradiente de lote (los datos deben separarse en mini lotes y se debe especificar el tamaño del lote). De acuerdo con esta publicación, es vital mezclar datos para cada época para tener datos diferentes para cada lote. Entonces, quizás los datos se barajan y, lo que es más importante, se modifican.

¿Por qué hacemos esto?

Medios de comunicación
fuente
1
Puede ser útil indicar exactamente por qué la respuesta en el primer enlace no le ayudó. De lo contrario, corremos el riesgo de repetir el contenido ya dicho allí con pequeñas mejoras.
E_net4 dice Reinstate
Como he dicho, quiero saber por qué no cuándo, ¿sabes por qué? ¿Es eso realmente explicado allí? No he visto ningún documento para esto en absoluto
medios de comunicación el
1
Para obtener más información sobre el impacto del pedido de ejemplos, lea Curriculum Learning [pdf].
Emre
1
Publiqué esto en CrossValidated y creo que es relevante. stats.stackexchange.com/a/311318/89653
Josh el
@Emre en realidad este documento está en contra de la barajada, gracias, no escuché sobre este tipo de aprendizaje.
Medios de comunicación

Respuestas:

19

Basado en ¿Qué debemos hacer cuando una pregunta publicada en DataScience es un duplicado de una pregunta publicada en CrossValidated? , Vuelvo a publicar mi respuesta a la misma pregunta que se hizo en CrossValidated ( https://stats.stackexchange.com/a/311318/89653 ).

Nota: a lo largo de esta respuesta me refiero a la minimización de la pérdida de entrenamiento y no discuto los criterios de detención como la pérdida de validación. La elección de los criterios de detención no afecta el proceso / conceptos que se describen a continuación.

El proceso de entrenamiento de una red neuronal es encontrar el valor mínimo de una función de pérdida , donde representa una matriz (o varias matrices) de pesos entre las neuronas y representa el conjunto de datos de entrenamiento. Utilizo un subíndice para para indicar que nuestra minimización de ocurre solo sobre los pesos (es decir, estamos buscando modo que se minimice) mientras está fijo.WXX WW XX(W)WXXWWX

Ahora, si suponemos que tenemos elementos en (es decir, hay pesos en la red), es una superficie en un espacio dimensional . Para dar un análogo visual, imagine que tenemos solo dos pesos de neuronas ( ). Entonces tiene una interpretación geométrica fácil: es una superficie en un espacio tridimensional. Esto surge del hecho de que para cualquier matriz dada de pesos , la función de pérdida se puede evaluar en y ese valor se convierte en la elevación de la superficie.W P P + 1 P = 2 W XPWPP+1P=2WX

Pero existe el problema de la no convexidad; la superficie que describí tendrá numerosos mínimos locales y, por lo tanto, los algoritmos de descenso de gradiente son susceptibles de quedar "atascados" en esos mínimos, mientras que una solución más profunda / más baja / mejor puede estar cerca. Es probable que esto ocurra si no cambia en todas las iteraciones de entrenamiento, porque la superficie está fija para una dada ; Todas sus características son estáticas, incluidos sus diversos mínimos.XXX

Una solución a esto es el entrenamiento de mini lotes combinado con barajar. Al barajar las filas y entrenar solo en un subconjunto de ellas durante una iteración dada, cambia con cada iteración, y en realidad es bastante posible que no se realicen dos iteraciones sobre la secuencia completa de iteraciones y épocas de entrenamiento exactamente en la misma . El efecto es que el solucionador puede "rebotar" fácilmente desde un mínimo local. Imagine que el solucionador está atascado en un mínimo local en la iteración con el mini-lote de entrenamiento . Este mínimo local corresponde a evaluado a un valor particular de pesos; lo llamaremosX i X i X i ( W i ) X i + 1 X i + 1 ( W i ) X i ( W i ) X i + 1X i X W WXXiXiXi(Wi). En la próxima iteración, la forma de nuestra superficie de pérdida cambia realmente porque estamos usando , es decir, puede tomar un valor muy diferente de y es muy posible que no corresponda a un mínimo local. Ahora podemos calcular una actualización de gradiente y continuar con el entrenamiento. Para ser claros: la forma de será, en general, diferente de la de . Tenga en cuenta que aquí me refiero a la función de pérdida evaluada en un conjunto de entrenamiento ; Es una superficie completa definida sobre todos los valores posibles deXi+1Xi+1(Wi)Xi(Wi)Xi+1XiXW, En lugar de la evaluación de que la pérdida (que es sólo un escalar) para un valor específico de . Tenga en cuenta también que si se usan mini lotes sin barajar, todavía hay un grado de "diversificación" de las superficies de pérdida, pero habrá un número finito (y relativamente pequeño) de superficies de error únicas vistas por el solucionador (específicamente, verá el mismo conjunto exacto de mini lotes (y, por lo tanto, superficies de pérdida) durante cada época).W

Una cosa que evité deliberadamente fue una discusión sobre los tamaños de mini lotes, porque hay un millón de opiniones sobre esto y tiene implicaciones prácticas significativas (se puede lograr una mayor paralelización con lotes más grandes). Sin embargo, creo que vale la pena mencionar lo siguiente. Debido a que se evalúa calculando un valor para cada fila de (y sumando o tomando el promedio; es decir, un operador conmutativo) para un conjunto dado de matrices de peso , la disposición de las filas de no tiene efecto cuando se usa full- Descenso de gradiente por lotes (es decir, cuando cada lote es la completa , y las iteraciones y las épocas son lo mismo). X W X XXWX X

Josh
fuente
+1. Esta respuesta se explica técnicamente mejor que la otra respuesta con un mayor número de votos a favor.
Gokul NC
29

Mezclar datos sirve para reducir la varianza y garantizar que los modelos sigan siendo generales y se sobreajusten menos.

El caso obvio en el que barajaría sus datos es si sus datos están ordenados por su clase / destino. Aquí, tendrá que barajar para asegurarse de que sus conjuntos de entrenamiento / prueba / validación sean representativos de la distribución general de los datos.

Para el descenso de gradiente por lotes, se aplica la misma lógica. La idea detrás del descenso del gradiente de lote es que al calcular el gradiente en un solo lote, generalmente obtendrá una estimación bastante buena del gradiente "verdadero". De esa manera, ahorra tiempo de cálculo al no tener que calcular el gradiente "verdadero" en todo el conjunto de datos cada vez.

Desea barajar sus datos después de cada época porque siempre tendrá el riesgo de crear lotes que no sean representativos del conjunto de datos general y, por lo tanto, su estimación del gradiente estará desactivada. Mezclar sus datos después de cada época asegura que no se quedará "atascado" con demasiados lotes malos.

En el descenso de gradiente estocástico regular, cuando cada lote tiene un tamaño 1, aún desea mezclar sus datos después de cada época para mantener su aprendizaje en general. De hecho, si el punto de datos 17 siempre se usa después del punto de datos 16, su propio gradiente estará sesgado con las actualizaciones que el punto de datos 16 esté realizando en el modelo. Al barajar sus datos, se asegura de que cada punto de datos cree un cambio "independiente" en el modelo, sin estar sesgado por los mismos puntos anteriores.

Valentin Calomme
fuente
1
Como expliqué, barajas tus datos para asegurarte de que tus conjuntos de entrenamiento / prueba serán representativos. En la regresión, usas barajar porque quieres asegurarte de que no estás entrenando solo en valores pequeños, por ejemplo. Barajar es principalmente una salvaguardia, el peor de los casos, no es útil, pero no pierdes nada al hacerlo. Para la parte de descenso de gradiente estocástico, nuevamente querrás asegurarte de que el modelo no sea como es debido al orden en que lo alimentaste con los datos, así que para asegurarte de evitar eso,
barajas
2
Creo que barajar disminuye la varianza y es probable que aumente el sesgo (es decir, reduce la tendencia a sobreajustar los datos). Imagina que estábamos haciendo un descenso de gradiente de lote completo, de modo que las épocas y las iteraciones son lo mismo. Entonces existe un mínimo global (no es que necesariamente podamos encontrarlo) que nuestro solucionador está tratando de localizar. Si estamos utilizando la pérdida de MSE, minimizaremos el sesgo si pudiéramos llegar a esta solución cada vez. Pero dado que es probable que este mínimo global se encuentre en un lugar diferente para diferentes conjuntos de entrenamiento, esta solución tenderá a tener una gran variación.
Josh
2
Al barajar, es menos probable que converjamos a una solución que se encuentre en el mínimo global para todo el conjunto de entrenamiento (mayor sesgo), pero es más probable que encontremos una solución que generalice mejor (menor varianza).
Josh el
7

Supongamos que los datos se ordenan en un orden específico. Por ejemplo, un conjunto de datos que se ordena en base a su clase. Por lo tanto, si selecciona datos para capacitación, validación y prueba sin considerar este tema, seleccionará cada clase para diferentes tareas y fallará el proceso.

Por lo tanto, para impedir este tipo de problemas, una solución simple es mezclar los datos para obtener diferentes conjuntos de datos de capacitación, validación y prueba.

Sobre el mini lote, las respuestas a esta publicación pueden ser una solución a su pregunta.

Dios mio
fuente
1
@Media La respuesta más relacionada en el enlace proporcionado es: "Mezclar mini lotes hace que los gradientes sean más variables, lo que puede ayudar a la convergencia porque aumenta la probabilidad de acertar en una buena dirección"
OmG
En realidad, he visto esto en el documento de SGD, pero como lo afirman los autores del documento, es la razón de la convergencia, no la mezcla. Vi el enlace y lo dudo un poco. Para más claridad, mira este increíble artículo. Los autores han mencionado el punto allí, pero como verán, no hay una razón exacta para barajar
Media
1

Necesitamos barajar solo para minibatch / SGD, no es necesario el descenso de gradiente por lotes.

Si no se barajan los datos, los datos se pueden ordenar o puntos de datos similares se ubicarán uno al lado del otro, lo que conduce a una convergencia lenta:

  • Muestras similares producirán superficies similares (1 superficie para la función de pérdida para 1 muestra) -> el gradiente apuntará a direcciones similares pero esta dirección raramente apunta al mínimo-> puede conducir el gradiente muy lejos del mínimo
  • "Mejor dirección": el promedio de todos los gradientes de todas las superficies (descenso de gradiente por lotes) que apunta directamente al mínimo
  • "Dirección del minibatch": el promedio de una variedad de direcciones apuntará más cerca del mínimo, aunque ninguna de ellas apunta al mínimo
  • "Dirección de 1 muestra": apunte más al mínimo en comparación con el minibatch

Dibujé el gráfico de la función de pérdida L-2 para la regresión lineal para y=2x aquí

Duque
fuente
1

XWX

Complementando la respuesta de @ Josh, me gustaría agregar que, por la misma razón, se debe barajar antes de mezclar. De lo contrario, obtendrá el mismo número finito de superficies.

Gerardo Consuelos
fuente
Gracias y bienvenidos a nuestra comunidad.
Media
1

Para una mejor precisión del modelo, siempre se recomienda que los datos de entrenamiento tengan todos los tipos de datos.

La combinación de datos de entrenamiento nos ayuda a lograr este objetivo.

vipin bansal
fuente
1

Al mezclar las filas y entrenar solo en un subconjunto de ellas durante una iteración dada, 𝑋 cambia con cada iteración, y en realidad es bastante posible que no se realicen dos iteraciones sobre toda la secuencia de iteraciones y épocas de entrenamiento exactamente en la misma 𝑋

Ankit DEsai
fuente