Cómo entrenar una red neuronal con grandes datos

Se sabe que las redes neuronales son hambrientas de datos. Ahora, a medida que aumenta el tamaño de su conjunto de datos, se hace cada vez más difícil almacenarlos en la memoria.

En tales escenarios, las bibliotecas modernas como PyTorch, TF, CNTK, etc. han incorporado metodologías para manejar grandes datos. Las utilidades como los lectores de datos [1] [2] [3] [4] nos permiten crear tuberías eficientes donde los datos se procesan en la CPU y luego se transfieren a la GPU lote por lote.

En general, los datos no se alimentan directamente, sino que se alimentan después de algún procesamiento previo. Hay varias formas de hacerlo. Considere el escenario de un conjunto de datos de imagen:

  1. Puede procesar las imágenes y almacenar las imágenes procesadas como matrices / tensores numpy en el disco que ahora se convierte en su “nuevo conjunto de datos”. Lo usará para alimentar los datos a su red neuronal. Esto en la mayoría de los casos es ineficiente y lleva mucho tiempo.
  2. Úselo en lectores integrados para crear una tubería de entrada. Este es generalmente el enfoque preferido. Es mucho más fácil definir una clase / función que señale la forma en que se cargan y procesan los datos. La biblioteca se encarga del flujo de control con una sobrecarga mínima. Es mucho más eficiente ya que esto le permite usar la CPU y la GPU sin cuello de botella. La CPU carga y procesa los datos, que luego se copian en la memoria de la GPU para alimentarlos al NN.

Luego puede estructurar su red como es su caso de uso. Definir el optimizador apropiado, la función de pérdida y la arquitectura que da los mejores resultados.

Notas al pie

[1] Lectura de datos | TensorFlow

[2] Importación de datos | TensorFlow

[3] Tutorial de procesamiento y carga de datos

[4] Leer y alimentar datos al entrenador CNTK

El descenso de gradiente estocástico (SGD) debería funcionar bien, ¿no? ¿Está preguntando acerca de los datos que no caben en la memoria? Recientemente hubo un documento sobre compresas Álgebra lineal, que introduce técnicas de compresión de bases de datos para manejar las matemáticas en grandes datos. Buscar CLA

Depende del tiempo disponible y del poder de cálculo que tenga. Hay principalmente dos enfoques:

Descenso de gradiente estocástico: aquí es donde nuestra función de optimización no se repite en todo el conjunto de entrenamiento para ajustar los pesos, sino que sigue ajustando los pesos con el ejemplo de entrenamiento en la mano.

Reducción de mapas y paralelismo de datos: podemos dividir el descenso de gradiente por lotes y enviar la función de costo para un subconjunto de datos a muchas máquinas diferentes para que podamos entrenar nuestro algoritmo en paralelo. Luego, usamos un algoritmo lineal para encabezar los resultados producidos .

More Interesting

¿Es posible usar bibliotecas de aprendizaje automático OpenCV para aplicaciones que no son de visión por computadora?

¿Cuál es la diferencia entre el descenso en gradiente y el descenso coordinado?

¿Se pueden usar datos generados por simulación por computadora para algoritmos de aprendizaje automático?

¿Cuáles son los límites del aprendizaje automático? ¿Cuándo puede estar seguro de que un algoritmo ML no podrá darle un resultado satisfactorio?

¿Qué método de reducción de dimensionalidad puede mantener las relaciones de traslación entre puntos?

¿Es una buena idea dejar el aprendizaje automático después de 2 años y estudiar desarrollo web, si me di cuenta de que no soy tan inteligente para todas esas matemáticas de ML?

¿Qué significa splines de regresión adaptativa múltiple (MARS) en términos simples?

¿Puedo usar word2vec para entrenar un clasificador de aprendizaje automático?

En el aprendizaje de características, ¿cuál es la regla general para decidir el número de parches aleatorios y el número de iteraciones / épocas con respecto al número deseado de nodos / longitud de la característica?

¿Qué opinas de la exageración actual sobre Deep Learning?

¿El rendimiento de la regresión logística se ve afectado negativamente por características altamente correlacionadas?

¿Por qué las tasas de aceptación de las conferencias de minería de datos son tan bajas y qué tipo de documentos se rechazan?

¿Qué hace que los parámetros del modelo sean variables latentes?

¿Qué nivel de experiencia en aprendizaje automático se espera de un científico de datos?

¿Por qué decimos que las redes neuronales simples no pueden manejar la entrada de longitud variable?