Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 1
Tenemos como seres humanos un interés genuino y científico en tratar de comprender cómo
funciona nuestra mente. Tratamos de no sólo comprender el pensamiento sino recrearlo por
medio de la tecnología, llamando a esto “Inteligencia Artificial” (IA de ahora en adelante),
término acuñado por uno de los padres de la IA, John McCarthy, en 1956.
Rotaremos ahora el tema de conversación ahora hacia los agentes y sus entornos.
Relaciona una secuencia de percepciones con unas determinadas acciones en una función
inyectiva.
Entendemos que un agente racional es aquel que hace lo correcto, para ello debemos llevar a
cabo una medida objetiva de las prestaciones, midiendo estas los efectos deseados en el
entorno sin tener en cuenta el estado del agente.
Rendimiento
El conocimiento previo del Entorno
Acciones
La Secuencia de percepciones hasta el momento
Esto requiere que un agente racional sea capaz de recoger información y explorar para
maximizar el beneficio futuro, aprender de las percepciones y ser lo suficiente autónomo
como para compensar el conocimiento previo incorrecto.
Tipos de entorno:
Distinguiremos cuatro tipos básicos de agente en orden creciente de generalidad:
El estado representa los cambios y los resultados de sus acciones en su entorno para
tomar mejores decisiones.
Trata de conseguir los objetivos realizando las acciones más útiles para la obtención de
los resultados deseados.
Completitud
Optimización
Complejidad Temporal
Complejidad Espacial
Tema 2
En este hablaremos un poco de resolución de problemas, con búsquedas informadas y no
informadas, de las diferentes estructuras de datos que lo soportan y cómo vamos a evaluarlas
para determinar si son óptimas y/o eficientes.
Grafo
Estructura de datos que se utiliza para representar relaciones entre objetos. Consiste en un
conjunto de nodos (también llamados vértices) y un conjunto de aristas (también llamadas
bordes) que conectan los nodos. Los grafos se utilizan comúnmente en la teoría de grafos y en
la informática para modelar una amplia variedad de situaciones, desde redes sociales hasta
rutas de transporte, diagramas de flujo y más. Los grafos pueden ser dirigidos o no dirigidos, y
pueden tener propiedades adicionales, como pesos en las aristas para representar costos o
distancias.
Árbol
estructura de datos jerárquica que consta de nodos interconectados de manera que se asemeja
a la estructura de un árbol en la naturaleza. Un árbol tiene un nodo raíz en la parte superior, a
partir del cual se ramifican otros nodos, llamados nodos hijos. Cada nodo puede tener cero o
más hijos, pero solo un padre.
1. Nodo raíz: El nodo superior del árbol, desde el cual se inician todas las ramas.
2. Nodo hijo: Cada nodo puede tener cero o más nodos hijos, que son descendientes
directos del nodo padre.
3. Nodo padre: Cada nodo, excepto el nodo raíz, tiene un nodo padre que lo conecta.
4. Hojas: Los nodos que no tienen hijos se llaman hojas y están en los extremos de las
ramas.
Las colas se utilizan comúnmente para administrar elementos en un orden secuencial, como
procesos en un sistema operativo, tareas en un planificador de tareas, solicitudes en un
servidor web, etc. Las colas pueden tener implementaciones basadas en arreglos o listas
enlazadas, y son útiles en situaciones donde se necesita asegurar un orden específico para el
procesamiento de elementos.
Elementos de un problema
Para resolver un problema de este tipo de elementos tenemos que analizar los siguientes
aspectos a la hora de analizarlo:
Estados: todos los posibles estados en los que puede estar el problema
Estado inicial: desde donde se empieza
Acciones: qué podemos hacer con el estado inicial y sus consecuentes
Modelo de transiciones: qué acciones podemos aplicar a qué estados
Test Objetivo: una prueba que nos permita determinar si hemos cumplido con el
objetivo
Coste camino: cuánto cuesta realizar cada acción dentro de nuestro modelo de
transiciones.
*Nota: se deben de repasar las diapositivas del tema 2 de las páginas 13 a la 42, teniendo
estas la resolución de problemas propuestos*
Si traducimos el espacio de estados en un árbol, siendo la raíz el estado y el resto de los nodos
el resto de los estados unidos por el modelo de transición de un estado a otro.
Sin embargo, una búsqueda genera normalmente un grafo de estados, en el que se puede
llegar a un estado por múltiples caminos.
MUY IMPORTANTES, ESTADO, FRONTERA Y NODO COMO CONCEPTOS
Con estas nomenclaturas, podemos dar a lugar al siguiente algoritmo de una búsqueda en el
grafo de estados. (Genérica)
Quitando esto, podemos evaluar las diferentes estrategias según estas 4 dimensiones:
Completitud
Optimización
Complejidad temporal
Complejidad espacial
Siendo estas dos últimas determinadas no con números exactos sino con factores (lineal,
exponencial, polinomial, constante, etc.)
Estrategias no informadas (búsqueda ciega)
Si nos hemos fijado en el algoritmo genérico para la resolución del problema de la búsqueda de
un grafo de estados, podemos notar que no se especifica cómo se elige cuál es el siguiente
nodo que explorar.
Por lo tanto, ahora hablaremos de estrategias que podemos utilizar para explorar un grafo de
estados sin información sobre el contenido de este, o hablando de otra manera, sin heurísticas.
Recorrido en anchura
En el algoritmo de búsqueda en anchura, el siguiente nodo expandido siempre es el nodo no
expandido menos profundo, y la implementación de la frontera se hace mediante una cola fifo.
Tenemos a continuación una implementación genérica del algoritmo de búsqueda en anchura.
Recorrido de coste uniforme o BFS (Best-First Search)
Para este algoritmo el siguiente nodo explorado siempre será el que mantenga el coste del
camino más bajo, como hemos mencionado antes, tratamos de imaginar un llenado de unas
tuberías con agua.
La implementación de la frontera consta de una cola ordenada por coste de caminos, es decir,
generalmente una cola de prioridad.
Recorrido en profundidad
Siempre se expande el nodo más profundo primero, en este caso la implementación de la
frontera se lleva a cabo mediante una cola LIFO. Tenemos a continuación el algoritmo genérico
resultante:
Búsqueda informada:
Son métodos de búsqueda que utiliza un conocimiento específico del problema para resolverlo,
utilizando para ello una estrategia, estas suelen derivar de “primero el mejor”, pero
añadiéndole heurísticas
Implementación de una búsqueda con límite
Dejo aquí un algoritmo que permite implementar un límite a la estrategia en profundidad.
Buscando sólo hasta cierto nivel de profundidad.
Nota: este tipo de estrategia limitada suele dar muy buenos resultados con menor coste que
sus contrapartidas menores moderadas, sobre todo, cuando el entorno que explora tiene más
hacia infinito.
Búsqueda bidireccional
Este método de búsqueda trata de empezar a buscar desde el inicio y el final, para finalmente
encontrar la solución lo antes posible, esto da a lugar que podemos encontrar una solución
más rápido (muchas de las veces).
Ahora mostramos una pequeña tabla con el resumen de los distintos tipos de algoritmos que
podemos implementar y qué costes tienen:
Búsqueda informada
Ya hemos hablado previamente de las formas de buscar dentro de un grafo de estados que
sean correctas de forma “no informada”, pero qué entendemos por informada.
A esto nos referimos a que tenemos una información, válgase la redundancia que nos permite
tener cierta ventaja con respecto a otros modelos de búsqueda, es decir una cierta heurística
que nos dice cuál es el mejor camino para seguir en este momento.
Esto significa que si antes decidíamos cuál era el siguiente nodo únicamente en base a su coste,
ahora lo haremos mediante el coste que conocemos que tenemos para llegar al nodo, con el
coste estimado para ir al nodo objetivo, dando lugar a si a una mejora en la búsqueda que
llevaremos a cabo.
f ( n )=g ( n ) +h (n)
Es decir, que el nodo escogido se hace en base al coste y a la heurística, siendo ambos dos
números enteros positivos.
Algoritmo Voraz
Ya hemos hablado de lo que es una heurística, ahora podemos determinar la nueva función del
nodo escogido, simplemente ignorando el coste y siguiente únicamente la heurística que
hemos decidido, dejando así la fórmula de coste:
f ( n )=h(n)
Esto puede causar muchos problemas, puesto que la solución no se asegura ni óptima ni el
algoritmo es completo, sin embargo, una buena heurística puede reducir enormemente los
costes.
Búsqueda A*
Es el algoritmo primero que tenemos en cuenta a la hora de hablar de algoritmos informados,
es la implementación literal de la fórmula
f ( n )=g ( n ) +h (n)
Parecido al de coste uniforme, pero no sólo teniendo en cuenta el coste, sino también la
heurística de forma semejante.
A* es óptima y completa si la función heurística es “buena”, con esto nos referimos a que no
debe de sobreestimar el coste real de alcanzar el objetivo y siempre debe ser optimista,
formalmente:
NOTA: Revisar las diapositivas en caso de duda sobre la implementación de A*
El problema de IDA*, es que tiene las mismas limitaciones que ID, por lo tanto, podemos
buscar mejores soluciones, en ese caso, tenemos RBFS.
Esta va utilizando memoria hasta que se llena, en caso de que se llene, elimina el peor camino
disponible y al igual que RFBS, devuelve el valor del nodo olvidado a su padre.
Un problema demasiado complicado puede ser demasiado compleja de obtener, pero una
versión relajada, nos permite encontrar más posibles caminos con un menor coste, que pueden
llegar a ser candidatos, además a partir de ellos podemos generar patrones los cuales podemos
almacenar en una base de datos que podemos utilizar para generar nuevas heurísticas
h ( n )=c 1 X 1 ( n )+ c2 X 2 (n)
Esto significa que generamos las heurísticas a partir de las diferentes características inducidas
de la experiencia obtenida por la inteligencia.
Juegos
Por qué hablamos ahora de juegos, claro está, estos son entretenidos, y podemos utilizarlos
para inferir conocimientos muy interesantes sobre lo que podemos llevar a cabo con nuestro
juego, para encontrar así la mejor solución posible a este. Además, los juegos suelen ser multi-
agente, lo que permite la aplicación de estrategias mucho más inteligentes de lo que podemos
ahora intuir.
Estrategia minimax
Esta estrategia trata de maximizar el resultado del oponente, a la vez que maximizar el
resultado del suyo. Algoritmo a continuación.
Esto nos lleva a que podemos hacer una “poda” del árbol que se está explorando, dando así pie
a una mejora en los costes. A esto lo llamamos poda Alfa-Beta. Esto nos da lugar al siguiente
algoritmo:
Esto nos da a que podemos dar un concepto general a este tipo de poda Alfa-Beta, significa
que, si hay un estado óptimo para MAX, o para MIN, éste nunca será alcanzado puesto que el
entorno es multi-agente.
El problema que tiene este algoritmo es que el número de evaluaciones crece de forma
exponencial, e incluso peor, lo que nos lleva a la propuesta de Shannon en 1950, que
determina la búsqueda minimax aplicarle una función de evaluación heurística EVAL, que se
aplica permitiendo así “podar con más frecuencia”.
Deducimos más adelante que para poder evaluar un estado este tiene que ser estable, porque
un entorno que no es estable puede dar a una EVAL incorrecta que no derive en el estado que
queremos.
Efecto horizonte
Hablamos del efecto horizonte cuando tenemos una solución que parece aparentemente
mejor, pero una vez explorada, resulta no serlo, esto se soluciona expandiendo los nodos que
se consideran mejores antes de seleccionar un nodo (exceder el límite de profundidad).
De ese momento en adelante, sólo se consideran los n mejores movimientos podando así aún
más el árbol de decisiones. Aplicando estrategias similares en los juegos que contienen azar.
En el caso de los juegos que tienen azar, se puede utilizar como “mejor movimiento” lo que
denominaremos resultado esperado que denota cuál es el resultado que nosotros queremos
que salga en nuestra evaluación.
Tema 4: Razonamiento Probabilístico
Incertidumbre
No es posible representar fielmente objetos del mundo real ni sus relaciones
La lógica de primer orden, por otro lado, es una forma estructurada de representación de la
realidad.
Ejemplos:
Cualquier hecho se refiere a uno o varios de los anteriores elementos, por ejemplo, en:
Podemos distinguir:
Incertidumbre
Es un subárea de la IA que trabaja principalmente en:
Inferencia
Hacer suposiciones de lo que significan hechos (observados y/o conocidos)
Sacar consecuencias de algo o deducir algo de otra cosa
Procesamiento de LN
Reconocimiento de Voz y Visión Artificial
Conducción Autónoma Vehículos
Etc.
Probabilidad
Representa la incertidumbre
o Grado de creencia de un agente en una afirmación
Tienen fundamente matemático sólido
Aparece en todos los campos de la IA
o Aprendizaje
o Recuperación de información
o Visión por Computador
Robótica
Redes Bayesianas
Una red bayesiana (o red de Bayes, red de creencias, modelo de Bayes o modelo gráfico
dirigido acíclico probabilístico), es un modelo gráfico probabilístico que representa un
conjunto de variables aleatorias y sus dependencias condicionales a través de un grafo acíclico
dirigido.
Por ejemplo, una red bayesiana podía representar las relaciones probabilísticas entre las
enfermedades y los síntomas.
Teniendo en cuenta los síntomas, la red se puede utilizar para calculas las probabilidades de la
presencia de diversas enfermedades.
Formalmente, las redes bayesianas son grafos dirigidos acíclicos cuyos nodos representan
variables aleatorias en el sentido bayesiano: pueden ser cantidades observables, variables
latentes, parámetros desconocidos o hipótesis.
Los bordes representan las dependencias condicionales: nodos que nos están conectados
representan variables que son condicionalmente independientes la una de la otra.
Cada nodo está asociado con una función de probabilidad que toma como entrada un
conjunto particular de valores para las variables de los padres del nodo, y proporciona la
probabilidad de la variable representada por el nodo.
Por ejemplo, si los padres son variables booleanas, entonces la función de probabilidad puede
ser representada por una tabla de entradas, una entrada para cada una de las posibles
combinaciones de sus padres que son verdaderas o falsas.
Probabilidades Marginales
Probabilidad Condicional
Regla de Bayes
Causalidad
Cuando una Red bayesiana refleja la causalidad real del dominio:
o Suele ser más simple (los nodos tienen menos padres).
o Suele ser más fácil razonar con ella.
o Suele ser más fácil de obtener a partir de expertos.
Pero las Redes bayesianas no necesitan ser causales.
o A veces no existe una red causal para el dominio.
o La red acaba teniendo flechas que reflejan correlación, no relación causal.
Entones, ¿qué significa exactamente las flechas?
o La topología puede que represente la estructura causal.
o La topología siempre representa la (in)dependencia condicional.
Una red bayesiana representa implícitamente las distribuciones conjuntas
o Como un producto de distribuciones condicionales locales
o Para calcular la probabilidad de una asignación concreta, se multiplican todas
las condiciones relevantes:
Permite reconstruir cualquier entrada de la tabla de probabilidades conjunta
No todas las RB pueden representar todas las distribuciones conjuntas
La topología define qué condiciones de independencia se cumplen
Red Bayesiana
Una red bayesiana es una codificación eficiente de un modelo probabilístico de un dominio
D-separación
Objetivo: Encontrar (In)Dependencias Condicionales en una red Bayesiana
o Pregunta general: ¿son dos variables independientes dada una cierta
evidencia?
Solución: analizar el grafo
o Concepto de “d-separación”
Cualquier ejemplo complejo se puede analizar usando tres casos básicos:
o Cadena causal
o Causa común
o Efecto común
Cadena Causal
Esta configuración es una “cadena causal”
Causa Común
Dos efectos de la misma causa
Alcanzabilidad (D-Separación)
Pregunta: ¿cuándo son X e Y condicionalmente independientes dadas las variables de evidencia
{Z}:
Sencillamente, porque a veces cuesta mucho o falta información sobre cómo llevarla a cabo o
si se puede llegar a cabo.
Variables Aleatorias
Como solución a este problema presentamos el conocimiento expresándolo con grados de
creencia
1. Booleanas
2. Discretas
3. Continuas
Proposiciones
Ascendiendo en dificultad de manejo tanto a nivel teórico como computacional.
Probabilidad
Una función de probabilidad es una función definida en el conjunto de proposiciones
(respecto de un conjunto dado de variables aleatorias), verificando las siguientes propiedades:
Por ejemplo:
Distribución de probabilidad
La distribución de probabilidad de una variable aleatoria indica las probabilidades de que la
variable pueda tomar cada uno de sus valores
Ejemplo: si Tiempo es una VA con valores lluvia, sol, nubes y nieve, su distribución de
probabilidad podría ser:
Notación: P (x, y) manera compacta de denotar a una tabla con esas probabilidades
Eventos Atómicos
Dado un conjunto de variables aleatorias que describen nuestro “mundo”, un evento atómico
es un tipo particular de proposición:
Mutuamente excluyentes
Todos los eventos atómicos son exhaustivos (alguno debe ocurrir)
Un evento atómico implica la verdad o falsedad de toda proposición
Toda proposición es equivalente a la disyunción de un conjunto de eventos atómicos
Una DCC es una especificación completa (en términos probabilísticos) del dominio descrito
Ejemplo:
Notación
Problemas
Complejidad y tamaño del cálculo, acompañado de que casi nunca tenemos conocimiento de
todas las probabilidades de todos los eventos atómicos.
Probabilidad Condicional
Relación entre probabilidad condicional e incondicional
P (a | b) = 0,8 no es lo mismo que decir que “siempre que b sea verdad, entonces P(a) =
0.8 ya que P (a | b) refleja que b es la única evidencia conocida
Inferencia Probabilística
Entendemos por tal que el cálculo de la probabilidad de una proposición dada condicionada
por la observación de determinadas evidencias
Normalización
Podríamos evitar calcular explícitamente P(dolor)
puede verse como una constante que normaliza la distribución P (Caries, dolor)
haciendo que sume 1:
Es decir, calculamos P (caries, dolor) y P (¬caries, dolor (y a posteriori, multiplicamos ambos por
una constante Alpha que haga que ambos sumen 1; de esa manera tenemos P (caries | dolor) y
P (¬caries | dolor)
Podemos utilizar la independencia existente entre los eventos para ayudar a reducir la
complejidad.
Independencia Probabilística
En muchos casos prácticos, algunas de las variables de un problema son independientes entre
sí.
Un ejemplo muy evidente sería la independencia del tiempo con respecto al dolor de muelas.
Por lo tanto, la tabla DCC no sería necesaria de 32 entradas, sino dos tablas independientes de
8 y 4 entradas respectivamente.
De forma intuitiva, podemos deducir que dos variables son independientes si conocer el valor
de una no nos revela información sobre la otra.
Formalmente:
Asumir independencia entre ciertas variables ayuda a que la representación del mundo sea
más manejable, es decir reduce la exponencialidad (factorización del problema)
Independencia Condicional
Intuitivamente X es condicionalmente independiente de Y dado un conjunto de variables Z si
nuestro gradeo de creencia en que X tome un valor dado, sabiendo el valor que toman las
variables de Z, no se vería actualizado, si además supiéramos el valor que toma Y
Formalmente:
P (X, Y | Z) = P(X|Z) o P (Y | X, Z) = P (Y | Z)
Modelando el ejemplo de la alarma
La incertidumbre que subyace hace aconsejable un modelo probabilístico.
Robo
Terremoto
Alarma
Juan (contesta)
María (contesta)
Relaciones de independencia:
Robo y Terremoto
Dado Alarma, Juan, es independiente del resto de variables
Dado Alarma, María, es independiente del resto de variables
Redes Bayesianas
En general, las relaciones de independencia condicional permiten simplificar drásticamente
las DCC, haciendo que se puede usar en la practica
Las redes bayesianas (o redes de creencia) constituyen una manera práctica y compacta de
representar el conocimiento incierto, basada en esta idea
Ejemplo:
Representaciones compactas
Dominios localmente estructurados
Las relaciones de independencia que existen entre las variables de un dominio hacen que las
redes bayesianas sean una representación mucho más compacta y eficiente de una DCC que la
tabla con todas las posibles combinaciones de valores
Además, para un experto en un dominio de conocimiento suele ser más natural dar
probabilidades condicionales que directamente las probabilidades de la DCC.
Con n variables, si cada variable está directamente influenciada por k variables a lo sumo,
entonces una red bayesiana necesitaría n*2^k números, frente a los 2*n números de la DCC
Hay veces que una variable influye directamente sobre otra, pero esta dependencia es muy
tenue, en ese caso, puede compensar no considerar esa dependencia, perdiendo algo de
precisión en la representación, pero ganando manejabilidad.
Inferencia Aproximada por Muestreo
Idea Básica:
Muestreo a priori: El obvio, que nos salta a la mente cuando pensamos en muestreo.
Muestreo por rechazo: No se mantienen todas las muestras, por así decirlo, con
reemplazo.
Ponderación por verosimilitud
o El problema del muestreo por rechazo es que, si la evidencia es muy poco
probable, tiramos la mayoría de las muestras.
Muestreo de Gibbs: Sigue un algoritmo de tipo Markov Chain Monte Carlo