Inteligencia Artificial e Ingeniería del Conocimiento
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Inteligencia</strong> <strong>Artificial</strong> e <strong>Ingeniería</strong><br />
<strong>del</strong> <strong>Conocimiento</strong><br />
Félix Gómez Mármol<br />
4 o <strong>Ingeniería</strong> Informática
Índice general<br />
I <strong>Inteligencia</strong> <strong>Artificial</strong> 7<br />
1. Resolución de Problemas 9<br />
1.1. Estrategias de búsqueda en grafos: heurísticas . . . . . . . . . . . . . . . . . . 9<br />
1.1.1. Búsqueda primero el mejor . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
1.1.2. Búsqueda A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
1.1.3. Búsqueda con memoria acotada . . . . . . . . . . . . . . . . . . . . . . 14<br />
1.2. Estrategias de Búsqueda en Grafos YO: Heurísticas . . . . . . . . . . . . . . . 16<br />
1.2.1. Características de las funciones de evaluación para grafos YO . . . . . 18<br />
1.2.2. Búsqueda mejor nodo para grafos YO . . . . . . . . . . . . . . . . . . 19<br />
1.3. Funciones Heurísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
1.3.1. Efecto de la precisión heurística en el rendimiento . . . . . . . . . . . 23<br />
1.3.2. Inventando funciones heurísticas . . . . . . . . . . . . . . . . . . . . . 24<br />
1.4. Estrategias de Búsqueda Local y Problemas de Optimización . . . . . . . . . 25<br />
1.4.1. Búsqueda de ascensión de colinas (mejor avara) . . . . . . . . . . . . . 25<br />
1.4.2. Búsqueda tabú . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />
1.4.3. Búsqueda por haz local . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
1.4.4. Algoritmo genético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
1.5. Estrategias de Búsqueda Online . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
1.6. Estrategias en adversarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
1.6.1. Juegos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
1.6.2. Decisiones en tiempo real imperfectas . . . . . . . . . . . . . . . . . . 35<br />
1.6.3. Juegos que incluyen un elemento de posibilidad . . . . . . . . . . . . . 36<br />
2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento 37<br />
2.1. Representación <strong>del</strong> <strong>Conocimiento</strong> mediante Lógicas no Clásicas . . . . . . . . 37<br />
2.1.1. Lógicas no monótonas . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />
2.1.2. Lógica de situaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />
2.1.3. Lógica difusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />
2.2. Representación y Razonamiento con Incertidumbre . . . . . . . . . . . . . . . 40<br />
2.2.1. Representación y fuentes de incertidumbre . . . . . . . . . . . . . . . . 40<br />
2.2.2. Teoría de Dempster-Shafer de la evidencia . . . . . . . . . . . . . . . . 41<br />
2.3. Representaciones Estructuradas <strong>del</strong> <strong>Conocimiento</strong> . . . . . . . . . . . . . . . . 45<br />
2.3.1. Redes Semánticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />
2.3.2. Marcos o Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />
2.3.3. Guiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />
3. Planificar para la Resolución de Problemas 53<br />
3.1. Planificación y Resolución de Problemas . . . . . . . . . . . . . . . . . . . . . 53<br />
3.1.1. El problema de la planificación . . . . . . . . . . . . . . . . . . . . . . 53<br />
3.1.2. Tipos de planificadores, estados y operadores . . . . . . . . . . . . . . 54<br />
3.1.3. Métodos de planificación . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />
3
4 ÍNDICE GENERAL<br />
3.2. Planificación de Orden Total . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />
3.2.1. Planificación usando una pila de objetivos (STRIPS) . . . . . . . . . . 56<br />
3.2.2. STRIP con protección de objetivos (RSTRIP) . . . . . . . . . . . . . . 59<br />
3.3. Planificación Ordenada Parcialmente . . . . . . . . . . . . . . . . . . . . . . . 60<br />
3.3.1. Planificación no lineal sistemática (PNLS) . . . . . . . . . . . . . . . . 61<br />
3.4. Planificación Jerárquica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />
4. El Aprendizaje Computacional 63<br />
4.1. El Problema <strong>del</strong> Aprendizaje Computacional . . . . . . . . . . . . . . . . . . 63<br />
4.2. Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />
4.2.1. Tipos, fases y características <strong>del</strong> aprendizaje . . . . . . . . . . . . . . 63<br />
4.2.2. Estimación <strong>del</strong> error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />
5. Aprendizaje por Inducción en Modo Estructural 67<br />
5.1. Programa de aprendizaje de Winston . . . . . . . . . . . . . . . . . . . . . . . 67<br />
5.1.1. Generalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />
5.1.2. Especialización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />
5.2. Espacio de versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />
6. Aprendizaje Basado en Instancias 73<br />
6.1. Convergencia de los Métodos Basados en Instancias . . . . . . . . . . . . . . . 73<br />
6.2. Aprendizaje mediante k M vecinos . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
6.3. Aprendizaje mediante el método de Parzen . . . . . . . . . . . . . . . . . . . 75<br />
6.4. Mejora de los métodos basados en instancias . . . . . . . . . . . . . . . . . . 75<br />
6.4.1. Multiedición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />
6.4.2. Condensación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
6.5. Funciones Distancia Heterogéneas . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />
6.5.1. Normalización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />
6.5.2. Discretización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />
6.5.3. Distintas métricas para el cálculo de distancias . . . . . . . . . . . . . 79<br />
7. Máquinas de Aprendizaje 81<br />
7.1. El Perceptrón como Discriminante Lineal . . . . . . . . . . . . . . . . . . . . 81<br />
7.1.1. Criterio y construcción <strong>del</strong> perceptrón . . . . . . . . . . . . . . . . . . 82<br />
7.2. Redes de Perceptrones Multicapa . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />
7.3. Árboles de Clasificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />
7.4. Árboles de Regresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />
8. Aprendizaje por Descubrimiento 87<br />
8.1. Clustering o Agrupamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />
8.1.1. Algoritmo de k-medias . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />
8.1.2. Mapas autoasociativos de Kohonen . . . . . . . . . . . . . . . . . . . . 88<br />
II <strong>Ingeniería</strong> <strong>del</strong> <strong>Conocimiento</strong> 91<br />
9. Principios de la <strong>Ingeniería</strong> <strong>del</strong> <strong>Conocimiento</strong> 93<br />
10.La Adquisición <strong>del</strong> <strong>Conocimiento</strong> 95
Índice de figuras<br />
1.1. Grafo de mapa de carreteras . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
1.2. Búsqueda Primero Mejor Avaro . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
1.3. Búsqueda A* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
1.4. Función heurística e-admisible . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
1.5. Búsqueda Primero el Mejor Recursiva . . . . . . . . . . . . . . . . . . . . . . 15<br />
1.6. Búsqueda A* con memoria acotada simplificada (A*MS) . . . . . . . . . . . . 15<br />
1.7. Árbol YO con la profundidad de cada nodo . . . . . . . . . . . . . . . . . . . 16<br />
1.8. Árbol YO no puro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
1.9. Hipergrafo o grafo YO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
1.10. Soluciones <strong>del</strong> Hipergrafo de la figura 1.9 . . . . . . . . . . . . . . . . . . . . 17<br />
1.11. Ejemplo de búsqueda <strong>del</strong> grafo solución óptimo . . . . . . . . . . . . . . . . . 18<br />
1.12. Grafo YO con h(n) no monótona . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
1.13. Solución al grafo de la figura 1.12 propagando por conectores marcados . . . 21<br />
1.14. Solución al grafo de la figura 1.12 propagando por todos los antecesores . . . 21<br />
1.15. Grafo YO con h(n) monótona . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
1.16. Solución al grafo de la figura 1.15 propagando por conectores marcados . . . 22<br />
1.17. Grafo YO con varias soluciones con distintos costos . . . . . . . . . . . . . . . 22<br />
1.18. Soluciones al Grafo YO de la figura 1.17 . . . . . . . . . . . . . . . . . . . . . 23<br />
1.19. Función admisible h = max(h 1 , h 2 , h 3 ) ≤ h ∗ . . . . . . . . . . . . . . . . . . . 25<br />
1.20. Función Objetivo vs Espacio de Estados . . . . . . . . . . . . . . . . . . . . . 25<br />
1.21. Juego de las 3 en raya . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />
1.22. Estados terminales en el juego de las 3 en raya . . . . . . . . . . . . . . . . . 34<br />
1.23. Estrategia MiniMax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />
1.24. Ejemplo de juego con 3 jugadores . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />
1.25. Poda alfa-beta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />
1.26. Juego de las 3 en raya con profundidad limitada . . . . . . . . . . . . . . . . 35<br />
1.27. Ejemplo de estrategia MiniMax Esperada . . . . . . . . . . . . . . . . . . . . 36<br />
2.1. Ejemplo de lógica de situaciones . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />
2.2. Función de pertenencia continua ser joven . . . . . . . . . . . . . . . . . . . 38<br />
2.3. Funciones de pertenencia µ A y µ NO A . . . . . . . . . . . . . . . . . . . . . . 38<br />
2.4. Función de pertenencia discreta ser joven . . . . . . . . . . . . . . . . . . . . 39<br />
2.5. Operadores de Zadeh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />
2.6. Extensión Cilíndrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />
2.7. Ejemplo de Red Semántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46<br />
2.8. Ejemplo de regla en una Red Semántica . . . . . . . . . . . . . . . . . . . . . 46<br />
2.9. Ejemplo de Red Semántica con un hecho y una regla . . . . . . . . . . . . . . 46<br />
2.10. Ejemplo de reglas que relacionan elementos temporales . . . . . . . . . . . . . 47<br />
2.11. Ejemplo de inferencia en redes semánticas (1) . . . . . . . . . . . . . . . . . . 47<br />
2.12. Ejemplo de inferencia en redes semánticas (2) . . . . . . . . . . . . . . . . . . 48<br />
2.13. Ejemplo de inferencia en redes semánticas (3) . . . . . . . . . . . . . . . . . . 48<br />
5
6 ÍNDICE DE FIGURAS<br />
2.14. Ejemplo de frame “Empleado” y “Padre de Familia” . . . . . . . . . . . . . . 48<br />
2.15. Ejemplo de jerarquía de frames . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />
3.1. Ejemplo de planificación no lineal . . . . . . . . . . . . . . . . . . . . . . . . . 60<br />
3.2. Operador MOVER(X,Y,Z) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />
3.3. Ejemplo de planificación no lineal sistemática . . . . . . . . . . . . . . . . . . 62<br />
4.1. Fases <strong>del</strong> aprendizaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />
5.1. Ejemplos de la base de entrenamiento. Generalización . . . . . . . . . . . . . 68<br />
5.2. Ejemplos de la base de entrenamiento. Especialización (1) . . . . . . . . . . . 68<br />
5.3. Ejemplos de la base de entrenamiento. Especialización (2) . . . . . . . . . . . 69<br />
5.4. Ejemplo de aprendizaje <strong>del</strong> concepto “arco” . . . . . . . . . . . . . . . . . . . 71<br />
5.5. Frame Coche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />
6.1. Fases <strong>del</strong> aprendizaje basado en instancias . . . . . . . . . . . . . . . . . . . . 73<br />
6.2. Aprendizaje basado en k-vecinos . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />
6.3. Aprendizaje basado en Parzen . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />
6.4. Multiedición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />
6.5. Base de ejemplos particionada . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
6.6. Base de ejemplos particionada y parcialmente multieditada . . . . . . . . . . 77<br />
6.7. Condensación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
6.8. Discretización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />
7.1. Esquema de un Perceptrón . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />
7.2. Ejemplo de clases linealmente separables . . . . . . . . . . . . . . . . . . . . . 81<br />
7.3. Ejemplo de clases NO linealmente separables . . . . . . . . . . . . . . . . . . 82<br />
7.4. Ejemplo de perceptrón multicapa . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />
7.5. Estructura de un perceptrón multicapa . . . . . . . . . . . . . . . . . . . . . . 83<br />
7.6. Ejemplo de árbol de clasificación . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />
7.7. Ejemplo de poda por estimación <strong>del</strong> error . . . . . . . . . . . . . . . . . . . . 85<br />
8.1. Mapa autoasociativo de Kohonen . . . . . . . . . . . . . . . . . . . . . . . . . 88
Parte I<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
7
Capítulo 1<br />
Resolución de Problemas<br />
función BÚSQUEDA-ÁRBOLES(problema,frontera) devuelve una solución o fallo<br />
frontera ← INSERTA(HACER-NODO(ESTADO-INICIAL[problema]),frontera)<br />
hacer<br />
si VACIA(frontera) entonces devolver fallo<br />
nodo ← BORRAR-PRIMERO(frontera)<br />
si TEST-OBJETIVO[problema] aplicado al ESTADO[nodo] es cierto<br />
entonces devolver SOLUCION(nodo)<br />
frontera ← INSERTA-TODO(EXPANDIR(nodo,problema),frontera)<br />
Function BÚSQUEDA-ÁRBOLES(problema,frontera)<br />
función EXPANDIR(nodo,problema) devuelve un conjunto de nodos<br />
sucesores ← conjunto vacío<br />
para cada (acción, resultado) en SUCESOR[problema](ESTADO[nodo]) hacer<br />
s ← un nuevo NODO<br />
ESTADO[s] ← resultado<br />
NODO-PADRE[s] ← nodo<br />
ACCIÓN[s] ← acción<br />
COSTO-CAMINO[s] ←<br />
COSTO-CAMINO[nodo]+COSTO-INDIVIDUAL(nodo,acción,s)<br />
PROFUNDIDAD[s] ← PROFUNDIDAD[nodo] + 1<br />
añadir s a sucesores<br />
devolver sucesores<br />
Function EXPANDIR(nodo,problema)<br />
1.1. Estrategias de búsqueda en grafos: heurísticas<br />
Definición 1.1 Llamaremos estado a la configuración <strong>del</strong> problema en un momento determinado.<br />
Definición 1.2 Llamaremos nodo al conjunto formado por el estado <strong>del</strong> problema, el padre<br />
<strong>del</strong> nodo, la profundidad <strong>del</strong> mismo, el coste asociado con él y la acción que lo produjo.<br />
Definición 1.3 Llamaremos conjunto de cerrados al conjunto de nodos que ya han sido<br />
estudiados.<br />
9
10 Capítulo 1. Resolución de Problemas<br />
función BÚSQUEDA-GRAFOS(problema,frontera) devuelve una solución o fallo<br />
cerrado ← conjunto vacío<br />
frontera ← INSERTA(HACER-NODO(ESTADO-INICIAL[problema]),frontera)<br />
hacer<br />
si VACIA(frontera) entonces devolver fallo<br />
nodo ← BORRAR-PRIMERO(frontera)<br />
si TEST-OBJETIVO[problema](ESTADO[nodo]) es cierto<br />
entonces devolver SOLUCION(nodo)<br />
si ESTADO[nodo] no está en cerrado entonces<br />
añadir ESTADO[nodo] a cerrado<br />
frontera ← INSERTA-TODO(EXPANDIR(nodo,problema),frontera)<br />
Function BÚSQUEDA-GRAFOS(problema,frontera)<br />
Definición 1.4 Llamaremos conjunto de abiertos o frontera al conjunto de nodos que<br />
han sido expandidos, pero que aún no han sido estudiados.<br />
En árboles no existen nodos repetidos y es por esto que no existe el conjunto de cerrados,<br />
ni se comprueba este hecho. En grafos, sin embargo, si a un nodo se llega por varios caminos,<br />
nos quedamos siempre con un solo nodo: el mejor.<br />
Los nodos internos de una estructura de árbol expandido 1 pertenecen siempre a cerrados,<br />
mientras que las hojas pertenecen a la frontera (salvo aquellas hojas que no son solución, las<br />
cuales también estarán en el conjunto de cerrados).<br />
1.1.1. Búsqueda primero el mejor<br />
Para añadir información heurística, ordenamos la frontera según una función f(n) 2 que<br />
mide el costo necesario para llegar hasta la solución. Así, en cada paso <strong>del</strong> algoritmo, tomamos<br />
el primer nodo de la lista (aquel que menor valor de f tenga).<br />
Esta función f(n) se compone total o parcialmente de otra función h(n) (llamada función<br />
heurística), que siempre cumple que h(objetivo) = 0. Además, dicha función f(n) se va<br />
adaptando según se resuelve el problema (la función de costo uniforme, por ejemplo, no).<br />
Las estrategias de búsqueda vistas en cursos anteriores (profundidad, anchura, costo uniforme,<br />
etc.) no son más que un caso particular de la Búsqueda Primero el Mejor.<br />
Definición 1.5 Diremos que un algoritmo es completo si siempre devuelve una solución,<br />
cuando ésta existe.<br />
Definición 1.6 Diremos que un algoritmo es admisible si siempre devuelve una solución<br />
óptima, cuando ésta existe.<br />
Definición 1.7 Llamaremos función heurística a aquella función h que cumple que<br />
h(n) ≤ h ∗ (n),<br />
∀ n<br />
(siendo h ∗ la función heurística óptima y h una estimación).<br />
Nota.- Nosotros vamos a suponer que la expansión de un nodo es siempre completa<br />
y que la información heurística “sólo” sirve para decidir qué nodo (de entre<br />
los expandidos) debemos estudiar.<br />
1 El árbol que resulta de expandir un grafo<br />
2 Donde n representa a un nodo cualquiera
1.1 Estrategias de búsqueda en grafos: heurísticas 11<br />
Búsqueda Primero el Mejor Avaro<br />
Para este tipo de búsqueda la función f se define como<br />
f(n) = h(n),<br />
Ejemplo 1.1 Sea el grafo de la figura 1.1 que representa un mapa de carreteras entre ciudades.<br />
Nuestro objetivo es buscar el mejor camino entre la ciudad A y la ciudad B.<br />
∀ n<br />
Figura 1.1: Grafo de mapa de carreteras<br />
Para ello tomamos como función heurística la distancia en línea recta desde un nodo en<br />
concreto hasta la solución. A continuación se observan los valores de h para cada nodo n:<br />
n h(n) n h(n) n h(n) n h(n) n h(n)<br />
A 366 B 0 C 160 D 242 E 161<br />
F 176 G 77 H 151 I 266 L 244<br />
M 241 N 234 O 380 P 100 R 193<br />
S 253 T 329 U 80 V 199 Z 374<br />
Esta función es claramente admisible, pues, por la propiedad triangular, se tiene que h(n) <<br />
a + b, siendo a y b dos lados cualesquiera que formen junto con h(n) un triángulo. Y, en el<br />
extremo, podría ocurrir que h(n) = h ∗ (n) (si existiera un camino directo entre A y B).<br />
En la figura 1.2 se muestra el árbol expandido correspondiente a aplicar la búsqueda primero<br />
el mejor avaro, así como la evolución de la frontera en cada paso <strong>del</strong> algoritmo.<br />
Figura 1.2: Búsqueda Primero Mejor Avaro<br />
Tras ver este ejemplo, podemos comprobar que la Búsqueda Primero el Mejor Avaro no es<br />
completa, pues podría entrar en un ciclo sin fin. Tampoco se trata de un algoritmo admisible.
12 Capítulo 1. Resolución de Problemas<br />
1.1.2. Búsqueda A*<br />
La función heurística para este tipo de búsquedas se define como<br />
f(n) = g(n) + h(n),<br />
∀ n<br />
donde:<br />
g(n) es el costo real <strong>del</strong> camino recorrido hasta el nodo n.<br />
h(n) es una estimación <strong>del</strong> costo <strong>del</strong> camino desde el nodo n hasta el nodo objetivo.<br />
f(n) es una estimación <strong>del</strong> costo <strong>del</strong> camino desde el nodo inicial hasta el nodo objetivo,<br />
pasando por el nodo n.<br />
Una función f definida de esta manera es admisible, puesto que, por la componente g,<br />
se evita entrar en ciclos y se realiza una búsqueda en anchura. Así, una función f admisible<br />
hace que un algoritmo A sea admisible y completo.<br />
Ejemplo 1.2 Siguiendo el enunciado <strong>del</strong> ejemplo anterior, la figura 1.3 muestra ahora el<br />
árbol expandido resultado de aplicar el algoritmo A*, así como la evolución de la frontera en<br />
cada paso <strong>del</strong> algoritmo.<br />
Figura 1.3: Búsqueda A*<br />
Supongamos un nodo G, no óptimo, con h(G) = 0 y c ∗ solución óptima. Entonces se<br />
cumple que:<br />
f(G) = g(G) + h(G) = g(G) > c ∗<br />
Supongamos ahora un nodo n, perteneciente al camino óptimo. Entonces tenemos lo<br />
siguiente:<br />
f(n) = g(n) + h(n) ≤ c ∗ y f(n) ≤ c ∗ < f(G)<br />
Por lo tanto, queda demostrado que el hecho de que f sea admisible implica que siempre<br />
se estudiará cualquier nodo <strong>del</strong> camino óptimo antes que otro nodo objetivo no óptimo (como<br />
ocurre en el ejemplo 1.2, en el que el nodo objetivo B no se estudia en cuanto aparece en la<br />
estructura, sino cuando realmente es solución óptima).
1.1 Estrategias de búsqueda en grafos: heurísticas 13<br />
También podemos afirmar que si la función heurística es admisible y se trabaja con estructura<br />
de grafos, el primer nodo que entre en cerrados será siempre mejor que cualquier<br />
otro nodo igual que ése, que aparezca después de él.<br />
Sin embargo, determinar si h(n) ≤ h ∗ (n), ∀ n es un problema intratable; y por lo tanto<br />
definimos las dos siguientes propiedades sobre funciones heurísticas.<br />
Definición 1.8 Una función heurística se dice que es monótona si cumple que:<br />
h(n) ≤ c(n, a, n ′ ) + h(n ′ ),<br />
∀ n, n ′ sucesores inmediatos<br />
donde c(n, a, n ′ ) es el costo asociado a la acción a que hace pasar <strong>del</strong> nodo n al n ′ (sucesores<br />
inmediatos).<br />
Definición 1.9 Una función heurística se dice que es consistente si cumple que:<br />
h(n) ≤ K(n, n ′ ) + h(n ′ ), ∀ n, n ′<br />
donde K(n, n ′ ) es el costo asociado al camino que une n y n ′ al aplicar una secuencia de<br />
acciones.<br />
Proposición 1.1 Una función heurística que sea o bien monótona, o bien consistente es una<br />
función admisible y, por tanto, con ellas se encuentra la solución óptima.<br />
Nota.- ¡Ojo! Estas propiedades, que son equivalentes entre sí, no se pueden<br />
comprobar si no se conoce la estructura <strong>del</strong> problema (árbol, grafo, árbol YO,...).<br />
En ocasiones será interesante obviar la condición de optimalidad y para ello, en vez de<br />
emplear funciones admisibles que cumplan h(n) ≤ h ∗ (n) ∀ n, emplearemos funciones e-<br />
admisibles que cumplan<br />
h(n) ≤ h ∗ (n) + e ∀ n<br />
Figura 1.4: Función heurística e-admisible<br />
Una función e-admisible proporciona soluciones e-óptimas (con las que se puede conocer<br />
el error cometido al encontrar una solución no óptima).<br />
Pero, como decíamos antes, h ∗ (n) es muy difícil de conocer y por ello hemos introducido<br />
las propiedades de monotonía y consistencia.<br />
h(n) h(n ′ ) + c(n, n ′ )<br />
pero<br />
h(n) ≤ h(n ′ ) + c(n, n ′ ) + e
14 Capítulo 1. Resolución de Problemas<br />
1.1.3. Búsqueda con memoria acotada<br />
La búsqueda A* sigue adoleciendo <strong>del</strong> problema de la explosión combinatoria (se generan<br />
nodos según una función exponencial), por lo que se consume rápidamente la memoria<br />
disponible.<br />
Búsqueda A* con profundidad iterativa (A*PI)<br />
En este algoritmo, cada iteración es una búsqueda primero en profundidad, igual que en<br />
cualquier búsqueda con profundidad iterativa.<br />
Sin embargo, la búsqueda primero en profundidad se modifica para que utilice un límite<br />
de costo f(n) en vez <strong>del</strong> tradicional límite de profundidad.<br />
De este modo en cada iteración se expanden todos los nodos que están dentro <strong>del</strong> contorno<br />
de f.<br />
Búsqueda Primero Mejor Recursiva (BPMR)<br />
función BÚSQUEDA-PRIMERO-MEJOR-RECURSIVA(problema) devuelve una<br />
solución o fallo<br />
BPMR(problema,HACER-NODO(ESTADO-INICIAL[problema]),∞)<br />
Function BÚSQUEDA-PRIMERO-MEJOR-RECURSIVA(problema)<br />
función BPMR(problema,nodo,f límite) devuelve solución o fallo y nuevo límite<br />
f-costo<br />
si TEST-OBJETIVO[problema](estado) entonces devolver nodo<br />
sucesores ← EXPANDIR(nodo,problema)<br />
si sucesores está vacío entonces devolver fallo,∞<br />
para cada s en sucesores hacer<br />
f[s] ← max(g(s)+h(s),f[nodo])<br />
repetir<br />
mejor ← el nodo con el f-valor más pequeño de sucesores<br />
si f[mejor] > f límite entonces devuelve fallo,f[mejor]<br />
alternativa ← el f-valor segundo más pequeño entre los sucesores<br />
resultado,f[mejor] ← BPMR(problema,mejor,min(f límite,alternativa))<br />
si resultado ≠ fallo entonces devolver resultado<br />
Function BPMR(problema,nodo,f límite)<br />
Ejemplo 1.3 En la figura 1.5 se muestra el árbol expandido resultado de aplicar el algoritmo<br />
BÚSQUEDA-PRIMERO-MEJOR-RECURSIVA al ejemplo de siempre.<br />
La crítica a este método es que sólo emplea un número para representar la bondad de<br />
una rama.<br />
Búsqueda A* con memoria acotada simplificada (A*MS)<br />
Se ejecuta el algoritmo A* tal cual. Si la memoria se agota antes de encontrar la solución,<br />
se elimina el peor nodo según su función heurística y se introduce el nuevo.<br />
Ejemplo 1.4 En la figura 1.6 se muestra la evolución <strong>del</strong> árbol expandido resultado de aplicar<br />
el algoritmo de búsqueda A* con memoria acotada simplificada al ejemplo de siempre.
1.1 Estrategias de búsqueda en grafos: heurísticas 15<br />
Figura 1.5: Búsqueda Primero el Mejor Recursiva<br />
Figura 1.6: Búsqueda A* con memoria acotada simplificada (A*MS)
16 Capítulo 1. Resolución de Problemas<br />
1.2. Estrategias de Búsqueda en Grafos YO: Heurísticas<br />
Se dice que un problema es descomponible si se puede descomponer en un conjunto de<br />
subproblemas independientes más sencillos; y es en estos casos en los que una representación<br />
<strong>del</strong> problema por reducción es la más apropiada.<br />
Los árboles YO, empleados en la representación por reducción, son aquellos en los que<br />
cada nodo representa un subproblema simple (nodo O) o un conjunto de subproblemas a<br />
resolver (nodo Y).<br />
Un nodo que no se descompone o simplifica se llama nodo terminal. Un nodo terminal<br />
con solución se corresponde con un problema primitivo y se llama Primitiva.<br />
Si al aplicar un operador se produce un conjunto de subproblemas solución alternativos,<br />
entonces se genera un nodo O. Si por el contrario se produce un conjunto de subproblemas<br />
que deben ser resueltos necesariamente, entonces se produce un nodo Y.<br />
Un nodo de un árbol YO tiene solución (es resoluble) si se cumple alguna de las siguientes<br />
condiciones:<br />
1. Es un nodo primitiva<br />
2. Es un nodo no terminal de tipo Y y sus sucesores son todos resolubles.<br />
3. Es un nodo no terminal de tipo O y alguno de sus sucesores es resoluble.<br />
En un árbol YO puro cada nodo o bien es Y, o bien es O.<br />
Figura 1.7: Árbol YO con la profundidad de cada nodo<br />
Figura 1.8: Árbol YO no puro<br />
Trataremos los grafos YO como hipergrafos y los arcos como hiperarcos, conectores que<br />
conectan un nodo con varios nodos o k-conectores.<br />
Un hipergrafo que sólo contiene 1-conectores es un grafo ordinario.<br />
Con representación mediante estados se necesita conocer el estado inicial, los operadores<br />
y el estado final. Con representación mediante reducción, por otra parte, se necesita saber el<br />
nodo distinguido, los operadores y las primitivas.<br />
La solución en este tipo de problemas es un subgrafo que una el nodo distinguido con<br />
todos o algunos de los nodos primitiva.<br />
Supondremos, para simplificar, que el hipergrafo no tiene ciclos.
1.2 Estrategias de Búsqueda en Grafos YO: Heurísticas 17<br />
Figura 1.9: Hipergrafo o grafo YO<br />
Figura 1.10: Soluciones <strong>del</strong> Hipergrafo de la figura 1.9<br />
Definición 1.10 Vamos a designar como G ′ a un grafo solución desde el nodo n al conjunto<br />
N (conjunto de nodos primitiva) dentro de un grafo G.<br />
Si n es un elemento de N, G ′ consta sólo de n.<br />
En otro caso:<br />
• Si n tiene un k-conector que parte de él dirigido a los nodos n 1 , n 2 , . . . , n k tal que<br />
haya un grafo solución para cada n i hasta N, entonces G ′ consta:<br />
<strong>del</strong> nodo n, <strong>del</strong> k-conector, de los nodos n 1 , n 2 , . . . , n k más los grafos solución desde<br />
cada n i hasta N.<br />
• En otro caso, no hay grafo solución de n a N.<br />
Costo asociado al grafo solución de n a N: K(n, N)<br />
Si n es un elemento de N, K = 0<br />
En otro caso<br />
• Si n tiene un k-conector que parte de él dirigido a los nodos n 1 , n 2 , . . . , n k en el<br />
grafo solución entonces<br />
siendo c k el costo <strong>del</strong> k-conector.<br />
K(n, N) = c k +<br />
k∑<br />
K(n i , N)<br />
i=1
18 Capítulo 1. Resolución de Problemas<br />
Ejemplo 1.5 Si c k = k:<br />
Para la solución 1:<br />
K(n 0 , N) = 1 + K(n 1 , N) = 1 + 1 + K(n 3 , N) = 1 + 1 + 2 + K(n 5 , N) + K(n 6 , N) =<br />
1+1+2+2+K(n 7 , N)+K(n 8 , N)+2+K(n 7 , N)+K(n 8 , N) = 1+1+2+2+0+0+2+0+0 = 8<br />
Para la solución 2:<br />
K(n 0 , N) = 2 + K(n 4 , N) + K(n 5 , N) = 2 + 1 + K(n 5 , N) + 2 + K(n 7 , N) + K(n 8 , N) =<br />
2 + 1 + 2 + K(n 7 , N) + K(n 8 , N) + 2 + 0 + 0 = 2 + 1 + 2 + 0 + 0 + 2 + 0 + 0 = 7<br />
1.2.1. Características de las funciones de evaluación para grafos YO<br />
Llamaremos grafo solución óptimo a aquel grafo solución que tenga costo mínimo. Dicho<br />
costo está denotado por h ∗ (n), pero, como ya sabemos, este valor es muy difícil de conocer y<br />
por lo tanto tenemos que estimarlo.<br />
Para buscar en un grafo YO es necesario hacer tres cosas en cada paso:<br />
1. Atravesar el grafo empezando por el nodo inicial y siguiendo el mejor camino actual,<br />
acumulando el conjunto de nodos que van en ese camino y aún no se han expandido.<br />
2. Coger uno de estos nodos no expandidos y expandirlo. Añadir sus sucesores al grafo y<br />
calcular h para cada uno de ellos.<br />
3. Cambiar la h estimada <strong>del</strong> nodo recientemente expandido para reflejar la nueva información<br />
proporcionada por sus sucesores. Propagar este cambio hacia atrás a través <strong>del</strong><br />
grafo. Para cada nodo que se visita mientras se va avanzando en el grafo, decidir cuál<br />
de sus conectores es más prometedor y marcarlo como parte <strong>del</strong> mejor grafo solución<br />
parcial actual. Esto puede hacer que dicho grafo solución parcial cambie.<br />
Ejemplo 1.6 En la figura 1.11 se muestra un ejemplo <strong>del</strong> proceso que acabamos de describir.<br />
Figura 1.11: Ejemplo de búsqueda <strong>del</strong> grafo solución óptimo<br />
Nota.- En los nodos Y es aconsejable estudiar primero aquellos sucesores con<br />
mayor valor de función heurística, pues si el nodo Y que estamos estudiando<br />
finalmente no pertenecerá al grafo solución óptimo, lo descartaremos antes de<br />
esta manera.
1.2 Estrategias de Búsqueda en Grafos YO: Heurísticas 19<br />
1.2.2. Búsqueda mejor nodo para grafos YO<br />
Proposición 1.2 Si h(n) es admisible (h(n) ≤ h ∗ (n), ∀ n) la solución encontrada será siempre<br />
óptima.<br />
Algoritmo A (YO) ⇒ f(n) = g(n) + h(n).<br />
Algoritmo A* (YO*) ⇒ f(n) = g(n) + h(n) y h(n) admisible.<br />
Definición 1.11 h(n) es monótona si cumple que:<br />
k∑<br />
h(n) ≤ c k + h(n i ),<br />
i=1<br />
∀ n<br />
Proposición 1.3 Recordemos que si n es solución, entonces h(n) = 0. Y por lo tanto, si<br />
h(n) es monótona, entonces es admisible.<br />
Ejemplo 1.7 Dado el grafo de la figura 1.12 (en el que cada nodo va acompañado de su<br />
valor de h(n)), observamos que la función h(n) no es monótona, pues se cumple que<br />
h(G) c + h(I) ≡ 5 1 + 1<br />
Figura 1.12: Grafo YO con h(n) no monótona<br />
Ejemplo 1.8 En la figura 1.13 se muestra el árbol solución resultado de aplicar el algoritmo<br />
YO* al grafo de la figura 1.12, pero propagando los nuevos valores heurísticos sólo a través<br />
de los conectores marcados.<br />
El orden de expansión está indicado por el número dentro <strong>del</strong> círculo y una X significa<br />
que ese nodo ha sido resuelto.<br />
El costo de esta solución es 9.
20 Capítulo 1. Resolución de Problemas<br />
función YO*(problema) devuelve grafo solución<br />
locales: G, G ′ grafos<br />
G grafo vacío<br />
G ← G+{inicio}<br />
costo(inicio)←h(inicio)<br />
si inicio∈TERMINAL entonces inicio marcado resuelto<br />
repetir hasta inicio marcado resuelto o costo(inicio) > futilidad<br />
Construir G ′ ⊆ G con los conectores marcados<br />
nodo∈frontera(G ′ )<br />
si no hay ningún sucesor en EXPANDIR(nodo) entonces costo(nodo)=futilidad<br />
en otro caso ∀ sucesor∈EXPANDIR(nodo) hacer<br />
G ← G+{sucesor}<br />
si sucesor∈TERMINAL entonces sucesor marcado resuelto y costo(sucesor)=0<br />
si sucesor/∈TERMINAL y no estaba en G entonces costo(sucesor)=h(sucesor)<br />
S={nodo} (S conjunto de nodos que se han marcado resuelto o cambiado su costo)<br />
repetir hasta S vacío<br />
actual∈S de modo que ningún descendiente en G de actual esté en S<br />
S ← S−{actual}<br />
para cada k-conector de actual {n i1 , n i2 , . . . , n ik } calcular<br />
costo i (actual) = c + costo(n i1 ) + · · · + costo(n ik )<br />
costo(actual) ← min i costo i (actual)<br />
marcar conector por el que se ha obtenido ese mínimo (borrar otra marca previa)<br />
si todos los sucesores a través de ese conector están etiquetados como resueltos<br />
entonces etiquetar como resuelto actual<br />
si actual se ha etiquetado como resuelto o se ha cambiado su costo<br />
entonces propagar esa información hacia el principio <strong>del</strong> grafo y<br />
S ← S+{antecesores de actual}<br />
Function YO*(problema)
1.2 Estrategias de Búsqueda en Grafos YO: Heurísticas 21<br />
Figura 1.13: Solución al grafo de la figura 1.12 propagando por conectores marcados<br />
Ejemplo 1.9 En la figura 1.14 se muestra el árbol solución óptimo resultado de aplicar el<br />
algoritmo YO* al grafo de la figura 1.12, propagando los nuevos valores heurísticos a todos<br />
los antecesores.<br />
El orden de expansión está indicado por el número dentro <strong>del</strong> círculo y una X significa<br />
que ese nodo ha sido resuelto.<br />
Figura 1.14: Solución al grafo de la figura 1.12 propagando por todos los antecesores<br />
El costo de esta solución es 7.<br />
Como conclusión podemos decir que:<br />
Si h(n) es admisible, no es necesario propagar los valores heurísticos a todos los antecesores<br />
para encontrar la solución óptima, sino que basta con propagarlos por los conectores<br />
marcados.<br />
Sin embargo, si h(n) no es admisible, es necesario propagar los valores a todos los antecesores<br />
si se quiere encontrar la solución óptima (en caso de que exista).<br />
Ejemplo 1.10 Dado el grafo de la figura 1.15 (en el que cada nodo va acompañado de su<br />
valor de h(n)), observamos que la función h(n) ahora sí es monótona.<br />
En la figura 1.16 se muestra el grafo solución óptimo resultado de aplicar el algoritmo<br />
YO* propagando los nuevos valores heurísticos sólo por los conectores marcados.
22 Capítulo 1. Resolución de Problemas<br />
Figura 1.15: Grafo YO con h(n) monótona<br />
Figura 1.16: Solución al grafo de la figura 1.15 propagando por conectores marcados<br />
Ya vimos cómo calcular el costo de un grafo solución, y vimos que en ocasiones un arco<br />
tenía que contabilizarse más de una vez y en otras ocasiones no.<br />
Ejemplo 1.11 Dado el grafo YO de la figura 1.17, en la figura 1.18 se muestran dos posibles<br />
soluciones.<br />
Figura 1.17: Grafo YO con varias soluciones con distintos costos<br />
Si tratamos con un problema físico (por ejemplo, soldar un circuito) tendremos que<br />
costo 1 = 7 y costo 2 = 9, y la solución óptima es la 1.<br />
Pero si tratamos con un problema lógico (por ejemplo, resolver una integral) tendremos<br />
que costo 1 = 7 y costo 2 = 6, y la solución óptima es la 2.
1.3 Funciones Heurísticas 23<br />
Figura 1.18: Soluciones al Grafo YO de la figura 1.17<br />
1.3. Funciones Heurísticas<br />
1.3.1. Efecto de la precisión heurística en el rendimiento<br />
Vamos a tratar sobre el problema <strong>del</strong> 8-puzzle.<br />
Ejemplo 1.12<br />
7 2 4<br />
5 6<br />
8 3 1<br />
Estado Inicial<br />
26 pasos<br />
−→<br />
1 2<br />
3 4 5<br />
6 7 8<br />
Estado Final<br />
El coste medio para resolver este problema con estados inicial y final aleatorios es de 22<br />
pasos.<br />
El factor de ramificación medio es 3. En una búsqueda exhaustiva se expanden 3 22 nodos.<br />
⎫<br />
h 1 ≡ Número de piezas mal colocadas h 1 (EI) = 8<br />
⎪⎬<br />
f(n) = g(n) + h(n)<br />
h ≤ h<br />
h 2 ≡ Distancia de Manhattan h 2 (EI) = 18<br />
∗<br />
⎪⎭<br />
h 1 y h 2 son admisibles<br />
En el ejemplo anterior se tiene que h 1 (n) ≤ h 2 (n) ∀ n y se dice que h 2 domina a h 1 .<br />
Además también se cumple que h 1 (n) ≤ h 2 (n) ≤ h ∗ ⇒ h 2 es mejor que h 1 porque se acerca<br />
más a h ∗ .<br />
Definición 1.12 Factor de ramificación eficaz: b ∗ .<br />
Sea N el número de nodos generados por un algoritmo A ∗ y sea la longitud de la solución<br />
d, entonces b ∗ es el factor de ramificación que un árbol uniforme de profundidad d debe tener<br />
para contener N + 1 nodos.<br />
Es decir<br />
N + 1 = 1 + b ∗ + (b ∗ ) 2 + · · · + (b ∗ ) d<br />
Vamos a realizar un estudio comparativo en el que generamos 1200 8-puzzles con solución<br />
de longitud 2, 4, 6, ..., 22, 24 (100 problemas de cada tipo). Por un lado los resolveremos con<br />
Profundidad Iterativa (BPI) y por otro lado mediante una búsqueda A ∗ con las funciones h 1<br />
y h 2 .
24 Capítulo 1. Resolución de Problemas<br />
Costo de la Búsqueda Factor de Ramificación Eficaz<br />
d BPI A ∗ (h 1 ) A ∗ (h 2 ) BPI A ∗ (h 1 ) A ∗ (h 2 )<br />
2 10 6 6 2’45 1’79 1’79<br />
4 112 13 12 2’87 1’48 1’45<br />
6 680 20 18 2’73 1’34 1’30<br />
8 6384 39 28 2’80 1’33 1’24<br />
10 47127 93 39 2’79 1’38 1’22<br />
12 3644305 227 73 2’78 1’42 1’24<br />
14 - 539 113 - 1’44 1’23<br />
16 - 1301 211 - 1’45 1’25<br />
18 - 3056 363 - 1’46 1’26<br />
20 - 7276 676 - 1’47 1’27<br />
22 - 18094 1219 - 1’48 1’28<br />
24 - 39135 1641 - 1’48 1’26<br />
Como conclusiones <strong>del</strong> estudio podemos afirmar que:<br />
1. A ∗ es mucho mejor que BPI<br />
2. h 2 es mejor que h 1 porque A ∗ (h 2 ) ≤ A ∗ (h 1 ) y b ∗ h 2<br />
≤ b ∗ h 1<br />
Nota.- Obsérvese que si se utilizara h ∗ siempre tendríamos que b ∗ = 1, es decir,<br />
encontraría la solución directamente en un número de pasos igual a la longitud<br />
de la solución.<br />
1.3.2. Inventando funciones heurísticas<br />
Vamos a ver tres maneras de obtener buenas funciones heurísticas.<br />
La primera de ellas hace uso de un procedimiento que nos permite averiguar funciones<br />
heurísticas admisibles (no necesariamente eficientes), y que consiste en resolver el problema<br />
relajando alguna de las condiciones <strong>del</strong> problema original.<br />
No olvidemos que cuanto más se acerque h a h ∗ , más difícil será de evaluar.<br />
Ejemplo 1.13 En el problema <strong>del</strong> 8-puzzle, la casilla A se mueve a la casilla B si A es<br />
vertical u horizontal y adyacente a B y B está vacía.<br />
Tres posibles formas de relajar el problema son:<br />
1. A se mueve a B si A es vertical u horizontal y adyacente a B −→ Distancia de Manhattan<br />
2. A se mueve a B si B está vacío<br />
3. A se mueve a B −→ N o de piezas mal colocadas<br />
La segunda manera consiste en tomar varias funciones admisibles de las cuales no conocemos<br />
cuál domina sobre cuál. Si tomamos el máximo de todas ellas obtenemos una función<br />
heurística admisible mejor (o igual) que cualquiera de ellas (h = max(h 1 , h 2 , . . . , h n )), como<br />
se observa en la figura 1.19<br />
Por último, también se puede obtener una función heurística a partir de la experiencia,<br />
mediante el aprendizaje (lo veremos más a<strong>del</strong>ante).<br />
h = c 1 · x 1 + · · · + c k · x k y los coeficientes c 1 , . . . , c k se van ajustando dinámicamente a<br />
partir de la experiencia, para aproximarse cada vez más a h ∗ .
1.4 Estrategias de Búsqueda Local y Problemas de Optimización25<br />
Figura 1.19: Función admisible h = max(h 1 , h 2 , h 3 ) ≤ h ∗<br />
1.4. Estrategias de Búsqueda Local y Problemas de Optimización<br />
El problema de las 8 reinas es un problema en el que nos interesa el estado final, no el<br />
camino para llegar a él.<br />
La búsqueda local, en vez de almacenar todos los nodos estudiados hasta el momento,<br />
almacena sólo uno: el que actualmente se está estudiando.<br />
Este tipo de búsqueda es muy rápida y se suele encontrar buenas soluciones.<br />
Figura 1.20: Función Objetivo vs Espacio de Estados<br />
Definición 1.13 Máximo local. Aquel estado en el que todos sus vecinos tienen peor valor<br />
heurístico que él.<br />
Definición 1.14 Crestas. Conjunto de máximos locales próximos entre sí<br />
Definición 1.15 Meseta. Aquel estado en el que todos sus vecinos tienen peor valor heurístico<br />
que él o, a lo sumo, igual.<br />
1.4.1. Búsqueda de ascensión de colinas (mejor avara)<br />
El algoritmo de ascensión de colinas, como se puede observar en la función ASCENSIÓN-<br />
COLINAS, devuelve un máximo local.
26 Capítulo 1. Resolución de Problemas<br />
función ASCENSIÓN-COLINAS(problema) devuelve un estado que es un máximo<br />
local<br />
entradas: problema, un problema<br />
variables locales: actual, un nodo<br />
vecino, un nodo<br />
actual←HACER-NODO(ESTADO-INICIAL[problema])<br />
bucle hacer<br />
vecino←sucesor de valor más alto de actual<br />
si VALOR[vecino]≤VALOR[actual] entonces devolver ESTADO[actual]<br />
actual←vecino<br />
Function ASCENSIÓN-COLINAS(problema)<br />
Ejemplo 1.14 Sea el juego de las 8 reinas con función heurística h(n): número de jaques<br />
que se dan, directa o indirectamente.<br />
Dado el siguiente tablero inicial<br />
R<br />
R<br />
R<br />
R R R<br />
R<br />
R<br />
su valor heurístico es h = 17.<br />
Cada estado tiene 8 · 7 = 56 hijos, de los cuales tomamos siempre aquel que tenga menor<br />
valor de h.<br />
La solución devuelta no tiene por qué ser óptima, es decir, no tiene por qué cumplir que<br />
h = 0. De hecho, la solución obtenida a partir <strong>del</strong> tablero anterior es la siguiente:<br />
R<br />
R<br />
R<br />
R<br />
R<br />
R<br />
Que es un mínimo local con valor heurístico h = 1.<br />
R<br />
R<br />
Vamos a intentar ahora salir de un óptimo local para encontrar el óptimo global mediante<br />
dos maneras:<br />
1. Para superar una terraza realizamos movimientos laterales, de modo que se siguen<br />
mirando los vecinos con igual valor, hasta encontrar uno con mejor valor.<br />
El problema surge cuando no se trata de una terraza sino de una meseta, en cuyo caso<br />
el algoritmo se quedaría colgado yendo de un lado para otro.
1.4 Estrategias de Búsqueda Local y Problemas de Optimización27<br />
Para evitar esto se establece un número máximo de movimientos laterales lo suficientemente<br />
grande como para saltar terrazas y lo suficientemente pequeño como para no<br />
quedarse colgado en las mesetas.<br />
2. Búsqueda primero mejor avara con reinicio aleatorio.<br />
Si se alcanza un óptimo local, se toma otro estado inicial aleatorio y se vuelve a aplicar<br />
el algoritmo.<br />
Si p es la probabilidad de encontrar la solución óptima, necesitaremos 1 p<br />
reinicios para<br />
encontrar dicha solución.<br />
N o de pasos = Coste de iteración acertada + 1 − p<br />
p<br />
1.4.2. Búsqueda tabú<br />
· (Coste de iteración fracasada)<br />
función TABU(problema) devuelve un estado<br />
entradas: problema, un problema<br />
variables locales: actual, un nodo<br />
vecino, un nodo<br />
mejor, un nodo<br />
actual←HACER-NODO(ESTADO-INICIAL[problema])<br />
mejor←actual<br />
mejorcosto←VALOR[mejor]<br />
bucle hacer<br />
vecino←sucesor∈Candidatos N (actual)⊆ N(H,actual) que minimice<br />
VALOR(H,actual) sobre el conjunto anterior<br />
actual←vecino<br />
Actualizar H<br />
si VALOR(actual)
28 Capítulo 1. Resolución de Problemas<br />
Ejemplo 1.15 En una fábrica se produce un material compuesto por 7 elementos (numerados<br />
<strong>del</strong> 1 al 7). Cada ordenación de esos elementos tiene un valor que mide una propiedad que<br />
buscamos. No existe un estado inicial predefinido.<br />
Tomamos, por ejemplo, 2 5 7 3 4 6 1 con valor de aislamiento 10.<br />
En este caso, un vecino será una ordenación en la que se intercambian pares de elementos.<br />
En total hay 21 vecinos.<br />
El algoritmo hace uso de dos tablas. La primera de ellas es como sigue:<br />
2 3 4 5 6 7<br />
1<br />
2<br />
3<br />
4 3<br />
5<br />
En esta tabla, la casilla (i, j) indica el número de veces que<br />
6<br />
está prohibido intercambiar el elemento i y el j. En cada iteración, cada casilla se decrementa<br />
en 1. En realidad se trata de una memoria a corto plazo utilizada como historia para modificar<br />
el subconjunto de candidatos.<br />
La segunda tabla tiene tantas filas como sucesores (21 en nuestro caso) en las que se indica<br />
cuál es el incremento (o decremento) <strong>del</strong> valor de aislamiento si se producen cada uno de los<br />
intercambios. Las filas están ordenadas de mejor a peor y se puede indicar qué intercambio<br />
se escoge (mediante un *) así como los intercambios prohibidos (mediante una T 3 ).<br />
Por ejemplo, según la tabla:<br />
1 5 4 6<br />
2 7 4 4<br />
3 3 6 2<br />
4 2 3 0<br />
5 4 1 -1<br />
si se intercambian los elementos 5 y 4, se produce un incremento en el<br />
. .<br />
valor de aislamiento de 6.<br />
Los 21 sucesores serán siempre los mismos, pero en cada iteración el incremento <strong>del</strong> valor<br />
de aislamiento (y en consecuencia la ordenación de los 21 sucesores) es distinto.<br />
Iteración 1<br />
3 1 2<br />
2 3 1<br />
2 4 7 3 5 6 1 con valor de aislamiento 16<br />
3 6 -1<br />
7 1 -2<br />
6 1 -4<br />
.<br />
Iteración 2<br />
2 4 7 1 5 6 3 con valor de aislamiento 18<br />
1 3 -2 T<br />
2 3 4 5 6 7<br />
2 4 -4 *<br />
1 3<br />
7 6 -6<br />
2<br />
4 5 -7 T<br />
3<br />
5 3 -9<br />
4 2<br />
5<br />
.<br />
6<br />
La ascensión de colinas habría parado aquí, pero véase cómo prohibir el intercambio 1,3<br />
(que acaba de realizarse) diversifica la búsqueda.<br />
3 Tabú
1.4 Estrategias de Búsqueda Local y Problemas de Optimización29<br />
Iteración 3<br />
4 2 7 1 5 6 3 con valor de aislamiento 14 (mejor valor guardado = 18)<br />
4 5 6 T<br />
2 3 4 5 6 7<br />
5 3 2<br />
1 2<br />
7 1 0<br />
2 3<br />
1 3 3 T<br />
3<br />
2 6 -6<br />
4 1<br />
5<br />
.<br />
6<br />
Criterio de aspiración: Si algún vecino tabú mejora la mejor solución (no la actual) se le<br />
quita el tabú y se selecciona.<br />
Es el caso <strong>del</strong> intercambio 4, 5.<br />
Iteración 4<br />
5 2 7 1 4 6 3 con valor de aislamiento 20<br />
7 1 0<br />
4 3 -3<br />
6 3 -5<br />
5 4 -6 T<br />
2 6 -8<br />
.<br />
2 3 4 5 6 7<br />
1 1<br />
2 2<br />
3<br />
4 3<br />
5<br />
6<br />
Iteración 26<br />
1 3 6 2 7 5 4 con valor de aislamiento 12 (mejor valor guardado = 20)<br />
1 2 3 4 5 6 7<br />
1 4 3 T<br />
1 3<br />
2 4 -1<br />
2<br />
3 7 -3<br />
3 3 2<br />
1 6 -5<br />
4 1 5 1<br />
6 5 -6<br />
5 4 4<br />
.<br />
6 1 2<br />
7 2 3<br />
Esta última tabla indica, en las casillas de su mitad inferior izquierda, el número de veces<br />
que se ha usado cada intercambio de pares.<br />
Vamos a penalizar los intercambios más frecuentemente usados, restando a su incremento,<br />
su frecuencia.<br />
1 4 3 2 T<br />
2 4 -1 -6<br />
3 7 -3 -3 *<br />
1 6 -5 -5<br />
6 5 -6 -8<br />
Y ahora reordenamos la tabla según la nueva columna.<br />
.<br />
El conjunto de vecinos son 21, pero los candidatos son sólo 18, porque hay 3 que son tabú.<br />
En realidad la penalización con frecuencia, influencia, calidad, etc., se realiza desde la<br />
primera iteración.
30 Capítulo 1. Resolución de Problemas<br />
1.4.3. Búsqueda por haz local<br />
Como estado inicial se generan k estados iniciales aleatorios.<br />
Para cada estado se generan los sucesores y entre todos los sucesores, tomamos los k<br />
mejores.<br />
Si alguno de esos k es solución, se para. Y si se llega a la condición de parada extrema se<br />
devuelve la mejor solución hasta el momento.<br />
1.4.4. Algoritmo genético<br />
La diferencia con los algoritmos vistos hasta ahora es que en éstos hay una relación asexual<br />
entre los estados, mientras que en el algoritmo genético se dice que entre los estados hay una<br />
relación sexual.<br />
Hay que decidir cuántos individuos (estados) hay en cada población (conjunto de estados).<br />
Definición 1.16 Idoneidad: La función de fitness mide cómo de bueno es un individuo.<br />
Y en función de cómo de bueno sea un individuo se seleccionará para cruzarse y generar<br />
individuos para la nueva población.<br />
Los pasos que se siguen para conseguir una nueva población a partir de la actual son:<br />
Población<br />
−→<br />
Población<br />
antigua seleccionada −→ Población Población<br />
−→ −→<br />
Población<br />
cruzada mutada nueva<br />
La nueva población obtenida pasa a ser la población actual y se repite el ciclo.<br />
El cruce de individuos intensifica la búsqueda, mientras que la mutación la diversifica.<br />
Ejemplo 1.16 Vamos a estudiar el problema de las 8 reinas con el algoritmo genético.<br />
La representación de cada individuo (su fenotipo) será como sigue:<br />
I1 2 4 7 4 8 5 5 2 24 31 %<br />
Que significa:<br />
I1 es el individuo 1<br />
La 1 a reina está en la fila 2, la 2 a en la 4, la 3 a en la 7, etc.<br />
La función de fitness para este individuo vale 24, y en este caso mide el número de<br />
no-jaques.<br />
El porcentaje se calcula como<br />
h(I 1 )<br />
∑ n<br />
i=1 h(I i) · 100<br />
y representa el peso que el individuo I1 tiene en la población<br />
Su genotipo puede ser, por ejemplo: (001 011 110 011 111 100 100 001)<br />
Dependiendo de la representación escogida, así será el cruce y la mutación.<br />
La población total es la siguiente:<br />
I1 2 4 7 4 8 5 5 2 24 31 %<br />
I2 3 2 7 5 2 4 1 1 23 29 %<br />
I3 2 4 4 1 5 1 2 4 20 26 %<br />
I4 3 2 5 4 3 2 1 3 11 14 %<br />
Ahora generamos una nueva población de otros cuatro individuos con probabilidad de cruce<br />
p c = 0 ′ 2 y probabilidad de mutación p m = 0 ′ 01.<br />
Este algoritmo se emplea en problemas combinatorios y de optimización, no en problemas<br />
de cualquier camino o de mejor camino.
1.5 Estrategias de Búsqueda Online 31<br />
1.5. Estrategias de Búsqueda Online<br />
En la búsqueda off-line se conoce a priori el espacio de búsqueda, mientras que en la<br />
búsqueda on-line, éste se conoce a posteriori. Por eso también se le llama búsqueda en ambientes<br />
desconocidos.<br />
Definición 1.17 Acciones(s): Función que devuelve todas las acciones posibles a partir <strong>del</strong><br />
estado s.<br />
Definición 1.18 c(s, a, s ′ ): Función coste que devuelve el coste asociado a aplicar la acción<br />
a al estado s para pasar al s ′ . Esta función se calcula después de haber aplicado la acción a,<br />
cuando ya nos encontramos en el estado s ′ .<br />
función BPP-ONLINE(s’) devuelve una acción<br />
entradas: s’, una percepción que identifica el estado actual<br />
variables locales: resultado, una tabla indexada por la acción y el estado,<br />
inicialmente vacía<br />
noexplorados, una tabla que enumera, para cada estado visitado,<br />
las acciones todavía no intentadas<br />
nohaciatras, una tabla que enumera, para cada estado visitado,<br />
los nodos hacia atrás todavía no intentados<br />
s,a, el estado y acción previa, inicialmente nula<br />
si TEST-OBJETIVO(s’) entonces devolver parar<br />
si s’ es un nuevo estado entonces noexplorados[s’]←ACCIONES(s’)<br />
si s es no nulo entonces hacer<br />
resultado[a,s]←s’<br />
añadir s al frente de nohaciatras[s’]<br />
si noexplorados[s’] está vacío entonces<br />
si nohaciatras[s’] está vacío entonces devolver parar<br />
en caso contrario a←una acción b tal que resultado[b,s’]=POP(nohaciatras[s’])<br />
en caso contrario a←POP(noexplorados[s’])<br />
s←s’<br />
devolver a<br />
Function BPP-ONLINE(s’)<br />
Ejemplo 1.17 Dado el siguiente “laberinto”:<br />
Y U B<br />
X T N<br />
A Z V<br />
Aplicamos el algoritmo BPP-ONLINE para llegar desde A hasta B.<br />
BPP-Online(A)<br />
s, a vacíos s ′ = A<br />
noexplorados[A]=Arriba, Derecha<br />
a =Arriba, s = A {Aparece estado X}
32 Capítulo 1. Resolución de Problemas<br />
BPP-Online(X)<br />
s = A, a =Arriba s ′ = X<br />
noexplorados[X]=Abajo<br />
resultado[Arriba,A]=X<br />
nohaciatras[X]=A<br />
a =Abajo, s = X {Aparece estado A}<br />
BPP-Online(A)<br />
s = X, a =Abajo s ′ = A<br />
noexplorados[A]=Derecha<br />
resultado[Abajo,X]=A<br />
nohaciatras[A]=X<br />
a =Derecha, s = A {Aparece estado Z}<br />
BPP-Online(Z)<br />
s = A, a =Derecha s ′ = Z<br />
noexplorados[Z]=Izquierda, Arriba, Derecha<br />
resultado[Derecha,A]=Z<br />
nohaciatras[Z]=A<br />
a =Izquierda, s = Z {Aparece estado A}<br />
BPP-Online(A)<br />
s = Z, a =Izquierda s ′ = A<br />
resultado[Izquierda,Z]=A<br />
nohaciatras[A]=Z<br />
a = b tal que resultado[b,A]=nohaciatras[A]=Z<br />
a =Derecha, s = A {Aparece estado Z}<br />
BPP-Online(Z)<br />
s = A, a =Derecha s ′ = Z<br />
a =Arriba, s = Z {Aparece estado T }<br />
BPP-Online(T)<br />
s = Z, a =Arriba s ′ = T<br />
noexplorados[T]=Abajo, Arriba<br />
resultado[Arriba,Z]=T<br />
nohaciatras[T]=Z<br />
a =Abajo, s = T {Aparece estado Z}<br />
BPP-Online(Z)<br />
s = T, a =Abajo s ′ = Z<br />
resultado[Abajo,T]=Z<br />
nohaciatras[Z]=T<br />
a =Derecha, s = Z {Aparece estado V }
1.6 Estrategias en adversarios 33<br />
BPP-Online(V)<br />
s = Z, a =Derecha s ′ = V<br />
noexplorados[V]=Arriba, Izquierda<br />
resultado[Derecha,Z]=V<br />
nohaciatras[V]=Z<br />
a =Arriba, s = V {Aparece estado N}<br />
BPP-Online(N)<br />
s = V, a =Arriba s ′ = N<br />
noexplorados[N]=Arriba, Abajo<br />
resultado[Arriba,V]=N<br />
nohaciatras[N]=V<br />
a =Arriba, s = N {Aparece estado B}<br />
BPP-Online(B)<br />
s = N, a =Arriba s ′ = B<br />
ESTADO-DESTINO(B) CIERTO<br />
En este tipo de problemas el objetivo en general suele ser llegar al destino, no el camino<br />
recorrido (pensemos, por ejemplo, en un robot que apaga incendios).<br />
1.6. Estrategias en adversarios<br />
1.6.1. Juegos<br />
Supongamos dos contrincantes llamados MAX y MIN, un estado inicial con la posición<br />
<strong>del</strong> tablero y con la decisión de quién empieza. MAX y MIN juegan alternativamente.<br />
Definición 1.19 Sucesor. Movimientos legales a partir <strong>del</strong> estado actual.<br />
Definición 1.20 Test Terminal. Determina cuándo un estado es terminal.<br />
Definición 1.21 Función de Utilidad. Da un valor a cada estado terminal (se suelen usar los<br />
valores 1, 0 y -1 correspondientes a que gana MAX, empatan o gana MIN, respectivamente).<br />
Ejemplo 1.18 Juego de las 3 en raya. Nosotros somos MAX y jugamos con X, mientras que<br />
MIN juega con O.<br />
Figura 1.21: Juego de las 3 en raya
34 Capítulo 1. Resolución de Problemas<br />
Figura 1.22: Estados terminales en el juego de las 3 en raya<br />
La estrategia que vamos a usar, desde el punto de vista óptimo (es decir, suponiendo que<br />
tanto MIN como MAX<br />
⎧<br />
siempre toman la decisión óptima), es la siguiente:<br />
⎨ utilidad(n)<br />
si n es terminal<br />
Valor Minimax(n)= max<br />
⎩ s∈sucesores(n) V alor Minimax(s) si n es nodo MAX<br />
min s∈sucesores(n) V alor Minimax(s) si n es nodo MIN<br />
Figura 1.23: Estrategia MiniMax<br />
Juegos con 3 jugadores<br />
Ahora en cada nodo habrá un vector con 3 valores, correspondientes a la puntuación de<br />
cada jugador. El objetivo de cada jugador es maximizar su puntuación.<br />
Figura 1.24: Ejemplo de juego con 3 jugadores<br />
Nota.- No todos los nodos terminales tiene por qué tener la misma profundidad<br />
(ni tienen que tener una profundidad múltiplo <strong>del</strong> número de jugadores).<br />
Poda alfa-beta<br />
La poda no interfiere en la búsqueda de la solución óptima.<br />
α es el valor de la mejor alternativa (máximo valor) para MAX a lo largo <strong>del</strong> camino.<br />
β es el valor de la mejor alternativa (mínimo valor) para MIN a lo largo <strong>del</strong> camino.<br />
El orden en que se visitan los nodos influye en la poda.<br />
Véase la figura 1.25.
1.6 Estrategias en adversarios 35<br />
Figura 1.25: Poda alfa-beta<br />
1.6.2. Decisiones en tiempo real imperfectas<br />
En juegos como el ajedrez es inviable aplicar Minimax y por ello se añade una profundidad<br />
límite.<br />
Si hay dos jugadores interesa poner una profundidad límite que sea par. Si se realiza poda<br />
puede ocurrir que perdamos la solución óptima.<br />
Por lo tanto, tenemos que definir una nueva función que nos diga cómo de bueno es un<br />
estado no terminal.<br />
si TEST-CORTE(estado,profundidad)<br />
{<br />
entonces devolver EVAL(estado)<br />
UTILIDAD(n) si n es terminal<br />
EVAL(n)<br />
FUNCION HEURISTICA(n) si n es no terminal<br />
Cuanto mayor sea la profundidad de corte, evidentemente, más y mejor información<br />
heurística tendremos. Nosotros hemos supuesto que los terminales están por debajo de la<br />
profundidad límite.<br />
Ejemplo 1.19 Para el juego de las 3 en raya de la figura 1.26, se ha cortado la búsqueda a<br />
profundidad 2 (teniendo en cuenta que la profundidad de la raíz es 0).<br />
Figura 1.26: Juego de las 3 en raya con profundidad limitada<br />
Como función heurística se ha usado: f(n) = N o de filas, columnas y diagonales libres<br />
para MAX - N o de filas, columnas y diagonales libres para MIN.
36 Capítulo 1. Resolución de Problemas<br />
1.6.3. Juegos que incluyen un elemento de posibilidad<br />
Además de los nodos MAX y MIN, aparecen los nodos de posibilidad.<br />
Ejemplo 1.20 En el juego <strong>del</strong> parchís, tiramos un dado, con 1 6<br />
de probabilidades de sacar<br />
cada uno de los números <strong>del</strong> 1 al 6. Hay cuatro fichas por cada jugador.<br />
Si se limita la profundidad tiene que ser a la altura de un nodo MIN o un nodo MAX,<br />
pero no de un nodo de posibilidad.<br />
⎧<br />
utilidad(n)<br />
⎪⎨<br />
max<br />
MiniMax Esperada(n) s∈sucesores(n) MiniMax Esperado(s)<br />
min ⎪⎩ s∈sucesores(n) MiniMax Esperado(s)<br />
P (s) · MiniMax Esperado(s)<br />
∑<br />
s∈sucesores(n)<br />
si n es terminal<br />
si n es nodo MAX<br />
si n es nodo MIN<br />
si n es nodo posibilidad<br />
Figura 1.27: Ejemplo de estrategia MiniMax Esperada
Capítulo 2<br />
Representación <strong>del</strong> <strong>Conocimiento</strong>.<br />
Razonamiento<br />
Para resolver un problema, lo básico necesario es:<br />
Representación<br />
Operadores<br />
Control<br />
2.1. Representación <strong>del</strong> <strong>Conocimiento</strong> mediante Lógicas no<br />
Clásicas<br />
2.1.1. Lógicas no monótonas<br />
La lógica clásica es una lógica monótona, en la cual la incorporación de nuevo conocimiento<br />
debe ser consistente (no contradictorio). En la lógica no monótona, la incorporación de nueva<br />
información podría invalidar parte de la información previa existente.<br />
En un problema con conocimiento incompleto puede aplicarse la lógica no monótona (pero<br />
no la lógica monótona) y se aplica un razonamiento llamado “por defecto”.<br />
Ejemplo 2.1 “Juan y María yacen en el suelo muertos. Hay cristales en el suelo y agua.<br />
¿Qué ha pasado?” Solución: Juan y María son dos peces.<br />
2.1.2. Lógica de situaciones<br />
Soporta una estructura dinámica (en un momento algo puede ser cierto, y, más tarde,<br />
puede ser falso).<br />
Ejemplo 2.2 .<br />
SOBRE(B 1 , B 2 ): “B 1 está sobre B 2 ”<br />
Si quitamos B 1 de encima de B 2 , entonces ¬SOBRE(B 1 , B 2 )<br />
Estas dos sentencias no podrían coexistir en una lógica clásica. Para que sí puedan coexistir,<br />
la lógica de situaciones dice:<br />
SOBRE(B 1 , B 2 , S 1 ): “B 1 está sobre B 2 en la situación S 1 ”<br />
Y así, ¬SOBRE(B 1 , B 2 , S 2 ) también es cierto.<br />
Para pasar de una situación a otra debemos aplicar una secuencia de operadores.<br />
∀ x [SOBRE(B 1 , B 2 , S)∧¬SOBRE(x, B 3 , S) → SOBRE(x, B 3 , R(MOV ER(B 1 , B 3 ), S) )]<br />
} {{ }<br />
S ′<br />
37
38 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento<br />
Figura 2.1: Ejemplo de lógica de situaciones<br />
Este tipo de lógica se emplea en planificación<br />
2.1.3. Lógica difusa<br />
Empleada cuando se usa una notación imprecisa.<br />
Ejemplo 2.3 “Juan es joven”<br />
Muchas veces un concepto vago depende <strong>del</strong> contexto y de la subjetividad. Toda la lógica<br />
difusa está montada sobre la definición de una serie de elementos:<br />
Definición 2.1 Conjunto difuso:<br />
x ∈ A donde A es un conjunto difuso<br />
µ A (x) ∈ [0, 1], µ A es la función de pertenencia al conjunto A.<br />
La diferencia con la probabilidad es que ésta precisa de una experimentación previa antes<br />
de obtener un resultado. Con los conjuntos difusos no es necesaria experiencia previa.<br />
Figura 2.2: Función de pertenencia continua ser joven<br />
Definición 2.2 Modificadores: Definidos a partir <strong>del</strong> conjunto base.<br />
⎧<br />
⎨ µ MUY A (x) = [µ A (x)] 2<br />
µ F (A) = F [µ A (x)] µ<br />
⎩ MAS O MENOS A (x) = [µ A (x)] 1 2<br />
µ NO A (x) = 1 − µ A (x)<br />
Figura 2.3: Funciones de pertenencia µ A y µ NO A
2.1 Representación <strong>del</strong> <strong>Conocimiento</strong> mediante Lógicas no<br />
Clásicas 39<br />
En ocasiones la función de pertenencia es una función discreta.<br />
Figura 2.4: Función de pertenencia discreta ser joven<br />
Definición 2.3 Composición de conjuntos:<br />
⎧<br />
⎨<br />
µ A∗B = F ∗ (µ A (x), µ B (x))<br />
⎩<br />
1. Si A ⊆ B entonces µ A (x) ≤ µ B (x)<br />
2. µ A (x) + µ ¬A (x) = 1<br />
De aquí se deduce que<br />
µ A∪B (x) ≥ max(µ A (x), µ B (x))<br />
µ A∩B (x) ≤ min(µ A (x), µ B (x))<br />
µ ¬A (x) = 1 − µ A (x)<br />
Los operadores de Zadeh son:<br />
µ A∪B (x) = max(µ A (x), µ B (x))<br />
µ A∩B (x) = min(µ A (x), µ B (x))<br />
µ ¬A (x) = 1 − µ A (x)<br />
Pero también podríamos definir la composición como:<br />
µ A∗B (x, y) = F ∗ (µ A (x), µ B (y))<br />
µ A∪B (x) = F ∪ (µ A (x), µ B (x))<br />
µ A∩B (x) = F ∩ (µ A (x), µ B (x))<br />
µ ¬A (x) = F ¬ (µ A (x), µ B (x))<br />
Figura 2.5: Operadores de Zadeh<br />
A contiene elementos x, B contiene elementos y. Para componerlos construimos un conjunto<br />
común: el producto cartesiano de A y B.<br />
Definición 2.4 Extensión cilíndrica: Consiste en extender los conjuntos al producto cartesiano.<br />
{ µ<br />
µ(C)<br />
′ (A) si C = A × Y<br />
∀ C ⊆ X × Y<br />
0 otro caso<br />
Si hay más de un conjunto se toma el máximo.
40 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento<br />
Figura 2.6: Extensión Cilíndrica<br />
Definición 2.5 Proyección cilíndrica<br />
µ(C) = sup y {µ ′ (x, y)},<br />
∀ C<br />
En la lógica tendremos hechos simples y compuestos.<br />
Definición 2.6 Hechos simples:<br />
p : x ∈ A<br />
(µ p (x) = µ A (x))<br />
Definición 2.7 Hechos compuestos:<br />
⎫<br />
⎬<br />
p ∨ q : (x es A) ∨ (x es B)<br />
p ∧ q : (x es A) ∧ (x es B)<br />
¬p : (x es ¬A)<br />
Definición 2.8 Inferencia:<br />
⎭<br />
µ p∨q (x) ≥ max(µ p (x), µ q (x))<br />
µ p∧q (x) ≤ min(µ p (x), µ q (x))<br />
µ ¬p (x) = 1 − µ p (x)<br />
p → q : si (x es A) entonces (y es B)<br />
µ p→q (x, y) = IMP LIC(µ p (x), µ q (y)) = OR(NOT (µ p (x)), µ q (y))<br />
Modus Ponens:<br />
p → q<br />
p<br />
q<br />
µ q (y) = sup x {MP (µ p (x), µ p→q (x, y))}<br />
⎫<br />
⎬<br />
⎭<br />
µ p∨q (x) = OR(µ p (x), µ q (x))<br />
µ p∧q (x) = AND(µ p (x), µ q (x))<br />
µ ¬p (x) = NOT (µ p (x))<br />
Ejemplo 2.4 Si (el coche es viejo) entonces (el coche es ruidoso)<br />
El coche es bastante viejo.<br />
Si ahora aplicamos MP, obtenemos un modificador de ruidoso: El coche es bastante ruidoso.<br />
2.2. Representación y Razonamiento con Incertidumbre<br />
2.2.1. Representación y fuentes de incertidumbre<br />
Los elementos a la hora de resolver un problema son:<br />
Representación<br />
Operadores<br />
Control<br />
Definición 2.9 Impreciso: negación de preciso.
2.2 Representación y Razonamiento con Incertidumbre 41<br />
Definición 2.10 Preciso: Un hecho es preciso cuando su significado es equivalente a exacto,<br />
claro, ..., y concreto.<br />
Por lo tanto imprecisos son los hechos ambiguos, abstractos, no concretos o no detallados.<br />
Definición 2.11 Incierto: negación de cierto.<br />
Definición 2.12 Cierto es análogo a verdadero y seguro.<br />
Por lo tanto incierto son los hechos carentes de verdad absoluta o de seguridad de que<br />
ocurra.<br />
Ejemplo 2.5 “Algún día lloverá” Tiene gran cantidad de imprecisión, pero es muy cierta.<br />
“Mañana lloverá” es muy preciso, pero es incierto (tiene gran cantidad de incertidumbre).<br />
Nosotros trabajaremos con conocimiento preciso, aunque incierto.<br />
Ejemplo 2.6 p → q, c 1 = 0 ′ 7, donde c 1 representa el grado de certidumbre de que la regla<br />
p → q sea cierta.<br />
p e → q h c 1 = 0 ′ 7 Representación de una regla c 1 = P (h| e )<br />
p e c 2 = 0 ′ 55 Representación de un hecho c 2 = P (e)<br />
q h c 3 =? Técnica de Inferencia c 3 = P (h)<br />
Fuentes de Incertidumbre<br />
1. Situaciones en las que el universo de discurso es verdaderamente aleatorio.<br />
2. Situaciones en las que el universo de discurso es verdaderamente aleatorio aunque podríamos<br />
decir que es estrictamente aleatorio, pero por alguna razón, no hay datos suficientes.<br />
3. Situaciones en las que el conocimiento <strong>del</strong> que se dispone (o parte de él) se debe al<br />
“olfato” <strong>del</strong> observador (“yo creo que ...”).<br />
4. Situaciones en las que el conocimiento <strong>del</strong> que se dispone está representado en términos<br />
vagos.<br />
5. Situaciones en las que el conocimiento <strong>del</strong> que se dispone no es totalmente fiable.<br />
Nosotros vamos a usar la segunda fuente de incertidumbre.<br />
2.2.2. Teoría de Dempster-Shafer de la evidencia<br />
En el ejemplo de las urnas puede ocurrir que perdamos en el camino parte de la información.<br />
Ahora el resultado no será una probabilidad sino un intervalo.<br />
TDS: Teoría de Dempster-Shafer<br />
TPr: Teoría de la Probabilidad<br />
TPos: Teoría de la Posibilidad<br />
Definición 2.13 Frame de decisión θ: conjunto de hipótesis mutuamente exclusivas y exhaustivo<br />
en el cual tratamos de obtener la respuesta más adecuada mediante la concentración<br />
de sucesivas evidencias.<br />
Definición 2.14 2 θ : conjunto de todas las decisiones <strong>del</strong> frame de decisión.<br />
Definición 2.15 A: cualquier elemento <strong>del</strong> conjunto de decisión.
42 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento<br />
A las hipótesis se les llama singulares.<br />
Como en 2 θ también está el ∅, a ese ∅ se le llama hipótesis vacía y corresponde a una<br />
hipótesis totalmente falsa.<br />
Ejemplo 2.7 θ = {HEP, CIRR, P IE, P AN}<br />
A partir de las evidencias se determinará qué enfermedades hepáticas hay.<br />
Cuanto más restrictiva sea la hipótesis mejor. El complemento de A es ¬A si A ∨ ¬A = θ.<br />
Ejemplo 2.8 .<br />
A = {HEP }<br />
¬A = {CIRR, P IE, P AN}<br />
En 2 θ hay hipótesis más generales y más restrictivas. Nos interesará tomar decisiones en<br />
conjuntos de hipótesis <strong>del</strong> menor tamaño posible.<br />
Ejemplo 2.9 Es mejor tener A = {HEP }, que tener A = {HEP, CIRR}<br />
Decir A = {HEP } ≡ “Con la información que tengo puedo decir que se puede tener<br />
hepatitis”.<br />
Decir A = {HEP, CIRR} ≡ “Con la información que tengo puedo decir que se puede<br />
tener hepatitis, pero también se puede tener cirrosis”.<br />
Función de asignación básica de probabilidad<br />
Nos sirve para asignar valores a las hipótesis, según la evidencia que se tenga.<br />
m(A): cantidad de certeza que posee el elemento A (que es una hipótesis y por tanto<br />
A ∈ 2 θ , o bien A ⊆ θ), de manera que m(A) ∈ [0, 1].<br />
m : 2 θ −→ [0, 1]<br />
Se dice que m es una a.b.p (asignación básica de probabilidad) si cumple que:<br />
m(∅) = 0<br />
∑<br />
A⊆θ m(A) = 1<br />
Ejemplo 2.10 θ = {blancas, rojas}<br />
m(blancas) = 0 ′ 35<br />
m(rojas) = 0 ′ 4<br />
¿Qué pasa con el 0’25 restante? Solución: m(θ) = 0 ′ 25<br />
Construimos m<br />
1. m(∅) = 0<br />
Si una evidencia confirma una hipótesis A con un valor p, entonces<br />
2. m(A) = p<br />
m(θ) = 1 − p<br />
Si una evidencia desconfirma una hipótesis A con un valor p, entonces<br />
3. m(¬A) = p<br />
m(θ) = 1 − p<br />
A cualquier hipótesis sobre la que no haya ninguna evidencia se le da el valor 0.
2.2 Representación y Razonamiento con Incertidumbre 43<br />
Ejemplo 2.11 Se tiene una evidencia que desconfirma una hipótesis de HEP con un valor<br />
de 0’7<br />
m({CIRR, P IE, P AN}) = 0 ′ 7<br />
m(θ) = 0 ′ 3<br />
m(∗) = 0<br />
m(∅) = 0<br />
⎫<br />
⎪⎬ ∑<br />
= 1<br />
A partir de m vamos a construir las dos siguientes funciones:<br />
Credibilidad de una hipótesis A<br />
Cr(A) = ∑ B⊆A<br />
m(B)<br />
⎪⎭<br />
Plausibilidad de A<br />
P l(A) =<br />
∑<br />
B∩A≠∅<br />
m(B)<br />
Tanto Cr como P l son funciones de probabilidad.<br />
Todas las hipótesis B de la credibilidad están incluidas en las hipótesis B de la plausibilidad.<br />
Cr(A) ≤ P r(A) ≤ P l(A)<br />
|P l(A) − Cr(A)| mide la falta de información.<br />
Por lo tanto con esta teoría (que es una generalización de la probabilidad) se mide tanto<br />
incertidumbre, como falta de información.<br />
Propiedades.<br />
Cr(∅) = P l(∅) = 0<br />
Cr(θ) = P l(θ) = 1<br />
Cr(A) + P l(¬A) = 1<br />
Cr(A) + Cr(¬A) ≤ 1<br />
P l(A) + P l(¬A) ≥ 1<br />
Ejemplo 2.12 Calcular la credibilidad y plausibilidad de la hipótesis A = {CIRR, P IE, P AN}<br />
y su complemento sabiendo que:<br />
m(A) = 0 ′ 7<br />
m(θ) = 0 ′ 3<br />
m(∗) = 0<br />
m(∅) = 0<br />
Cr(A) = m(A)+m({CIRR, P IE})+m({CIRR, P AN})+m({P IE, P AN})+m({CIRR})+<br />
m({P IE}) + m({P AN}) + m({∅}) = 0 ′ 7 + 0 + · · · + 0 = 0 ′ 7<br />
P l(A) = m(A)+m({HEP, CIRR})+m({HEP, P IE})+m({HEP, P AN})+m({CIRR})+<br />
m({P IE}) + m({P AN}) + m({θ}) = 0 ′ 7 + 0 + 0 + 0 + 0 + 0 + 0 + 0 ′ 3 = 1<br />
0 ′ 7 ≤ P r(A) ≤ 1<br />
Regla de Combinación de a.b.p. de Dempster-Shafer<br />
Sean m 1 y m 2 dos a.b.p. sobre dos hipótesis.<br />
m 1 ⊕ m 2 (C k ) =<br />
∑<br />
A j ∩B j =C k<br />
m 1 (A j ) · m 2 (B j )<br />
m 1 ⊕ m 2 también es una a.b.p.<br />
m<br />
Propiedades 1 ⊕ m 2 = m 2 ⊕ m 1<br />
m 1 ⊕ (m 2 ⊕ m 3 ) = (m 1 ⊕ m 2 ) ⊕ m 3<br />
De donde se deduce que no importa el orden de combinación de la información.
44 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento<br />
Ejemplo 2.13 Sea m 1 una a.b.p. que confirma la hipótesis {HEP, CIRR} con un valor 0’6.<br />
m 1 ({HEP, CIRR}) = 0 ′ 6 m 1 (θ) = 0 ′ 4<br />
Y sea<br />
m 2 ({CIRR, P IE, P AN}) = 0 ′ 7 m 2 (θ) = 0 ′ 3<br />
m 3 ({HEP }) = 0 ′ 8 m 3 (θ) = 0 ′ 2<br />
m 1<br />
m 2<br />
{CIRR, P IE, P AN} 0 ′ 7 θ 0 ′ 3<br />
{HEP, CIRR} 0 ′ 6 {CIRR} 0 ′ 6 · 0 ′ 7 {HEP, CIRR} 0 ′ 6 · 0 ′ 3<br />
θ 0 ′ 4 {CIRR, P IE, P AN} 0 ′ 4 · 0 ′ 7 θ 0 ′ 4 · 0 ′ 3<br />
m 1 ⊕ m 2 ({CIRR}) = 0 ′ 42<br />
m 1 ⊕ m 2 ({HEP, CIRR}) = 0 ′ 18<br />
m 1 ⊕ m 2 ({CIRR, P IE, P AN}) = 0 ′ 28<br />
m 1 ⊕ m 2 ({θ}) = 0 ′ 12<br />
∑<br />
m 1 ⊕ m 2 (A) = 1<br />
A⊆θ<br />
m 1 ⊕ m 2<br />
{CIRR} 0 ′ 42 {HEP, CIRR} 0 ′ 18 {CIRR, P IE, P AN} 0 ′ 28 θ 0 ′ 12<br />
m 3<br />
{HEP } 0 ′ 8 ∅ 0 ′ 8 · 0 ′ 42 {HEP } 0 ′ 8 · 0 ′ 18 ∅ 0 ′ 8 · 0 ′ 28 {HEP } 0 ′ 8 · 0 ′ 12<br />
θ 0 ′ 2 {CIRR} 0 ′ 2 · 0 ′ 42 {HEP, CIRR} 0 ′ 2 · 0 ′ 18 {CIRR, P IE, P AN} 0 ′ 2 · 0 ′ 28 θ 0 ′ 2 · 0 ′ 12<br />
m 1 ⊕ m 2 ⊕ m 3 (∅) = 0 ′ 336 + 0 ′ 224 = 0 ′ 56 → 0<br />
m 1 ⊕ m 2 ⊕ m 3 ({HEP }) = 0 ′ 144 + 0 ′ 096 = 0 ′ 24 → 0′ 24<br />
1 − 0 ′ 56 = 0′ 545<br />
m 1 ⊕ m 2 ⊕ m 3 ({CIRR}) = 0 ′ 084 → 0′ 084<br />
0 ′ 44 = 0′ 191<br />
m 1 ⊕ m 2 ⊕ m 3 ({HEP, CIRR}) = 0 ′ 036 → 0 ′ 082<br />
m 1 ⊕ m 2 ⊕ m 3 ({CIRR, P IE, P AN}) = 0 ′ 056 → 0 ′ 127<br />
m 1 ⊕ m 2 ⊕ m 3 ({θ}) = 0 ′ 024 → 0 ′ 055<br />
Según vemos, la evidencia de θ va siendo cada vez más pequeña, según se va combinando<br />
información.<br />
Si m 1 ⊕m 2 ⊕m 3 (∅) = p ≠ 0 entonces hay que normalizar el resto de valores, dividiéndolos<br />
entre 1 − p, para que su suma sea igual a 1. Si se da esta situación es porque ha habido<br />
contradicción.<br />
Al normalizar estamos perdiendo información; y podría ocurrir que la contradicción fuera<br />
muy alta y al normalizar no se reflejara fielmente la realidad.<br />
Introducción a la Inferencia<br />
Cómo representar los hechos:<br />
⎧<br />
⎨ Simples “x es<br />
{<br />
A”<br />
Hechos<br />
“x1 es A<br />
⎩ Compuestos<br />
1 o x 2 es A 2 ” ⇒ (x 1 , x 2 ) es A 1 + A 2<br />
“x 1 es A 1 y x 2 es A 2 ” ⇒ (x 1 , x 2 ) es A 1 × A 2<br />
donde A 1 + A 2 = A 1 × A 2 = (A 1 × X 2 ) ∪ (X 1 × A 2 ), siendo X i el mundo de discurso de A i .<br />
La teoría de la evidencia permite trabajar con vaguedad, mientras que la probabilidad no<br />
puede.<br />
Cómo representar las reglas:<br />
Si x es A entonces y es B ⇒ (x 1 , x 2 ) es A + B = A × B
2.3 Representaciones Estructuradas <strong>del</strong> <strong>Conocimiento</strong> 45<br />
Ahora que sabemos representar hechos y reglas, sean un hecho y una regla con un cierto<br />
grado de incertidumbre medida con un intervalo:<br />
F : [Cr F , P l F ]<br />
R : [Cr R , P l R ]<br />
Para poder aplicar la regla de Dempster tenemos que transformar estos dos intervalos en<br />
masas de evidencia.<br />
Cr F (A) = α P L F (A) = β ≥ α<br />
m F (A) = α m F (Ā) = 1 − β<br />
m F (δ) = β − α<br />
Cr R (Ā + B) = α P l R(Ā + B) = β ≥ α<br />
m R (Ā + B) = α m R(A × ¯B) = 1 − β<br />
m R (X 1 × X 2 ) = β − α<br />
Método general de razonamiento (o inferencia)<br />
Tenemos F 1 , F 2 , . . . , F m y R 1 , R 2 , . . . , R n inciertas (cada una con su intervalo).<br />
Queremos saber la verdad de que se establezca F y su valor de incertidumbre asociado a<br />
partir de las reglas y hechos previos. Los pasos a seguir son:<br />
1. Construir una estructura Ω lo más pequeña posible que contenga F i , R j y F .<br />
Ω = X 1 × X 2 × · · · × X p p = m + n + 1<br />
2. Calcular la extensión cilíndrica de las a.b.p. m Fi y m Rj sobre Ω (para poder mezclar).<br />
3. Combinar por la regla de Dempster (se obtiene m).<br />
4. Proyectar la a.b.p. m sobre X p (que corresponde a F ).<br />
5. Calcular Cr F y P l F a partir de dicha proyección.<br />
Este método es una generalización <strong>del</strong> Modus Ponens clásico, pues si tanto los hechos<br />
como las reglas fueran ciertos (Cr = 1, P l = 1) obtendríamos conclusiones también ciertas.<br />
2.3. Representaciones Estructuradas <strong>del</strong> <strong>Conocimiento</strong><br />
2.3.1. Redes Semánticas<br />
Nos sirven para representar el conocimiento de manera que se parezca a cómo representamos<br />
nosotros el conocimiento. Es una representación parecida a la lógica, pero más visual,<br />
más gráfica.<br />
Definición 2.16 Una red semántica es una estructura de datos compuesta de nodos y “links”<br />
(arcos) y cada elemento tiene un asociado semántico.<br />
Un nodo se corresponde con un hecho, suceso, evento u objeto.<br />
Un link tiene una relación binaria entre los nodos que une:<br />
n 1<br />
r<br />
−→ n 2<br />
n 1 , n 2 : nodos<br />
r : link<br />
Representación de una red semántica generalizada<br />
Nuestro conocimiento tiene relaciones n-arias, pero sólo podemos usar relaciones binarias<br />
si queremos usar una red semántica.<br />
Ejemplo 2.14 “Juan regaló a María un libro en el parque” se trata de una relación 5-aria.<br />
Creamos un ente genérico abstracto e que relaciona todos los objetos; y a partir de él<br />
construimos todas las relaciones binarias.
46 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento<br />
Figura 2.7: Ejemplo de Red Semántica<br />
Veamos ahora cómo se representan las reglas: aparecen dos tipos de links.<br />
Conclusión −→ (Asociados a los nodos que pertenecen al consecuente de una regla).<br />
Condición (Asociados a los nodos que pertenecen al antecedente de una regla).<br />
Ejemplo 2.15 Regla: “Todo acto de dar tiene su recíproco de recibir”<br />
Tomamos el evento x<br />
Figura 2.8: Ejemplo de regla en una Red Semántica<br />
Ya tenemos dos trozos de red semántica: un hecho y una regla.<br />
Ejemplo 2.16 “Juan da un libro a María y el acto recíproco de dar es recibir”<br />
Figura 2.9: Ejemplo de Red Semántica con un hecho y una regla<br />
El link es un denota las relaciones es un, parte de, subconjunto, un tipo de. Estos tipos<br />
de links crean una red semántica jerárquica.<br />
es un<br />
es un<br />
Ejemplo 2.17 elefante −→ mamífero −→ animal<br />
Por la herencia, las propiedades <strong>del</strong> caso general las tiene el caso particular. Además estos<br />
links cumplen la propiedad transitiva.<br />
También existen links que denotan restricciones temporales: antes de, despues de, simultaneo,<br />
causa.<br />
Ejemplo 2.18 .<br />
e 1<br />
despues<br />
−→ e 2<br />
simultaneo<br />
e 1<br />
causa<br />
e 1<br />
−→ e 2<br />
−→ e 2
2.3 Representaciones Estructuradas <strong>del</strong> <strong>Conocimiento</strong> 47<br />
Ejemplo 2.19 En la figura 2.10 podemos ver un ejemplo de reglas que relacionan elementos<br />
temporales.<br />
Figura 2.10: Ejemplo de reglas que relacionan elementos temporales<br />
Inferencia<br />
Debemos tener en cuenta dos procesos:<br />
1. Unificación de nodos<br />
2. Inferencia de links<br />
Un link antecedente y uno consecuente se eliminan si son <strong>del</strong> mismo tipo y los nodos que<br />
unen son unificables entre sí.<br />
El proceso de inferencia es destructivo, por lo tanto antes de empezar hay que realizar<br />
una copia de la red semántica. La inferencia termina cuando se llega a la red semántica vacía.<br />
Por lo tanto, lo primero que hay que hacer es extraer de la base de conocimiento la<br />
información suficiente y necesaria para hacer la inferencia que nos interesa.<br />
Si usáramos la base de conocimiento completa habría que destruirla entera para poder<br />
inferir (y estaríamos destruyendo información que no haría ninguna falta para inferir lo que<br />
queremos).<br />
Ejemplo 2.20 .<br />
“Turing es humano”<br />
“Sócrates es humano”<br />
“Sócrates es griego”<br />
“Todo humano es falible”<br />
¿Hay algún griego falible?<br />
Figura 2.11: Ejemplo de inferencia en redes semánticas (1)<br />
Una pregunta es siempre el antecedente de una regla.
48 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento<br />
Figura 2.12: Ejemplo de inferencia en redes semánticas (2)<br />
x = y<br />
x = y = Socrates<br />
Figura 2.13: Ejemplo de inferencia en redes semánticas (3)<br />
Hemos llegado a la red semántica vacía (pues la información que queda no deberíamos<br />
haberla cogido desde el principio). Y concluimos que sí hay algún griego falible: x = y =<br />
Socrates<br />
2.3.2. Marcos o Frames<br />
Subimos un grado de abstracción.<br />
Las redes semánticas están muy próximas a la lógica, por lo tanto se necesita todo el<br />
conocimiento para poder inferir (si falta conocimiento no se llega a una red semántica vacía).<br />
Definición 2.17 Un frame va a ser una estructura de datos que representa un tipo entidad<br />
y consta de una colección de ranuras con un nombre cada una, denominadas slots, donde<br />
cada ranura puede rellenarse mediante valores o apuntadores a otros frames.<br />
Ejemplo 2.21 Una persona nos dice que comió muy bien ayer en un restaurante. A partir<br />
de esa información podríamos responder a preguntas como:<br />
¿Entró en el restaurante y pidió una mesa libre?<br />
¿Pagó la comida al salir?<br />
Ejemplo 2.22 Vamos a representar los frames “Empleado” y “Padre de Familia” y los vamos<br />
a instanciar los dos con la misma entidad.<br />
Figura 2.14: Ejemplo de frame “Empleado” y “Padre de Familia”
2.3 Representaciones Estructuradas <strong>del</strong> <strong>Conocimiento</strong> 49<br />
Cuando se rellena un frame (sus ranuras) se dice que está instanciado y que representa a<br />
una entidad particular.<br />
Si no se dice ningún valor para una ranura se le pone el valor por defecto (incluso puede<br />
que antes de instanciar el frame), por ejemplo, num piernas = 2.<br />
El slot Estado civil tiene valores genéricos.<br />
Cuando una entidad puede instanciar frames distintos se dice que esos frames son frames<br />
desde puntos de vista “alternativos”.<br />
Hay frames que, por la propia definición, son disjuntos (por ejemplo, Padre de Familia<br />
y No Padre de Familia). La instanciación por dos frames disjuntos de una misma entidad<br />
significa que hay un error.<br />
Los slots con el mismo nombre en dos frames que instancian la misma entidad, deben<br />
tener el mismo valor (salvo excepciones, como Disposición); en otro caso se renombra el slot.<br />
Hay slots que tienen valores restringidos (por ejemplo, la edad en el frame Empleado debe<br />
estar entre 18 y 65).<br />
Cuando se nos da cierta información, buscamos aquel frame que mejor se ajuste (mayor<br />
grado de emparejamiento) a esa información, y a partir de ese momento ese frame instanciado<br />
representa a esa entidad.<br />
Propiedades genéricas de las ranuras.<br />
Propiedad asociada con un conjunto entidad de tal forma que cada miembro de ese<br />
conjunto posee esa propiedad.<br />
Ejemplo 2.23 En el frame “Persona”, propiedades genéricas son: sangre caliente, tiene<br />
madre, un corazón, ...<br />
Un valor por defecto es aquel que se espera encontrar en casos normales. Las ranuras<br />
con valores por defecto pueden conducir a errores.<br />
Ejemplo 2.24 “Juan y María yacen muertos en el suelo. Hay un charco de agua,...”<br />
Cometemos un error al presuponer que Juan y María son personas, pues en realidad<br />
son dos peces.<br />
Condiciones de ranura son condiciones que restringen los valores con los que se va a<br />
rellenar.<br />
Representación jerárquica de los frames<br />
Figura 2.15: Ejemplo de jerarquía de frames<br />
−→ es equivalente a la relación es un. Todos los frames con el mismo padre son hermanos<br />
y heredan las propiedades de éste.
50 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento<br />
Métodos de inferencia<br />
1. Existencia inferida<br />
Tenemos una entidad E (información recibida) que se desconoce de qué tipo es.<br />
Emparejamos E con el frame F que mejor se adapte a E, pero con un grado de creencia.<br />
Dicho grado de creencia vendrá dado por el grado de emparejamiento entre E y F .<br />
2. Propiedades genéricas inferidas<br />
Una vez emparejados E y F , a E se le asocian todas las propiedades genéricas <strong>del</strong> frame<br />
F con un grado de creencia (dependiente <strong>del</strong> grado de emparejamiento y <strong>del</strong> grado de<br />
creencia de la ranura de la propiedad genérica).<br />
3. Valores por defecto inferidos<br />
Una vez emparejados E y F , si alguna de las ranuras de valores por defecto <strong>del</strong> frame<br />
no se han rellenado por la entidad, toman el valor por defecto <strong>del</strong> frame.<br />
El grado de creencia de esos valores por defecto depende <strong>del</strong> grado de emparejamiento<br />
y <strong>del</strong> grado de creencia de esas ranuras con valores por defecto.<br />
4. Reconocimiento de situaciones anormales<br />
Rellenar ranuras con valores no esperados o no rellenar ranuras que es importante<br />
rellenarlas puede ser un error <strong>del</strong> sistema.<br />
Ejemplo 2.25 “Una persona tiene 5 piernas”<br />
“Un empleado tiene 8 años”<br />
5. Inferencia por analogía<br />
No es exclusiva de los frames y consiste en tomar información de un frame para asociársela<br />
a otro frame.<br />
Ejemplo 2.26 “La persona Pedro es como una apisonadora”<br />
“La Bolsa es como una montaña rusa”<br />
2.3.3. Guiones<br />
Un guión es un frame que describe una secuencia de acontecimientos en un contexto (como<br />
un guión de cine o teatro).<br />
Los elementos de que consta son:<br />
Conjunto de condiciones de entrada (o prerrequisitos)<br />
Ejemplo 2.27 .<br />
“Tiene hambre”<br />
“Tiene dinero”<br />
Un guión representa una situación si se cumplen las condiciones de entrada.<br />
Conjunto de resultados
2.3 Representaciones Estructuradas <strong>del</strong> <strong>Conocimiento</strong> 51<br />
Ejemplo 2.28 .<br />
“El cliente tiene menos dinero”<br />
“El cliente no tiene hambre”<br />
“El cliente está complacido”<br />
“El dueño tiene más dinero”<br />
Conjunto de materiales<br />
Ranuras para objetos que van a intervenir en el guión.<br />
Conjunto de papeles<br />
Ranuras para personas que van a intervenir en el guión.<br />
Un lugar<br />
Dónde se va a realizar ese guión (es una ranura <strong>del</strong> mismo).<br />
Conjunto de escenas<br />
Todos los elementos que van a ir apareciendo secuencialmente en el guión.
52 Capítulo 2. Representación <strong>del</strong> <strong>Conocimiento</strong>. Razonamiento
Capítulo 3<br />
Planificar para la Resolución de<br />
Problemas<br />
3.1. Planificación y Resolución de Problemas<br />
3.1.1. El problema de la planificación<br />
Definición 3.1 Planificar es la tarea de obtener una secuencia de acciones que permita llegar<br />
a un estado objetivo.<br />
Definición 3.2 A esa secuencia de acciones se le llama plan.<br />
En la planificación las reglas u operadores deben ser modulares (es decir, si quitamos o<br />
ponemos una, las demás no se ven afectadas) y el sistema debe ser completo (esto es, se deben<br />
recoger todas las posibilidades que puedan aparecer).<br />
Y antes de comenzar a tratar con más detalle el tema de la planificación debemos tener<br />
en cuenta las tres siguientes cuestiones:<br />
1. Marco de referencia<br />
Cuando se ejecuta una regla, ¿qué permanece sin cambios? ¿Cuál es el fondo de la<br />
escena en que se desarrolla la acción?<br />
Ejemplo 3.1 Al mover una mesa, se mueve lo que haya encima. Pero si decimos que<br />
una mesa está debajo de una ventana, al mover la mesa no se mueve la ventana.<br />
2. Problema de la cualificación<br />
¿En qué condiciones puede ejecutarse una regla? ¿Qué necesita en su entorno para<br />
ejecutarse?<br />
El planificador será el encargado de decidir qué regla aplicar en cada momento.<br />
3. Problema de la ramificación<br />
Cuando se ejecuta una regla, ¿qué elementos de su entorno se modifican?<br />
53
54 Capítulo 3. Planificar para la Resolución de Problemas<br />
3.1.2. Tipos de planificadores, estados y operadores<br />
Tipos de planificadores<br />
De Orden Total. Encuentran un camino desde el estado inicial al estado final.<br />
De Orden Parcial. Encuentran todos los posibles caminos desde el estado inicial al<br />
estado final.<br />
Jerárquicos<br />
Estados<br />
Estado Inicial<br />
LIBRE(B), SOBRE(C,A), SOBREMESA(A), LIBRE(C), MANOVACIA, SOBREME-<br />
SA(B)<br />
Estado Objetivo<br />
SOBRE(A,B), SOBRE(B,C)<br />
Operadores<br />
Vienen descritos por tres elementos:<br />
Lista de precondiciones (P)<br />
Conjunto de elementos que si son ciertos hacen al operador candidato para ser aplicado.<br />
Lista de adición (A)<br />
Elementos que se añaden al estado actual<br />
Lista de supresión (S)<br />
Elementos que se suprimen al estado actual<br />
Ejemplo 3.2 .<br />
COGER(X):<br />
P: SOBREMESA(X), MANOVACIA, LIBRE(X)<br />
A: COGIDO(X)<br />
S: SOBREMESA(X), MANOVACIA, LIBRE(X)<br />
DEJAR(X):<br />
P: COGIDO(X)<br />
A: SOBREMESA(X), MANOVACIA, LIBRE(X)<br />
S: COGIDO(X)<br />
APILAR(X,Y):<br />
P: COGIDO(X), LIBRE(Y)<br />
A: MANOVACIA, SOBRE(X,Y), LIBRE(X)<br />
S: COGIDO(X), LIBRE(Y)<br />
DESAPILAR(X,Y):<br />
P: MANOVACIA, LIBRE(X), SOBRE(X,Y)<br />
A: COGIDO(X), LIBRE(Y)<br />
S: MANOVACIA, LIBRE(X), SOBRE(X,Y)
3.1 Planificación y Resolución de Problemas 55<br />
3.1.3. Métodos de planificación<br />
Resolución hacia a<strong>del</strong>ante<br />
Ejemplo 3.3 Dado el estado inicial descrito como:<br />
Y el estado final descrito como:<br />
SOBREMESA(A)<br />
SOBREMESA(B)<br />
SOBREMESA(C)<br />
LIBRE(A)<br />
LIBRE(B)<br />
LIBRE(C)<br />
MANOVACIA<br />
SOBRE(A,B), SOBRE(B,C)<br />
Se van aplicando operadores para llegar desde el estado inicial al estado final.<br />
Resolución hacia atrás<br />
Partimos <strong>del</strong> estado final e intentamos llegar al estado inicial. Pero para luego dar una<br />
solución necesitamos aplicar unos operadores inversos.<br />
OBJET IV O = {L ∧ G 1 ∧ G 2 ∧ . . . ∧ G N }<br />
SUBOBJET IV O = {P D ∧ G ′ 1 ∧ G′ 2 ∧ . . . ∧ G′ N }<br />
La regla D será candidata a ser aplicada sobre L si en su lista de adición está L ′ y existe<br />
un unificador que hace Ly L ′ iguales.<br />
Si se aplica D sobre L, entonces L se transforma en las precondiciones de D, esto es, en<br />
P D .<br />
G ′ i son los elementos obtenidos por regresión después de haber aplicado la regla D, para<br />
lo cual necesitamos una función de regresión.<br />
Definición 3.3 R[Q, D U ] es la regresión <strong>del</strong> objetivo Q = {G 1 , G 2 , . . . , G N } al aplicar D U<br />
(regla D aplicándole el unificador U).<br />
1. Si Q U es un literal de A U (lista de adición) entonces<br />
R[Q U , D U ] = V (Verdadero)<br />
2. Si Q U es un literal de S U (lista de supresión) entonces<br />
R[Q U , D U ] = F (Falso)<br />
3. En otro caso<br />
R[Q U , D U ] = Q U<br />
Todos los elementos cuya regresión sea verdadera no es necesario comprobarlos en el<br />
futuro (y por lo tanto no aparecen en el siguiente subobjetivo).<br />
Si la regresión de algún elemento es falsa, no se puede aplicar dicha regla.<br />
Ejemplo 3.4 Sea OBJETIVO={COGIDO(A), LIBRE(B), SOBRE(B,C)}<br />
Observamos que COGIDO(A) pertenece a la lista de adición de DESAPILAR(X,Y) si<br />
aplicamos el unificador X=A. Por lo tanto, en el siguiente subobjetivo desaparecerá COGI-<br />
DO(A), que será sustituido por la lista de precondiciones de DESAPILAR(X,Y).
56 Capítulo 3. Planificar para la Resolución de Problemas<br />
Ahora aplicamos regresión al resto de elementos <strong>del</strong> OBJETIVO, para lo cual tenemos<br />
que ampliar el unificador que teníamos para que incluya Y=B. Así, tenemos que<br />
R[LIBRE(B),DESAPILAR(A,B)] = V, pues LIBRE[B] pertenece a la lista de adicción de<br />
DESAPILAR(A,B) y por lo tanto, no aparecerá en el siguiente subobjetivo (no es necesario<br />
comprobarlo en el futuro).<br />
R[SOBRE(B,C),DESAPILAR(A,B)] = SOBRE(B,C), pues SOBRE(B,C) no aparece ni<br />
en la lista de supresión, ni en la de adición de DESAPILAR(A,B). Por lo tanto SOBRE(B,C)<br />
pasa tal cual al siguiente subobjetivo.<br />
En resumen, tenemos que<br />
SUBOBJETIVO={MANOVACIA, LIBRE(A), SOBRE(A,B), SOBRE(B,C)}<br />
Ejemplo 3.5 OBJETIVO={SOBRE(B,C), SOBRE(A,B)}<br />
Aplicamos APILAR(B,C) y obtenemos, tras la regresión, que<br />
SUBOBJETIVO={COGIDO(B), LIBRE(C), SOBRE(A,B)}<br />
¡¡Pero COGIDO(B) y SOBRE(A,B) son inconsistentes!!<br />
Nota.- Antes de seguir avanzando hay que comprobar la (in)consistencia de<br />
aquellos nuevos subobjetivos que hayan conseguido superar la regresión (recordemos<br />
que si la función de regresión aplicada sobre algún elemento devuelve falso,<br />
no se puede aplicar la regla).<br />
3.2. Planificación de Orden Total<br />
3.2.1. Planificación usando una pila de objetivos (STRIPS)<br />
Se realiza una búsqueda hacia atrás empezando por el objetivo que se quiere alcanzar. Si<br />
dicho objetivo es compuesto, se descompone en subobjetivos, formando una pila.<br />
Resuelve problemas en los que no hay interacción entre subobjetivos (o bien hay interacciones<br />
“débiles”).<br />
Ejemplo 3.6 .<br />
Los pasos a seguir en STRIPS son:<br />
SOBRE(B,C)<br />
SOBRE(A,B)<br />
SOBRE(A,B) ∧ SOBRE(B,C)<br />
1. Se comienza con una pila de objetivos que sólo contiene el objetivo principal. Si el<br />
objetivo de la parte superior de la pila se empareja con la descripción <strong>del</strong> estado real,<br />
se suprime este objetivo de la pila y se aplica la sustitución de emparejamiento a todas<br />
las expresiones que estén por debajo en la pila.<br />
2. En otro caso, si el objetivo que está en la cima de la pila es compuesto, el sistema<br />
añade encima de ese objetivo compuesto cada uno de los literales componentes (en<br />
cierto orden).<br />
3. Cuando han sido resueltos todos los objetivos componentes, si el objetivo compuesto no<br />
se empareja con el estado real el sistema reconsidera el objetivo compuesto, volviendo<br />
a listar sus componentes en la parte superior de la pila.<br />
Cada vez que se listan de nuevo los componentes de un objetivo el estado real puede<br />
ser distinto, y puede que en un momento no se resuelva el objetivo, pero más a<strong>del</strong>ante<br />
sí.
3.2 Planificación de Orden Total 57<br />
Si se resuelven todos los subobjetivos, pero no el objetivo compuesto, es porque al resolver<br />
subobjetivos se deshacen cambios hechos por subobjetivos previamente resueltos.<br />
4. Cuando el objetivo “no resuelto” de la cima de la pila es un único literal STRIP busca<br />
una regla cuya lista de adición contenga un literal que se pueda emparejar con él.<br />
Ese emparejamiento reemplaza al literal de la cima. Encima de él se añade la regla (con<br />
ese valor de emparejamiento) y encima de la regla se ponen las precondiciones de dicha<br />
regla particularizadas para ese emparejamiento.<br />
Si las precondiciones se emparejan con el estado real, se aplica la regla. Si las precondiciones<br />
son compuestas, se descomponen y se añaden sus componentes a la cima de la<br />
pila.<br />
5. Cuando el elemento de la cima es una regla es porque las precondiciones de esa regla<br />
se emparejan con la descripción <strong>del</strong> estado y se suprimieron de la pila.<br />
Entonces la regla es aplicable y se aplica efectivamente a la descripción <strong>del</strong> estado,<br />
suprimiéndola de la pila (el sistema debe recordar las reglas que se aplican y el orden<br />
en que se aplican).<br />
Tres cuestiones interesantes a tener en cuenta a la hora de resolver un problema práctico<br />
son:<br />
1. Ordenación de los componentes de un objetivo compuesto<br />
2. Elección entre las particularizaciones posibles<br />
3. Elección de la regla aplicable, en caso de haber más de una<br />
Ejemplo 3.7 Estado inicial:<br />
LIBRE(B)<br />
LIBRE(C)<br />
SOBRE(C,A)<br />
SOBREMESA(A)<br />
SOBREMESA(B)<br />
MANOVACIA<br />
Estado final:<br />
SOBRE(C,B), SOBRE(A,C)<br />
El contenido de la pila a lo largo de la ejecución de STRIPS es:<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
SOBRE(C,B)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
APILAR(C,B)<br />
SOBRE(C,B)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
LIBRE(B) ∧ COGIDO(C)<br />
APILAR(C,B)<br />
SOBRE(C,B)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)
58 Capítulo 3. Planificar para la Resolución de Problemas<br />
COGIDO(C)<br />
LIBRE(B)<br />
LIBRE(B) ∧ COGIDO(C)<br />
APILAR(C,B)<br />
SOBRE(C,B)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
MANOVACIA, LIBRE(C), SOBRE(C,Y)<br />
DESAPILAR(C,Y)<br />
COGIDO(C)<br />
LIBRE(B)<br />
LIBRE(B) ∧ COGIDO(C)<br />
APILAR(C,B)<br />
SOBRE(C,B)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
Ahora la cima de la pila se empareja con el estado real, de modo que se desapila la cima y<br />
se aplica la regla que queda en la cima (y se anota que se ha aplicado dicha regla).<br />
A continuación se muestra el estado real, junto con la pila, a lo largo de la ejecución de<br />
STRIP:<br />
LIBRE(B)<br />
LIBRE(A)<br />
COGIDO(C)<br />
SOBREMESA(A)<br />
SOBREMESA(B)<br />
APILAR(C,B)<br />
SOBRE(C,B)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
LIBRE(A)<br />
LIBRE(C)<br />
SOBRE(C,B)<br />
SOBREMESA(A)<br />
SOBREMESA(B)<br />
MANOVACIA<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
LIBRE(A)<br />
LIBRE(C)<br />
SOBRE(C,B)<br />
SOBREMESA(A)<br />
SOBREMESA(B)<br />
MANOVACIA<br />
LIBRE(C)<br />
COGIDO(A)<br />
LIBRE(C) ∧ COGIDO(A)<br />
APILAR(A,C)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
LIBRE(A)<br />
LIBRE(C)<br />
SOBRE(C,B)<br />
SOBREMESA(A)<br />
SOBREMESA(B)<br />
MANOVACIA<br />
SOBREMESA(A), LIBRE(A), MANOVACIA<br />
COGER(A)<br />
COGIDO(A)<br />
LIBRE(C) ∧ COGIDO(A)<br />
APILAR(A,C)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
LIBRE(C)<br />
COGIDO(A)<br />
SOBRE(C,B)<br />
SOBREMESA(B)<br />
COGIDO(A)<br />
LIBRE(C) ∧ COGIDO(A)<br />
APILAR(A,C)<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)
3.2 Planificación de Orden Total 59<br />
LIBRE(A)<br />
SOBRE(A,C)<br />
SOBRE(C,B)<br />
SOBREMESA(B)<br />
MANOVACIA<br />
SOBRE(A,C)<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
Finalmente, no olvidemos devolver el plan que hemos encontrado y que en este caso es el<br />
siguiente:<br />
DESAPILAR(A,C)<br />
APILAR(C,B)<br />
COGER(A)<br />
APILAR(A,C)<br />
Ejemplo 3.8 Un problema que STRIP no puede resolver es el de permutar los valores de<br />
dos registros <strong>del</strong> procesador.<br />
Estado inicial:<br />
CONTENIDO(X,A)<br />
CONTENIDO(Y,B)<br />
CONTENIDO(Z,0)<br />
Estado final:<br />
CONTENIDO(X,B)<br />
CONTENIDO(Y,A)<br />
Contamos con la siguiente operación:<br />
ASIGNA(U,R,T,S):<br />
P: CONTENIDO(R,S), CONTENIDO(U,T)<br />
S: CONTENIDO(U,T)<br />
A: CONTENIDO(U,S)<br />
CONTENIDO(X,A)<br />
CONTENIDO(Y,B)<br />
CONTENIDO(Z,0)<br />
CONTENIDO(X,B)<br />
CONTENIDO(Y,B)<br />
CONTENIDO(Z,0)<br />
CONTENIDO(R,B) ∧ CONTENIDO(X,T)<br />
ASIGNA(X,R,T,B)<br />
CONTENIDO(X,B)<br />
CONTENIDO(Y,A)<br />
CONTENIDO(X,B) ∧ CONTENIDO(Y,A)<br />
CONTENIDO(Y,A)<br />
CONTENIDO(X,B) ∧ CONTENIDO(Y,A)<br />
Hemos llegado a un punto en el que no se puede continuar, ya que la interacción entre<br />
subobjetivos es demasiado fuerte.<br />
3.2.2. STRIP con protección de objetivos (RSTRIP)<br />
En este nuevo método, cuando se empareja la cima de la pila con el estado real, no se<br />
desapila la cima sino que se marca con un asterisco (*). Y si una regla va a deshacer algún<br />
objetivo marcado, no se aplica.<br />
Una línea horizontal divide a la pila en dos. Lo que haya por encima de ella está ya<br />
resuelto, y lo que esté por debajo está por resolver.<br />
Los corchetes laterales indican los componentes de un objetivo compuesto. Si la línea<br />
horizontal atraviesa un corchete, ninguno de los subobjetivos por debajo de la línea dentro<br />
<strong>del</strong> corchete puede deshacer los subobjetivos por encima de la línea dentro <strong>del</strong> corchete.<br />
RSTRIP encuentra siempre el plan más corto.
60 Capítulo 3. Planificar para la Resolución de Problemas<br />
Si resolviéramos el ejemplo 3.7 con RSTRIP obtendríamos el mismo resultado que con<br />
STRIP, ya que no hay interacción entre subobjetivos.<br />
Definición 3.4 Regresión: se aplica regresión entre el violador y cada una de las reglas por<br />
encima <strong>del</strong> violado. Si pasa la regresión, el violador se coloca como una precondición más de<br />
esa regla.<br />
Sí se permiten violaciones temporales, esto es, una regla viola un objetivo protegido, pero<br />
otra regla por debajo de la primera en la pila vuelve a resolver ese objetivo.<br />
3.3. Planificación Ordenada Parcialmente<br />
En este tipo de planificación (también llamada no lineal) se trabaja con subplanes, en vez<br />
de con subproblemas.<br />
Primero se construye un grafo con los subplanes. Después se añaden unas restricciones<br />
que imponen un cierto orden entre los operadores. Y finalmente, para devolver una solución,<br />
es necesario linealizar el plan.<br />
Ejemplo 3.9 Objetivo: “Tener el zapato derecho puesto y tener el zapato izquierdo puesto”<br />
Operadores:<br />
ZapatoDerecho<br />
ZapatoIzquierdo<br />
P: Calcetín derecho puesto<br />
P: Calcetín izquierdo puesto<br />
A: Zapato derecho puesto<br />
A: Zapato izquierdo puesto<br />
CalcetinDerecho<br />
A: Calcetín derecho puesto<br />
CalcetinIzquierdo<br />
A: Calcetín izquierdo puesto<br />
Figura 3.1: Ejemplo de planificación no lineal<br />
En la figura 3.1 se muestra un conjunto de subplanes que resuelven el problema. Ahora<br />
hay que linealizar este conjunto para dar una secuencia concreta de operadores.<br />
Hay 6 planes posibles. Uno de ellos puede ser, por ejemplo:<br />
CalcetinIzquierdo, CalcetinDerecho, ZapatoDerecho, ZapatoIzquierdo.
3.3 Planificación Ordenada Parcialmente 61<br />
3.3.1. Planificación no lineal sistemática (PNLS)<br />
Ahora se devuelve un conjunto de (sub)planes con (posibles) conflictos entre ellos. Al<br />
aplicar un nuevo operador se comprueba que no se deshaga lo que ya se tenía resuelto.<br />
Construimos una estructura que conecte los operadores ficticios FIN e INICIO, descomponiendo<br />
el estado final para intentar llegar al inicial.<br />
A continuación se indican las precedencias entre todos los operadores. Al igual que antes,<br />
por último, se debe linealizar para buscar un plan concreto que resuelva el problema (los<br />
operadores deberán aplicarse de inicio a fin).<br />
Ejemplo 3.10 En la figura 3.2 se muestra la representación gráfica <strong>del</strong> operador<br />
MOVER(X,Y,Z)<br />
P: SOBRE(X,Y), LIBRE(Z), LIBRE(X)<br />
A: LIBRE(Y), SOBRE(X,Z)<br />
S: SOBRE(X,Y), LIBRE(Z)<br />
Que significa que mueve X, que está sobre Y , encima de Z.<br />
Figura 3.2: Operador MOVER(X,Y,Z)<br />
Obsérvese que la lista de supresión no aparece explícitamente. X, Y y Z son variables<br />
que deben instanciarse.<br />
El estado inicial para nuestro problema será:<br />
SOBRE(C,A)<br />
SOBRE(B,SUELO)<br />
Por su parte, el estado final será:<br />
SOBRE(A,B)<br />
SOBRE(B,C)<br />
En la figura 3.3 se muestra la estructura que conecta FIN e INICIO.<br />
En vista de dicha figura, los dos subplanes que hay son:<br />
Subplan <strong>del</strong> primer subobjetivo −→ b < a<br />
Subplan <strong>del</strong> segundo subobjetivo −→ c<br />
Por lo que podríamos pensar que hay tres posibles planes, a saber<br />
c < b < a<br />
b < c < a<br />
b < a < c<br />
Pero si somos observadores veremos que no todos son factibles. En realidad el único plan<br />
válido es<br />
b < c < a
62 Capítulo 3. Planificar para la Resolución de Problemas<br />
Figura 3.3: Ejemplo de planificación no lineal sistemática<br />
3.4. Planificación Jerárquica<br />
Se priorizan las precondiciones para definir operadores simplificados, y aplicamos un planificador<br />
cualquiera (STRIP, ...) para obtener un esbozo <strong>del</strong> plan.<br />
Precondiciones<br />
N o operadores que<br />
lo hacen cierto<br />
Prioridad<br />
LIBRE 3 1<br />
MANOVACIA 2 2<br />
COGIDO 2 2<br />
SOBREMESA 1 3<br />
SOBRE 1 3<br />
Intentamos resolver sólo los literales de prioridad 3 (mayor dificultad) y el resto se consideran<br />
siempre ciertos.<br />
Ejemplo 3.11 .<br />
ESTADO OBJETIVO El plan que se encuentra es<br />
LIBRE(B)<br />
LIBRE(C)<br />
SOBRE(C,A)<br />
SOBREMESA(A)<br />
SOBREMESA(B)<br />
MANOVACIA<br />
SOBRE(C,B) ∧ SOBRE(A,C)<br />
{APILAR(C,B),<br />
APILAR(A,C)}. Si este plan<br />
no tiene suficiente detalle, se<br />
vuelve a aplicar el<br />
planificador con nivel de<br />
prioridad 2.
Capítulo 4<br />
El Aprendizaje Computacional<br />
4.1. El Problema <strong>del</strong> Aprendizaje Computacional<br />
El aprendizaje denota cambios en el sistema que son adaptativos en el sentido de que<br />
permiten al sistema hacer la misma tarea o tareas a partir de la misma población más eficiente<br />
y/o eficientemente la próxima vez.<br />
El aprendizaje memorístico es el más básico y consiste en memorizar (nada de razonar).<br />
4.2. Conceptos Básicos<br />
4.2.1. Tipos, fases y características <strong>del</strong> aprendizaje<br />
Tipos de aprendizaje<br />
Catalogación en función de lo que sabemos <strong>del</strong> sistema que queremos aprender (o mo<strong>del</strong>ar).<br />
Aprendizaje supervisado<br />
Se conoce la salida que se espera <strong>del</strong> ejemplo que se le enseña al sistema que queremos<br />
que aprenda.<br />
Ejemplo 4.1 Se le muestra una silla a un niño y se le dice: “eso es una silla”<br />
Aprendizaje no supervisado<br />
Se le muestra un ejemplo al sistema que queremos que aprenda, pero no le decimos de<br />
qué clase es. El sistema, a partir de lo que hay aprendido “debe” dar una respuesta.<br />
Ejemplo 4.2 Se le muestra una silla a un niño que él nunca haya visto y se le pregunta<br />
qué tipo de objeto es.<br />
De últimas, lo que se pretende es construir mo<strong>del</strong>os que representen tanto a los ejemplos<br />
que se le han mostrado al sistema, como a aquellos ejemplos que NO se le han mostrado.<br />
Fases <strong>del</strong> aprendizaje<br />
En la figura 4.1 se muestran las fases más importantes <strong>del</strong> aprendizaje. Algunos comentarios<br />
al respecto:<br />
El Mo<strong>del</strong>o Aprendido debe representar (cuando ya se haya construido finalmente) todos<br />
los rasgos implícitos en los ejemplos mostrados (es decir, en los Datos de Entrenamiento).<br />
Los Datos de Prueba nos servirán para comprobar si el mo<strong>del</strong>o aprendido es correcto<br />
(suficientemente fiable).<br />
63
64 Capítulo 4. El Aprendizaje Computacional<br />
La Predicción, que no es propiamente una fase <strong>del</strong> aprendizaje, tiene lugar una vez que<br />
el mo<strong>del</strong>o ya sea adecuado.<br />
Figura 4.1: Fases <strong>del</strong> aprendizaje<br />
En el mo<strong>del</strong>o encontramos 2 tipos de parámetros:<br />
1. Parámetros internos: Los que se aprenden en la fase de aprendizaje (a partir de los<br />
externos).<br />
2. Parámetros externos: No se aprenden, sino que son dados a priori en base a un conocimiento<br />
experto.<br />
Características <strong>del</strong> aprendizaje<br />
Cuatro son las principales características <strong>del</strong> aprendizaje:<br />
1. Precisión: fiabilidad <strong>del</strong> mo<strong>del</strong>o (característica importante).<br />
2. Velocidad: velocidad de predicción a partir <strong>del</strong> mo<strong>del</strong>o.<br />
Por ejemplo, un mo<strong>del</strong>o fiable al 90 % muchas veces es preferible a otro mo<strong>del</strong>o fiable<br />
al 99 %, siempre que el primero sea mucho más veloz que el segundo.<br />
3. Comprensibilidad: el mo<strong>del</strong>o debe ser comprensible para el usuario.<br />
4. Tiempo en aprender: tiempo necesario para aprender el mo<strong>del</strong>o.<br />
A partir de los datos de entrenamiento obtenemos varios mo<strong>del</strong>os (que a su vez pueden<br />
variar con los parámetros externos e internos). Con los datos de prueba obtenemos el mo<strong>del</strong>o<br />
(según las características que busquemos) con su fiabilidad. Una vez terminado el mo<strong>del</strong>o con<br />
su fiabilidad, comenzamos a predecir.<br />
El hecho de realimentar la fase de predicción para intentar que el sistema aprenda, es<br />
mucho más probable que disminuyamos la fiabilidad.
4.2 Conceptos Básicos 65<br />
4.2.2. Estimación <strong>del</strong> error<br />
En la matriz de confusión se reflejan todos los ejemplos de la base de prueba con respecto<br />
a la clase real de cada ejemplo y la clase predicha por el mo<strong>del</strong>o.<br />
Ejemplo 4.3 Enfermedad <strong>del</strong> corazón.<br />
Clases predichas<br />
por el mo<strong>del</strong>o<br />
150 ejemplos Ausente Presente<br />
Clases reales Ausente 80 10<br />
de los ejemplos Presente 20 40<br />
80 (de los 150) ejemplos realmente no tenían ataque al corazón y el mo<strong>del</strong>o acierta.<br />
10 (de los 150) ejemplos realmente no tenían ataque al corazón y el mo<strong>del</strong>o falla.<br />
20 (de los 150) ejemplos realmente sí tenían ataque al corazón y el mo<strong>del</strong>o falla.<br />
40 (de los 150) ejemplos realmente sí tenían ataque al corazón y el mo<strong>del</strong>o acierta.<br />
Matriz de costos:<br />
Clases predichas<br />
por el mo<strong>del</strong>o<br />
150 ejemplos Ausente Presente<br />
Clases reales Ausente 0 1<br />
de los ejemplos Presente 5 0<br />
Obsérvese que tiene mayor costo si realmente hay ataque al corazón y el mo<strong>del</strong>o falla, que<br />
el caso en que no hay ataque al corazón y el mo<strong>del</strong>o falla.<br />
Error = 20 × 5 + 10 × 1 = 110<br />
Vamos a estudiar tres estimadores de errores para la matriz de confusión:<br />
1. Estimador <strong>del</strong> error de los ejemplos<br />
Suponemos que se tienen N ejemplos de prueba. Contamos cuántas predicciones son<br />
incorrectas, llamado E. El estimador <strong>del</strong> error es E N .<br />
Para el ejemplo anterior 30<br />
150<br />
Para poder aplicar este estimador se necesita que la base de prueba sea distinta que la<br />
base de entrenamiento.<br />
2. Estimador <strong>del</strong> error de resustitución<br />
Igual que 1), pero la base de prueba es igual o un subconjunto de la base de entrenamiento.<br />
Este estimador tiende a subestimar el error.<br />
¡Ojo! No se pueden comparar mo<strong>del</strong>os distintos con distintos estimadores <strong>del</strong> error.<br />
3. Estimador <strong>del</strong> error por validación cruzada<br />
Sea S el conjunto de ejemplos, lo dividimos en v partes más o menos de igual tamaño<br />
y disjuntas S 1 , . . . , S v<br />
Usaremos S − S i , i = 1, . . . , v como base de entrenamiento y S i como base de prueba.<br />
Para estimar el error se usa el estimador para el error de los ejemplos, y lo llamamos<br />
R i<br />
v∑<br />
i=1<br />
|S i |<br />
|S| · R i<br />
Este estimador evalúa una técnica (método) de aprendizaje, mientras que 1) y 2) evalúan<br />
un mo<strong>del</strong>o.
66 Capítulo 4. El Aprendizaje Computacional<br />
Además de por la clase, se puede clasificar a partir de atributos multivaluados (con un<br />
número de valores finito).<br />
En contraste, los atributos reales no pueden usar los estimadores vistos, sino que se usa<br />
la recta de regresión, mediante el error cuadrático medio, que se calcula como:<br />
∑ N<br />
i=1 (y∗ i − y i) 2<br />
donde y ∗ i es el valor real y y i es el valor estimado.<br />
Cuanto menor sea este valor, mejor será el mo<strong>del</strong>o.<br />
El costo de un mo<strong>del</strong>o, por su parte, se calcula como:<br />
c =<br />
∑N c<br />
N<br />
∑N c<br />
i=1 j=1,i≠j<br />
c ij ε ij<br />
ε ij : ejemplos de la clase i, predichos en la clase j.<br />
c ij : costo de la clase i predicha como j.<br />
N c : número de clases existentes.<br />
Para el ejemplo anterior: c = 10 × 1 + 20 × 5 = 110
Capítulo 5<br />
Aprendizaje por Inducción en<br />
Modo Estructural<br />
Nota.- Los capítulos que vienen ahora, salvo el último, estudian aprendizaje<br />
supervisado, bien por clasificación, bien por regresión. El aprendizaje, además,<br />
se hace a partir de los ejemplos, lo cual recibe el nombre de aprendizaje por<br />
inducción.<br />
Ejemplo 5.1 Para clasificar como silla se dice que tiene 4 patas, un tablero,...<br />
Pero no se dice que las patas tienen que estar separadas, el tablero tiene que estar sobre<br />
las patas...<br />
Esto último se le conoce como estructura <strong>del</strong> ejemplo y es lo que vamos a estudiar en este<br />
capítulo.<br />
5.1. Programa de aprendizaje de Winston<br />
Usa redes semánticas para representar tanto los ejemplos como los mo<strong>del</strong>os.<br />
Empieza siempre a partir de un ejemplo llamado positivo, que no es más que un ejemplo<br />
que pertenece a la clase que queremos aprender, (por contraposición, un ejemplo negativo es<br />
aquel que no pertenece a la clase que queremos aprender).<br />
También se usan casi-ejemplos que no es más que un ejemplo negativo, pero no es positivo<br />
por muy pocos rasgos (normalmente uno solamente).<br />
El procedimiento de Winston tiene 2 subprocedimientos:<br />
Para ejemplos positivos −→ Generalización<br />
Para ejemplos negativos o casi-ejemplos −→ Especialización<br />
5.1.1. Generalización<br />
Empleada cuando durante el aprendizaje se nos muestra un ejemplo positivo, hace uso de<br />
cuatro funciones heurísticas:<br />
1. Heurística de subida de árboles (generaliza conceptos subiendo de nivel en la estructura<br />
jerárquica de conceptos)<br />
2. Heurística de conjunto ampliado (igual que 1, pero sin conocer la estructura jerárquica)<br />
3. Heurística de enlace eliminado<br />
4. Heurística de intervalo cerrado<br />
67
68 Capítulo 5. Aprendizaje por Inducción en Modo Estructural<br />
Figura 5.1: Ejemplos de la base de entrenamiento. Generalización<br />
Ejemplo 5.2 Queremos aprender el concepto de arco.<br />
En la figura 5.1(a) vemos el ejemplo positivo primero, la figura 5.1(b) es un ejemplo negativo<br />
y la figura 5.1(c) es otro ejemplo positivo.<br />
Heurística de conjunto ampliado<br />
Si decimos que la parte superior <strong>del</strong> arco es de color rojo y luego se dice que es verde, el<br />
sistema aprende que el color de la parte superior puede ser rojo o verde.<br />
Si luego mostramos una de color amarilla, aprenderá que el color puede ser rojo, verde o<br />
amarillo.<br />
Heurística de enlace eliminado<br />
Si a continuación nos dicen que ya no hay más colores podemos eliminar el enlace <strong>del</strong><br />
color porque es una característica que no es determinante.<br />
Heurística de intervalo cerrado<br />
Si se enseña un arco cuyas bases miden 20 cm y luego otro cuyas bases miden 10 cm, se<br />
aprende que la base puede estar en el intervalo [10,20] cm.<br />
5.1.2. Especialización<br />
Empleada cuando durante el aprendizaje se nos muestra un ejemplo negativo o un casiejemplo,<br />
hace uso de dos funciones heurísticas:<br />
1. Heurística <strong>del</strong> enlace requerido<br />
Cuando el mo<strong>del</strong>o evolucionado tiene un enlace en el lugar donde el casi-ejemplo no lo<br />
tiene.<br />
Ejemplo 5.3 En el ejemplo positivo de la figura 5.2(a) sí existe el enlace soporta a,<br />
mientras que en el casi-ejemplo de la figura 5.2(b), no existe dicho enlace.<br />
Figura 5.2: Ejemplos de la base de entrenamiento. Especialización (1)<br />
Conseguimos enfatizar el enlace soporta a diciendo que debe soportar a.
5.2 Espacio de versiones 69<br />
2. Heurística <strong>del</strong> enlace olvidado<br />
Cuando el casi-ejemplo tiene un enlace donde el mo<strong>del</strong>o evolucionado no lo tiene.<br />
Ejemplo 5.4 En el ejemplo positivo de la figura 5.3(a) no existe el enlace toca, mientras<br />
que en el casi-ejemplo de la figura 5.3(b), sí existe dicho enlace.<br />
Figura 5.3: Ejemplos de la base de entrenamiento. Especialización (2)<br />
Se enfatiza el negativo <strong>del</strong> enlace toca diciendo que no debe tocar<br />
Ejemplo 5.5 En la figura 5.4 se muestran los pasos en el aprendizaje <strong>del</strong> concepto “arco”,<br />
mediante el proceso de Winston, con generalizaciones y especializaciones a partir de ejemplos<br />
positivos y casi-ejemplos.<br />
Una vez tengamos la red semántica que represente el mo<strong>del</strong>o (es decir, el último mo<strong>del</strong>o<br />
evolucionado), tenemos que probar el mo<strong>del</strong>o (muy importante) para medir la fiabilidad <strong>del</strong><br />
mismo.<br />
Para ello el sistema debe emparejar las redes semánticas de los ejemplos de prueba con la<br />
<strong>del</strong> mo<strong>del</strong>o, para obtener un valor de “similitud” que nos pueda decir si ha acertado o no.<br />
5.2. Espacio de versiones<br />
La representación de los ejemplos se hace mediante frames.<br />
Ejemplo 5.6 Queremos aprender cuándo un coche es económico. El frame de la figura 5.5<br />
es equivalente a decir lo siguiente:<br />
origen = x 1 ∈{USA, Japón, Alemania, ...}<br />
marca = x 2 ∈{Toyota, Seat, Ford, ...}<br />
color = x 3 ∈{Blanco, Azul, ...}<br />
año = x 4 ∈{1960, 1970, ...}<br />
tipo = x 5 ∈{lujo, económico, deportivo, ...}<br />
Un instanciación <strong>del</strong> frame coche puede ser:<br />
x 1<br />
Japón<br />
x 2<br />
Honda<br />
x 3<br />
Azul<br />
x 4 1970<br />
x 5<br />
económico<br />
G } {{ } S<br />
(general) Espacio de versiones (ej positivo)<br />
Conforme se van mostrando ejemplos, G se va especializando y S se va generalizando,<br />
hasta que lleguen a encontrarse.<br />
En la especialización de G aparecerán varias opciones {(. . .), (. . .), . . .}<br />
Si G y S son unitarios y coinciden, devolvemos G(= S).<br />
Si G y S son unitarios y no coinciden, hay contradicción en la base de conocimiento.
70 Capítulo 5. Aprendizaje por Inducción en Modo Estructural<br />
Ejemplo 5.7 G = {(x 1 , x 2 , x 3 , x 4 , x 5 )} (G es unitario)<br />
Primer ejemplo<br />
positivo<br />
Segundo ejemplo<br />
negativo<br />
Tercer ejemplo<br />
positivo<br />
Cuarto ejemplo<br />
negativo<br />
Quinto ejemplo<br />
positivo<br />
Japón<br />
Honda<br />
Azul<br />
1970<br />
económico<br />
Japón<br />
Toyota<br />
Verde<br />
1970<br />
deportivo<br />
Japón<br />
Toyota<br />
Azul<br />
1990<br />
económico<br />
USA<br />
Chrysler<br />
Azul<br />
1980<br />
económico<br />
Japón<br />
Honda<br />
Blanco<br />
1980<br />
económico<br />
S={(Japón,Honda,Azul,1970,económico)}<br />
(S es unitario)<br />
G={(x 1 ,Honda,x 3 , x 4 , x 5 ),(x 1 , x 2 ,Azul,x 4 , x 5 ),<br />
(x 1 , x 2 , x 3 , x 4 ,económico)}<br />
S no cambia<br />
G={(x 1 , x 2 ,Azul,x 4 , x 5 ),(x 1 , x 2 , x 3 , x 4 ,económico)}<br />
S={(Japón,x 2 ,Azul,x 4 ,económico)}<br />
G={(Japón,x 2 ,Azul,x 4 , x 5 ),(Japón,x 2 , x 3 , x 4 ,económico)}<br />
S no cambia<br />
G={(Japón,x 2 , x 3 , x 4 ,económico)}<br />
S={(Japón,x 2 , x 3 , x 4 ,económico)}<br />
Como ya G = S y ambos son unitarios, terminamos y devolvemos G (o S).
5.2 Espacio de versiones 71<br />
Figura 5.4: Ejemplo de aprendizaje <strong>del</strong> concepto “arco”
72 Capítulo 5. Aprendizaje por Inducción en Modo Estructural<br />
Figura 5.5: Frame Coche
Capítulo 6<br />
Aprendizaje Basado en Instancias<br />
Existen sistemas en los que es inviable encontrar un mo<strong>del</strong>o global que represente todos<br />
los ejemplos posibles y por lo tanto tenemos que conformarnos con una expresión local que<br />
mo<strong>del</strong>e sólo una parte <strong>del</strong> sistema.<br />
Figura 6.1: Fases <strong>del</strong> aprendizaje basado en instancias<br />
El mo<strong>del</strong>o es directamente el conjunto de ejemplos de entrenamiento.<br />
6.1. Convergencia de los Métodos Basados en Instancias<br />
∫<br />
R p(x)d(x) ≡ p ∗ (x)<br />
V<br />
donde<br />
p(x): distribución de probabilidad<br />
p ∗ (x): distribución real de probabilidad<br />
R: región<br />
V : volumen<br />
Y por otra parte:<br />
donde<br />
M: conjunto de ejemplos<br />
V : volumen que ocupan esos ejemplos<br />
K M : subconjunto de ejemplos de M<br />
p M (x) =<br />
K MM<br />
V M<br />
73
74 Capítulo 6. Aprendizaje Basado en Instancias<br />
Cumpliéndose las siguientes propiedades:<br />
lím M→∞ V M = 0<br />
lím M→∞ K M = ∞<br />
lím M→∞<br />
K M<br />
M = 0<br />
Si se cumplen estas tres propiedades se dice que p M (x) converge a p ∗ (x)<br />
En el plano teórico esto funciona muy bien, pero en la práctica no podemos disponer<br />
de infinitos ejemplos (y por lo tanto tampoco podemos obtener un subconjunto infinito de<br />
ejemplos, ni el volumen tiende a cero, etc).<br />
En consecuencia el valor que obtengamos de p ∗ (x) (a partir de p M (x)) será un valor<br />
aproximado.<br />
Existen 2 formas de calcular p M (x):<br />
1. K M = √ M → Método de los k-vecinos<br />
2. V M = 1 √<br />
M<br />
→ Método de Parzen<br />
6.2. Aprendizaje mediante k M vecinos<br />
Definición 6.1 X = {x 1 , x 2 , . . . , x M } −→ El conjunto de ejemplos, suponiendo que M es<br />
muy grande (que también será el mo<strong>del</strong>o).<br />
Definición 6.2 C = {c 1 , c 2 , . . . , c L } −→ Conjunto de clases en las que están los x i ejemplos.<br />
Definición 6.3 x i = (x i 1 , . . . , xi n) −→ Vector de características.<br />
Dados los n atributos de cada ejemplo (que pueden ser reales o multivaluados), tenemos<br />
dos posibilidades:<br />
1. Clasificar: inferir una clase o atributo multivaluado<br />
2. Hacer regresión: inferir un atributo real<br />
Regla <strong>del</strong> vecino más cercano para clasificar<br />
Se le asignan atributos a un ejemplo nuevo a partir de los atributos de su vecino más<br />
cercano conocido.<br />
Para hallar el vecino más cercano <strong>del</strong> nuevo ejemplo z calculamos la distancia euclídea<br />
hasta todos los ejemplos de M.<br />
Como clase de z se le asigna la clase de su vecino más cercano.<br />
Realmente, el método de los k M vecinos lo que hace es buscar los k vecinos más cercanos<br />
a z. Y puesto que sólo trabajamos con k (<strong>del</strong> total de M) ejemplos, el aprendizaje es local.<br />
Figura 6.2: Aprendizaje basado en k-vecinos
6.3 Aprendizaje mediante el método de Parzen 75<br />
Supongamos que z = (z 1 , z 2 , z 3 , . . . , z n , c) y que no conocemos z 2 ni c (la clase).<br />
Hallamos que la clase predominante entre los k vecinos más cercanos a z es c q . Y como<br />
desconocemos la clase de z, le asignamos c q .<br />
Si z 2 es multivaluado, se le asigna el atributo predominante de entre los ejemplos (k<br />
vecinos más cercanos) que tienen la misma clase que z.<br />
Si z 2 es real, se le asigna la media de los valores <strong>del</strong> atributo x 2 en los k vecinos más<br />
cercanos que tienen la misma clase que z.<br />
Supongamos ahora que z = (z 1 , z 2 , z 3 , . . . , z n , c) y que sólo desconocemos z 2 .<br />
Si en los k vecinos más cercanos la clase predominante coincide con c, z 2 se infiere igual<br />
que antes.<br />
Si por el contrario no coincide con c, no se puede inferir nada. A este tipo de ejemplos se<br />
le llaman espúreos.<br />
Para hallar la distancia euclídea se usan todos los atributos reales que tenga cada ejemplo<br />
∑<br />
de(z, x j ) = √ n (z i − x j i )2<br />
6.3. Aprendizaje mediante el método de Parzen<br />
Dado un nuevo ejemplo z, se nos da un volumen (o ventana) y trabajaremos, igual que<br />
antes, con todos aquellos ejemplos que caigan dentro de la ventana dada centrada en z<br />
i=1<br />
Figura 6.3: Aprendizaje basado en Parzen<br />
Si dentro de la ventana no hay ningún ejemplo, puede ser por lo siguiente:<br />
La ventana es demasiado pequeña<br />
El ejemplo z está demasiado alejado de la distribución normal de los datos (este hecho<br />
no se conoce con k-vecinos).<br />
Por eso, la ventana que generalmente se utiliza es de la forma<br />
(<br />
K(z, x e 1<br />
) =<br />
exp − 1<br />
)<br />
(2π) r 2 h r |Cov| 1 2 2h 2 (z − xe ) −t Cov −1 (z − x e )<br />
y recibe el nombre de ventana gaussiana.<br />
6.4. Mejora de los métodos basados en instancias<br />
Cuando la base de ejemplos es muy grande (millones de ejemplos), surge un problema de<br />
eficiencia, pues para encontrar los k vecinos más cercanos hay que examinar la base de datos<br />
completa.<br />
Para resolver esto, vamos a ver dos maneras: la multiedición y la condensación.
76 Capítulo 6. Aprendizaje Basado en Instancias<br />
6.4.1. Multiedición<br />
Puesto que los errores se condensan en la frontera que <strong>del</strong>imita las clases de los ejemplos,<br />
la multiedición elimina dichos ejemplos, reduciendo así el error cometido (también se dice<br />
que reduce el ruido de la base de ejemplos).<br />
Figura 6.4: Multiedición<br />
La figura 6.4(a) muestra la base de ejemplos original, mientras que en la figura 6.4(b) se<br />
observa la misma base de ejemplos multieditada.<br />
función Hold-out Editing(R,k,M) devuelve conjunto editado de ejemplos<br />
entradas: R: Conjunto inicial de ejemplos a editar<br />
k: Número de vecinos para la regla de clasificación<br />
M: Número de bloques para hacer la partición hold-out<br />
resultado: R: Conjunto editado de ejemplos<br />
1. Dividir aleatoriamente R en M subconjuntos disjuntos R i , i = 1, . . . , M<br />
2. Para i = 1, . . . , M clasificar los ejemplos de R i mediante la regla k m usando<br />
R (i+1)mod M como conjunto de entrenamiento<br />
3. Eliminar de R los ejemplos mal clasificados en el paso 2<br />
Function Hold-out Editing(R,k,M )<br />
función Multiedit(R,M,I) devuelve conjunto editado de ejemplos<br />
Se basa en la repetición iterativa de Hold-out Editing con k = 1<br />
entradas: R: Conjunto inicial de ejemplos a editar<br />
M: Número de bloques para hacer la partición hold-out<br />
I: Número de iteraciones sin cambios (criterio de parada)<br />
resultado: R: Conjunto editado de ejemplos<br />
1. Ejecutar Hold-out Editing(R, k = 1, M)<br />
2. si en las últimas I iteraciones no ha habido edición entonces PARAR.<br />
en otro caso ir al paso 1.<br />
Function Multiedit(R,M,I )<br />
Nota.- ¡Ojo! Aplicar multiedición de forma indiscriminada sobre bases de ejemplos<br />
que realmente no la necesiten podría provocar incluso la eliminación de una<br />
clase.
6.4 Mejora de los métodos basados en instancias 77<br />
Ejemplo 6.1 Vamos a clasificar R 1 con respecto a R 2 , según la base de ejemplos particionada<br />
que se muestra en la figura 6.5<br />
Figura 6.5: Base de ejemplos particionada<br />
R 2 , con 1-vecino más cercano, asigna a todos los ejemplos de R 1 la clase 1. Como no hay<br />
errores no se modifica R.<br />
Ahora clasificamos R 2 con respecto a R 3 . R 3 asigna la clase 2 a todos los ejemplos de<br />
R 2 . Los ejemplos erróneamente clasificados se eliminan de la base de ejemplos, tal y como se<br />
muestra en la figura 6.6.<br />
Figura 6.6: Base de ejemplos particionada y parcialmente multieditada<br />
6.4.2. Condensación<br />
Se genera una base de ejemplos reducida y consistente (es decir, a la hora de inferir, el<br />
resultado es el mismo que si usáramos la base completa). Así, se mejora la eficiencia.<br />
La base de ejemplos reducida está formada por los ejemplos de las fronteras.<br />
Figura 6.7: Condensación<br />
En la figura 6.7(a) se muestra la base de ejemplos multieditada, mientras que en la figura<br />
6.7(b) se muestra la misma base de ejemplos multieditada y condensada.<br />
La inferencia seguirá siendo igual, pero ahora hay menos error y es más eficiente.<br />
La <strong>del</strong>imitación de la frontera a partir de un conjunto condensado depende de dicho<br />
conjunto.
78 Capítulo 6. Aprendizaje Basado en Instancias<br />
función Condensing(R) devuelve conjunto condensado de ejemplos<br />
entradas: R: Conjunto (multieditado) de ejemplos<br />
resultado: S: Conjunto condensado de R consistente con R<br />
1. Seleccionar un ejemplo arbitrariamente, p ∈ R<br />
R ← R − {p}<br />
S = {p}<br />
2. n ← 0<br />
para todo p ′ ∈ R hacer<br />
si clase(p ′ ) ≠ clase 1m (p ′ , S) entonces<br />
R ← R − {p ′ }<br />
S ← S + {p ′ }<br />
n ← n + 1<br />
3. si n = 0 o bien tamaño(R) = 0 entonces PARAR<br />
en otro caso ir al paso 2<br />
Function Condensing(R)<br />
6.5. Funciones Distancia Heterogéneas<br />
6.5.1. Normalización<br />
La normalización es necesaria para que todos los atributos tengan el mismo peso.<br />
Ejemplo 6.2<br />
A(900, 9)<br />
B(1000, 3)<br />
C(300, 3)<br />
x 1 ∈ [0, 1000] d(A, C) = √ (900 − 300) 2 + (9 − 3) 2 = 600 ′ 03<br />
x 2 ∈ [0, 10] d(B, C) = √ (1000 − 300) 2 + (3 − 3) 2 = 700<br />
Vemos que x 1 domina a x 2 , ya que sea cual sea el valor de x 2 , el punto más cercano a C<br />
siempre será A.<br />
Una opción para normalizar es dividir cada atributo entre el valor máximo de su rango.<br />
Ejemplo 6.3<br />
√ (900 ) − 300 2 ( ) 9 − 3 2<br />
d(A, C) =<br />
+ = 0 ′ 848<br />
1000<br />
10<br />
√ (1000 ) − 300 2 ( ) 3 − 3 2<br />
d(B, C) =<br />
+ = 0 ′ 555<br />
1000<br />
10<br />
Y vemos cómo ahora el punto más cercano a C es B.<br />
6.5.2. Discretización<br />
En ocasiones puede no interesar tener atributos reales (por ejemplo, porque utilizamos<br />
un método discreto, no continuo).<br />
Para ello, dividimos el rango de valores reales en distintos subrangos y entonces se trabaja<br />
como si ese atributo fuera multivaluado, como se muestra en la figura 6.8<br />
Figura 6.8: Discretización
6.5 Funciones Distancia Heterogéneas 79<br />
6.5.3. Distintas métricas para el cálculo de distancias<br />
Métrica heterogénea coincidencia euclídea MHCE<br />
∑<br />
MHCE(x, y) = √ n d i (x i , y i ) 2 x = (x 1 , x 2 , . . . , x n )<br />
y = (y 1 , y 2 , . . . , y n )<br />
i=1<br />
⎧<br />
⎨ 1 si x i o y i desconocido<br />
d i (x i , y i ) coincidencia(x i , y i ) si i multivaluado<br />
⎩<br />
r i Normalizado(x i , y i ) en otro caso<br />
{ 0 si xi = y<br />
coincidencia(x i , y i )<br />
i<br />
1 en otro caso<br />
r i Normalizado(x i , y i ) = |x i − y i |<br />
rango i<br />
rango i = max i − min i<br />
Métrica heterogénea de diferencia de valores MHDV<br />
∑<br />
MHDV (x, y) = MHCE(x, y) = √ n d i (x i , y i ) 2 x = (x 1 , x 2 , . . . , x n )<br />
y = (y 1 , y 2 , . . . , y n )<br />
i=1<br />
⎧<br />
⎨ 1 si x i o y i desconocido<br />
d i (x i , y i ) MDV i Normalizado(x i , y i ) si i multivaluado<br />
⎩<br />
r i Normalizado(x i , y i ) en otro caso<br />
r i Normalizado(x i , y i ) = |x i − y i |<br />
4σ i<br />
c∑<br />
MDV i Normalizado(x i , y i ) =<br />
N i xi k<br />
∣ − N ∣<br />
i y i k ∣∣∣<br />
N i xi N i yi<br />
donde<br />
c es el número de clases<br />
N i xi es el número de ejemplos en el conjunto de entrenamiento que tiene el valor x i para<br />
el atributo i-ésimo<br />
N i xi k es el número de ejemplos en el conjunto de entrenamiento que toman el valor x i<br />
para el atributo i-ésimo y como salida la clase k.<br />
k=1
80 Capítulo 6. Aprendizaje Basado en Instancias
Capítulo 7<br />
Máquinas de Aprendizaje<br />
7.1. El Perceptrón como Discriminante Lineal<br />
Figura 7.1: Esquema de un Perceptrón<br />
En la figura 7.1 se muestra la imagen de un perceptrón, en la cual se tiene que:<br />
x = (x 1 , x 2 , . . . , x n , x n+1 ) = (x 1 , x 2 , . . . , x n , c)<br />
d(x) =<br />
n∑<br />
x i w i + w 0<br />
i=1<br />
La función (*) filtra d(x) para devolver una clase, por ejemplo<br />
{ x ∈ c1 si d(x) ≥ 0<br />
x ∈ c 2 si d(x) < 0<br />
La capacidad de información de cada atributo x i depende de su correspondiente peso<br />
w i<br />
Las clases que va a poder discriminar este perceptrón son clases linealmente separables,<br />
como las mostradas en la figura 7.2<br />
Figura 7.2: Ejemplo de clases linealmente separables<br />
81
82 Capítulo 7. Máquinas de Aprendizaje<br />
7.1.1. Criterio y construcción <strong>del</strong> perceptrón<br />
Los ejemplos de entrenamiento son<br />
x 1 = (x 11 , x 12 , . . . , x 1n )<br />
x 2 = (x 21 , x 22 , . . . , x 2n )<br />
.<br />
x M = (x M1 , x M2 , . . . , x Mn )<br />
Se comienza con un vector de pesos w 0 aleatorio (y con valores próximos a cero). A partir<br />
de él, con el ejemplo x 1 se obtiene w 1 , es decir<br />
donde f es el gradiente descendiente.<br />
w k+1 = f(w k , x k+1 )<br />
w k+1 = w k − α k ∇J(w k )<br />
donde<br />
w k es el vector de pesos actual<br />
α k ∈ [0, 1] es el paso de iteración de aprendizaje<br />
J(w k ) es lo que se conoce como criterio <strong>del</strong> perceptrón, y es una función que hay que<br />
derivar<br />
J(w k ) = ∑<br />
x∈M C<br />
(−w · x)<br />
donde M C es el conjunto de los ejemplos mal clasificados<br />
x ∈ c 2 ⇔ −x ∈ c 1<br />
De este modo hacemos que todos los ejemplos de la clase c 2 sean de la clase c 1 y así sólo<br />
hay que comprobar d(x) > 0.<br />
∇J(w) = ∑<br />
x∈M C<br />
(−x)<br />
Y finalmente tenemos que<br />
w k+1 = w k + α k<br />
∑x∈M C<br />
x<br />
El vector de pesos se va calculando hasta que no hayan ejemplos mal separados (suponiendo<br />
que las clases son linealmente separables).<br />
7.2. Redes de Perceptrones Multicapa<br />
Figura 7.3: Ejemplo de clases NO linealmente separables<br />
Un perceptrón tradicional como el visto hasta ahora sería incapaz de aprender un ejemplo<br />
como el mostrado en la figura 7.3(a). El resultado que debería dar es el que se muestra en la<br />
figura 7.3(b).
7.2 Redes de Perceptrones Multicapa 83<br />
Figura 7.4: Ejemplo de perceptrón multicapa<br />
Figura 7.5: Estructura de un perceptrón multicapa<br />
Para conseguirlo lo que se hace es encadenar perceptrones formando lo que se conoce<br />
como una red de perceptrones multicapa, como la que se muestra en la figura 7.4<br />
En la capa de salida de la red de perceptrones multicapa ya no se usa la función que se<br />
usaba antes para decidir la clase <strong>del</strong> ejemplo de entrada. Ahora se emplea la función sigmoide:<br />
1<br />
1 + e − ∑ w·x<br />
la cual devuelve valores en (0, 1)<br />
El número de capas ocultas y el número de neuronas en ellas es variable. Sin embargo se<br />
ha demostrado que con una sola capa oculta es suficiente.<br />
El número de neuronas en la capa de salida depende <strong>del</strong> número de clases que tengamos.<br />
Por ejemplo, si tenemos dos clases, c 1 y c 2 , podemos usar una o dos neuronas. En general<br />
n clases ⇒ log 2 n neuronas, como mínimo<br />
La representación <strong>del</strong> mo<strong>del</strong>o aprendido es la propia red neuronal, con todas sus conexiones,<br />
los vectores de pesos w1 y w2, el número de capas ocultas y el número de neuronas de<br />
cada capa (definido por el usuario).<br />
Ahora hay que optimizar el error cuadrático, es decir, cuánto se desvía la salida de la red<br />
con respecto a la salida que se espera, puesto que ahora la red da valores continuos en el<br />
intervalo (0, 1).<br />
E(w) = 1 2<br />
M∑<br />
(y j − o j ) 2 donde<br />
j=1<br />
y j clase real <strong>del</strong> ejemplo<br />
o j clase inferida por la red<br />
El algoritmo va modificando los vectores de pesos en función <strong>del</strong> error cometido con el<br />
último ejemplo, hasta que la variación de todos los elementos de los vectores de pesos sea
84 Capítulo 7. Máquinas de Aprendizaje<br />
suficientemente pequeña durante varias épocas 1 .<br />
Pero como a menudo no sabemos cuántas épocas son necesarias para que el mo<strong>del</strong>o<br />
converja, se suele poner una cota superior (por ejemplo, si en 1000 épocas el mo<strong>del</strong>o no<br />
converge, termina).<br />
Cuantas más neuronas hayan en la capa oculta más complejo es el sistema que se desea<br />
aprender y siempre es posible encontrar un mo<strong>del</strong>o (pero más neuronas implican más tiempo<br />
de aprendizaje).<br />
Éste es un aprendizaje local.<br />
La fórmula para obtener los vectores de pesos en cada iteración es la siguiente:<br />
w c (t + 1) = w c (t) − ρ∇ wc E(w c ) = w c (t) + △w c (t + 1)<br />
Algoritmo Backpropagation<br />
A grandes rasgos, los pasos de este algoritmo son:<br />
1. Inicializar la red.<br />
2. Inicializar los vectores de pesos.<br />
3. El término h 0 y o 0 de la capa oculta y de salida, respectivamente, se pone a 1, porque<br />
no depende de los ejemplos.<br />
4. Se toma un ejemplo y se le pasa a la red.<br />
Para clasificar usaremos como función de decisión n intervalos (si hay n clases) con una<br />
fiabilidad que depende directamente de la base de prueba.<br />
7.3. Árboles de Clasificación<br />
Usados cuando la clase (o el atributo por el que queremos catalogar) es multivaluado.<br />
Para clases (o atributos) reales se usan los árboles de regresión.<br />
Cada nodo interno <strong>del</strong> árbol es un atributo (real o multivaluado) de los ejemplos, y sólo<br />
recogerá aquellas características que considere necesarias para discriminar.<br />
Las hojas son las clases o los valores <strong>del</strong> atributo multivaluado por el que queremos<br />
catalogar.<br />
Figura 7.6: Ejemplo de árbol de clasificación<br />
1 Una época es una pasada completa a todos los ejemplos de la base de entrenamiento
7.4 Árboles de Regresión 85<br />
Definición 7.1 Un nodo se dice que es puro si todos los ejemplos contenidos en él tienen la<br />
misma clase.<br />
Si un nodo no puro cumple el criterio de parada se etiqueta con la clase que predomine<br />
en sus ejemplos. Un atributo multivaluado no se puede usar para dividir los ejemplos de más<br />
de un nodo; un atributo real sí puede.<br />
Poda por estimación <strong>del</strong> error<br />
Sea C k el número de ejemplos de la clase k que hay en un nodo.<br />
Si la suma <strong>del</strong> error de los hijos es mayor que el error <strong>del</strong> padre, se podan los hijos y al<br />
padre se le asigna la clase que predomine.<br />
Figura 7.7: Ejemplo de poda por estimación <strong>del</strong> error<br />
Ejemplo 7.1 En el árbol de clasificación de la figura 7.7 el padre tiene un error de<br />
100<br />
1100 ≈ 0′ 1<br />
mientras que la suma de los errores de los hijos vale<br />
7.4. Árboles de Regresión<br />
10<br />
960 + 50<br />
140 ≈ 0′ 4<br />
El nodo hoja ahora es un atributo real y no vale la condición de nodo puro como condición<br />
de parada.<br />
Ahora en vez <strong>del</strong> valor predominante, se le asigna al nodo hoja la media de los valores <strong>del</strong><br />
atributo por el que se clasifica.<br />
El sobreaprendizaje consiste en seguir preguntando repetitivamente por algún atributo<br />
real hasta que se llega a un árbol en cuyas hojas sólo hay un ejemplo.<br />
Para evitar esto se usa como condición de parada el número de ejemplos en un nodo y/o<br />
la profundidad <strong>del</strong> nodo.
86 Capítulo 7. Máquinas de Aprendizaje
Capítulo 8<br />
Aprendizaje por Descubrimiento<br />
En este capítulo vamos a tratar el aprendizaje no supervisado, es decir, en vez de tener<br />
como hasta ahora x = (x 1 , . . . , x n , c), se tiene x = (x 1 , . . . , x n ) que no significa que no se<br />
conozca la clase, sino que no existe tal clase.<br />
8.1. Clustering o Agrupamiento<br />
En este tipo de aprendizaje por descubrimiento no se habla de clasificación (puesto que no<br />
existen clases) sino de agrupamiento. Los ejemplos se agrupan según su similitud o semejanza<br />
(ya no se habla de características).<br />
Uno de los problemas <strong>del</strong> clustering es que se van a producir un número (normalmente)<br />
desconocido de agrupamientos. Para evitar esto, el número de agrupamientos que se quieran<br />
formar se pasa como parámetro.<br />
La validación de un cluster consiste en averiguar cuál es el mejor número de dichos<br />
agrupamientos.<br />
8.1.1. Algoritmo de k-medias<br />
Como medida de similitud entre los ejemplos se usa la distancia entre los mismos (entendiendo<br />
por distancia la distancia euclídea si todos los atributos son reales o alguna de<br />
las distancias heterogéneas vistas anteriormente si hay atributos multivaluados). Cuanto más<br />
cercanos sean dos ejemplos, más semejantes.<br />
Cada cluster tiene un centro (media) que acabará estando en el centro de gravedad de la<br />
masa de los ejemplos.<br />
Ejemplo 8.1 Sea<br />
x 1 = (x 1 1 , . . . , x1 n)<br />
x 2 = (x 2 1 , . . . , x2 n)<br />
x 3 = (x 3 1 , . . . , x3 n)<br />
la base de ejemplos.<br />
Entonces la media se calcula como<br />
( x<br />
1<br />
x = 1 + x 2 1 + x3 1<br />
, . . . , x1 n + x 2 n + x 3 )<br />
n<br />
3<br />
3<br />
En el algoritmo de k-medias ||x − m i || es la norma que nos indica cuál es la similitud de<br />
los ejemplos.<br />
La función J mide el error <strong>del</strong> mo<strong>del</strong>o aprendido y, por lo tanto, debe ser minimizada.<br />
87
88 Capítulo 8. Aprendizaje por Descubrimiento<br />
En cada iteración <strong>del</strong> algoritmo se calcula la distancia de cada ejemplo a cada una de<br />
las k medias y cada ejemplo se asocia con el cluster cuya media mejor lo represente (la más<br />
cercana al ejemplo).<br />
Si algún ejemplo cambia de cluster hay que recalcular las medias y, por consiguiente,<br />
recalcular J (la cual irá disminuyendo en cada iteración).<br />
El algoritmo para cuando J no cambie, es decir, cuando J haya alcanzado su valor mínimo<br />
y ningún ejemplo haya cambiado de cluster.<br />
Lo que hay que devolver al usuario es el mo<strong>del</strong>o con el menor error y para ello se prueban<br />
distintos números de agrupamientos.<br />
El mo<strong>del</strong>o con menor error (J = 0) es aquel que tenga tantos agrupamientos como ejemplos.<br />
Pero este mo<strong>del</strong>o no es nada bueno porque no se puede inferir (se ha producido sobreaprendizaje).<br />
De aquí se deduce que cuanto mayor sea el número de agrupamientos, menor error habrá.<br />
Por eso la validación consiste en encontrar el número óptimo de agrupamientos.<br />
8.1.2. Mapas autoasociativos de Kohonen<br />
Se trata de redes neuronales no supervisadas, como la que se muestra en la figura 8.1.<br />
Figura 8.1: Mapa autoasociativo de Kohonen<br />
Cada neurona representa un vector de pesos. Se calcula la distancia entre los ejemplos de<br />
entrada y los vectores de pesos.<br />
Cuando entra el ejemplo todas las neuronas se activan y aquella con menor distancia<br />
recibe el nombre de unidad ganadora. Esta unidad ganadora se mueve y se acerca al ejemplo<br />
para representarlo.<br />
Es decir, la unidad ganadora cumple que w c = min<br />
i<br />
|x − w i |<br />
LASON<br />
La unidad ganadora, al moverse hacia el ejemplo de entrada para representarlo, arrastra<br />
a sus vecinos (es decir, éstos también se mueven, aunque menos que la unidad ganadora).<br />
De esta forma se aprende la topología de los datos. Esta técnica se utiliza, por ejemplo,<br />
en el reconocimiento de caracteres.<br />
⎧<br />
⎨<br />
w ih (t + 1)<br />
⎩<br />
w ih (t) +<br />
w ih (t)<br />
α(t)<br />
d(c h , c j ) (x i(t) − w ih (t))<br />
si c j es la unidad ganadora y d(c h , c j ) ≤ θ<br />
en otro caso<br />
∀ i = 1, . . . , n, donde<br />
α(t) es variable con el tiempo y dará el criterio de parada cuando alcance un cierto umbral.<br />
Suele ser una función logarítmica.
8.1 Clustering o Agrupamiento 89<br />
d(c h , c j ) es la distancia entre la unidad ganadora c j y el resto de neuronas c h .<br />
Ejemplo 8.2 Definimos d(c h , c j ) como el número de neuronas por las que hay que pasar<br />
para llegar desde c h hasta c j , y sea θ = 2.<br />
Entonces d(c j , c j ) = 1 y w ij (t) + α(t)(x i (t) − w ij (t))<br />
Si d(c h , c j ) = 2 entonces w ih (t) + α(t)<br />
2 (x i(t) − w ih (t))<br />
Algoritmo<br />
1. Se inicializan los pesos con valores aleatorios y pequeños<br />
2. Se introduce un nuevo ejemplo y se actualiza α(t)<br />
3. Se propaga el ejemplo a la capa de competición y se obtienen los valores de salida de<br />
cada neurona (es decir, la distancia <strong>del</strong> vector de pesos al ejemplo de entrada)<br />
4. Se selecciona la neurona c ganadora<br />
5. Se actualizan las conexiones entre la capa de entrada y la neurona c, así como la de su<br />
vecindad según su grado de vecindad<br />
6. Si α(t) está por encima de un umbral volvemos al paso 2. En caso contrario, parar.
90 Capítulo 8. Aprendizaje por Descubrimiento
Parte II<br />
<strong>Ingeniería</strong> <strong>del</strong> <strong>Conocimiento</strong><br />
91
Capítulo 9<br />
Principios de la <strong>Ingeniería</strong> <strong>del</strong><br />
<strong>Conocimiento</strong><br />
Historia de los SE<br />
Características de los SE<br />
Deficiencias de los SE<br />
Representación<br />
<strong>del</strong> <strong>Conocimiento</strong><br />
Personas<br />
involucradas<br />
⎧<br />
⎨<br />
⎧<br />
⎩<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
Lógica<br />
Sistemas de Producciones<br />
Redes Semánticas<br />
Marcos<br />
Ingeniero <strong>del</strong> <strong>Conocimiento</strong><br />
Experto<br />
Usuario<br />
{ Tácito<br />
Accesibilidad<br />
⎧<br />
Explícito<br />
⎪⎨<br />
Representación<br />
⎪⎩<br />
⎪⎨<br />
⎧<br />
<strong>Conocimiento</strong><br />
⎨<br />
Naturaleza<br />
⎩<br />
⎧<br />
Personal<br />
Idealístico<br />
⎪⎨<br />
Sistemático<br />
Niveles<br />
Pragmático<br />
⎪⎩<br />
⎪⎩<br />
Automático<br />
<strong>Ingeniería</strong> <strong>del</strong> <strong>Conocimiento</strong><br />
SBC<br />
Nivel de <strong>Conocimiento</strong><br />
⎧<br />
⎪⎨<br />
SE basado<br />
en Reglas<br />
⎪⎩<br />
Hacia a<strong>del</strong>ante<br />
Hacia atrás<br />
Ventajas<br />
Inconvenientes<br />
Declarativo<br />
Semántico<br />
Procedimental<br />
Episódico<br />
Público<br />
Experiencia compartida<br />
93
94 Capítulo 9. Principios de la <strong>Ingeniería</strong> <strong>del</strong> <strong>Conocimiento</strong><br />
SE basado<br />
en Mo<strong>del</strong>os<br />
SE basado<br />
en Casos<br />
{ Ventajas<br />
Inconvenientes<br />
{ Ventajas<br />
Inconvenientes<br />
Reglas + Casos<br />
Reglas + Mo<strong>del</strong>os<br />
Mo<strong>del</strong>os + Casos
Capítulo 10<br />
La Adquisición <strong>del</strong> <strong>Conocimiento</strong><br />
Nivel<br />
Contextual<br />
Nivel<br />
Conceptual<br />
Nivel de<br />
Sistema<br />
⎧<br />
⎪⎨<br />
Personal de<br />
Interés<br />
Mo<strong>del</strong>o<br />
Contextual<br />
Mo<strong>del</strong>o de<br />
Tareas<br />
Mo<strong>del</strong>o de<br />
Agentes<br />
⎧<br />
⎨<br />
⎩<br />
⎧<br />
⎪⎨<br />
Proveedores de <strong>Conocimiento</strong><br />
Usuarios de <strong>Conocimiento</strong><br />
Gestores de <strong>Conocimiento</strong><br />
Características más importantes de la organización<br />
Decidir dónde es útil un SBC<br />
Viabilidad<br />
⎪⎩<br />
⎧<br />
Impacto<br />
Refinamiento <strong>del</strong> mo<strong>del</strong>o de<br />
⎪⎨<br />
⎧<br />
la organización<br />
⎨ Entradas/Salidas<br />
Descubre tareas relevantes Precondiciones<br />
⎪⎩<br />
⎩<br />
Recursos<br />
⎧<br />
Ejecutor<br />
⎧<br />
de las tareas<br />
⎪⎨<br />
⎪⎩<br />
⎪⎨<br />
Analiza<br />
⎧<br />
⎪⎨<br />
Formulario Resumen<br />
⎪⎩<br />
⎪⎩<br />
⎧<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
{ Mo<strong>del</strong>o de<br />
Diseño<br />
Mo<strong>del</strong>o de<br />
<strong>Conocimiento</strong><br />
Mo<strong>del</strong>o de<br />
Comunicación<br />
⎪⎨<br />
⎪⎩<br />
Cargo en la organización<br />
Tipo (humano/software)<br />
Tareas en las que está involucrado<br />
Agentes con los que se comunica<br />
<strong>Conocimiento</strong> que posee<br />
Responsabilidad que tiene<br />
Impacto y cambios en la organización<br />
Impacto y cambios en las tareas y agentes<br />
Actitudes y compromiso<br />
Acciones propuestas<br />
<strong>Conocimiento</strong><br />
<strong>del</strong> Dominio<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
Esquema <strong>del</strong><br />
Dominio<br />
⎧<br />
⎨<br />
⎩<br />
Conceptos<br />
Relaciones<br />
Reglas<br />
⎧<br />
Base de <strong>Conocimiento</strong><br />
Inferencias<br />
⎪⎨<br />
Roles<br />
Funciones de transferencia<br />
<strong>Conocimiento</strong><br />
sobre Inferencias ⎪⎩<br />
{<br />
Diagramas de Inferencia<br />
<strong>Conocimiento</strong> Tareas<br />
⎪⎩<br />
⎧<br />
sobre Tareas Métodos<br />
Plan de Comunicación<br />
⎪⎨<br />
{<br />
−→ organiza las transacciones<br />
Objetos de información intercambiados<br />
Transferencias<br />
Tareas y agentes involucrados<br />
⎪⎩<br />
Mensaje −→ detalles de la estructura de la transacción<br />
95
96 Capítulo 10. La Adquisición <strong>del</strong> <strong>Conocimiento</strong><br />
Sesión<br />
AC<br />
⎧<br />
⎪⎨<br />
⎪⎩<br />
⎧<br />
⎨ Planificación<br />
Fases Encuentro<br />
⎩<br />
Análisis ⎧<br />
Entrevistas no estructuradas −→ elementos gráficos<br />
Técnicas<br />
de AC<br />
⎪⎨<br />
⎪⎩<br />
Entrevistas estructuradas −→ elementos formales<br />
⎧<br />
Basadas en<br />
Construcciones<br />
Repertory Grid<br />
Traza de<br />
Procesos<br />
⎪⎨<br />
⎪⎩<br />
Estructuración de conceptos<br />
1. Identificar elementos<br />
2. Identificar características<br />
3. Diseñar parrilla con valoraciones<br />
4a. Agrupar por elementos y construir el árbol<br />
4a. Agrupar por características y construir el árbol<br />
5. Analizar<br />
{ Análisis Tareas<br />
Diseño Protocolo