Para aquellos que han usado redes neuronales u otro aprendizaje automático, ¿cuánto tiempo de procesamiento les ha llevado entrenarlos y qué tan grande fue el conjunto de datos?

De minutos a días, según el tamaño del conjunto de entrenamiento (de miles a cientos de millones de ejemplos) y la cantidad de parámetros (de miles a millones). Básicamente, cada parámetro debe ser visitado dos veces para cada ejemplo. Entonces, si tiene parámetros de 1M y ejemplos de 10M, cada época de entrenamiento requerirá del orden de 20 mil millones de sumas múltiples, y en ese ejemplo el número de épocas de entrenamiento puede ser del orden de 10. La complejidad computacional central es una matriz. vector del producto matriz-matriz, para el cual los costos computacionales son fáciles de obtener para varios tipos de hardware. Tenga en cuenta que el acceso a la memoria podría ser un cuello de botella en algunas arquitecturas (realmente necesita parámetros para mantener en la memoria, y puede ganar algo de velocidad si los datos también se mantienen en la memoria). Hoy en día, muchos profesionales usan GPU, en la que este tipo de operaciones se pueden realizar al menos 10 veces más rápido (en teoría, mucho más …). Theano implementa la compilación de tales expresiones simbólicas a nivel de pitón para GPU, y como se señaló anteriormente, hay implementaciones de redes neuronales fáciles de usar en Theano (en deeplearning.net/tutorials).

Lo importante a tener en cuenta con las redes neuronales es que todos los algoritmos de entrenamiento son lineales en la cantidad de puntos de datos, por lo que el algoritmo específico que use puede afectar en gran medida el factor constante. La más popular, la retropropagación, implica calcular la salida de la red y luego propagar esos resultados a través de cada capa mediante una multiplicación de matriz y (generalmente) una no linealidad.

Dada la opción de usar una red neuronal, el principal cuello de botella en el rendimiento radica en la elección del idioma; Python Runtime va a estar muy por detrás de una implementación de C ++. Mi enfoque favorito es escribir el algoritmo en python con Theano [1], luego ejecutar la versión compilada por GPU para asegurarme de que obtengo los resultados que esperaba rápidamente. Cuando funciona, paso algún tiempo para escribirlo en un idioma más rápido y usarlo en la producción.

En el lado algorítmico, querrá probar otros algoritmos de entrenamiento como r-prop que aumentan la velocidad en otro factor constante [2].

[1] http://deeplearning.net/software
[2] http://en.wikipedia.org/wiki/Rprop

Este documento, http://yann.lecun.com/exdb/publi …, proporciona muchos de los trucos conocidos para aumentar la velocidad de convergencia del entrenamiento de propagación hacia atrás de las redes neuronales. Esto incluye métodos bien conocidos de segundo orden como gradiente conjugado y levenberg-marquardt.

También proporciona detalles sobre la elección de la función de activación y la inicialización del peso en función de las conexiones de la red ‘fan-in’.

Además, este es un gran artículo, http://jmlr.csail.mit.edu/procee … de Glorot y Bengio que analiza el efecto del tiempo de convergencia / rendimiento para varias opciones de funciones de activación. En particular, muestran lo que sucede con los gradientes de peso cuando el entrenamiento de retropropagación llega a la entrada de la red.

Gran parte del entrenamiento de la red neuronal se ha movido hacia el enfoque del pre-entrenamiento y luego el ajuste fino. El entrenamiento previo es el entrenamiento sin supervisión de cada capa de una red neuronal. El ajuste fino suele ser una retropropagación estándar que se realiza para “ajustar” la red después del entrenamiento previo. Este enfoque está siendo adoptado por muchos investigadores, incluidos Hinton, Bengio y LeCun.

Si desea acercarse a los desarrollos más recientes de la capacitación en redes neuronales, le sugiero que consulte este documento de ICML 2010, http://www.icml2010.org/papers/4… . Este método podría considerarse un gran avance para el entrenamiento de redes neuronales profundas (muchas capas), incluidas las redes recurrentes. Sus resultados mostraron que las redes profundas se pueden entrenar sin la necesidad de entrenamiento previo y ajuste fino. Los resultados presentados en ICML 2011 han sido muy impresionantes. Aunque tengo que admitirlo, la teoría de optimización detrás de esto no es fácil de entender.

More Interesting

¿Qué tan rápido es Theano en comparación con otras implementaciones de DBN? ¿Cómo se compara con otras implementaciones de GPU (potencialmente no públicas) para la velocidad de entrenamiento en grandes conjuntos de datos?

Cómo explicar intuitivamente los tensores

¿Cuáles son algunos casos de uso para el anonimato de datos?

¿Es un doctorado en inteligencia artificial una cosa? ¿O el doctorado estaría realmente en aprendizaje automático / visión artificial, etc.?

¿Puedo usar el concepto de aprendizaje automático para predecir cuánta cantidad de comida cocinar por día en un restaurante?

¿Necesita ser un buen ingeniero de software para trabajar en cosas como visión por computadora, reconocimiento de voz, gráficos por computadora, aprendizaje automático?

En el aprendizaje automático, ¿cómo estima el descenso de gradiente la pendiente de la función de pérdida en un punto dado?

¿Cuáles son algunos textos recientes sobre métodos de kernel?

¿Qué problemas actuales en robótica intentan resolver los investigadores con el aprendizaje automático?

¿Es el aprendizaje profundo una buena herramienta para resolver problemas de lenguaje natural?

¿Cuáles son los problemas menos resueltos o no resueltos que se pueden resolver con el aprendizaje automático y el aprendizaje profundo?

¿Cuál es la diferencia entre SVM y ANN?

¿Qué es una explicación intuitiva del parámetro gamma en SVM?

¿Qué versión de Python debería usar en 2016 en Machine Learning y Data Science, Python 2.7 o Python 3.0+?

¿Por qué los diseñadores o los PM deben aprender sobre el aprendizaje automático?