(Nota: ver actualización en la parte inferior)
Soporte de biblioteca, documentación, mindhare, etc. Tome Python; las bibliotecas para ML (scikit-learn, NumPy, Theano, etc.) proporcionan más que un soporte más amplio de algoritmos de ML que Node (¡lo cual es importante!); pero también rendimiento. Las bibliotecas de Python están escritas para sumergirse en C / Fortran, y en el caso de Theano / TensorFlow para utilizar la GPU. Numpy admite matemática matricial / vectorial mediante operaciones de “datos múltiples de instrucción única” (SMID) O (1). En Node, debe realizar un bucle en su vector o anidar en bucle su matriz, que es O (n * m). Estas operaciones se ejecutan con mucha frecuencia, por lo que es una optimización crucial. Python, C ++, Matlab, … – sus bibliotecas están construidas para funcionar al rendimiento cayendo al metal.
Luego está “zeitgeist”. El mundo de ML tiene lugar en estos lenguajes, especialmente Python. Es un tren de movimiento rápido, y si no aborda ahora, volará mientras está ajustando su martillo a un tornillo. Las empresas obtienen rápidamente sus bibliotecas en Python / C ++ (por ejemplo, TensorFlow, CNTK). Los MOOC están explotando con cursos en ML + Python (y cada vez más en TensorFlow).
- ¿Cuáles son algunos buenos ejemplos de reducción de dimensionalidad no lineal en datos de texto?
- Cómo dominar el aprendizaje automático en el menor tiempo posible
- ¿Qué tema es importante para la ingeniería integrada, las redes neuronales o la automoción moderna?
- ¿Cuál es la diferencia entre el entrenamiento por lotes, en línea y mini-lote en redes neuronales? ¿Cuál debo usar para un conjunto de datos de pequeño a mediano tamaño con fines de predicción?
- Investigadores de aprendizaje automático, ¿algún día los robots nos matarán a todos?
Francamente, Node no sostiene una vela, y me encanta JS; Lo uso para todo: Backend (Node), frontend (React), mobile (React Native) … No hay nada sobre Node en sí que lo haga inferior a la tarea: los autores de la biblioteca ML podrían escribir sus módulos Node como “extensiones nativas” usando C, LIBSVM, LIBLINEAR, etc. (y vaya, ¡asíncrono brillaría!). Pero aún no lo han hecho, lo que significa que Node tiene mucho para ponerse al día … demasiado .
Debo mencionar: estamos viendo mucho ML en JS con fines de demostración (por ejemplo, brain.js), lo cual es fantástico; pero no lo vas a ver para ML a gran escala. Lo que recomiendo: use Node para su servidor de aplicaciones y externalice sus requisitos de ML a un microservicio de Python a través de RabbitMQ.
Tengo un episodio completo de podcast en ML Languages & Frameworks, que elegir / cuándo. Además, estoy disparando en Python aquí porque supongo que quieres trabajar en la web, según tu afiliación a JS. R, Matlab, Julia, C / C ++ son más populares en las comunidades científicas (fuente).
[ACTUALIZACIÓN 19/08/2017] ¡Hay novedades! Brain.js y otras bibliotecas JS anteriores a 2017 todavía no usan GPU, lo que te hace perder ventaja: el principal argumento de venta de Python. Sin embargo, se han eliminado 3 nuevas bibliotecas JS que usan GPU. KerasJS y TensorFire le permiten escribir sus modelos en Keras / TensorFlow respectivamente (Python) e implementarlos en la web. También, úselos para la inferencia del lado del cliente, ahorrando ciclos de GPU del lado del servidor. Eso está muy bien, pero deeplearn.js de Google te permite escribir, entrenar e implementar tus modelos DL basados en GPU, todo en JS: ¡el santo grial! No estoy seguro sobre el soporte del servidor Node.js, o si es solo WebGL; Tendrás que cavar. Pero las cosas están mejorando para JS.