En Machine Learning: ¿por qué siempre entrenamos una muestra en lugar de todo el conjunto de datos / base de datos?

Los datos de entrenamiento son datos con clasificación conocida. Si ya conoce la clasificación de cada dato, entonces no hay necesidad de aprendizaje automático. El aprendizaje automático es útil cuando conoce la clasificación de un conjunto de muestra (entrenamiento) grande y desea predecir la clasificación para un conjunto de datos desconocido (prueba).

Por supuesto, un conjunto de entrenamiento más grande le brinda más precisión para predecir su conjunto de prueba. Pero también requiere más espacio de memoria y más tiempo de procesamiento. Uno de los grandes desafíos de ML es seleccionar los mejores criterios y construir el algoritmo más eficiente para comparar y distinguir mejor las clases de muestra.

Sí, siempre puede arrojar más potencia de cálculo a su problema, pero generalmente está trabajando con una cantidad fija de potencia de cálculo y tiene que escribir un algoritmo que se ejecute en un tiempo razonable. ¿¿Cuánto tiempo?? Eso depende de sus datos y su algoritmo.

Por cierto, en realidad no “siempre” tenemos datos de entrenamiento. A veces se le presenta un problema sin datos de capacitación, en cuyo caso todo lo que puede hacer es agrupar muestras similares en grupos en lugar de identificarlos. Esto se llama un problema de agrupamiento, mientras que el problema sobre el que preguntó es un problema de clasificación.

No estoy seguro de haber entendido su pregunta, pero haré todo lo posible para responderla.

En primer lugar, es importante decir que uno no entrena un conjunto de datos. Usamos un conjunto de datos para entrenar un modelo. Tal conjunto de datos puede contener algún tipo de etiqueta que queremos predecir. En este caso, el proceso de obtener los parámetros correctos para el modelo se llama aprendizaje supervisado . Cuando nuestro modelo no se usa para predecir alguna etiqueta dada, sino para inferir cierta información subyacente sobre los datos, el proceso se denomina aprendizaje no supervisado . Por lo tanto, un conjunto de datos no está necesariamente etiquetado.

Ahora, específicamente sobre su pregunta. Nunca entrenamos en una sola muestra. El mejor enfoque es tratar de utilizar la mayor cantidad de datos que nuestro modelo pueda ajustar. Dado que cita GPU y parece preocupado por el tiempo de entrenamiento, supondré que se refiere al aprendizaje profundo y a un método muy común llamado descenso de gradiente estocástico . Cuando usamos el descenso de gradiente “regular” (o por lotes), el gradiente se calcula utilizando todos los datos en cada paso. Esto nos da una mejor estimación del gradiente y probablemente nos indicará a través de una mejor ruta en el proceso de optimización. Sin embargo, esto no es práctico cuando tiene muchas muestras en su conjunto de datos. El descenso de gradiente estocástico calcula el gradiente usando una sola muestra y usa este gradiente en el proceso de optimización. La idea es que cada muestra nos dará un paso diferente en el proceso, pero la “ruta” general convergerá de manera similar al descenso por gradiente. En la práctica, lo que solemos hacer al entrenar redes neuronales profundas es usar el descenso de gradiente de mini lotes . Este método funciona de manera muy similar a SGD, pero en lugar de usar una sola muestra para calcular el gradiente, usamos una mayor cantidad de muestras, como 64 o 128 muestras. El tamaño del mini-lote es como hiperparámetro de sus datos de entrenamiento y puede configurarlo como mejor se adapte a su modelo.

El tiempo de entrenamiento generalmente está asociado con el tamaño de sus datos de entrenamiento y el tamaño de su modelo. Los modelos muy profundos, con muchos parámetros, toman más tiempo que los menos profundos. Si su conjunto de datos es similar a CIFAR, puede realizar la capacitación en menos de una hora. Si su conjunto de datos es similar a ImageNet, es posible que deba esperar un par de días. Pero es realmente difícil de predecir sin conocer su hardware y el modelo que está entrenando. Las GPU ayudan mucho.

Por la misma razón en cómo evaluamos a nuestros hijos en los exámenes. Les dices que estudien el libro y aprendan, y para evaluarlos, luego les das las preguntas del examen para ver si “aprendieron” algo.

Si les hace las preguntas del examen cuando están estudiando para el examen, después del examen no sabrá si realmente aprendieron algo útil o si simplemente memorizaron cuáles fueron las respuestas del examen.

Muestra una porción aleatoria de sus datos para la prueba. Y después de entrenar su modelo, lo prueba con los datos de prueba. 70/30 es común para las porciones de tren / prueba, pero podría cambiar según el tamaño y la calidad de los datos.

Idealmente, siempre entrenará con la mayor cantidad de datos posible.

Pero supongamos que tiene 1000 puntos de datos que desea clasificar. Esto podría ser mucho trabajo manual, por lo que marca 100 puntos de datos aleatorios y entrena un clasificador con eso, luego clasifica automáticamente los 900 restantes para ahorrar tiempo. Eso parece más en línea con el ejemplo de muestreo que anotó.

Pero incluso si todos los datos están marcados, generalmente no los entrena con todos los datos a la vez, porque necesita validación y conjuntos de datos de prueba para verificar la precisión del modelo.

Dicho esto, hay una manera de evitar esto en un grado decente mediante la validación de k-pliegues, que divide los datos en una gran cantidad de conjuntos y trenes y los valida con todos los datos.

¡Lo dijiste, precisión! ¿Cómo estaría tan seguro de la calidad de su modelo si no tiene un conjunto de datos para probar su capacidad de generalización? El ajuste excesivo / insuficiente es el problema que enfrentaría si no realiza la división (entrenamiento / prueba). ¿Cuál es la utilidad de un buen modelo que falla trágicamente en un nuevo conjunto de datos? Ninguna

Puede usar todo el conjunto de datos para la capacitación, pero, ¿cómo podría probar su modelo? Intentamos mantener algunos datos para probar.