¿Qué algoritmos de optimización son buenos candidatos para la paralelización con MapReduce?

Muchas de las técnicas estándar se pueden paralelizar. Comenzaría con el descenso de gradiente o la maximización de expectativas, ya que son los más simples de implementar y probar. Si necesita el mejor rendimiento absoluto y está dispuesto a tolerar mucha complejidad, intente con L-BFGS.

1) Descenso de gradiente estocástico. Mapa: calcule el gradiente para un solo ejemplo de entrenamiento, Reducir: combine todas las actualizaciones de gradiente en un subconjunto de los parámetros.

2) Expectativa-Maximización. Mapa: calcule las expectativas para cada ejemplo de capacitación, Reduzca: expectativas promedio y restablezca los parámetros del modelo.

3) L-BFGS: requiere calcular tanto el gradiente como una aproximación al hessiano; el hessiano aproximado debería ayudarlo a converger más rápido. La “L” es para memoria limitada, que es lo que hace que sea factible calcular una matriz de Hesse aproximada de NxN. El gradiente se puede calcular en paralelo. Pruebe este documento: http://ai.stanford.edu/~quocle/L….

Si está buscando optimizar el aprendizaje automático, este documento describe cómo paralelizar las técnicas de aprendizaje automático más comunes:
http://www.cs.stanford.edu/peopl…

Gran parte de la actividad actual en la optimización paralela se basa en el método de dirección alterna de multiplicadores, que se puede implementar en MapReduce. El artículo de Stephen Boyd Optimización distribuida y aprendizaje estadístico a través del método de multiplicadores de dirección alterna es un buen lugar para comenzar a leer sobre el estado del arte.

Como sugirió Marc, los problemas de optimización con gran cantidad de restricciones y variables no son susceptibles de realizaciones eficientes sobre Hadoop. Los enfoques estocásticos o el aprendizaje en línea son más adorables. Sin embargo, debemos tener en cuenta que los problemas de optimización de la declaración no son fáciles de hacer referencia a la dificultad de las realizaciones eficientes a escala.

Las herramientas de programación paralelas tradicionales como MPI o los nuevos paradigmas como Spark / GraphLab son muy adecuados para tales problemas de optimización y realizaciones eficientes a escala. Varios otros investigadores también han observado que Hadoop no es bueno para algoritmos iterativos de aprendizaje automático, incluidas las personas de Berkeley que crearon Spark, la gente de GraphLab y el equipo de MapScale. La razón principal es la falta de reducción de mapas de larga duración y la falta de soporte de programación en memoria. Comenzar nuevos trabajos de reducción de mapas para cada iteración, copiar datos de HDFS a la memoria, realizar la iteración, escribir datos en HDFS, verificar la terminación … repetir esto para cada iteración puede ser una sobrecarga.

El MPI proporciona una construcción conocida como All-reduce, que permite la acumulación y difusión de valores a través de los nodos de un clúster. El único trabajo que aborda un tipo de problema de optimización y su realización eficiente sobre Hadoop es del grupo Vowpal Wabbit, que proporciona una realización basada en Hadoop de la construcción All-reduce:
Alekh Agarwal, Olivier Chapelle, Miroslav Dudík, John Langford: un sistema de aprendizaje lineal eficaz y confiable a escala de teraescala. CDR abs / 1110.4198 (2011).

El enfoque L-BFGS sugerido por Brandon es bueno y puede converger a una solución rápidamente una vez que está cerca del vecindario, pero puede ser más lento para llegar a este vecindario. Una idea puede ser combinar otros enfoques con el L-BFGS (GA o estocástico?) Para que llegue al vecindario más rápido. No está claro si el L-BFGS se ha realizado sobre Hadoop, pero está disponible en el sistema Elefant aquí:
Página sobre Nicta.

More Interesting

¿Cuál es más adecuado para un aprendizaje automático de codificador o desarrollo web?

Si una red de alimentación directa de una sola capa es capaz de aproximarse a cualquier grado de precisión, ¿por qué es exitoso el aprendizaje profundo?

Estamos viendo el comienzo de las máquinas que pueden codificar. ¿Aprender un lenguaje de programación aún sería útil en la carrera de ML?

¿Cómo se compara el paquete de aprendizaje profundo Mozi con Caffe o Torch7?

¿Qué áreas del aprendizaje automático son más importantes para los fondos de cobertura y los bancos de inversión (en equipos cuantitativos)?

¿Qué son los datos no paramétricos?

¿Hay conjuntos de datos abiertos que contengan textos y calificaciones de los usuarios para ellos?

¿Por qué elegiría algoritmos de selección de características sobre la reducción dimensional?

Cómo entrenar un modelo word2vec como GoogleNews-vectors-negative300.bin para francés

¿Cuáles son los mejores software de aprendizaje automático de código abierto para reconocimiento facial?

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?

¿Cómo toman decisiones las neuronas del cerebro? ¿Funcionan de la misma manera que las neuronas artificiales en ANN?

Cómo aprender a crear un sistema óptico de reconocimiento de caracteres utilizando redes neuronales artificiales como mi mini proyecto

MLconf 2015 Seattle: ¿Cuándo uso la normalización de varianza media / unidad cero frente a la normalización de unidad L1 / L2?

¿Cuáles fueron los 10 problemas principales en Machine Learning para 2013?