**SVRAI**
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**) ya que tiene un enfoque principalmente computacional, aunque cada día hay más aportaciones 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 en 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](HIA.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) como en atención 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). 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 muchas 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
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 o si se considera una racionalidad ideal, 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, repersentació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**: 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.
* **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 tranferir 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 consiguieramos 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) ha desarrollado recientemente con [AlphaZero](https://en.m.wikipedia.org/wiki/AlphaZero) técnicas que generalizan bien la obtención de jugadores artificiales en el contexto de un conjunto más amplio de juegos de tablero.
* **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 como 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.
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, ya que los algoritmos necesitarán un lenguaje común y prefijado para poder manipularlos.
!!!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\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)$ es la respuesta a $P$.
* Si $P$ es de cálculo, la respuesta $x$ obtenida por la resolución de $\varphi(P)$ verifica que $\varphi^{-1}(x)$ es solución de $P$.
## Sistemas de Representación Clásicos
Algunos Sistemas de Representación clásicos que pueden resultar relativamente cercanos al alumno son:
* **Sistemas Lógicos**.
Veremos ejemplos en el curso.
**Problemas de Satisfacción de Restricciones** (son como sistemas lógicos, pero con esteroides).
**Problema de las $N$ Reinas**: en un tablero de ajedrez de tamaño $N\times N$, colocar $N$ reinas de forma que no haya amenazas entre ningún par de ellas (recordemos que una reina amenaza a toda la fila, columna y diagonales de la casilla en la que se sitúa).
* **1ª Representación**:
Para $N=8$: $648$ posibles asignaciones y $126$ restricciones.
$X=\{R_1,\dots,R_N\}=\{R_i: 1\leq i\leq N\}$
$D=\{(x,y): 1\leq x,y\leq N\}$, donde $R_i=(x_i,y_i)$
Restricciones:
* No hay amenaza horizontal: $x_i\neq x_j$, para todo $i\neq j$.
* No hay amenaza vertical: $y_i\neq y_j$, para todo $i\neq j$.
* No hay amenaza en la diagonal principal: $x_i-x_j\neq y_i-y_j$, para todo $i\neq j$.
* No hay amenaza en la diagonal secundaria: $x_i- x_j\neq y_j- y_i$, para todo $i\neq j$.(Las dos diagonales se pueden tratar conjuntamente con: $|x_i- x_j|\neq |y_i- y_j|$, para todo $i\neq j$)
* **2ª Representación**:
Para $N=8$: $642$ posibles asignaciones y unas $300$ restricciones.
$X=\{R_{i,j}: 1\leq i,j\leq N\}$ (una por cada casilla).
$D=\{0,1\}$
Las restricciones:
* $\sum_i R_{i,j}\leq 1$, para todo $1\leq j\leq N$.
* $\sum_j R_{i,j}\leq 1$, para todo $1\leq i\leq N$.
* $\sum_{(i,j)\in D} R_{i,j}\leq 1$, para toda $D$ diagonal.
* **3ª Representación**:
Similar a la anterior, pero por medio de predicados lógicos:
$X=\{R_{i,j}: 1\leq i,j\leq N\}$ (una por cada casilla).
$D=\{T,F\}$
Las restricciones:
* $(R_{i,j} \rightarrow \neg R_{i,j'})$, para todo $j' \neq j$.
* $(R_{i,j} \rightarrow \neg R_{i',j})$, para todo $i' \neq i$.
* $(R_{i,j} \rightarrow \neg R_{i+k,j+k})$, para todo $1\leq i+k, j+k \leq N$.
* $(R_{i,j} \rightarrow \neg R_{i+k,j-k})$, para todo $1\leq i+k, j-k \leq N$.
* **4ª Representación**:
Haciendo uso de conocimiento implícito del problema (una, y solo una, reina en cada columna):
Para $N=8$: $8^8$ posibles asignaciones y unas $80$ restricciones.
$X=\{R_i :\ 1\leq i \leq N\}$
$D=\{1,\dots,N\}$
Las restricciones:
* $R_i \neq R_j$, para todo $i\neq j$.
* $|R_i - R_j| \neq |i - j|$, para todo $i\neq j$.
**Espacios de Estados** (discretos y continuos).
Veremos ejemplos en el curso.