Easy Tech: La Inteligencia Artificial no es magia

agosto 27, 2019

Por Roberto Fuentes Martínez

Cerebros de silicio. Así lo llaman algunos medios para referirse a ese término tan difundido hoy: la Inteligencia Artificial. La enorme cantidad de artículos que se han escrito en los últimos meses me recuerda a otras expresiones que fueron tendencia años atrás, como el Big Data o la Transformación Digital.  

Si preguntamos a varias personas qué es la Inteligencia Artificial, seguramente obtendríamos respuestas futuristas relacionadas con tecnologías inexistentes. No es raro si tenemos en cuenta que los mayores expertos en la materia no se ponen de acuerdo en una definición común. 

En cualquier caso, la IA está muy relacionada con la tecnología.  La evolución que ha tenido este campo y la cantidad de avances y técnicas que han aparecido en los últimos años han sido increíbles. Se ha acelerado el número de publicaciones científicas a la vez que se han aplicado las teorías y conceptos que se crearon hace varias décadas a campos muy diversos, debido al avance de los sistemas de computación.  

Gracias a ello, el beneficio directo de la IA podemos resumirlo en una frase: aumenta la complejidad de tareas que se pueden automatizar.  

 

La inteligencia artificial es software  

Para explicar lo que es la Inteligencia Artificial primero contaremos lo que es la inteligencia: es la capacidad y habilidades para desenvolverse en un entorno complejo, resolver tareas y abordar problemas, interaccionando con otros elementos externos, a veces también inteligentes.  

La Inteligencia Artificial es pues la capacidad de emular la inteligencia humana en alguna de sus facetas, mediante computación. Los procesos cognitivos que se han podido simular mediante computación son fundamentalmente los relacionados con la memoria, atención, percepción, aprendizaje, lenguaje (leer, redactar, hablar, escuchar) incluyendo la gestión del diálogo en una conversación, resolución de problemas, planificación, razonamiento, juicio y toma de decisiones, interacción social y en cierta parte, aunque de forma muy simplificada, la gestión de emociones. 

Pero, volviendo al meollo del asunto, nos centramos en la cuestión clave: la Inteligencia Artificial a día de hoy es software, en su mayor parte. Y se apoya en gran medida sobre algoritmos. Los algoritmos son secuencias de instrucciones (pasos) que conducen desde un punto inicial hasta un punto final normalmente buscando un objetivo. Son básicamente técnicas de resolución de problemas.  

Ese software debe tener capacidad de decidir los pasos que tiene que dar para alcanzar sus objetivos. Esas decisiones las realiza con un alto nivel de autonomía, en ocasiones con total autonomía. 

 

¿Inteligencia Artificial es Machine Learning?  

Tendemos a confundir ambos términos. Sin embargo, Inteligencia Artificial y Machine Learning no son exactamente lo mismo. El Machine Learning, aprendizaje máquina o como se conoce habitualmente, aprendizaje automático, es un campo de la Inteligencia Artificial. Se basa en la capacidad del sistema de aprender de la experiencia, basándose en ejemplos.  

Y, ¿cómo se consigue esto? Mediante un proceso de auto-ajuste, algo así como programarse a sí mismo utilizando técnicas de optimización y otro tipo de algoritmos, que hacen que la tarea realizada por dicho software mejore su rendimiento progresivamente. A ese proceso de mejora en el rendimiento se le denomina aprendizaje. El proceso busca relaciones entre los datos, bien sea mediante ayuda humana, o por sí solo.   

El aprendizaje por tanto es un proceso de transformación. De forma muy simplificada, partimos de un “software semilla”, para transformarlo en un software final (modelo). Una definición relativamente general de aprendizaje dentro del contexto humano podría ser la siguiente: proceso a través del cual se adquieren o mejoran las habilidades y conocimientos fruto de la experiencia y del razonamiento.   

Por tanto, hemos visto que hacen falta ejemplos (datos), hace falta un mecanismo de aprendizaje (con o sin supervisión humana) y hace falta seleccionar un “modelo de partida” o una familia de modelos. Este proceso varía mucho entre unos modelos y otros.

El mecanismo de aprendizaje (learner) coge los datos de ejemplo y el “modelo base” (cuando existe un software semilla), y ejecuta una serie de pasos (definidos fundamentalmente entre el mecanismo de aprendizaje, el modelo base y algunos hiperparámetros) para construir y ajustar el modelo hasta que sea capaz de realizar la tarea encomendada. El resultado es el modelo final. El mecanismo de aprendizaje es un algoritmo muy dependiente del modelo a entrenar; por tanto, suele considerarse como parte de él.  

