10 librerías para machine learning en JavaScript

by Luigi Nori Date: 16-06-2020 javascript ai deeplearning tensorflow

JavaScript es actualmente uno de los lenguajes de programación más populares. Su principal aplicación se encuentra en las aplicaciones web, utilizándose para dar funcionalidad a las páginas web dinámicas. Otro campo en el que está tomando fuerza es para la creación de aplicaciones móviles. Siendo el lenguaje utilizado en diferentes plataformas de desarrollo híbrido como es el caso de Apache Cordova. Por otro lado, también se puede verse en aplicaciones de lado servidor gracias a Node.js. A pesar de su popularidad no es habitual que se utilice en entornos de aprendizaje automático, principalmente por la falta de librerías. En esta entrada se van a enumerar un conjunto de librerías para machine learning en JavaScript que se pueden utilizar para entrenar y evaluar modelos.

1 Brain

Brain es una librería JavaScript que permite la creación y el entrenamiento de redes neuronales. Se puede utilizar tanto en entorno Node.js como dentro de un navegador. Aunque, debido a los recursos computacionales necesario para el entrenamiento de las redes es aconsejable realizar este en el lado servidor.

Existe un screencast en el que se explica cómo entrenar una red neuronal con Brain.js.

2 Synaptic

En esta librería se pueden encontrar los algoritmos necesarios para la creación de redes neuronales independientes de la arquitectura. Gracias a ello se puede utilizar para la implementación de cualquier tipo de red neuronal. A pesar de ello, también se incluyen diferentes arquitecturas ya implementadas. Entre estas se pueden encontrar perceptrones multicapa, redes de memoria a largo y corto plazo de múltiples capas (multilayer long-short term memory networks, LSTM), máquinas de estado líquido o redes Hopfield. Posibilitando así probar y evaluar rápidamente diferentes algoritmos de aprendizaje automático. Al igual que Brain, es posible utilizar la librería tanto en Node.js como en el navegador.

En el proyecto también se incluye una introducción a las redes neuronales junto a una serie de demostraciones prácticas y otros tutoriales.

TensorFlow.js

Esta es la versión para la web de la popular librería con la que se pueden entrenar redes neuronales en un navegador. También se puede utilizar para la ejecución de modelos pre-entrenados.

4 Neataptic

Esta librería permite implementar rápidamente redes neuronales tanto en el navegador como en Node.js. En la misma se incluyen diferentes arquitecturas como perceptrones, LSTM, GRU, Nark y otras.

5 Webdnn

Webdnn es una librería diseñada para ejecutar modelos de redes neuronales profundas pre-entrenadas en el navegador de forma rápida y eficiente. Debido a que las redes neuronales profundas requieren una gran capacidad computacional la librería se encarga de su optimización. Para ellos comprimiendo los datos del modelo acelerando la ejecución mediante la utilización de API de JavaScript como WebAssembly y WebGPU.

6 Deep playground

Deep playground es una aplicación web con la que se pueden construir y visualizar redes neuronales. Dispone de una interfaz elegante con la que es posible controlar los datos de entrada, el número de neuronas, el algoritmo a utilizar y otros parámetros con los que afectar a los resultados.

El código de la aplicación se puede descargar y estudiar desde su repositorio público.

DeepForge

DeepForge es un entorno de desarrollo visual para aprendizaje profundo. Permite diseñar redes neuronales utilizando una interfaz gráfica simple tipo Notebook, en el que los usuarios pueden obtener un feedback en tiempo real sobre las ejecuciones y compartirlos en tiempo real. Los modelos se pueden entrenar en máquinas remotas e incorpora la posibilidad de utilizar un control de versiones.

8 Thing Translator

Esta es una aplicación web que se puede utilizar en el teléfono móvil para identificar objetos y nombrarlos en diferentes idiomas. La aplicación se basa completamente en tecnologías web y utiliza dos API de aprendizaje automático de Google: Cloud Vision para el reconocimiento de imágenes y la API de traducción para traducciones en lenguaje natural.

El código se puede consultar en el su repositorio web.

9 Compromise

Esta es una librería con la que se pueden implementar modelos de procesamiento de lenguaje natural (natural-language processing, NPL) en JavaScript. Utiliza un enfoque básico y directo, pero lo suficientemente bueno, que lo convierte en la primera opción a considerar cuando se desea crear una aplicación NPL básica en el navegador.

10 ml.js

Es un conjunto de librerías que proporcionan las herramientas básicas de aprendizaje automático para JavaScript. En ella se pueden encontrar modelo tanto de aprendizaje supervisado como no supervisado, redes neuronales, algoritmos de regresión, algoritmos de optimización y funciones estadísticas y matemáticas.

Esta es la librería más completa de las vistas, permitiendo implementar en JavaScript básicamente cualquier modelo de aprendizaje automático.

Conclusiones

En esta entrada se ha visto una colección de librerías para machine learning en JavaScript. Estas librerías se pueden utilizar tanto para la puesta en producción de modelos como para su entrenamiento. Es importante destacar que la mayoría de las librerías son están enfocadas en aprendizaje profundo o Deep Learning.

Estas otras bibliotecas también son muy interesantes:

11. FlappyLearning

FlappyLearning es un proyecto de JavaScript que en unas 800 líneas de código sin pulir consigue crear una biblioteca de aprendizaje automático e implementarla en una divertida demostración que aprende a tocar Flappy Bird como un virtuoso. La técnica de IA utilizada en esta biblioteca se llama Neuroevolución y aplica algoritmos inspirados en los sistemas nerviosos que se encuentran en la naturaleza, aprendiendo dinámicamente del éxito o fracaso de cada iteración. La demostración es súper fácil de ejecutar - sólo hay que abrir index.html en el navegador.

