**IAIC 2024-25** Introducción a IAIC La **Inteligencia Artificial** (**IA**) es un campo de investigación transdisciplinar que generalmente se relaciona con *el desarrollo e investigación de sistemas que operan o actúan inteligentemente*. Está considerada una subdisciplina de las **Ciencias de la Computación** (y de las **Matemáticas**, por su gran relación con áreas como la **Lógica** y, más recientemente, **Optimización Matemática**) ya que tiene un enfoque principalmente computacional, aunque no se pueden minimizar las aportaciones recibidias desde otras áreas (como **Neurociencia**, **Estadística** o **Psicología**). !!!side:1 Incluso antes de la aparición del primer ordenador digital. La IA clásica nace en los años 50 con la aparición de los primeros modelos de computación formales y teóricos $^1$, como una rama de las Matemáticas, pero se enriquece enormemente con los avances posteriores acerca de la comprensión del cerebro por medio de la Neurociencia, las nuevas Teorías Matemáticas de la Información, la Teoría de Control que surge desde la Cibernética y la aparición del ordenador digital. A pesar de ello, si hacemos un [rápido recorrido por su historia](..\Historia_de_la_IA\index.html), podemos situar sus fundamentos y motivación matemática incluso antes del nacimiento formal de la computación. !!!side:2 En forma de grandes inversiones y financiación. !!!side:3 Donde las grandes tecnológicas dominan actualmente el mundo de las aplicaciones. !!!side:4 Saturando los medios de comunicación, aunque la mayoría de las veces dando información inexacta y confusa de los hitos conseguidos. Su evolución a lo largo del tiempo ha estado caracterizada por una sucesión de momentos álgidos (denominados **primaveras**), en los que se cree firmemente que la IA será capaz de resolver todos los problemas planteados por el hombre, y periodos de abandono y olvido (denominados **inviernos**) donde la decepción de ver que esos problemas son más complicados de lo que la ilusión promete hace que pierda una atención casi absoluta y pase a formar parte de las áreas científicas más ignoradas. En la actualidad estamos viviendo una de las primaveras más fuertes que se recuerdan desde sus inicios, tan esperanzadora y extendida que apenas es comparable a ninguno de los mejores momentos vividos por otras disciplinas, tanto en atención gubernamental $^2$, de las empresas privadas $^3$, del público general $^4$ y, por supuesto, del mundo académico, donde el número de investigadores, revistas científicas, congresos, etc. supera todo lo vivido en las décadas anteriores. Las expectativas que despierta son tales que muchos de los cursos de IA que se imparten por universidades del mundo reciben más asistentes que muchas titulaciones completas, hasta el punto de que un buen número de estas universidades han generado titulaciones específicas que preparan especialistas de IA, cuando antes apenas era una rama algo exótica de grados como Informática y Matemáticas.  Aunque las diversas entradas que podemos encontrar en este curso profundizan en técnicas concretas de la IA, a continuación daremos algunas ideas generales acerca de diversas aproximaciones que pueden explicar cómo ha evolucionado y, quizás, cómo evolucionará la IA en el futuro. # Aproximaciones a la IA Teniendo en cuenta que la IA trata sobre la generación de sistemas inteligentes no humanos, y el concepto de inteligencia lo definimos siempre en relación a lo que observamos en el ser humano (y, menormente, en algunos mamíferos superiores), Russell y Norvig, en su famoso libro [Inteligencia Artificial: un enfoque moderno](http://aima.cs.berkeley.edu/), proporcionan una perspectiva que describe esencialmente 4 posibles aproximaciones a la hora de entender cómo se puede desarrollar la IA, dependiendo de las combinaciones posibles que se pueden dar entre si consideramos una IA basada en cómo piensan los humanos frente a una que considera una racionalidad ideal (no necesariamente similar a la humana), y si consideramos una IA basada en el razonamiento o basada en el comportamiento: | | Basado en humanos | Racionalidad Ideal | |------------------------------|-----------------------------------|------------------------------------| | **Basado en razonamiento** | Sistemas que piensan como humanos | Sistemas que piensan racionalmente | | **Basado en comportamiento** | Sistemas que actúan como humanos | Sistemas que actúan racionalmente | * **Sistemas que piensan como humanos**: modelan las propiedades del procesamiento cognitivo de los humanos (como, por ejemplo, un resolvedor general de problemas) que mimetizan las metodologías desarrolladas por el ser humano. * **Sistemas que actúan como humanos**: pueden realizar cosas específicas que hacen los humanos, aunque no sigan los mismos procedimientos que estos. Incluye tareas como aquellas destinadas a superar el **Test de Turing**, realizar procesamiento de lenguaje natural, razonamiento automático, representación del conocimiento, aprendizaje automático, visión computacional y robótica. * **Sistemas que piensan racionalmente**: aporta leyes de racionalismo ideal y un pensamiento estructurado, tales como aquellos basados en lógica formal, aunque puedan estar alejados de la forma real en que razona el ser humano. * **Sistemas que actúan racionalmente**: hacen cosas racionales tales como maximizar la utilidad esperada por medio de agentes racionales, cuyos resultados se consideran correctos, aunque no podamos decir si siguen un proceso de pensamiento concreto. Debe tenerse presente que esta clasificación es intuitiva, y no pretende hacer encajar cada posible sistema en una de las cuatro opciones, solo destacar algunas propiedades interesantes que ponen de manifiesto que solo el hecho de plantearse una IA nos lleva a tener que dar respuesta a muchísimos conceptos que tratamos de forma aproximada y difusa. Es probable que la mayoría de los sistemas de IA caigan en varias de las cajas anteriores de forma parcial. # Arquetipos de la IA En cualquier caso, una de las grandes problemáticas que se observa dentro de la Inteligencia Artificial se debe a la falta de una definición clara acerca de qué se considera IA y qué no, y se puede observar que muchas de las encendidas disputas que hay al respecto tienen su origen en que los interlocutores están asumiendo definiciones distintas del tema de discusión. Es importante tener en cuenta estas diferencias ya que puede haber suposiciones provenientes de visiones distintas que pueden generar contradicciones e inconsistencias a la hora de planificar un proyecto de IA a largo plazo. En este sentido, Beau Cronin en su artículo [AI's dueling definitions](https://beta.oreilly.com/ideas/ais-dueling-definitions) presenta los siguientes arquetipos de IA, todos ellos presentes en diversas líneas de investigación y desarrollo de la IA, aunque no son los únicos posibles: * **IA como interlocutor**: es el concepto que se esconde tras ideas como [HAL](https://es.wikipedia.org/wiki/HAL_9000), [Apple Siri](http://www.apple.com/es/ios/siri/), [Microsoft Cortana](https://es.wikipedia.org/wiki/Microsoft_Cortana) o [IBM Watson](http://www.ibm.com/smarterplanet/us/en/ibmwatson/), un ordenador que puede comunicarse en lenguaje natural, y que es capaz de responder a nuestras dudas de forma tan eficiente (y a veces mejor) a como lo harían expertos humanos. Mucha de la investigación más llamativa y de los productos/servicios que se desarrollan últimamente van en esta línea y son el centro de negocio de muchos de los actuales gigantes tecnológicos y de Internet. Además, está también en la línea del famoso Test de Turing, ya que el objetivo es que el interlocutor humano no note diferencia (al menos en cuanto al uso, no a su capacidad) entre interactuar con esta IA o con otro humano. Se puede considerar que la última explosión (y el peligro es que hay una explosión cada 3 meses en los últimos 5 años) se ha dado en esta línea, donde productos como GPT, de [OpenAI](https://openai.com/) han revolucionado la forma en que vemos las capacidades de los modelos basados en redes neuronales (actualmente, usando como punta de lanza los modelos basados en _Transformers_). !!!side:5 Que ha pasado por las manos de Google, SoftBank o recientemente Hyundai. * **IA como androide**: a la vista de la imaginería resultante de películas como [Blade Runner](https://es.wikipedia.org/wiki/Blade_Runner), [Yo Robot]("https://es.wikipedia.org/wiki/Yo,_robot_(pel%C3%ADcula)"), [Alien](https://es.wikipedia.org/wiki/Alien:_el_octavo_pasajero), [Terminator](https://es.wikipedia.org/wiki/The_Terminator), etc. es común transferir las expectativas de estos ejemplos de ficción a los desarrollos industriales del mundo real, como lo demuestran los últimos productos de empresas como [Boston Dynamics](http://www.bostondynamics.com/)$^5$, o [SoftBank](https://www.aldebaran.com/en/a-robots/who-is-pepper) (con su robot Pepper). Para muchos entusiastas de la IA, ésta debe ser dotada de un cuerpo para que complete las verdaderas ambiciones del área. Por ahora, sin embargo, no parece ser más que un movimiento sentimental que calma nuestra necesidad de ver un componente corporal en la (limitada) inteligencia que se desarrolla. Sin embargo, no parece descabellado pensar que una inteligencia similar a la de un humano (o un animal) precise de un cuerpo que experimente sensaciones similares. !!!side:6 Una de las empresas del conglomerado de Alphabet (Google). * **IA como razonador y resolvedor de problemas**: aunque los robots humanoides y los sistemas de conversación mantienen la atracción del público, los pioneros de la IA se dirigieron originalmente a crear sistemas mucho más refinados y orientados a actividades mentales elevadas, tales como jugar al ajedrez, generar demostraciones lógicas, o planificar tareas complejas. En uno de los errores colectivos más llamativos de la ciencia, resultó que las máquinas eran especialmente aptas para la ejecución de estas tareas abstractas, y sin embargo no era nada fácil resolver problemas que animales con poca inteligencia aprendían a resolver de forma natural, como moverse por un entorno desconocido valorando las diversas opciones que se presentan o manipular objetos simples dentro de un entorno. Los sistemas que se desarrollaron para resolver juegos como el ajedrez resultaron ser de muy poca utilidad para resolver tareas del mundo real. A pesar de ello, estas tareas superinteligentes que parecen más asequibles son las que generan las mayores reservas a la hora de plantear una inteligencia abstracta elevada, ¿qué pasaría si consiguiéramos una IA que resuelva problemas generales tan bien como [Deep Blue]("https://es.wikipedia.org/wiki/Deep_Blue_(computadora)") juega al ajedrez?, ¿de qué forma se pueden extrapolar las propiedades de un buen jugador de ajedrez a otro tipo de habilidades? En este sentido, Deepmind $^6$ desarrolló [AlphaZero](https://en.m.wikipedia.org/wiki/AlphaZero) con técnicas que generalizan bien la obtención de jugadores artificiales en el contexto de un conjunto más amplio de juegos de tablero. !!!side:7 La mayoría de las veces, por desgracia, orientado a fines comerciales, pero poco a poco ganando terreno en otros campos más interesantes, como el de la salud o el de medioambiente. !!!side:8 Con su orientación hacia la aplicación de la IA a la Ciencia. * **IA como modelador de datos**: este se ha convertido en el arquetipo por excelencia en la actualidad, donde cantidades ingentes de datos son devoradas por compañías tecnológicas y gobiernos. Así como en el pasado se equiparaba la IA con la habilidad de tener una conversación aceptable o de jugar al ajedrez, hoy en día se relaciona con la capacidad de obtener sistemas de predicción, optimización y recomendación $^7$. Esta versión de la IA le ha devuelto el halo de respetabilidad perdido tras muchos años de éxitos y fracasos alternos. Sin embargo, no parece que los paradigmas recurrentes del aprendizaje automático acerca de clasificación, regresión, clusterización y reducción de la dimensionalidad contengan la riqueza suficiente para expresar los problemas que una inteligencia sofisticada debe resolver. Quizás nuevas aproximaciones, como las que proporcionan Deep Learning o la Programación Diferencial $^8$, puedan ofrecer soluciones más interesantes cuando alcancen un grado de madurez mayor al ser comprendidas en profundidad. Aunque esta lista no es exhaustiva, en ella podemos encontrar las principales líneas que se reconocen como parte de la IA en la actualidad. Cuál de ellas es la más prometedora es una pregunta que cae fuera de esta entrada (si es que se pudiera responder), pero lo más seguro es que ninguna de ellas por separado pueda ser suficientemente rica como para resolver los problemas que queremos resolver, y que una combinación de ellas, junto con la creación de nuevos enfoques, puede ser una vía a seguir en el futuro de esta disciplina. !!!side:9 Por desgracia, la mayoría de estos canales son puramente divulgativos y, con demasiada frecuencia, alejados del mundo del conocimiento y cercanos a la prensa amarilla que se ha formado alrededor de las grandes tecnológicas. Como medio de obtener un poco de cultura general acerca de las últimas novedades relacionadas con la IA puede ser aconsejable seguir alguno de los muchos canales de información que sobre el tema han surgido en los últimos años como, por ejemplo, el [canal DOT CSV de youtube](https://www.youtube.com/channel/UCy5znSnfMsDwaLlROnZ7Qbg/featured), donde se van colgando videos divulgativos sobre la IA en español muy interesantes y bien desarrollados $^9$. # Alcance del curso Como hemos comentado, la IA tiene muchas definiciones (o aproximaciones de definiciones). Nosotros la vamos a tratar aquí como un conjunto de metodologías automatizables (algorítmicas y verificables) para la resolución general de problemas (para los que, normalmente, se presupone una mínima inteligencia para su resolución), y haremos contacto con varias de las aproximaciones y arquetipos señalados. Sin embargo, debemos observar que en el párrafo anterior hay multitud de conceptos no formalizados, conocidos, pero que pueden resultar ambiguos: **problema**, **resolver**, **inteligencia**, **algorítmico**, **verificable**. Algunos de ellos pueden formalizarse (otros, no), pero ese esfuerzo se sale de los objetivos de este curso, tanto por tiempo como por capacidad de profundizar en ellos, por lo que correremos el riesgo permanente de acudir a interpretaciones informales en nuestro viaje. # Sobre la Resolución de Problemas Sin lugar a dudas, una de las principales características que reconocemos en la inteligencia es la capacidad para resolver problemas. Si consideramos una inteligencia como la humana, a la habilidad para analizar los elementos intrínsecos de cada problema, que está presente también en muchas otras especies animales, se añade la **capacidad de abstraer, identificar y ordenar las acciones que se pueden realizar** sobre él para resolverlo. En un nivel incluso superior de abstracción, reconocible solo en las llamadas especies superiores, podemos considerar también la capacidad de determinar cuál puede ser, de entre los posibles métodos que se idean, el más adecuado, ya sea en términos de tiempo, de recursos, de seguridad para el individuo, etc. De esta forma, identificamos una tripleta de capacidades: **análisis**, **abstracción** y **estrategia**, que sitúa el tema general de la resolución de problemas en el núcleo de la Inteligencia Artificial y, por ello, no resulta extraño que se consideren deseables para cualquier individuo, artificial o no, que queramos que se comporte inteligentemente. Podemos pensar en una variedad de problemas que van desde cómo alcanzar una fuente de comida situada a cierta distancia, y a la que no se puede ir directamente, hasta cómo resolver un pequeño juego, como podría ser el famoso cubo de Rubik, o resolver un problema matemático, como encontrar la solución a una ecuación numérica o demostrar un teorema. En todos ellos, y tras un proceso de abstracción, encontramos elementos comunes que nos permiten asociar de forma general la **resolución de problemas** a algo como: !!!def:Resolución de Problemas El proceso que, partiendo de una situación inicial y utilizando una colección de procedimientos/reglas/acciones seleccionados a priori, es capaz de explicitar la sucesión de pasos que nos llevan hasta una situación final que llamamos **solución**. Lo que consideremos, o no, *solución* dependerá del contexto concreto del problema, y puede ser, por ejemplo, el conjunto de acciones que nos llevan a cumplir cierta propiedad, el objetivo final alcanzado, o hacer una elección que verifique ciertas restricciones. !!!side:10 Por ejemplo, por el tipo de método que se muestra efectivo para su solución. Como estamos interesados en la generación de mecanismos automáticos que se puedan llamar *inteligentes*, no nos contentamos con resolver problemas individuales y dar para cada problema una solución independiente, sino que intentaremos buscar elementos comunes aplicables a una gran bolsa de problemas. De esta forma, es natural buscar una clasificación de los problemas $^{10}$ así como reconocer métodos y estrategias que puedan ser válidos de la forma más general posible. !!!side:11 En forma de algoritmos o de heurísticas, en nuestro caso. Con este fin, y dentro de un proceso de **representación** que también se conoce como **modelado**, es deseable poder expresar las características de los problemas usando un lenguaje formal común a todos ellos para, posteriormente, proporcionar métodos y estrategias generales $^{11}$ con los que se obtengan soluciones a esos problemas con ciertas garantías. # ¿Qué es un Sistema de Representación? Nuestro objetivo es buscar metodologías automatizables que no resuelvan únicamente instancias concretas de problemas, sino que resuelvan problemas de forma general. Para ello, hemos de disponer de conjuntos de problemas que puedan expresarse haciendo uso de un mismo **Sistema de Representación** con el fin de economizar esfuerzos para obtener algoritmos que usen un lenguaje común y prefijado, y así poder abordar una gran variedad de problemas de manera unificada. !!!def: Sistema de Representación Un **Sistema de Representación** es simplemente un espacio **formal**, $R$, sobre el que hay definido un lenguaje de manipulación que permite hablar de algoritmos matemáticos/computacionales que usan los elementos de $R$ como datos de _entrada_, _trabajo_ y _salida_. **Representar un problema**, $P$, en $R$ consiste en proyectar de manera _efectiva_ (automática y reprodcible) los elementos constitutivos de $P$ en $R$, $\varphi_P:P\to R$, de forma que el problema de cálculo/decisión en las estructuras informales de $P$ se convierte en un problema de cálculo/decisión en las estructuras formales de $R$, y tal que: * Si $P$ es de decisión, la respuesta obtenida por la resolución de $\varphi_P(P)$ es la respuesta a $P$. * Si $P$ es de cálculo, la respuesta $x$ obtenida por la resolución de $\varphi_P(P)$ verifica que $\varphi_P^{-1}(x)$ es solución de $P$. Obsérvese que $\varphi_P$ depende de $P$, ya que la representación de $P$ la hacemos *ad-hoc* a partir de las características particulares de $P$. Un primer problema que se plantea es: ¿podemos obtener $\varphi$ que no dependa de $P$? Esto significaría disponer de un sistema automático de representación que funcionaría para todos los problemas imaginables. Por supuesto, este objetivo parece inalcanzable, pero merece la pena tenerlo como ideal a conseguir. ## Sistemas de Representación Clásicos Algunos Sistemas de Representación clásicos que pueden resultar relativamente cercanos al alumno y que abordaremos en los primeros temas del curso son: * **Sistemas Lógicos**. * **Problemas de Satisfacción de Restricciones** (son como sistemas lógicos, pero con esteroides). * **Espacios de Estados** (discretos y continuos). Comenzaremos trabajando sobre ellos, y los mantendremos como sistemas de representación formal a lo largo de todo el curso, así que en breve veremos ejemplos concretos de este tipo de representaciones y de algoritmos diseñados para ellos y que permiten dar solución a los problemas representados. ## Algunas aproximaciones asépticas de la IA En este sentido, y tras tener en cuenta cuál es el contexto más o menos formal en el que nos vamos a mover, hay dos aproximaciones (de distinta complejidad) de las que se encarga habitualmente la IA en su sentido más amplio: !!!note:Aproximación 1 Dado un sistema de representación adecuado, $R$, encontrar un algoritmo, $A_R$, de manera que si codificamos un problema $P$ en $R$ (como hemos comentado anteriormente), entonces $A_R(\varphi(P))$ es una solución de $P$ (a veces, podemos contentarnos con obtener una *aproximación* de una solución). La mayoría de las veces $\varphi$ no es computable, o no se conoce un algoritmo general que sea capaz de tomar problemas generales y codificarlos siguiendo esa representación (de hecho, en general no es un problema definido formalmente, por lo que no tiene sentido preguntarse si es computable de forma general), por lo que una vez obtenido $A_R$, tradicionalmente la tarea del experto en IA ha sido la de tomar problemas (o conjuntos de problemas) que presentan cierto interés y dar manualmente las representaciones de esos problemas en $R$ para poder aplicar posteriormente $A_R$. !!!side:12 Mejoras en tiempo y/o espacio, mejoras en su comprensibilidad, mejoras en su interpretabilidad, etc. Una vez encontrado $A_R$ queda después otra parte de la IA, con un carácter más cercano a la Ingeniería, que se encarga de modificar el algoritmo para mejorar el rendimiento sobre instancias del problema de cierto tamaño $^{12}$. La segunda aproximación, mucho más complicada, pero mucho más interesante, sería: !!!note:Aproximación 2 * **Versión 1**: Encontrar sistemas de representación lo más generales posibles cuyas funciones de proyección sean computables para el mayor número de problemas posibles. * **Versión 2**: Dar una familia de sistemas de representación y una función $\Phi$, computable, que, para un gran número de problemas, seleccione el sistema de representación sobre el que se deben proyectar, y proporcione la proyección asociada. De esta forma, se pretende evitar la parte manual de la metodología anterior, haciendo que gran parte del proceso sea automatizable por completo, algo que consideramos más cercano a una inteligencia superior que la *simple* resolución de bolsas de problemas similares. Obviamente, la facilidad para resolver un problema radica, pues, en la capacidad que tengamos para representarlo de forma más o menos adecuada, y se puede observar que algunas representaciones facilitan la tarea de resolver el problema mientras otras lo pueden complicar tremendamente. A la capacidad de buscar una representación adecuada para facilitar la resolución se le denomina **perspicacia**. Así pues, mucha de la labor que hay detrás de la IA más general radica precisamente en dotar de perspicacia a las máquinas, porque ya hay muchos métodos de resolución posteriores que pueden funcionar relativamente bien.