Hemos dicho que estamos hablando de software (en su mayor parte), y un software que puede ser mejorado constantemente, parecería que no tiene fin. De hecho, se puede tomar la decisión de poner en producción un sistema que toma decisiones, cuando consideremos que ese sistema está "preparado", es decir, cuando su rendimiento supera cierto umbral que nos ofrece cierta confianza o garantía de que la tasa de éxito es suficientemente alta para la naturaleza del problema en cuestión.    

Por otro lado, la Inteligencia Artificial es un campo muy amplio, que se basa en otras disciplinas como las matemáticas, la estadística e incluso coge conceptos de la neurología. Por ello, la IA no es solo Machine Learning. Existen otros campos que caben dentro de la Inteligencia Artificial en el sentido en que simulan o realizan tareas que solamente un ser inteligente puede hacer. Como por ejemplo mantener una conversación o realizar cierto procesado complejo de imágenes. Campos como por ejemplo la representación del conocimiento, el razonamiento automatizado, la planificación automática, sistemas multi-agente, computación evolutiva o swarm computing, involucran piezas que podríamos considerar Inteligencia Artificial pero que no siempre se apoyan en Machine Learning. Sin embargo, muchos de estos campos, como por ejemplo lo relacionado con la visión o el habla, han evolucionado muchísimo desde que se aplican técnicas de ML a dichas tareas. Es decir, desde que el proceso de ajuste de parámetros se realiza de manera automática empleando para ello algunas técnicas de Machine Learning. El asunto de que un software aprenda “casi” por sí sólo, es en sí mismo un hito que ha hecho impulsar el campo IA y por tanto a menudo se asocia aprendizaje a la Inteligencia Artificial, pero como digo es solo una parte. 

El Machine Learning se apoya en datos. Y para poder funcionar correctamente necesita datos reales de producción, es decir, datos con los que realmente va a trabajar el modelo. La privacidad, GDPR, y otras cuestiones de política interna son un bloqueo habitual a lo que necesitan los data scientist para construir los modelos de Machine Learning

 

¿Dónde se usa más la inteligencia artificial?  

El mayor empuje que se está dando a la Inteligencia Artificial a día de hoy es en un campo muy concreto que está relacionado con el Machine Learning, y todo lo relativo al análisis automático de datos y a la predicción. Y es así porque son los campos más rentables y por tanto los que más atractivo tienen para las empresas.  

En muchas ocasiones, los sistemas existentes se basan en métodos más tradicionales y maduros como por ejemplo la estadística. Por ejemplo, muchos sistemas antiguos de análisis de crédito utilizan métodos estadísticos para seleccionar o calcular el scoring de crédito de clientes. Esos métodos estadísticos requieren un mantenimiento y actualización conforme se actualizan los comportamientos sociales, las políticas de la empresa en las concesiones, o bien las características de la propia base de clientes. Por otro lado, esos métodos estadísticos tienen un cierto nivel de precisión. El machine learning permite obtener ajustes en las funciones que calculan dicho scoring de forma mucho más precisa. Al mismo tiempo ese Machine Learning permite identificar patrones y comportamientos de forma automática de una manera mucho más rápida, detectando incluso patrones aparentemente ocultos para la mayoría de los analistas.   

 

Redes neuronales  

Las redes neuronales son modelos matemáticos apoyados por la computación, que permiten simular el funcionamiento de nuestro cerebro, de una manera simplificada. 

Las distintas estructuras y tipos de redes neuronales se denominan arquitecturas. En concreto una subfamilia muy conocida son las redes neuronales de múltiples capas, llamada Deep Learning. Los modelos de Deep Learning (aprendizaje profundo) se han hecho muy famosos desde que empezaron a aplicarse con enorme éxito a campos como la visión artificial o el procesamiento del lenguaje natural. Solo hay que avances recientes como por ejemplo el software de OpenAI llamado GPT-2. 

 

 AI-enabled Transformation  

