Inteligencia Artificial, la tecnología de moda. Esta en boca de todos junto a la robótica como una de las salidas profesionales con mayor proyección de futuro. ¿Estas interesado? Aquí te dejo algunas claves que deberías sopesar a la hora de formarte.
Un programa o aplicación basado en Inteligencia Aritificial trata de dotar a las computadoras de capacidades para que puedan realizar acciones inteligentes. Se trata de facilitar la ejecución de tareas o el análisis de datos. En este sentido, muchas empresas están buscando a expertos para generar nuevos servicios basados en IA.
Si la programación de sistemas expertos ha llamado tu atención sigue leyendo, a continuación voy a contarte algo sobre las diferentes opciones que existen en la actualidad para que puedas elegir luego la que mejor se adapta a ti. Existen infinidad de herramientas, veremos los lenguajes de programación para IA más recomendados y las opciones en nube que ofrecen diferentes fabricantes de hardware y software.
PYTHON
Python es uno de los lenguajes más utilizados por su simplicidad y las filosofías DRY (Don’t Repeat Yourself) y RAD (Rapid Application Development) en las que se basa. Puede utilizarse tanto para estructurar datos como para generar algoritmos y, dispone de un catálogo de librerías muy extenso que facilita el desarrollo de cualquier tipo de proyecto. Python sirve para trabajar en aplicaciones de todo tipo, sean mobile, web, data science o IA.
R
R dispone de paquetes de programación muy numerosos que pueden utilizarse en el ámbito del Machine Learning, como RODBC. Estos paquetes implementan algoritmos de aprendizaje automático. Se trata de uno de los mejores lenguajes para analizar y tratar datos y crear buenas aplicaciones inteligentes con finalidades estadísticas.
LISP
Lisp está dando guerra desde 1958 y no ha dejado de crecer.
John McCarthy, su creador trabajó junto a Marvin Minsky, uno de los padres de la Inteligencia Artificial.
Lisp trabaja con expresiones simbólicas y prototipado y se utiliza en proyectos cuyo objetivo es permitir a las aplicaciones ejecutar razonamientos similares a los humanos.
PROLOG
Suele utilizarse para diseñar sistemas especializados, sobre todo en el ámbito de la medicina. PROLOG es un lenguaje de referencia en el entorno de la ingeniería, permite automatizar el backtracking, que consiste en buscar errores y retroceder hasta el punto anterior para tomar otra alternativa. Se basa en estructuras de datos arbóreas que facilitan la búsqueda de patrones. Todas estas características combinadas convierten este lenguaje en uno de los más flexibles.
JAVA
Java es un lenguaje de programación orientado a objetos. Sus características más destacadas son la transparencia, la mantenibilidad y la portabilidad.
Permite codificar algoritmos muy fácilmente y es muy escalable. Dispone de interfaces de datos muy atractivas para mejorar la experiencia del usuario.
Teniendo en cuenta que una IA está basada en gran medida en estos algoritmos y orientado al ser humano, Java es una muy buena opción.
C++
Muy cercano al código maquina, C++ puede ser el lenguaje de programación más rápido del mundo. Se trata de uno de los mejores lenguajes de programación para desarrollar en inteligencia artificial, puesto que esta tecnología requiere de ejecuciones y tiempos de respuesta rápidos. En su contra digamos que si exceptuamos el Ensamblador, C++ es el lenguaje más alejado del humano.
TORCH
Torch, aparte de ser un lenguaje de programación es también una librería de Machine Learning y un framework de computación científica.
Torch provee al programador de un amplio rango de algoritmos para el aprendizaje automático y se basa en LuaJIT. Este lenguaje aprovecha toda la potencia de la GPU para trabajar en Inteligencia Artificial.
Bien, hasta aquí hemos visto los lenguajes de programación que puedes utilizar para desarrollar aplicaciones de inteligencia artificial. Muchos de ellos te proveen de librerías que ayudan al desarrollo para que no empieces de 0, pero hay otras opciones que te pueden permitir conseguir resultados muy rápidos y con un alto grado de eficacia. Son los servicios en nube.
Aunque cada vez hay más librerías, plataformas y servicios en la nube para crear aplicaciones de Inteligencia Artificial y como he dicho son una gran facilidad para desarrollar, hay que tener en cuenta que utilizarlas directamente para programar te obliga a aprender el lenguaje específico de cada plataforma y te liga a ella en el futuro.
Unsa solución intermedia es modelar la aplicación y dejar que sea luego la plataforma de modelado la que genere y ejecute la aplicación con alguno de los frameworks deep learning existentes.
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.
Veamos algunas de las herramientas que permiten añadir componentes de inteligencia artificial predefinidos a una aplicación existente.
Google, Amazon, Microsoft y algunas más han visto los entornos de modelado para IA como una forma de promoción. La llaman “programación visual” y promete crear tus propias aplicaciones de aprendizaje automático sin programar. Por contra, estas aplicaciones sólo las puedes ejecutar en sus plataformas. Veamos algunas:
AZURE MACHINE LEARNING STUDIO
El entorno de modelado que propone Microsoft se llama Azure Machine Learning Studio y es un entorno simple, ejecutable en tu navegador y que ofrece un entorno visual y drag-and-drop donde no hay necesidad de escribir ningún tipo de código. El proceso es el siguiente, defines tus datos de entrada, los procesas si es necesario, los utilizas para entrenar diferentes tipos de modelos de machine learning y finalmente evaluas los resultados.
SPSS MODELER DE IBM
La alternativa de IBM a Azure ML Studio es el SPSS Modeler que parte de Watson Studio. SPSS Modeler te permite definir tu data pipeline, el modelo que quieres generar (clasificador, predictivo,…) y evaluar y visualizar los resultados. Tiene una librería muy completa de algoritmos y modelos predefindos que te evitan empezar de cero.
Watson es un sistema informático de inteligencia artificial que es capaz de responder a preguntas formuladas en lenguaje natural. Forma parte del proyecto del equipo de investigación DeepQA, liderado por el investigador principal David Ferrucci y ha sido así nombrado en honor del fundador y primer presidente de IBM, Thomas J. Watson.
Watson responde a las preguntas gracias a una base de datos almacenada localmente. La información contenida en esa base de datos proviene de multitud de fuentes, incluyendo enciclopedias, diccionarios, tesauros, artículos de noticias, y obras literarias, al igual que bases de datos externos, taxonomías, y ontologías.
A lo largo de tres días en febrero de 2011 Watson participó en el concurso de televisión estadounidense Jeopardy!, derrotando a sus dos oponentes humanos.
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).
ORANGE
Se trata de una herramienta de aprendizaje y visualización de modelos de ML en la que 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, procesado, visualización o evaluación de datos. Puedes crear tus propios widget, pero casi todo lo que puedas imaginar tiene ya uno creado.
KNIME
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 scientists y Knime para deep learning son las que más nos interesan para el desarrollo de aplicaciones de inteligencia artificial. La extensión de deep learning permite a los usuarios realizar todo tipo de operaciones sobre redes neuronales y si la complementamos con la extensión para data scientists enriquecemos mucho toda la parte de recogida y proceso de datos.
Lo mejor de todo, Knime es open source.
NEURON
Aparte de estas herramientas específicas para data science, cada vez veremos más extensiones que añadan un cierto nivel de funcionalidades de análisis de datos en entornos más generales. Esto es Neuron , una extensión de data science para Visual Studio Code.
DIANNE
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.
TensorFlow y TensorBoard
Si lo que quieres es aprender como funcionan las redes neuronales, Tensorflow playground te permite jugar con redes neuronales añadiendo o quitando neuronas y modificando sus parámetros y aprender así sus conceptos básicos y con TensorBoard obtines un conjunto de aplicaciones web para inspeccionar ejecuciones de TensorFlow.
HERRAMIENTAS DE GENERACIÓN DE CÓDIGO PARA CREAR SOFTWARE CON COMPORTAMIENTO INTELIGENTE
Las herramientas low-code “clásicas” están añadiendo ya nuevos módulos visuales que permitan representar y encapsular funcionalidades inteligentes. De momento, sólo se ofrece la integración de componentes ya predefinidos y 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.
COMPARATIVA:
A continuación os pongo una tabla comparativa de diferentes opciones que podéis utilizar en vuestros sistemas:
| Google Cloud AI | IBM Watson | MS Cognitive Services | SAP Leonardo | |
Audio | SpeechToText | ok | ok | ok | |
TextToSpeech | ok | ok | ok | ||
Image | Classify | ok | ok | ok | ok |
DetectFaces | ok | ok | ok | ok | |
DetectObjects | ok | ok | |||
DetectScene | ok | ok | |||
OCR | ok | ok | ok | ok | |
Text | DetectLanguage | ok | ok | ok | ok |
ExtractEntitites | ok | ok | ok | ||
KeyPhrases | ok | ok | ok | ||
SentimentAnalysis | ok | ok | ok | ||
Translate | ok | ok | ok | ok | |
Video | Analyze | ok | ok | ||
Process | ok | ok | |