Inteligencia Artificial aplicada al desarrollo de aplicaciones.

Generalmente cuando pensamos en el término Inteligencia Artificial (IA) lo asociamos a películas de ciencia ficción donde máquinas inteligentes superan al hombre. La realidad actual en la industria del software dista mucho de esta imagen. Si clasificamos los diferentes tipos de IA podemos encontrar ejemplos concretos en los cuales se ha avanzado. Por ejemplo, en el año 1997, una computadora llamada Deep Blue creada por IBM, le ganó al campeón de ajedrez Garry Kasparov.


Esta computadora cae dentro de la categoría de Inteligencia Reactiva, básicamente era una máquina
especializada en jugar ajedrez que usa la información contextual de cómo está el juego en ese momento y en base a esto calcula las mejores opciones de jugadas posibles para tomar una decisión. En este caso no es una máquina que aprenda de experiencias anteriores o la cual se la pueda entrenar previamente.

Hoy nos encontramos en otro nivel de evolución de Inteligencia Artificial. Han surgido técnicas de Machine Learning que nos permiten crear modelos que representan determinados escenarios.  Con suficiente información podemos entrenar estos modelos y lograr que ellos efectivamente aprendan cómo resolver las situaciones y hagan uso de las experiencias previas. Con esto se han logrado muchos avances en el desarrollo de los vehículos autónomos o en el procesamiento del lenguaje natural, lo cual ha llevado a que contemos con asistentes virtuales en nuestros smartphones con la capacidad de entender órdenes de voz y ejecutar las tareas que les pedimos.


En los últimos años dentro del área de Machine Learning se han consolidado las técnicas de Deep Learning que, a través del uso de redes neuronales, le dan la capacidad a las computadoras de procesar grandes cantidades de datos y aprender por sí mismas.   Generalmente podemos dividir los problemas de Machine Learning en dos tipos, los que necesitan de un aprendizaje supervisado y otros donde nos enfrentamos a un aprendizaje no supervisado. Un ejemplo claro de aprendizaje supervisado es lo que hacemos en Facebook. Cuando confirmamos que en determinada foto se encuentra determinada persona, le estamos indicando a Facebook si la persona es o no es quien nos sugiere. Otro ejemplo de esto es el algoritmo de filtro de SPAM de Gmail, al cual le vamos indicando cuáles emails son SPAM para nosotros. De esta forma, gracias al entrenamiento que millones de usuarios realizan, este filtro se vuelve cada vez más preciso en detectar el SPAM. Un ejemplo de aprendizaje no supervisado, donde la máquina se entrenó a sí misma es el caso de AlphaGo Zero, que aprendió y mejoró su juego en base a partidas de Go reales, jugadas por profesionales y amateurs. Con ese aprendizaje, en 2016 AlphaGo derrotó al campeón de Go, Lee Sedol por 4 partidas a 1.


Como si eso no fuera suficiente, en 2017 Google creó una versión mejorada, AlphaGo Zero, que
tuvo la particularidad de entrenarse jugando consigo misma, con la única información de las reglas del juego. Le llevó tres días entrenarse por sí sola -el tiempo que le lleva jugar unas 4,9 millones de partidas- sin las limitaciones del conocimiento humano previo. Cuando la pusieron a competir con su predecesora, el resultado fue una aplastante victoria de 100 partidos a cero de AlphaGo Zero sobre AlphaGo. Puedes ver más detalles de esta historia aquí "Stunning AI Breakthrough Takes Us One Step Closer to the Singularity".


Nos falta mucho aún para llegar a máquinas que tengan la capacidad de crear sus propias abstracciones y la capacidad de entender que en el mundo existen personas cuyos pensamientos y sentimientos determinan su conducta, lo que en sicología se llama “teoría de la mente”. Mientras tanto seguiremos entrenando modelos de IA que nos ayuden a hacer tareas repetitivas, pero a su vez cada vez más complejas, como conducir un automóvil, reconocer tumores en tomografías o identificar personas u objetos en una foto.


¿Y GeneXus, cómo juega en este mundo?


GeneXus fue concebido como un sistema experto, el cual a partir de una Base de Conocimiento, y con la inteligencia de un motor de inferencia puede generar automáticamente una solución de software, con su base de datos, el código ejecutable y la interfaz de usuario. Esto es lo que venimos haciendo desde que GeneXus fue concebido, hacer real la visión de automatizar las tareas de desarrollo y cambiar el paradigma con el cual desarrollamos software. Entonces, en vez de preocuparse por la solución técnica (cómo programar algo), los usuarios pueden concentrarse en la solución al problema de negocio (qué es lo que se necesita programar), a partir del conocimiento que ya tienen los usuarios del negocio. Es a partir de este conocimiento que se construyen los modelos en GeneXus, para que luego el propio GeneXus -utilizando técnicas de IA- pueda generar automáticamente el mejor código posible para la plataforma en la cual se haya definido que se necesita correr el sistema.


Hoy nos encontramos en una era donde podemos acceder a las distintas plataformas que ofrecen servicios de IA en la nube. Estas plataformas están posibilitando el acceso a modelos de IA que nos permiten integrar en nuestras aplicaciones capacidades de procesamiento de lenguaje natural o procesamiento de imágenes y videos, que de otra forma sería muy complicado y costoso de desarrollar. Nuevamente, nos encontramos con una variedad interesante de opciones, lo cual nos obliga a aprender cómo interactuar con cada una de ellas. GeneXus, siguiendo su visión de simplificar el desarrollo de aplicaciones, está construyendo un generador de Chatbots que utiliza estas plataformas pero simplifica las tareas para crear un modelo y entrenarlo, para que estos Chatbots queden integrados a las aplicaciones creadas en GeneXus. Además, hemos creado SDKs para integrar los servicios de Machine Learning de SAP Leonardo e IBM Watson y lo mismo iremos haciendo para otras plataformas como Microsoft Azure, Amazon Web Services, etc.


En conclusión, creemos que nos encontramos en un estado avanzado en el desarrollo y madurez de la Inteligencia Artificial, en particular de Machine Learning, y que debemos buscar las formas de integrar estas capacidades a nuestras aplicaciones. GeneXus busca simplificar esta tarea y sobre todo integrarse con las plataformas más relevantes del mercado, para que los usuarios puedan generar las aplicaciones más sofisticadas con el menor esfuerzo posible.


Todas las industrias han sido revolucionadas a partir de la introducción de software, pero -paradójicamente- la propia industria de software sigue construyendo aplicaciones de forma “manual”, artesanal, utilizando técnicas de hace más de 30 ó 40 años. Con GeneXus queremos revolucionar y cambiar el paradigma de cómo se construyen las aplicaciones y por esto buscamos simplificar y automatizar el desarrollo de software basándonos en algoritmos de IA.
Estamos en una era donde el acceso al conocimiento y a la tecnología está disponible fácilmente para cualquier persona que lo quiera emplear.

Albert Einstein dijo una vez “La imaginación es más importante que el conocimiento. Porque el conocimiento está limitado a todo lo que conocemos y comprendemos, mientras que la imaginación abarca todo el mundo, y todo lo que habrá para conocer y comprender”, así que los invito a imaginar. Imaginemos y creemos aplicaciones realmente innovadoras que aprovechen las nuevas tecnologías como IA.

Comentarios

Entradas más populares de este blog

Disaster Recovery: ¿Cómo recuperar la contraseña del usuario SA en SQLServer 2005 y 2008?

Cómo solucionar Error "324 (net::ERR_EMPTY_RESPONSE)" en Chrome