Algunas compañías están superando la barrera de adopción y las resistencias internas mediante proyectos a modo de prueba de concepto y posteriormente funcionalidades basadas en IA que permiten llevar a producción una parte del valor total, convenciendo así a managers sobre el lanzamiento de proyectos más ambiciosos. Algunos de los proyectos representativos para adaptar los sistemas basados en estadística tradicional hacia sistemas basados en IA son los siguientes:  

  • Actualización de productos de terceros a las versiones más recientes que incorporan tecnologías de Analítica Avanzada y Machine Learning.   
  • Actualización de desarrollos in-house basados en estadística tradicional y analítica básica hacia modelos más sofisticados basados en IA.  
  • Actualización de las integraciones entre los sistemas. Es habitual que los modelos de Machine Learning se incorporen dentro de un contenedor Docker y se expongan hacia afuera como servicios (o microservicios) para su consumo mediante una API Rest.  
  • Incorporación de los desarrollos de IA al pipeline industrializado que ya tienen en la compañía, o si no lo tienen, quizás sea buen momento para comentar la andadura por el mundo DevOps. Productos como KubeFlowMLFlow además de otras plataformas que ayudan al desarrollo colaborativo (GIT, JupyterHub, DVC), al despliegue automático, testing automático, uso de contenedores (Docker y su orquestación con Kubernetes), provisión de entornos según demanda (quizás basados en cloud), y todos los mecanismos que permiten testear el rendimiento del sistema de IA en producción y su mantenimiento y actualización periódica (bien mediante re-entreno de modelos en modo batch, o habiendo diseñado sistemas incrementales que tienen aprendizaje online).  
  • Gestión del cambio, bien cultural, organizacional o tecnológico.   

 

 

 

   

Tecnologías y lenguajes para IA  

¿Te suena Python? Un lenguaje que se usa para campos tan diversos como la seguridad, redes, DevOps, sistemas y también IA.  

Los lenguajes de programación que se utilizan con más frecuencia en el campo de Inteligencia Artificial a día de hoy son Python, R y Julia. Aquí el ámbito Java tiene menos protagonismo (aunque de interés creciente), sin embargo, existen paquetes de software que permiten trabajar con Java, como por ejemplo DL4J, Java-ML o Apache Mahout, entre otros. Todos ellos tienen sus propias distribuciones, y permiten programar un modelo de Machine Learning desde cero. No obstante, para ahorrar tiempo al programador, también disponen de librerías que permiten facilitar la construcción de determinadas partes del software, reduciendo considerablemente el tiempo de programación y el número de líneas de código que se tienen que escribir. Dichas librerías facilitan al programador el uso de funciones estadísticas avanzadas, realizar cálculos diferenciales, resolver ecuaciones, optimizar parámetros, e incluso construir los modelos de Machine Learning de forma relativamente sencilla. Algunos ejemplos para Python son scikit-learnKeras, Tensorflow y PyTorch. Este último está teniendo un enorme interés.  

 

Ciclo de vida del software IA  

 

Como cualquier otro software, la IA tiene un ciclo de vida. Parte desde una necesidad, que se aborda con una solución de software realizando un diseño y construyendo un producto. Ese producto se desarrolla por parte de un programador o de forma colaborativa entre varios, se prueba, y finalmente se despliega para su explotación por parte del grupo de usuarios. A su vez, requiere un mantenimiento y un mecanismo razonablemente ordenado para la resolución de incidencias y la evolución del software hacia versiones actualizadas o incluso más sofisticadas. Es por ello que existe una corriente con mucho empuje que pretende incorporar los proyectos de Machine Learning en el resto de los desarrollos de proyectos de software, para acelerar el tiempo de llegada al mercado y para industrializar su construcción. Aquí la filosofía DevOps también tiene su campo de aplicación, y han salido a la luz productos como KubeFlow (de Kubernetes) o MLFlow (de DataBricks) que ayudan a simplificar esa labor de industrializar el software mediante la visión end to end y el soporte para definir el proceso completo de construcción y despliegue.  

 

The bottom line  

 

Si tienes curiosidad por este campo tan apasionante, no te pierdas las noticias y últimos avances, ya que algunos son realmente impresionantes. Te recomiendo que sigas nuestros webinars, blogs técnicoswhite papers, donde difundimos contenidos muy interesantes sobre esta materia.  

   

 

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, dentro de nuestra Web de acuerdo a tus hábitos de navegación. Si continúas navegando, consideramos que aceptas expresamente su utilización. Puedes obtener más información de cómo gestionar y configurar las cookies en nuestra Política de Cookies.