CAPÍTULO II- MÉTODOS Y SISTEMAS REPRESENTATIVOS DE ILP
2.1 Métodos Botton-Up
2.1.1 Generalización Menos General
Una alternativa a la generalización es buscar la mínima generalización posible, a través de cierta relación de generalidad entre cláusulas. Esta alternativa fue investigada por (Plotkin, 1969) y
presentada como una solución, que es conocida como Generalización Menos General
(Least General Generalization o lgg). Se basa en la idea de que si dos cláusulas son ciertas, la generalización más específica común a ambas será también cierta con bastante plausibilidad, o sea, la generalización menos general de dos cláusulas C y C’ es la generalización más específica de las cláusulas C y C’ dentro del enrejamiento10(lattice) generado en el espacio de cláusulas.
Antes de presentarse en qué consiste este tipo de generalización, es necesario primeramente introducir la definición de Θ-Subsumpción11(del inglés Θ-Subsumption).
• Θ-Subsumpción: Sean C y C' dos cláusulas de programa. Se dice que: C Θ -subsume a C' si existe una substitución Θ tal que CΘ≤ C' (Plotkin, 1969). Comúnmente se denota C ≤ C’.
Ejemplo: Sea C = hija (X, Y) ←femenino (X), padre (Y, X). Con la substitución vacía, C subsume a hija(X, Y) ← femenino (X), padre (Y, X) . Por otra parte, con la substitución Θ = (Y/X), C subsume a hija (X, X) ← femenino (X), padre (X, X), y con la substitución Θ = (X/ana, Y/luis), C subsume a hija (ana, luis) ← femenino (ana), padre (luis, ana), padre (luis, pepe).
Θ-Subsumpciónintroduce la noción de generalización, donde se dice que C es más general que C',
C ≤ C', si C Θ-Subsume a C' y no al revés. Y, en este caso, que C' es una especialización (o refinamiento) de C. A partir de esto, se tienen dos propiedades importantes de la Θ-Subsumpción:
• Propiedad I:Si C Θ-subsume a C’ entonces C’ es una consecuencia lógica de C, es decir, C |= C’, pero el inverso no se cumple.
• Propiedad II: Por otra parte, C ≤ C’ si y solo si C’ es una tautología o C es usada exactamente una vez en una prueba de resolución de T ├ C → C’ , donde T es un conjunto arbitrario de cláusulas.
10 La noción de enrejamiento (lattice) de un espacio de hipótesis consiste en la unión de los nodos del grafo de
refinamiento (hipótesis construidas), basada en el concepto de generalidad. Por ejemplo h1<h2, h2<h3, h2<h4, etc., donde h1 es mas general que h2, h3 y h4 respectivamente.
_______________________________________________________________________________ En resumen, Θ-Subsumpción es importante para el Aprendizaje Inductivo por las siguientes razones:
1. Proporciona un ordenamiento general para las hipótesis del problema, estructurando así el espacio de hipótesis.
2. Puede usarse para podar partes profundas del espacio de búsqueda:
- Al generalizar C a C’, C’ ≤ C, todos los ejemplos cubiertos por C también serán cubiertos por C’ (subsecuentemente si B U {C} |= e se sostiene también que B U {C’} |= e). Esta propiedad es usada para podar la búsqueda de una cláusula más general que C cuando “e” es un ejemplo negativo. Por lo que si C es inconsistente (es decir, cubre ejemplos negativos) entonces todas las generalizaciones involucradas también serán inconsistentes. De ahí que la generalización de C no necesite consideración alguna.
- Al especializar C a C’, C ≤ C’, un ejemplo no cubierto por C no será cubierto por ninguna o cualquiera de sus especializaciones (subsecuentemente si B U {C} |≠ e se sostiene también que B U {C’} |≠ e). Esta propiedad es usada para podar la búsqueda de cláusulas más específicas que C cuando “e” es un ejemplo positivo no cubierto: si C es incompleto (es decir, no cubre ningún ejemplo positivo) entonces todas sus especializaciones involucradas también serán incompletas. De ahí que la especialización de C no necesite consideración alguna.
• Definición de lgg: Según (Gunetti et al., 1994), la cláusula C es la Generalización Menos General de otra cláusula D bajo una Θ-Subsumpción si C ≤ D (cláusula C es más general que la cláusula D), y si para cualquier otra cláusula E tal que E ≤ D, se cumple que E ≤ C.
En otras palabras, si se tiene un par de cláusulas C y D, de manera tal que la primera es más general en alguna medida respecto a la segunda, se puede afirmar que C es la más específica de todas las generalizaciones de D si cualquier otra cláusula que también sea más general que D, lo es también de C.
En relación con la lgg, (Plotkin, 1969) fue uno de los pioneros en usarla como mecanismo de aprendizaje en lógica de primer orden y afirmó que dadas las cláusulas C y C1, C es la lgg de C1
bajo una cierta Θ-Subsumpción si C ≤ C1 y para toda otra Ci perteneciente al enrejado que cumple
Figura 2.1: Generalización Menos General. Tomada de (Luján, 2008). Véase seguidamente el algoritmo 2.1 para evaluar el lgg entre dos términos:
Esquema 2.1. Algoritmo de Generalización Menos General. Tomado de (Gunetti et al., 1994).
Para definir correctamente la lgg entre dos cláusulas es necesario definirlo primero para términos, átomos y literales:
• Lgg de términos lgg (t1, t2): 1. lgg (x, x) = x,
2. lgg (f(x1,..., xn), f (y1,..., yn)) = f (lgg (x1, y1),..., lgg (xn, yn)),
3. lgg (f (x1,..., xm), g (y1,..., yn)) = V. Donde f ≠ g y V es sólo una variable que representa a
lgg (f (x1,..., xm), g (y1,..., yn)),
4. lgg(x, y) = V. Donde x ≠ y u al menos uno, x o y es una variable. V es sólo una variable que representa a lgg(x, y).
Ejemplos:
lgg ([a, b, c], [a, d, e])= [a, X, Y]
lgg( f(a, a), f(b, b) ) = f( lgg(a, b),lgg(a, b) ) = lgg( V, V ) . Cuando se calcula lgg se debe tener cuidado de usar la misma variable para las múltiples ocurrencias de los lggs de subtérminos.
_______________________________________________________________________________
• Lgg de átomos lgg (A1, A2):
1. lgg (p (x1,..., xn), p (y1,..., yn)) = p (lgg (x1, y1),..., lgg (xn, yn)). Si lo átomos tienen el
mismo símbolo de predicado.
2. lgg (p(x1,..., xn), q (y1,..., yn)) no esta definida si p ≠ q.
• Lgg de literales lgg (L1, L2):
1. lgg (l1, l2), si l1 y l2 son átomos se calcula como se definió arriba.
2. Si ambos, l1 y l2 son literales negativos, tales que l1=~ l1' y l2=~ l2' entonces
lgg (l1, l2)= ~ lgg (l1', l2').
3. Si el literal l1 es negativo, o sea l1=~ l1' y l2 positivo, o viceversa entonces lgg (l1, l2) no
esta definido.
Ejemplos:
lgg (padre (ana, maría), padre (ana, tomás)) = padre (ana, X). lgg (padre (ana, maría), ~ padre (ana, tomás)) = no esta definido. lgg (padre (ana, X), hija (maría, ana)) = no esta definido.
• Lgg de cláusulas lgg (C1, C2): Dado lgg (C1, C2), si C1= {l1,..., ln} y C2= {k1,..., kn}, entonces
lgg (C1, C2) = {Lij = lgg (li, kj) | liє C1, kjє C2 y lgg (li, kj) está definido}.
Ejemplo:
Dadas las siguientes cláusulas:
C1 = hija (fernanda, eduardo) ← padre (eduardo, fernanda),
femenino (fernanda), pequeña (fernanda). C2 = hija (camila, rodrigo) ← padre (rodrigo, camila),
femenino (camila), grande (camila). La lgg (C1, C2) = hija (X, Y) ← padre (Y, X), femenino (X).
Y la longitud del lgg de las cláusulas C1 y C2 es a lo más |C1| x |C2|. El lgg entre literales es único
(renombrando variables), pero entre cláusulas no necesariamente (se pueden reducir bajo Θ-Subsumpción). Esto mismo se extiende para un conjunto de cláusulas.