Resumen: La interacción que tenemos en nuestras redes sociales y nuestros smartphones representa uno de los muchos ejemplos del uso de la inteligencia artificial. Desde la analítica avanzada con datos o variables directas como cuántos likes le damos a cierta página hasta datos menos estructurados como los filtros que aplicamos a nuestras fotos, las búsquedas que realizamos en Google y las veces que nos dejamos guiar por Google Maps. En este artículo explicaré algunas de las técnicas utilizadas en estas aplicaciones y qué datos se toman en cuenta para algunas predicciones.
¿Qué es la Inteligencia Artificial?
Durante mucho tiempo tuve bastante interiorizado que la Inteligencia Artificial (IA) era una rama de las ciencias de la computación que buscaba imitar la inteligencia y el comportamiento humano. Si bien las ciencias de la computación nos han dado muchos avances disruptivos, hoy la IA influye y es influida por muchas ramas del conocimiento como la estadística, neurociencia, biología, lingüística, sociología, economía, etc.
Debido a su amplia adopción, el término IA va adquiriendo definiciones variadas hasta llegar muchas veces a la exageración. Algunos incluso han empezado a decir que IA es todo lo que aún no se ha creado, pero para ello podemos usar otros términos como IA general (general AI) y súper IA (super AI), como contraparte a la IA estrecha (narrow AI) que tenemos hoy.
Lo cierto es que, a pesar de que el término fue acuñado en los años 50 por John McCarthy, el reciente boom de la IA se debe a tres factores importantes. Estos factores son: i) la gran producción de datos o el big data, ii) el incremento de la capacidad computacional y iii) el desarrollo de algoritmos más complejos y más precisos para ciertas tareas como el reconocimiento de voz, de imágenes y el procesamiento de lenguaje natural. En este artículo intentaré explicar de manera muy general algunas de las técnicas más usadas en muchas aplicaciones de IA.
Asistentes virtuales, búsquedas web y lenguas nativas
Los temas que más recuerdo de mis clases de IA en pregrado, allá por el 2007 en la PUCP, son la prueba de Turing y los algoritmos metaheurísticos para problemas de optimización. La prueba de Turing consiste en engañar a un humano, haciéndole pensar que el sistema con el que interactúa, es otro humano [1]. Esta prueba está muy relacionada a lo que podemos llamar una subrama de la IA, el procesamiento de lenguaje natural (PLN o NLP por sus siglas en inglés). Por ejemplo, en nuestro caso peruano, el PLN debe ayudar a las máquinas a entender el español y otras lenguas nativas que se usan a lo largo de nuestro territorio. Los algoritmos metaheurísticos exploran las posibles soluciones sin recorrer absolutamente todas las posibilidades, veremos un ejemplo más adelante.
Las aplicaciones más conocidas que se basan en el PLN son los asistentes virtuales y los chatbots. En el primer caso, adicionalmente se usa el procesamiento de señales para transformar la voz en texto, y luego entender ese texto para realizar una búsqueda o ejecutar alguna instrucción. Por eso, cada vez que usamos el asistente de Google, Siri o Alexa, diversos procesos de PLN se ejecutan en tu celular o en los servidores de estas empresas tecnológicas. Estos procesos van desde identificar palabras claves para ejecutar acciones como programar tu alarma o abrir una aplicación hasta la utilización de otras técnicas de IA para mostrar resultados de tus búsquedas, como los grafos de conocimiento. Por ejemplo, podría ser que al buscar ‘lima’, tu intención haya sido encontrar más datos de la fruta, en vez de la ciudad. O por el contrario, si buscas ‘lima la gris’, lo más probable es que hayas querido buscar más información de la ciudad en vez de alguna empresa de frutas que se llame ‘La gris’.
Los grafos de conocimiento conectan entidades como personajes, lugares y otros términos interesantes con características significativas. Los grafos del conocimiento se basan en ontologías, que podemos pensar como una especie de marco conceptual muy grande [3]. De esta manera, cuando hacemos una consulta, un motor de búsqueda como el de Google por ejemplo, nos muestra la entidad correspondiente y otras que puedan estar relacionadas. Incluso hasta corregir ortográficamente las palabras en nuestras consultas.
Todos estos algoritmos se han ido perfeccionado poco a poco, y un gran factor han sido los datos. Por eso, para poder por ejemplo empezar a usar la IA en un contexto más local, como para nuestras lenguas nativas peruanas, debemos empezar a construir este juego de datos. De esta forma, podremos construir traductores automáticos, motores de búsqueda o correctores de ortografía para cualquier lengua o idioma.
Figura 1. Asistente de voz
Reconocimiento de rostros y aplicación de filtros
Otra de las aplicaciones más avanzadas de la IA es el reconocimiento de rostros. Muchos de nosotros solemos etiquetar a nuestros contactos en fotos que colgamos en nuestras redes sociales. Con esos datos, rostros de nuestros contactos y etiquetas, algoritmos de aprendizaje automático (o Machine Learning en inglés) pueden ser entrenados con datos pasados para predecir y sugerir la etiqueta en una foto nueva, jamás antes tomada. Los algoritmos de aprendizaje automático se basan entonces en datos y ejemplos pasados, en vez de la implementación y definición exacta de cómo lucen el primo Carlos o mi amiga Rosa en muchas reglas o condicionales.
Continuando con otro ejemplo un poco más actual y entretenido, tenemos los filtros de imágenes y videos para colocarnos las orejitas de un perro o los dientes de un conejo. ¿Cómo hace la IA para colocar estos divertidos accesorios en nuestras tomas? Actualmente, muchos de estos filtros se basan en la identificación de coordenadas claves del rostro para poder dibujar los accesorios de acuerdo a ellas. Para esto, en algún momento previo, muchas coordenadas en el rostro han tenido que ser marcadas para muchos otros rostros y así permitir que cualquier persona que recién usa alguna de estas apps pueda jugar con estos filtros. Por otro lado, la industria de los vehículos autónomos hace lo propio usando la identificación de personas, veredas, carros y otras entidades que se encuentran en la vista de un conductor para poder así adaptarse a cualquier otro contexto.
Figura 2. Filtros de realidad aumentada con geometría de MediaPipe (Hacer click en la imagen para ver la animación)
Rutas más cortas y otros problemas de optimización
Muchos de los viajes que realiza el transporte privado, especialmente los taxis, usan alguna aplicación para escoger una ruta. Estas apps para navegación en calles podrían estar utilizando una variación de uno de los algoritmos más famosos para encontrar la ruta óptima entre dos puntos [2]. El algoritmo Dijkstra, creado por el científico de la computación holandés del mismo nombre, asegura encontrar la ruta óptima entre el origen y el destino escogiendo en cada paso la arista más corta. Sin embargo, revisa todos los nodos del grafo, algo así como probar pasar por todas las posibles esquinas en un mapa, proceso que podría ser muy pesado y demorar más de unos segundos en darnos una respuesta.
No encontré el algoritmo exacto que usa Google Maps pero ¿recuerdan los algoritmos metaheurísticos que mencioné al inicio de este artículo? Este tipo de algoritmos hace uso de algunos datos adicionales para, por ejemplo, descartar nodos que no serán tomados en cuenta porque pertenecen a un distrito, o provincia muy lejana a los de origen y destino. De esta manera, limitamos la cantidad de nodos a explorar o también se permite introducir cambios de ruta en el camino. Así como el diseño de las rutas óptimas, los algoritmos de IA para la optimización pueden ser usados para hacer menos tediosas tareas como la asignación de horarios de personal de un hospital, o de una cadena de supermercados.
Figura 3. Algoritmo de Dijkstra y Google Maps
En resumen, la IA puede ser una gran aliada para aliviar a los humanos de tareas repetitivas o en las que hay que evaluar muchos datos y variables para poder obtener, si bien no la mejor, una solución suficientemente buena. Además, la IA permite escalar soluciones y brindar alternativas donde el conocimiento y presencia humana es difícil de asegurar. Espero que con este artículo, reconozcamos a la IA como la tecnología de la cuarta revolución industrial, que como cualquier otra, deberá estar al servicio de los humanos y no al revés. Los invito a seguir conociendo los avances de la IA para poder estar informados al momento de identificar sus usos incorrectos y fortalecer los usos que beneficiarán a toda nuestra sociedad.
Referencias
[1] Jack Copeland. The Turing Test. URL: http://www.alanturing.net/turing_archive/pages/Reference%20Articles/TheTuringTest.html
[2] Michael Byrne. The Simple, Elegant Algorithm That Makes Google Maps Possible. URL: https://www.vice.com/en/article/4x3pp9/the-simple-elegant-algorithm-that-makes-google-maps-possible
[3] ODSC Open Data Science. Where Ontologies End and Knowledge Graphs Begin. URL: https://medium.com/predict/where-ontologies-end-and-knowledge-graphs-begin-6fe0cdede1ed
Biografía del autor:
Gissella Bejarano es ingeniera informática de la Pontificia Universidad Católica del Perú y miembro fundadora del grupo de investigación IAPUCP. Terminó su maestría en Ciencias de la Computación en el 2017, gracias a una beca Fulbright. Actualmente es candidata a doctora, también en Ciencias de la Computación, y su foco de investigación es en los métodos de aprendizaje automático para ciudades inteligentes y el reconocimiento de lengua de señas. Gissella también es co-directora de la rama de Ciencias de la Computación de Research Experience for Peruvian Undergraduates (REPU).