Cada vez hay más librerías, plataformas y servicios en la nube para crear aplicaciones de Inteligencia Artificial (IA). Pero utilizarlas directamente para programar tu componente inteligente te obliga a aprender el lenguaje específico de cada plataforma y te liga a ella en el futuro. No es una buena idea con lo rápido que evoluciona el ecosistema de la IA con nuevas, y mejores, plataformas apareciendo a diario.

¿Como puedes crear una app que integre algún algoritmo de IA (lo que también se llama smart apps) o incluso una solución completa de ciencia de datos (data science) sin tener que aprender a programar y depender de una plataforma concreta? La solución es modelar la aplicación AI y dejar que sea luego la plataforma de modelado la que genere y ejecute la aplicación utilizando, por ejemplo, alguno de los frameworks deep learning existentes.

Ya deberías saber que subiendo el nivel de abstracción al qué defines tu problema software consigues de inmediato una serie de beneficios como la independencia tecnológica. Esta es también la tendencia que se sigue en el mundo de la inteligencia artificial. Cada vez hay más herramientas para modelar IA y así facilitar que todo el mundo, aunque no sean programadores, pueda acceder a esta fascinante tecnología.

Vamos a intentar cubrir tanto las herramientas que permiten añadir componentes de inteligencia artificial predefinidos a una aplicación existente como herramientas específicas para preparar y entrenar modelos de aprendizaje automático (machine learning).

Herramientas de modelado visual de IA de la mano de las grandes tecnológicas

Las grandes del mundo “tech” (Google, Amazon, Microsoft) han visto los entornos de modelado para IA como una manera de crecer su base de usuarios. Te venden la “programación visual” como manera de crear tus propias aplicaciones de aprendizaje automático sin programar pero, evidentemente, luego esas aplicaciones sólo las puedes ejecutar en sus plataformas respectivas.

Azure Machine Learning Studio

Azure Machine Learning incluye el Azure Machine Learning Design Studio. Puedes usarlo para entrenar y desplegar modelos de machine learning sin tener que programar. Simplemente arrastra los componentes que necesites para crear la secuencia de acciones en un proceso de aprendizaje automático.

SPSS Modeler de IBM

La alternativa de IBM a Azure ML Studio es el SPSS Modeler, parte del Watson Studio. Como la solución de Microsoft, te permite definir tu data pipeline, el modelo que quieres generar (clasificador, predictivo,…) y evaluar y visualizar los resultados. Viene con una librería muy completa de algoritmos y modelos predefindos para no empezar de cero.

Lo más parecido que Amazon proporciona sería el Amazon SageMaker , que se define como un editor visual para todo el proceso de Machine Learning,  pero no he conseguido ver que incluya ningún tipo de editor visual para modelar los componentes IA mismos.

Modelado para ciencia de datos

En un problema de data science, la recolección de datos y su manipulación / preparación es tan importante como el aprendizaje automático que vamos a intentar a continuación. Es por eso que los entornos visuales de ciencia de datos vienen con un gran número de componentes para el “masaje” de datos.

Aunque algunas de estas herramientas pueden venir con su propio motor de ejecución, la mayoría se integran con frameworks de deep learning existentes como KerasTensorflow.

RapidMiner

RapidMiner  incluye un herramienta de diseño visual de workflows para prototipar y validar modelos predictivos. Viene con un buen número de conexiones predefinidas con servicios externos (muchas de ellas para la integración de datos, RapidMiner soporta más de 60 tipos de ficheros y formatos de datos, tanto para datos estructurados como no estructurados).

wisdom-crowds-960

Orange

Orange es una herramienta de aprendizaje y visualización de modelos de ML. El análisis de los datos se realiza vía la conexión de widgets en un flujo de datos común. Cada widget se encarga de una o más tareas de recuperación, preproceso, visualización o evaluación de datos. Casi todo lo que puedas imaginar tiene ya su widget pero puedes igualmente crear los tuyos.

 

Knime