12. ConvNetJS

Aunque ya no se mantiene activamente, ConvNetJS es una de las bibliotecas de aprendizaje profundo más avanzadas para JavaScript. Originalmente desarrollada en la Universidad de Stanford, ConvNetJS se hizo bastante popular en GitHub, resultando en muchas características y tutoriales impulsados por la comunidad. Funciona directamente en el navegador, soporta múltiples técnicas de aprendizaje, y es más bien de bajo nivel, lo que la hace adecuada para personas con mayor experiencia en redes neuronales.

13. Land Lines

Land Lines es un interesante experimento de Chrome Web que encuentra imágenes satelitales de la Tierra, similares a los garabatos hechos por el usuario. La aplicación no hace llamadas al servidor: funciona completamente en el navegador y gracias al uso inteligente de la máquina de aprendizaje y WebGL tiene un gran rendimiento incluso en los dispositivos móviles. Puedes comprobar el código fuente en GitHub o leer el caso de estudio completo.

14. Neurojs

Framework para la construcción de sistemas de IA basados en el aprendizaje de refuerzo. Lamentablemente el proyecto de código abierto no tiene una documentación adecuada, pero una de las demostraciones, un experimento de auto-conducción, tiene una gran descripción de las diferentes partes que componen una red neuronal. La biblioteca está en JavaScript puro y está hecha con herramientas modernas como webpack y babel.

 

Conclusión

En esta entrada hemos visto una colección de bibliotecas para el aprendizaje automático en JavaScript. Estas bibliotecas pueden ser utilizadas tanto para la producción de modelos como para su entrenamiento. Es importante señalar que la mayoría de las bibliotecas se centran en el aprendizaje profundo.

Como muestran los experimentos del artículo, hay muchas cosas divertidas que se pueden hacer usando sólo el navegador y algún código JavaScript familiar.

 
by Luigi Nori Date: 16-06-2020 javascript ai deeplearning tensorflow visitas : 13918  
 
Luigi Nori

Luigi Nori

He has been working on the Internet since 1994 (practically a mummy), specializing in Web technologies makes his customers happy by juggling large scale and high availability applications, php and js frameworks, web design, data exchange, security, e-commerce, database and server administration, ethical hacking. He happily lives with @salvietta150x40, in his (little) free time he tries to tame a little wild dwarf with a passion for stars.

 
 
 

Artículos relacionados

Crear PDF con Javascript y jsPDF

El formato PDF es muy útil para descargar datos de forma masiva en una aplicación web. Ayuda a los usuarios a descargar contenido dinámico en forma de archivo para que…

Como hacer tu propio cursor personalizado para tu web

Cuando empecé a ojear webs distintas y originales para aprender de ellas, de las primeras cosas que me llamaron la atención fue que algunas de ellas tenían sus propios cursores,…

Explorando la API de CSS Paint: Redondeo de formas parte 1

Añadir bordes a las formas complejas es un auténtico rollo (a veces), pero redondear las esquinas de las formas complejas es un suplicio jejeje. Por suerte, la API de pintura…

Cómo enviar un correo electrónico desde un formulario de contacto HTML

En el artículo de hoy vamos a escribir sobre cómo hacer un formulario que funcione y que al pulsar ese botón de envío sea funcional y envíe el correo electrónico…

Cómo hacer un sitio web multilingüe sin redireccionamiento

Hoy, vamos a hablar de cómo implementar un simple selector de idioma en el sitio web estático o básico, sin necesidad de ningún backend o llamadas a la base de…

Comenzando con Bootstrap-Vue paso a paso

Hoy te mostraremos cómo usar BootstrapVue, describiremos el proceso de instalación y mostraremos la funcionalidad básica. El proyecto está basado en el framework CSS más popular del mundo - Bootstrap, para…

Por qué los desarrolladores de JavaScript deberían preferir Axios a Fetch

Por qué los desarrolladores de JavaScript deberían preferir Axios a Fetch En mi artículo anterior, "Usando la Api Fetch Para Hacer Llamadas Ajax", hablé de los fundamentos de la API Fetch.…

Creación de un sencillo spinner-loader CSS

En el artículo de hoy mostraremos cómo animar un loader básico que gira cuando se define alguna acción predefinida, como cargar una imagen. Eso se puede utilizar en un sitio…

Los mejores selectores de fechas para Bootstrap y tu aplicación

Los selectores de fecha son widgets que permiten a los usuarios elegir una sola fecha o rango de fechas y horas. Es un elemento habitual para todo usuario de Internet,…

7 Nuevos y Asombrosos Usos del Aprendizaje de Máquinas

Recientemente un extraño video publicado en YouTube causó una controversia - fue una divertida toma del tradicional mensaje navideño de la Reina Isabel creado por el Canal 4, una emisora de…

Validación de formularios HTML usando BULMA y vanilla JavaScript

Hoy vamos a escribir sobre los formularios de contacto y cómo validarlos usando JavaScript. El formulario de contacto parece ser una de las características principales de toda página web básica. Es…

Cómo usar el efecto Parallax.Js en tu sitio web

Hoy vamos a escribir sobre el efecto de parallax, similar al desplazamiento de parallax, y cómo implementarlo para mejorar su página de aterrizaje. En webdev, dicen que primero el móvil…

Clicky