4 razones para aprender machine learning con JavaScript

En los últimos años, Python se ha convertido en el lenguaje de programación preferido para el aprendizaje automático y el aprendizaje profundo. La mayoría de los libros y cursos en línea sobre aprendizaje automático y aprendizaje profundo incluyen Python exclusivamente o junto con R. Python se ha vuelto muy popular debido a su amplia lista de bibliotecas de aprendizaje automático y aprendizaje profundo, implementación optimizada, escalabilidad y características versátiles.

Pero Python no es la única opción para programar aplicaciones de aprendizaje automático. Existe una comunidad cada vez mayor de desarrolladores que utilizan JavaScript para ejecutar modelos de aprendizaje automático.

Si bien JavaScript no es un reemplazo para el rico panorama de aprendizaje automático de Python (todavía), existen varias buenas razones para tener habilidades de aprendizaje automático de JavaScript. Aquí tienes cuatro.

Aprendizaje automático privado

La mayoría de las aplicaciones de aprendizaje automático se basan en arquitecturas cliente-servidor. Los usuarios deben enviar sus datos donde se ejecutan los modelos de aprendizaje automático. Existen claros beneficios para la arquitectura cliente-servidor. Los desarrolladores pueden ejecutar sus modelos en servidores y ponerlos a disposición de las aplicaciones de usuario a través de API web. Esto hace posible que los desarrolladores utilicen redes neuronales muy grandes que no se pueden ejecutar en los dispositivos de los usuarios.

En muchos casos, sin embargo, es preferible realizar la inferencia de aprendizaje automático en el dispositivo del usuario. Por ejemplo, debido a problemas de privacidad, es posible que los usuarios no quieran enviar sus fotos, mensajes de chat privados y correos electrónicos al servidor donde se ejecuta el modelo de aprendizaje automático.

Afortunadamente, no todas las aplicaciones de aprendizaje automático requieren servidores costosos. Muchos modelos pueden comprimirse para ejecutarse en dispositivos de usuario. Y los fabricantes de dispositivos móviles están equipando sus dispositivos con chips para admitir la inferencia de aprendizaje profundo local.

Pero el problema es que el aprendizaje automático de Python no es compatible de forma predeterminada en muchos dispositivos de usuario. MacOS y la mayoría de las versiones de Linux vienen con Python preinstalado, pero aún debe instalar las bibliotecas de aprendizaje automático por separado. Los usuarios de Windows deben instalar Python manualmente. Y los sistemas operativos móviles tienen muy poca compatibilidad con los intérpretes de Python.

JavaScript, por otro lado, es compatible de forma nativa con todos los navegadores de escritorio y móviles modernos. Esto significa que las aplicaciones de aprendizaje automático de JavaScript están garantizadas para ejecutarse en la mayoría de los dispositivos móviles y de escritorio. Por lo tanto, si su modelo de aprendizaje automático se ejecuta en código JavaScript en el navegador, puede estar seguro de que será accesible para casi todos los usuarios.

Ya existen varias bibliotecas de aprendizaje automático de JavaScript. Un ejemplo es TensorFlow.js, la versión JavaScript de la famosa biblioteca de aprendizaje automático y aprendizaje profundo TensorFlow de Google. Si se dirige a la página de demostración de TensorFlow.js con su teléfono inteligente, tableta o computadora de escritorio, encontrará muchos ejemplos listos para usar el aprendizaje automático de JavaScript. Ejecutarán los modelos de aprendizaje automático en su dispositivo sin enviar ningún dato a la nube. Y no es necesario instalar ningún software adicional. Otras potentes bibliotecas de aprendizaje automático de JavaScript incluyen ML5.js, Synaptic y Brain.js.

Modelos de aprendizaje automático rápidos y personalizados

La privacidad no es el único beneficio del aprendizaje automático en el dispositivo. En algunas aplicaciones, la ida y vuelta del envío de datos desde el dispositivo al servidor puede provocar un retraso que dificultará la experiencia del usuario. En otras configuraciones, es posible que los usuarios quieran poder ejecutar sus modelos de aprendizaje automático incluso cuando no tengan una conexión a Internet. En estos casos, tener modelos de aprendizaje automático de JavaScript que se ejecuten en el dispositivo del usuario puede resultar muy útil.

Otro uso importante del aprendizaje automático de JavaScript es la personalización de modelos. Por ejemplo, suponga que desea desarrollar un modelo de aprendizaje automático de generación de texto que se adapte a las preferencias de idioma de cada usuario. Una solución sería almacenar un modelo por usuario en el servidor y entrenarlo con los datos del usuario. Esto supondría una carga adicional en sus servidores a medida que sus usuarios crecen y también requeriría que almacene datos potencialmente confidenciales en la nube.

Una alternativa sería crear un modelo base en su servidor, crear una copia en el dispositivo del usuario y ajustar el modelo con los datos del usuario mediante bibliotecas de aprendizaje automático de JavaScript.

