10.12.2014 Views

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!