**IAIC** Introducción a IAIC ![](./img/ia-imagen.png align="left" width=300px)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**) ya que tiene un enfoque principalmente computacional y, como veremos en el [tema siguiente](..\Historia_de_la_IA\index.md.html), una gran relación desde el nacimiento, casi simultáneo de ambas, aunque no se pueden minimizar las aportaciones recibidias desde otras áreas (como **Neurociencia**, **Estadística**, **Psicología**, etc.). 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 (incluso antes de la aparición del primer ordenador digital), 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.md.html), podemos situar sus fundamentos y motivación matemática incluso antes del nacimiento formal de la computación. 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 (en forma de grandes inversiones y financiación), de las empresas privadas (donde las grandes tecnológicas dominan actualmente el mundo de las aplicaciones), del público general (saturando los medios de comunicación, aunque la mayoría de las veces dando información inexacta y confusa de los hitos conseguidos) 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. ![](https://www.youtube.com/watch?v=z6mFrGb3-sM) 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 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**: ![](./img/artificial_intelligence1.jpg align="right" width=300px)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 silogismos y 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. # 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 siguiente 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**: ![](./img/chatgpt.png align="right" width=120px)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). * **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/) (que ha pasado por las manos de Google, SoftBank o recientemente Hyundai), 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. * **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 pruebas 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 (de Google) 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. * ![](./img/goodcomputerfunnel.jpg align="right")**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 (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). 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 (con su orientación hacia la aplicación de la IA a la Ciencia), 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. ![](./img/dotcsv.jpg align="right" width=150px)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. # 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. # ¿Qué es un Sistema de Representación? Como consecuencia de nuestros objetivos, buscamos 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 vengan dados (o puedan transformarse) en un **Sistema de Representación** común, como medio habitual de economizar los esfuerzos para obtener algoritmos que hagan uso de un lenguaje común y prefijado para 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 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$? ## 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. ## 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$. 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 (mejoras en tiempo y/o espacio, mejoras en su comprensibilidad, mejoras en su interpretabilidad, etc.). 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.