Por un lado, esto mantendría los datos en los dispositivos de los usuarios y evitaría la necesidad de enviarlos al servidor. Por otro lado, liberaría los recursos del servidor al evitar enviar cargas adicionales de inferencia y entrenamiento a la nube. Y los usuarios aún podrían usar sus capacidades de aprendizaje automático incluso cuando estén desconectados de sus servidores.

Fácil integración del aprendizaje automático en aplicaciones web y móviles

Otro beneficio del aprendizaje automático de JavaScript es la fácil integración con aplicaciones móviles. El soporte de Python en sistemas operativos móviles aún se encuentra en las etapas preliminares. Pero ya existe un amplio conjunto de herramientas de desarrollo de aplicaciones móviles JavaScript multiplataforma, como Cordova e Ionic.

Estas herramientas se han vuelto muy populares porque le permiten escribir su código una vez e implementarlo para dispositivos iOS y Android. Para que el código sea compatible en diferentes sistemas operativos, las herramientas de desarrollo multiplataforma lanzan una «vista web», un objeto de navegador que puede ejecutar código JavaScript y puede integrarse en una aplicación nativa del sistema operativo de destino. Estos objetos de navegador son compatibles con las bibliotecas de aprendizaje automático de JavaScript.

Una excepción es React Native, un popular marco de desarrollo de aplicaciones móviles multiplataforma que no depende de la vista web para ejecutar aplicaciones. Sin embargo, dada la popularidad de las aplicaciones móviles de aprendizaje automático, Google ha lanzado una versión especial de TensorFlow.js para React Native.

Si ha escrito su aplicación móvil en código nativo y desea integrar su código de aprendizaje automático de JavaScript, puede agregar su propio objeto de navegador integrado (por ejemplo, WKWebView en iOS) a su aplicación.

Existen otras bibliotecas de aprendizaje automático para aplicaciones móviles, como TensorFlow Lite y Core ML. Sin embargo, requieren codificación nativa en la plataforma móvil para la que está desarrollando su aplicación. El aprendizaje automático de JavaScript, por otro lado, es muy versátil. Si ya ha implementado una versión de su aplicación de aprendizaje automático para el navegador, puede migrarla fácilmente a su aplicación móvil con pocos cambios o sin ningún cambio.

Aprendizaje automático de JavaScript en el servidor

Uno de los principales desafíos del aprendizaje automático es entrenar los modelos. Esto es especialmente cierto para el aprendizaje profundo, donde el aprendizaje requiere costosos cálculos de retropropagación durante varias épocas. Si bien puede entrenar modelos de aprendizaje profundo en dispositivos de usuario, podría llevar semanas o meses si la red neuronal es grande.

Python es más adecuado para el entrenamiento del lado del servidor de modelos de aprendizaje automático. Puede escalar y distribuir su carga en clústeres de servidores para acelerar el proceso de entrenamiento. Una vez que el modelo está entrenado, puede comprimirlo y entregarlo en los dispositivos del usuario para la inferencia. Afortunadamente, las bibliotecas de aprendizaje automático escritas en diferentes idiomas son altamente compatibles. Por ejemplo, si entrena su modelo de aprendizaje profundo con TensorFlow o Keras para Python, puede guardarlo en uno de varios formatos independientes del lenguaje, como JSON o HDF5. Luego, puede enviar el modelo guardado al dispositivo del usuario y cargarlo con TensorFlow.js u otra biblioteca de aprendizaje profundo de JavaScript.

Pero vale la pena señalar que el aprendizaje automático de JavaScript del lado del servidor también está madurando. Puede ejecutar bibliotecas de aprendizaje automático de JavaScript en Node.js, el motor del servidor de aplicaciones de JavaScript. TensorFlow.js tiene una versión especial que es adecuada para servidores que ejecutan Node.js. El código JavaScript que usa para interactuar con TensorFlow.js es el mismo que usaría para las aplicaciones que se ejecutan en el navegador. Pero en segundo plano, la biblioteca hace uso del hardware especial de su servidor para acelerar el entrenamiento y la inferencia. PyTorch, otra biblioteca popular de aprendizaje automático de Python, aún no tiene una implementación oficial de JavaScript, pero la comunidad de código abierto ha desarrollado enlaces de JavaScript para la biblioteca.

El aprendizaje automático con Node.js es bastante nuevo, pero está evolucionando rápidamente porque existe un interés creciente en agregar capacidades de aprendizaje automático a las aplicaciones web y móviles. A medida que la comunidad de aprendizaje automático de JavaScript continúa creciendo y las herramientas continúan madurando, podría convertirse en una opción para muchos desarrolladores web que desean agregar el aprendizaje automático a sus habilidades.

Ben Dickson es ingeniero de software y fundador de TechTalks, un blog que explora las formas en que la tecnología resuelve y crea problemas.

Esta historia apareció originalmente en Bdtechtalks.com. Copyright 2021