Mi opción favorita. Knime es una plataforma genérica para el análisis de datos que puede usarse con muchos fines diferentes. Hay más de 2000 tipos de nodos que puedes utilizar para ello. Las extensiones Knime para data scientistsKnime para deep learning son las que más nos interesan para este post. Por ejemplo, la extensión de deep learning permite a los usuarios realizar todo tipo de operaciones (desde la definición hasta la ejecución) sobre redes neuronales. Se puede complementar con la extensión para data scientists para enriquece mucho toda la parte de recogida y proceso de datos. Además, Knime es open source.

Knime modeling environment

Fijaros que aparte de estas herramientas específicas para data science, cada vez veremos más y más extensiones que añadan un cierto nivel de funcionalidades de análisis de datos en entornos más generales. Un gran ejemplo seria Neuron , una extensión de data science para Visual Studio Code.

Modelando redes neuronales

Si tu objetivo principal son las redes neuronales, DIANNE es una buena opción. En DIANNE, la redes neuronales se definen como un grafo dirigido que se puede crear visualmente con su editor online a partir de módulos predefinidos.

Modeling your neural network with Dianne

Si lo que quieres es más que nada aprender como funcionan las redes neuronales, entonces este Tensorflow playground es la solución ideal. Permite jugar con redes neuronales (añadiendo / quitando  neuronas y modificando sus parámetros) y aprender así sus conceptos básicos.

Visual modeling and execution of neural networks with TensorFlow

Visualización de los modelos de aprendizaje

Hay herramientas especializadas en visualizar los resultados del aprendizaje automático. Su objetivo es ayudarte a entender como funciona y como de bien responde el modelo de ML generado.

TensorBoard  es un conjunto de aplicaciones web para inspeccionar ejecuciones de TensorFlow. Nvidia lo utiliza para visualizar redes neuronales en su herramienta Nvidia Digits.

Visual deep learning modeling in Nvidia

 

Herramientas de generación de código para crear software con comportamiento inteligente

Las  herramientas low-code “clásicas” se están dando cuenta que sus usuarios quieren poder añadir componentes inteligentes a sus modelos software, de la misma forma que pueden diseñar el modelo de datos o de comportamiento. Por ejemplo, quieren poder añadir fácilmente chatbots a su software o un componente de reconocimiento facial sin tener que aprender a programar con librerías de deep learning.

Como respuesta, estas herramientas de generación de código están añadiendo ya nuevos módulos visuales que permitan representar y encapsular estas funcionalidades inteligentes. De momento, sólo se ofrece la integración de componentes ya predefinidos (para reconocer objetos, análisis del sentimiento,…) y ofrecidos por plataformas externas, con lo que la integración consiste básicamente en enlazar tu software con ese servicio externo con pocas posibilidades de configuración. Pero en todo caso, es un buen comienzo.

Genexus

Genexus  es la que ofrece más y mejores opciones, como resume la tabla que os copio a continuación (fijaros que para alguno de los módulos puedes elegir también sobre qué infraestructura ejecutarlo):

Google Cloud AI IBM Watson MS Cognitive Services SAP Leonardo
Audio SpeechToText
TextToSpeech
Image Classify
DetectFaces
DetectObjects
DetectScene
OCR
Text DetectLanguage
ExtractEntitites
KeyPhrases
SentimentAnalysis
Translate
Video Analyze
Process

Genexus ha sacado recientemente también una extensión para generat chatbots y de hecho estamos mirando como podría integrarse con Jarvis nuestro propio framework para el modelado y despliegue de chatbots multiplataforma.

Mendix

Mendix camina hacia una dirección parecida (e.j. ver como crear un chatbot con Mendix) pero de momento el proceso parece requerir bastante más trabajo manual.

Lobe

Lobe (ahora comprada por Microsoft) es un nuevo competidor en la arena de las herramientas ” low-code para AI ” . Su objetivo es que te sea muy fácil entrenar modelos de deep learning que luego puedas integrar en una app. Todavía están en beta y con la compra por Microsoft es difícil saber como van a evolucionar, pero viendo los ejemplos visuales de deep learning, es fácil imagina un buen número de apps interesante para dispositivos móviles que se podrían crear con Lobe.

Reconocimiento de gestos con Lobe

Reconocimiento de gestos con Lobe