Aprendizaje automatico programacion logica inductiva 
Aprendizaje Autom´atico: Programaci´on L´ogica Inductiva. Dr. Alejandro Guerra Hern´andez Universidad Veracruzana Facultad de F´ısica e Inteligencia Artificial Maestr´ıa en Inteligencia Artificial Sebasti´an Camacho No. 5, Xalapa, Ver., M´exico 91000 aguerra@uv.mx www.uv.mx/aguerra Abril 22, 2004 1. Introducci´on Una de las representaciones de hip´otesis m´as expresivas y f´aciles de compreende son los conjuntos de reglas Si – Entonces. Esta sesi´on explora diversos algoritmos para el aprendizaje de estos conjuntos de reglas. Un caso especial importtante involucra el aprendizaje de conjuntos de reglas que incluyen variables. Estas reglas se conocen como cl´ausulas de Horn en primer orden. Debido a que las cl´ausulas de Horn pueden verse como programas escritos en un lenguaje de programaci´on l´ogica como Prolog, su aprendizaje se conoce como Programaci´on L´ogica Inductiva (ILP). En muchos casos es ´util aprender una funci´on objetivo representada como un conjunto de reglas si-entonces, que en de manera conjunta definen la funci´on. Como hemos visto, es posible construir un conjunto de reglas aprendiendo un ´arbol de decisi´on (clase 07) y convirti´endolo en el cojunto de reglas equivalente, una por cada rama de la ra´ız del ´arbol a alguna de sus hojas. Un segundo m´etodd que hemos visto es el de codificar cada regla como una cadena de bits y usar un algoritmo gen´etico (clase08) para explorar el espacio de hip´otesis posibles. En esta sesi´on estudiaremos algoritmos que aprenden estos conjuntos de reglas directamente y que difieren de los m´etodos mencionados en dos aspectos fundamenntales Primero, est´an dise˜nados para trabajar con reglas que contienen variables. Esto es significativo porque las reglas en primer orden son considerabllement m´as expresivas que las reglas proposicionales vistas hasta ahora. Segundo, los algoritmos que discutiremos son algoritmos de cobertura secuenciia que aprenden una regla a la vez, para incrementalmente ir construyendo el conjunto de reglas. 1Como un ejemplo de reglas de primer orden, consideren el siguiente par de reglas que en conjunto definen el concepto ancestro. El predicado Padre(x, y) indica que y es la madre o el padre de x, y el predicado Ancestro(x, y) indica que y es un ancestro de x en un n´umero arbitario de generaciones: Si Padre(x, y) Entonces Ancestro(x, y) Si Padre(x, z) ∧ Ancestro(z, y) Entonces Ancestro(x, y) Observen que estas dos reglas definen de manera concisa una funci´on recursiiv que ser´ıa dif´ıcil de representar usando arboles de decisi´on o cualquier otro m´etodo de representaci´on proposicional. De hecho, formuladas de una manerr poco diferente, el par de reglas anterior forman un programa Prolog v´alido para computar la relaci´on ancestro. Un algoritmo de prop´osito general capaz de aprender estos conjuntos de reglas es por lo tanto, un algoritmo para inferir autom´aticamente programas Prolog a partir de ejemplos. Comenzaremos por considerar algoritmos que aprenden conjuntos de reglas proposicionales, esto es, reglas sin variables. Los algoritmos que buscan en el espacio de hip´otesis un conjunto de reglas disyuntivas son m´as faciles de entender en esta configuraci´on. 2. Algoritmos de cobertura secuencial Estos algoritmos para aprender conjuntos de reglas siguen la estrategia de aprender una regla, remover los ejemplos que la regla cubre del conjunto de entrenamiento, e iterar en este procedimiento. Imaginen que tenemos una subruttin aprendeUnaRegla que acepta como entrada, un conjunto de ejemplos de entrenamiento positivos y negativos; y produce como salida, una sola regla que cubre muchos ejemplos positivos y pocos negativos. Necesitamos que esta regla tenga alta precisi´on, aunque carezca de amplia cobertura. Eso es, la regla no necesariamente hace predicciones sobre todos los ejemplos, pero, para aquellos que la hace, la predicci´on es correcta. Dada esta sub-rutina para aprender una sola regla, una aproximaci´on obvia para aprender un conjunto de reglas es aplicar la sub-rutina a todos los ejemplos de entrenamiento, remover todos los ejemplos positivos cubiertos por la regla aprendida, y aplicar nuevamente la sub-rutina en los ejemplos restantes para producir una nueva regla. Este procedimiento se puede repetir hasta producir un conjunto de reglas que cubran la fracci´on de ejemplos positivos deseada. El conjunto resultante puede ordenarse de acuerdo a su precisi´on, para aplicar las reglas m´as precisas primero, al clasificar nuevos ejemplares. Un algoritmo protot´ıpico se muestra en el cuadro 1. Este algoritmo de cobertura secuencial representa uno de los enfoques m´as usados para aprender conjuntos de reglas disyuntivas. El enfoque reduce el probleem original en una sencuencia de problemas m´as simples, cada uno de los cuales requiere que una sola regla conjuntiva sea aprendida. Puesto que la b´usqueda 2fun coberturaSecuencial(objetivo, atribs, ejs, umbral) input: objetivo: atributo objetivo; atribs: atributos; ejs : conjunto de entrenamiento; umbral: porcentaje aceptacion; static: regla: una regla aprendida; output: reglas: conjunto de reglas aprendido; reglas ← {}; regla ← aprendeUnaRegla(objetivo, atribs, ejs); while desempe˜no(regla, ejs) > umbral do reglas ← reglas ∪ regla; ejs ← ejs \ { ejs bien clasifiados }; regla ← aprendeUnaRegla(objetivo, atribs, ejs); enddo reglas ← ordenarPorDesempe˜no(reglas); return reglas; endfun Cuadro 1: Algoritmo coberturaSecuencial llevada a cabo es ego´ısta, no podemos garantizar que el enfoque encontrar´a el conjunto de reglas m´as peque˜no, o bien, el de mejor cobertura sobre el conjunto de ejemplos. ¿Como debemos dise˜nar aprendeUnaRegla para cubrir los requermientos del algoritmo de cobertura secuencial? A continuaci´on consideraremos el caso proposicional y m´as tarde el de las cl´ausulas de Horn. 2.1. B´usqueda por barrido de lo general a lo espec´ıfico Una manera de dise˜nar aprendeUnaRegla consiste en organizar la b´usqueda en el espacio de hip´otesis a la manera de ID3, pero siguiendo ´unicamente la rama m´as promisoria del ´arbol en cada paso. Esto es, la b´usqueda comienza con la hip´otesis m´as general, ninguna restricci´on atributo-valor ha sido impuesta, y en cada paso a˜nade una restricci´on en forma de prueba atributo-valor, que maximiiz la ganancia de informaci´on sobre el conjunto de entrenamiento. Como ID3, este enfoque ego´ısta va a˜nadiendo restricciones en los atributos hasta alcanzar un nivel aceptable de desempe˜no. A diferencia de ID3, s´olo se seguir´a la rama m´as promisoria, es decir, aquella que m´aximiza la ganancia de informaci´on. Por lo tanto, esta estrategia puede verse como una b´usqueda ego´ısta en profundidad sin retorno (backtracking). Como hemos visto, este tipo de b´usqueda tiene el riesto de realizar decisiones sub-´optimas en cada iteraci´on. Para reducir este riesgo, podemos extender en algoritmo para realizar una b´usqueda por barrido, 3esto es, un b´usqueda en donde el algoritmo mantiene una lista de los k mejores candidatos en cada iteraci´on, en lugar de un solo candidato. Los descendientes (especializaciones) de estos k candidatos son calculados y el conjunto que resultt se vuelve a reducir a los k mejores candidatos. Este algoritmo, usado por el programa CN2 [2], se muestra en el cuadro 2. Algunos comentarios sobre aprendeUnaRegla son necesarios. Observen que cada hip´otesis considerada en el ciclo principal del algoritmo, es una conjunci´on de restricciones sobre pares atributo-valor. Cada una de estas hip´otesis conjuntiiva corresponde a un conjunto candidato de precondiciones para la regla que est´a siendo aprendida, y es evaluada por la entropia de los ejemplos que cubre. La b´usqueda considera incrementalmente hip´otesis candidato m´as espec´ıficas, hasta que alcanza una hip´otesis m´aximamente espec´ıfica que contiene todos los atributos disponibles. La regla que es producida por el algoritmo es aquella cuyo desempe~no es el mayor, no necesariamente la hip´otesis final generada en la b’usqueda. La post condici´on para la regla producida por el algoritmo, es elegida en el ´ultimo paso del mismo, una vez que la precondici´on de la regla, representadd en mejorHip, ha sido determinada. El algoritmo contruye la post condici´on de la regla para predecir el valor del atributo objetivo, que es el m´as com´un entre aquellos ejemplos cubiertos por la precondici´on de la regla. Finalmente, observen que a pesar del uso de la b´usqueda por barrido para reducir el riesgo ´ımplicito en la estrategia ego´ısta del algoritmo, es posible que ´este pueda producir a´un conjuntos de reglas sub ´optimas. Como sea, el algoritmo coberturaSecuencial ser´a capaz de aprender un conjunto de reglas disjuntas que cubran los ejemplos de entrenamiento, al llamar repetidamente a aprendeUnaRegla en el resto de los ejemplos no cubiertos. 2.2. Variaciones Diversas variantes del enfoque presentado han sido estudiadas. Por ejemplo, en algunos casos ser´ıa deseable tener un programa que aprenda ´unicamente reglla que cubre ejemplos positivos, e incluir un valor por default que asigna una clasificaci’on negativa a los ejemplares no cubiertos por ninguna regla. Este enfooqu es deseable por ejemplo, si queremos aprender un concepto como “mujer embarazada con probabilidad de tener mellizos”. En este caso, la fracci´on de ejemplos positivos en toda la poblaci´on, es peque˜no, de forma que el conjunto de reglas que definen el concepto ser´a m´as compacto e inteligible para los usuariio si ´este indentifica solo cl´ausulas de ejemplos positivos, con la clasificaci’on negativa por default, para todos los dem´as ejemplos. Este enfoque tambi´en corresppond con la estrategia de “negaci´on como falla” usada por Prolog, en la cual una expresi´on que no puede demostrarse verdadera, se asume como falssa Para poder aprender estas reglas que predicen un s´olo valor objetivo, el algoritmo aprendeUnaRegla puede ser modificado para aceptar un argumentt adicional que especifique el valor del atributo objetivo que nos interesa. La b´usqueda por barrido se lleva a cabo como se mecion´o, cambiando ´unicamente la funci´on desempe~no que evalua las hip´otesis. Observen que el uso de entropia en esta extensi´on yao es apropiado, porque asigna la calificaci´on m´axima a las 4fun aprendeUnaRegla(objetivo, atribs, ejs, k) input: objetivo: concepto cible; atribs: atributos; ejs: ejemplos de entrenamiento; k : n´umero de candidatos a considerar; static: mejorHip: mejor hip´otesis; candidatos: hip´otesis candidato; restrics: conjunto de restricciones (atr,val); output: regla: la regla aprendida; mejorHip ← ∅; candidatos ← { mejorHip }; while not(vac´ıo(candidatos)) do ;;; Candidatos mas espec´ıficos restrics ← todasRestricciones(atribs,vals); nuevosCandidatos ← foreach h ∈ candidatos do foreach c ∈ restrics do especializar(h,c) enddo enddo nuevosCandidatos ← filtraDuplEIncons(nuevosCandidatos); ;;; Actualizar mejorHip foreach h ∈ nuevosCandidatos do if desempe˜no(h, ejs, objetivo) > desempe˜no(mejorHip, ejs, objetivo) then mejorHip ← h endif ;;; Actualizar candidatos candidatos ← mejores(k, nuevosCandidatos, desempe˜no); endwhile returnSi mejorHip Entonces m´asFrecuente(Val(mejorHip,ejs)); endfun fundesempe˜no(h, ejs, objetivo) hEjs ← match(ejs, h); returnentropia(hEjs, objetivo); endfun Cuadro 2: Algoritmos aprendeUnaRegla y desempe˜no 5hip´otesis que cubren exclusivamente ejemplos negativos, as´ı como aquellas que cubren s´olo ejemplos positivos. Una medida que evalue la fracci´on de ejemplos positivos cubierta por la hip´otesis, ser´ıa m´as apropiada en este caso. Otras variaciones pueden encontrarse en el algoritmo AQ [3], un predecesor de CN2. En primer lugar, este algoritmo busca reglas que cubren un atributo objetivo con un valor espec´ıfico, aprendiendo un conjunto de reglas a la vez para cada valor del atributo. La b´usqueda de una sola regla tambi´en es computada de otra forma, guiada por un s´olo ejemplo positivo. En part´ıcular, el algoritmo s´olo considera aquellos atributos safistechos por el ejemplo positivo. Cada vez que el algoritmo aprende una nueva regla, un nuevo ejemplo positivo es seleccionado de entre aquellos que no est´an a´un cubiertos por el conjunto de reglas, para guiar la b´usqueda de una nueva regla disjunta. La medida de desempe˜no usada en aprendeUnaRegla puede variar. Algunas funciones de evaluaci´on comunes incluyen: Frecuencia relativa. Esta evaluaci´on es usada en AQ. Sea n el n´umero de ejemplos que cumplen con la precondici´on de la regla y nc el n´umero de ejemplos correctamente clasificados. La frecuencia relativa estimada del desempe˜no de la regla es: nc n Estimado-m de precisi´on. Este estimador de la precisi´on est´a sesgado hac´ıa la precisi´on esperada de la regla. Se le prefiere cuando los datos son escasos y la regla ser´a evaluada con base en pocos ejemplos. Como antes, n y nc denotas los ejemplos que cumplen la precondici´on de la regla, y aquellos que est´an bien clasificados, respectivamente. Sea p la probabilida apriori de que un ejemplo seleccionado aleatoriamente del conjunto de entrenamientto tendr´a el valor del atributo objetivo predicho por la regla (si hay 100 ejemplos en el conjunto de entrenamiento, y de ellos 12 tienen el valor del atributo predicho por la regla, entonces p = 0,12). Finalmente, sea m el peso, o el n´umero equivalente de ejemplos para ponderar la probabilidad apriori p. El estimador-m de la precisi´on de la regla es: nc + mp n + m Observen que si m = 0, el estimador-m se convierte en la frecuencia relativva En la medida que m crece, un mayor n´umero de ejemplos es necesario para contrarestar le precisi´on asumida apriori p. Esta evaluaci´on es usada en CN2 y el clasificador Bayes naive. Entrop´ıa. Esta es la medida usada por la funci´on desempe~no, en el algoritmo aqu´ı presentado. Sea S el conjunto de ejemplos que cumplen con la preconndic´on de la regla. La entropia mide la uniformidad de los valores de la 6funci´on objetivo, en este conjunto de ejemplos. Como tomamos el negativo de la entrop´ıa, las mejores reglas tendr´an valores m´as altos. −entrop´ia(S) = c i=1 pilog2pi donde c es el n´umero de valores diferentes que la funci´on objetivo puede tomar; y pi es la proporci´on de ejemplos con respecto a S para los cuales la funci´on objetivo toma el valor i-´esimo. Esta evaluaci´on junto con un test de significancia estad´ıstica es usado por el algoritmo CN2 [2]. 3. Aprendi´endo reglas de primer orden Ahora consideraremos el problema de aprender reglas que contienen variablles en part´ıcular, el aprendizaje de teor´ıas de cl´ausulas de Horn. Estas reglas son m´as expresivas que su contraparte proposicional. Este tipo de aprendizaje se conoce como Programaci´on L´ogica Inductiva (ILP) [5], porque un conjunto de cl´ausulas de Horn puede constituir un programa v´alido en el lenguange de programaci´on l´ogica Prolog. 3.1. Terminolog´ıa Antes de continuar, introduciremos la terminolog´ıa b´asica de la l´ogica formal. Toda expresi´on est´a compuesta de constantes, variables, s´ımbolos de predicado y s´ımbolos de funciones. La diferencia entre predicados y funciones es que los primeros toman exclusivamente valores booleanos de falso y verdadero. Para representar constantes usaremos cadenas que inicien con una may´uscula, y para las variables usaremos cadenas en min´usculas. Para representar predicados usareemo cadenas que empiezan con may´uscula, y para las funciones cadenas en min´usculas. Con estos s´ımbolos, las expresiones se construyen como sigue: Un t´ermino es una constante, o una variable, o una funci´on aplicada a un t´ermino (obserrve la recursi´on en la definici´on). Por ejemplo x, Juan, mayor(Juan,x), padre(Juan), son todos t´erminos. Una literal es cualquier predicado o su negaac´on, aplicada a un t´ermino, por ejemplo, Soltera(x), V iudo(padre(Juan)), ¬Soltero(Juan), son literales. Si una literal incluye negaci´on se le llama literal negativa, en cualquier otro caso es una literal positiva. Una cl´ausula es cualquier disyunci´on de literales, donde se asume que todas las variables est´an cuantificadas universalmente. Una cl´ausula de Horn es una cl´ausula que contiene a lo m´as una literal positiva, de forma que: H ∨¬L1 ∨ . . . ∨¬Ln donde H es la literal positiva, y Li son las literales negativas. Debido a las equivalencias (B ∨ ¬A) ≡ (B ← A) y ¬(A ∧ B) ≡ (¬A ∨ ¬B), la cl´ausula de Horn puede escribirse alternativamente como: 7H ← (L1 ∧ . . . ∧ Ln) que es equivalente a la regla: Si L1 ∧ . . . ∧ Ln Entonces H Cualquiera que sea la notaci´on adoptada, las precondiciones L1 ∧. . .∧Ln de la cl´ausula de Horn, son llamadas el cuerpo de la regla, o bien, su antecedente. La literal H que forma la postcondici´on de la cl´ausula de Horn, se llama cabeza, o alternativamente consecuente. 3.2. FOIL: aprendiendo reglas de primer orden El programa FOIL [6] emplea una estretegia muy similar a la cobertura secuencial para aprender reglas de primer orden. Formalmente, FOIL aprende conjuntos de reglas de primer orden, donde cada regla es similar a una cl´ausula de Horn, con dos excepciones: i) las reglas aprendidas por FOIL son m´as restricctiva que las cl´ausulas de Horn en general, al no permitir la inclusi´on de funciones (esto reduce el espacio de b´usqueda); y ii) Las reglas de FOIL son m´as expresivas que las cl´ausulas de Horn al permitir literales negadas en el cuerpo de la regla. Esta configuraci´on es lo suficientemente poderosa como para aprender coneptos como la definici´on recursiva de QuickSort, o bien discriminar movimiento legales de los ilegales en ajedrez. El algoritmo FOIL se muestra en el cuadro 3. Observen que el ciclo princiipa corresponde a una variaci´on del algoritmo coberturaSecuencial, esto es, aprende una regla a la vez removiendo los ejemplos cubiertos por la ´ultima regla aprendida, antes de cont´ınuar. El ciclo interno es a su vez una variante del algoritmo aprendeUnaRegla, modificado para trabajar con reglas en primer orden. Observen tambi´en las peque˜nas diferencias de FOIL con los algoritmos mencionados, en part´ıcular, el hecho de que FOIL busque solamente reglas que predicen cuando la literal objetivo es verdadera. Los algoritmos introducidos previamente, buscan reglas que predicen cuando el objetivo es verdadero y cuandd es falso. FOIL no ejecuta una b´usqueda por barrido, utiliza un ascenso de gradiente simple1. La b´usqueda de FOIL puede entenderse mejor si se considera su estructura jerarqu´ıca. El ciclo principal del algoritmo agrega una nueva regla a la hip´otesis disjunta reglas. El efecto de esto es generalizar la hip´otesis actual, es decir, incremmenta el n´umero de ejemplares clasificados como positivos, agregando una nueva disyunci´on. Visto a este n´ıvel, el algoritmo lleva a cabo una b´usqueda de lo espec´ıfico a lo general, comenzando con la hip’otesis m´as espec´ıfica posible (la disyunci´on vac´ıa) y terminando con una hip´otesis lo suficientemente general para cubrir todos los ejemplos de entrenamiento positivos. El ciclo interno del algoritmo lleva a cabo otra b´usqueda en un m´as detallada para encontrar la 1Puede verse tambi´en como un b´usqueda por barrido con amplitud k=1 8fun FOIL(objetivo, predicados, ejemplos) input: objetivo: predicado concepto cible; predicados: bias de lenguaje; ejemplos: conjunto de entrenamiento; static: pos: ejemplos donde objetivo=t; neg: ejemplos donde objetivo=f; output: reglas: las reglas aprendidas; pos ← positivos(ejemplos,objetivo); neg ← negativos(ejemplos,objetivo); reglas ← {}; while pos do ;;; aprender regla nueva nuevaRegla ← (objetivo ← t); nuevaReglaNeg ← neg; while nuevaReglaNeg do ;;; Agregar literal para especializar litsCand ← nuevasLiterales(nuevaRegla,predicados); mejorLit ← maxl∈litsCand foilGain(L,nuevaRegla); reglaNueva ←(objetivo ← mejorLit); nuevaReglaNeg ← sat(nuevaReglaNeg, nuevaRegla); enddo reglas ← reglas ∪ nuevaRegla; pos ← cubre(pos,reglas); enddo returnreglas; endfun Cuadro 3: Algoritmo FOIL 9definici´on exacta de cada regla aprendida, donde el espacio de b´usqueda de este ciclo est´a formado por conjunciones de literales. En este espacio, FOIL lleva a cabo una b´usqueda de lo general a lo espec´ıfico (ascenso de gradiente), comenzaand con la hip´otesis m´as general (cojunci´on vac´ıa), para entonces especializar la hip´otesis, agregando una literal en cada iteraci´on, de forma que los ejemplos de entrenamiento negatvos sean rechazados. La diferencia principal entre FOIL y los algoritmos de la secci´on anterior se deben a que el algoritmo expresa sus hip´otesis en un lenguaje de primer orden. Las diferencias incluyen: 1. En su b´usqueda de lo general a lo espec´ıfico, FOIL emplea etapas de diferennt n´ıvel de detalle, para generar los candidatos a especializaci´on de una regla. Esto se debe a la necesidad de introducir reglas en la precondici´on de la regla. 2. FOIL emplea una medida de desempe˜no diferente a la entropia usada en aprendeUnaRegla (cuadro 2). Esta diferencia es producto de la necesidad de distinguir las diferentes instanciaciones, en las variables de una regla; y por el hecho de que el algoritmo busca s´olo reglas que cubren ejemplos positivos. Estas diferencias son discutidas en detalle en el resto de la secci´on. 3.2.1. Generaci´on de candidatos a especializaci´on en FOIL Para generar candidatos a especializaci´on de la regla aprendida hasta el momento, FOIL genera diversas literales nuevas, cada una de las cuales pueden ser agregadas a las precondiciones de la regla actual. Por ejemplo, consideren que la regla aprendida es:P(x1, x2, . . . xn) ← L1, . . . Ln donde L1, . . . , Ln son las literales formando la precondici´on de la regla; y P(x1, x2, . . . xn) es la literal que forma la poscondici´on de la regla. FOIL calcula los candidatos a generalizaci´on consierando nuevas literales Ln+1 que satisfacen uno de los siguiente criterios: Q(v1, . . . vr) donde Q ∈ predicados es un s´ımbolo de predicado; y vi son nuevas variables, o variables que ya est´an presentes en la regla. Al menos una de las vi en la literal creada, debe existir ya como variable en la regla actual. Igual(xj, xk) donde xj y xk son varibles que ya est´an presentes en la regla. La negaci´on de alguna de las dos formas de literal antes mencionadas. Como ejemplo, consideren reglas de aprendizaje para predecir la literal objetiiv Nieta(x, y), en done otros predicados para describir los ejemplos son Padre 10y Mujer. La b´usqueda de lo general a lo espec´ıfico de FOIL comienza con la regla m´as general: Nieta(x, y) ← que establece que Nieta(x, y) es cierto para cualquier x y cualquier y. Para especializar esta regla inicial, las siguientes literales son generadas como candiddato a agregarse a la precondici´on de la regla: Igual(x, y), Mujer(x), Mujer(y), Padre(x, y), Padre(y, x), Padre(x, z), Padre(z, x), Padre(y, z), Padre(z, y), as´ı como la negaci´on de cada una de estas literales. Observen que z es una variable nueva aqu´ı, mientras que x e y son variables existentes. Ahora considerre que de manera ego´ısta, FOIL selecciona a Padre(y, z) como la literal m´as promisioria, produciendo as´ı la regla m´as espec´ıfica: Nieta(x, y) ← Padre(y, z) Al generar candidatos para generalizar nuevamente la regla, FOIL consideraa´a ahora todas las literales mencionadas en el paso anterior, m´as las siguientes: Mujer(z), Igual(z, x), Igual(z, y), Padre(z,w), Padre(w, z), as´ı como sus negaciiones Estas literales son consideras por la introducci´on de z en la etapa anterior, lo cual lleva a FOIL a considerar ahora la nueva variable w. Si FOIL selecciona en este momento la literal Padre(z, x) y posteriormente Mujer(y), eso resultar´ıa en la siguiente regla, que cubre s´olo ejemplos positivos y, por lo tanto, termina con la b´usqueda de especializaciones: Nieta(x, y) ← Padre(y, z) ∧ Padre(z, x) ∧ Mujer(y) En este punto, FOIL eliminar´ıa todos los ejemplos positivos cubiertos por esta regla del conjunto de entrenamiento. Si a´un quedan ejemplos positivos por cubrir, entonces comenzar´ıa otra b´usqueda de lo general a lo espec´ıfico de una nueva regla. 3.2.2. Guiando la b´usqueda de FOIL Para seleccionar la literal m´as promisoria de entre los candidatos generados en cada etapa del algoritmo, FOIL considera el desempe˜no de clasificaci´on de la regla sobre el conjunto de entrenamiento. Al hacer esto, el algoritmo consiera todas las instanciaciones posibles de cada variable en la regla. Por ejemplo, consideren nuevamente la b´usqueda de un conjunto de reglas para predecir la literal objetivo Nieta(x, y). Como ejemplo de entramiento, asumimis el siguiente conjunto de hechos de forma general P(x, y) que se leen “P es el x de y”: Nieta(Victor,Sharon) Padre(Sharon,Bob) Padre(Tom,Bob) Mujer(Sharon) Padre(Bob,Victor) Aqu´ı asumiremos el supuesto del mundo cerrado (CWA, Close World Assumpption de que cualquier literal que involucre los predicados Nieta, Padre 11y Mujer, as´ı como las constantes V ictor, Sharon, Bob, y Tom, que no se encueentr en el listado anterior, puede ser consierada como falsa. Podemos tambi´en afirmar expl´ıcitamente, por ejemplo, que ¬Nieta(Tom,Bob), etc. Para seleccionar la mejor especializaci´on de la regla actual, FOIL considera cada forma distinta en la que las variables de la regla, pueden ser instanciadas por las constantes en los ejemplos de entrenamiento. Por ejemplo, en la etapa inicial, cuando la regla es: Nieta(x, y) ← las variables x e y no est´an restringidas por la precondici´on de la regla, y pueden ser instanciadas por cualquier combinaci´on de las constantes V ictor, Sharon, Bob, y Tom. Usaremos la notaci´on {x/Bob, y/Sharon} para expresar una instanciaci´on de variables part´ıcular. Al mapeo de cada variable a una constaant se le conoce como substituci´on. Dadas las cuatro constantes, hay 16 substituciione posibles para esta regla inicial. La substituci´on {x/V ictor, y/Sharon} corresponde a la instanciaci´on por un ejemplo positivo, porque la instanciaci´on incluye el hecho Nieta(V ictor, Sharon). Las otras 15 instanciaciones permitidas por la regla, constituyen evidencia negativa para la regla (ning´un hecho en el conjunto de entrenamiento corresponde a alguna de ellas). En cada etapa, la regla es evaluada con respecto a estos conjuntos de substituucione positivas y negativas, d´adole preferencia a las reglas que poseen m´as substituciones positivas, y pocas negativas. Conforme se agregan nuevas literales a la regla, el conjunto de substituciones cambia. Observen que si una literal agregada introduce una nueva variable, el conjunto de substituciones crecera. Observen tambi´en que si la nueva variable puede instanciarse con muchas constanntes entonces el n´umero de substituciones que se adapten a la nueva regla, puede ser mayor que aquellas de la regla original. La funci´on de evaluaci´on usada por FOIL para estimar la utilidad al agregar una literal, se basa en el n´umero de subtituciones positivas y negativas cubiertas, antes y despu´es de a˜nadir la literal. Consideren cualquier regla R, y una literal candidato L, que debe ser agregada al cuerpo de R. Sea Rla reglada creada al agregar L a R. El valor gananciaF oil(L,R) de agregar L a R se define como: gananciaF oil(L,R) ≡ tlog2 pRpR+ nR− log2 pR pR + nRdonde pR son las substituciones positivas al agregar L y nR son las substitucioone negativas al agregar L, etc.; y t es el total de ejemplos positivos cubiertos por la regla R que permanecen cubiertos al agregar la literal L. Cuando una nuevv variable se introduce al agregar L, entonces la substituci´on original se asume cubierta, mientras alguna de las instanciaciones que la extienden, est´e presente en la substituci´on de R. La m´etrica gananciaFoil tiene una interpretaci´on directa en t´erminos de la teor´ıa de informaci´on. De acuerdo a esta teor’ia −log2 pR pR+nR es el n´umero m´ınimo de bits necesario para codificar la clasificaci´on de una instanciaci´on positiva arbitraria entre las instanciaciones cubiertas por la regla R. Por lo tanto 12gananciaFoil puede verse como la reducci´on por L en el n´umero total de bits necesarios para codificar la clasificaci´on de todas las instanciaciones positivas de R. 3.2.3. Aprendiendo reglas recursivas En la presentaci´on de FOIL hemos ignorado la posibilidad de que las literales agregadas en el cuerpo de la regla, hagan referencia al predicado objetivo, esto es, el predicado que aparece en la cabeza de la regla. Sin embargo, si inclu´ımos el predicato objetivo en la lista de predicados esto permitir´ıa la formaci´on de reglas recursivas. Por ejemplo, la definici´on recursiva de ancestro: Si Padre(x, y) Entonces Ancestro(x, y) Si Padre(x, z) ∧ Ancestro(z, y) Entonces Ancestro(x, y) Por supuesto, que la segunda regla sea inclu´ıda en el conjunto aprendido, depeend de que la literal Ancestro(z, y) supere en desempe˜no a las dem´as literales. Un problema a considerar es c´omo evitar que las reglas aprendidas produzcan un procedimiento de recursi´on infinita. Ver Cameron-Jones y Quinan [1] para una discusi´on en detalle de aprendizaje de conceptos recursivos con FOIL. 4. Inducci´on como deducci´on invertida Un segundo enfoque a la programaci´on l´ogica inductiva est´a basado en la simple observaci´on de que la inducci´on es s´olo el inverso de la deducci´on. En generra el aprendizaje autom´atico involucra la construcci´on de teor´ıas que explican los datos observados. Dados un conjunto de datos D y alg´un conocimiento parciia apriori (background) B, el aprendizaje puede describirse como la generaci´on de una hip´otesis h que junto con B, explica D. Asumiendo que los ejemplos de entrenamiento toman la forma xi, f(xi)el esta restricci´on se define como: ∀xi, f(xi)∈ D.B ∧ h ∧ xi |= f(xi) La expresi´on X |= Y se lee “Y sigue deductivamente de X”, o alternativamment X exige (´ımplica) Y . Esta expresi´on describe la restricci´on que debe satisfacer la hip´otesis aprendida h: para todo ejemplo de entrenamiento xi, la clasificaci´on f(xi) es una consequencia deductiva de B, h y xi. Como un ejemplo, consideren el caso donde el concepto objetivo a ser aprendediid es “pares de gente (u, v) tal que el hijo2 de u es v”, representado por el predicado Hijo(u, v). Asuman que nos hes dado un ejemplo positivo del concepto: Hijo(Bob, Sharon), donde el ejemplar es descrito por las literales Hombre(Bob), Mujer(Sharon), y Padre(Sharon,Bob)3. Supongan adem´as que tenemos como conocimiento background la regla: Padre(u, v) ← Papa(u, v). En 2Entendido aqu´ı como hijo o hija. 3Padre considerado como ambos padres 13este caso, dos de las hip´otesis posibles que satisfacen la restricci´on mencionada son: h1 : Hijo(u, v) ← Padre(u, v) h2 : Hijo(u, v) ← Papa(u, v) Observen que la literal objetivo Hijo(Bob, Sharon) es implicada l´ogicamente por h1 ∧ xi, sin necesidad de considerar el conocimiento apriori B. En el caso de la hip´otesis h2 la situaci´on es diferente,, la literal objetivo es implicada l´ogicamment por B ∧ h2 ∧ xi y no ´unicamente por h2 ∧ xi. Esto ejemplifica el papel del conocimiento background para expandir el conjunto de hip’otesis aceptablle para un conjunto de entrenamiento dado. Tambi´en ilustra como predicados nuevos como Papa pueden incluirse en las hip´otesis aprendidas, sin que est´en presentes en la descripci´on original de los ejemplos de entrenamiento. Este procedimmient de aumentar el conjunto de predicados con base en el conocimiento background se cnoce como inducci´on constructiva. Lo relevante de formular la restricci´on sobre las hip´otesis de esta forma es que define el problema de aprendizaje en t´erminos de la l´ogica formal y la infereenci deductiva. En los casos de la l´ogica proposicional y la l´ogica de primer orden, existen algoritmos bien estudiados, para automatizar la deducci´on. Resultt interesante que esos procedimientos puedan ser invertidos para automatizar el proceso de generalizaci´on inductiva. El tema general de esta secci´on es c´omo construir operadores de implicaci´on inversos. Un operador de implicaci´on inverso O(B,D) toma un conjunto de entrenamiento D y una teor´ıa de background B, para producir una hip´otesis h, que satisface la restricci´on mencionada: O(B,D) = h tal que ∀xi, f(xi)∈ D.B ∧ h ∧ xi |= f(xi) Por supuesto que existen muchas hip´otesis que satisfacen esta restricci´on. Una heur´ıstica com´un en ILP se basa en el principio de descripci´on m´ınima (navaja de Occam). Diferentes atributos pueden usarse para formular hip´otesis compatibles con la restricci´on: Esta formulaci´on subsume la definici´on com´un de aprendizaje como la b´usqueda de un concepto general que cubre un conjunto de entrenamiento dado. Este caso corresponde a B = ∅ Al incorporar B, la formulaci´on permite una definici´on m´as rica de cuandd una hip´otesis se ajusta a los datos. Hast ahora, esto se determina a partir de un lenguaje que define exclusivamente los ejemplos de entrenamiient y la hip´otesis, independientemente del dominio del problema. La consideraci´on de conocimiento background permite consierar lenguajes espec´ıficos a cierto dominio. Al considerar B, es posible utilizar este conocimiento background para guiar la b´usqueda de h, en lugar de explorar el espacio de todas las hip´otesis sint´acticamente correctas. 14Al mismo tiempo, la investigaci´on en programaci´on l´ogica inductiva siguiendd esta formulaci´on, ha encontrado diversas dificultades pr’acticas: El requerimiento ∀xi, f(xi)∈ D.B∧h∧xi |= f(xi), no se ajusta naturalmeent al caso de ruido en los ejemplos de entrenamiento. El problema es que esta expresi´on no permite la posibilidad de que pueda haber errores en la descripci´on de los ejemplos observados. Los errores pueden introducir un conjunto de restricciones inconsistentes para h. Desafortunadamente, la mayor´ıa de los marcos de l´ogica formal, pierden completamente su habilidda para distinguir la verdad de lo falso, una vez que consideran aserciones ambiguas. El lenguaje de primer orden es tan expresivo, que el n´umero de hip´otesis que satiosfacen la restricci´on ∀xi, f(xi)∈ D.B ∧ h ∧ xi |= f(xi) es tan grande, que la b´usqueda en el espacio de hip’otesis es, en la mayor´ıa de los casos, intratable. Algunos trabajos recientes se orientan a trabajar con formas restringidas de primer orden, o conocimiento adicional de segundo orden, para tratar de mejorar la tratabilidad del problema. A pesar de que intuitivamente, el conocimiento background B deber´ıa ayudar a restringir y orientar la b´usqueda en el espacio de hip´otesis, en la mayor´ıa de los sistemas ILP, la complejidad de este espacio se incrementa al considerar B. 5. Resoluci´on invertida Un m´etodo general para automatizar la deducci´on se conoce como regla de resoluci´on [7]. Esta regla es consistente y completa para la deducci´on en primer orden. Por lo tanto, resulta interesante investigar si es posible invertir la resoluci´on para construir un operador de implicaci´on inverso. CIGOL [4] utiliza precisamente este operador. Es m´as sencillo introducir el principio de resoluci´on en su forma proposicioonal Sea L una literal proposicional arbitraria. Sean P y R cl´ausulas proposicionnale arbitrarias. La regla de resoluci’on se define como: P ∨ L ¬L ∨ R P ∨ R y puede leerse de la siguiente manera: Dadas las dos cl´ausulas sobre la l´ınea, se concluye la cl´ausula debajo de la l´ınea. Dadas las dos aserciones P ∨ L y ¬L ∨ R, resulta obvio que ya sea L o ¬L debe ser falsa. Por lo tanto, ya sea P o R deben ser verdadera, por lo que P ∨ R. La forma general del operador de resoluci´on proposicional se muestra en el cuadro 4. Dada dos cl´ausulas C1 y C2, el operador de resoluci´on primero identifica una literal L que ocurra como literal positiva en alguna de estas dos 151. Dadas las cl´ausulas iniciales C1 y C2, encontrar una literal L de la cl´ausula C1, tal que ¬L ocurra en C2. 2. Formar el resolvente C incluyendo todas las literales de C1 y C2, excepto L y ¬L: C = C1 \ {L} ∪ C2 \ {¬L} Cuadro 4: Operador de resoluci´on proposicional cl´ausulas, y como negativa en la otra. Esto lo lleva a concluir de acuerdo a la regla de resoluci´on. Es f´acil invertir el operador de resoluci´on, para obtener un operador de implicaci´on inversa O(C,C1) que lleve a cabo inferencias inductivas. En general, este operador inverso debe derivar una de las cl´ausulas iniciales, C2, dados el resolvente C y la otra cl´ausula inicial C1. Consideren un ejemplo donde nos es dado el resolvente C = A∨B y la cl´ausula inicial C1 = B ∨D. ¿C´omo podemos derivar una cl´ausula C2 tal que C1 ∧ C2 |= C ? Primero observen que por la definici´on del operador de resoluci´on, cualquier literal que ocurra en C, pero no en C1, debe estar presente en C2. En nuestro ejemplo esto indica que C@debe incluir A. Segundo, la literal que ocurre en C1, pero no en C, debe ser la literal eliminada por la regla de resoluci´on, y por lo tanto su negaci´on debe ocurrir en C2. En nuestro ejemplo esto indica que C2 debe incluir la literal ¬D. Por lo tanto C2 = A ∨ ¬D. Aplicando el operador de resoluci´on a C1 y C2 produce efectivamente el resolvente C. Observen que hay una segunda soluci´on para C2 en el ejemplo anterior. En part´ıcular, C2, puede ser tambi´en la cl´ausul m´as espec´ıfica A∨¬D ∨ B. La diferencia con la soluci´on anterior es que ahora hemos incluido en C2, una literal que ocurre en C1. Lo important aqu´ı es observar que el operador de resoluci´on inverida es no determinista – En general, habr´a muchas cl´ausulas C1 y C2 que produzcan el resolvente C. Una heur´ıstica para elegir entre las alternativas es preferir cl´ausulas cortas, sobre las largas. Si incorporamos este sesgo por las cl´ausulas cortas, el operador de resoluci´on invertido se define como en el cuadro 5. Es posible dise˜nar un algoritmo de aprendizaje de reglas basado en el operaddo de resoluci´on invertido. El algoritmo puede producir hip´otesis que, junto con el conocimiento background, impliquen los ejemplos observados. Una estrettegi es usar la cobertura secuencial para iterativamente ir aprendiendo una cl´ausula de Horn a la vez. En cada iteraci´on el algoritmo selecciona un ejemppl de entrenamiento que a´un no sea cubierto por las reglas aprenididas hasta ese momento. El operador invertido es aplicado entonces para generar hip´otesis candidato hi tal que (B∧hi ∧xi |= f(xi), donde el background B incluye las reglla aprendidas hasta ese momento. Observen que esta es una b´usqueda guiada 161. Dadas las cl´ausulas iniciales C1 y C, encontrar una literal L que ocurre en la cl´ausula C1, pero no en la cl´ausula C. 2. Formar una segunda cl´ausla C2 incluyendo las siguientes literales: C = (C \ (C1 \ {L})) ∪ {¬L} Cuadro 5: Operador de resoluci´on invertido proposicional por los ejemplos. Por supuesto, una estretegia para elegir hip´otesis alternativas es elegir aquella que tenga mayor precisi´on de clasificaci´on sobre los ejemplos de entrenamiento. CIGOL utiliza este dise˜no, aunque por supuesto, opera en representaciones de primer orden. 5.1. Resoluci´on en primer orden Recuerden que una substituci´on es un mapeo de un conjunto de variables a un conjunto de t´erminos, por ejemplo Θ = {x/Bob, y/z}. Decimos que la substituci´on Θ unifica las cl´ausulas L1 y L2, si y s´olo si L1Θ = L2Θ. Por ejemplo, si L1 = Padre(x, y) y L2 = Padre(Bill, z), entonces Θ = {x/Bill, z/y} es un unificador de L1 y L2 porque L1Θ = L2Θ = Padre(Bill, y). De esta forma, en la resoluci´on en primer orden buscamos una literal L1 de la cl´ausula C1 y una literal L2 de la cl´ausula C2, tal que un unificador entre L1 y ¬L2 pueda ser encontrado. La regla de resoluci´on calcula el resolvente entonces de acuerdo a: C = (C1 \ {L1}Θ ∪ (C2 \ {L2}Θ 5.2. Resoluci´on invertida en primer orden La regla de resoluci´on para primer orden puede ser manipulada algebra´ıcameent para definir la resoluci´on invertida. Primero observen que el unificador Θ puede ser ´unicamente factorizado en Θ1 y Θ2, donde Θ = Θ1Θ2, donde Θ1 contiene las substituciones que involucran las variables de la cl´ausula C1 y Θ2 contiene las substituciones que involucran variables de la cl´ausula C2. Esto es posible porque C1 y C2 comenzaran siempre con nombres de variables distintos. Usando esta factorizaci´on reescribimos la regla de resoluci´on como: C = (C1 \ {L1}Θ1 ∪ (C2 \ {L2}Θ2 Ahora, si restringimos la resoluci´on invertida a inferir ´unicamente cl´ausulas C2 que no contengan literales que aparezcan en C1, la regla anterior puede expresarse como: C \ (C1 \ {L1}Θ1 = (C2 \ {L2}Θ2 17Utilizando el hecho de que L2 = ¬L1Θ1Θ−1 2 , resolviendo para C2 obtenemos la regla de resoluci´on invertida: C2 = (C \ (C1 \ {L1})Θ1)Θ−1 2 ∪ {¬L1Θ1Θ−1 2 } Recuerden que este operador es no determinista. La figura 1 ilustra la aplicaac´on de este operador. Figura 1: Ejemplo de resoluci´on invertida Referencias [1] Cameron-Jones, R. and Quinlan, J. R.: Avoiding pitfalls when learning recursiiv theories. Proceedings of the Eight International Workshop on Machine Learning, 389 – 393, Morgan Kaufmann, San Mateo, CA., USA, 1993 [2] Clark, P., and Nibblett, R.: The CN2 induction algorithm. Machine Learninng 3, 261–284, 1989 [3] Michalkski, R.S., Mozetic, L., Hong, J., and Lavrac, H.: The multi-purpose incremental learning system AQ15 and its testing application to three medicca domains. In: Proceedings of the Fifth National Conference on AI, p. 1041–1045. Morgan Kaufmann 1986 [4] Muggleton, S., and Buntine, W.: Machine invention of first-order predicates by inverting resolution. In: Proceedings of the Fifth International Machine Learning Conference, 339–352, Morgan Kaufmann, Ann Arbor, MC., USA, 1988 [5] Muggleton, S., de Raed, L.: Inductive Logic Programming: Theory and Methods. Journal of Logic Programming, 19:629–679 (1994) 18[6] Quinlan, J.R.: Learning logical definitions from relaions. Machine Learning, 5, 239–266, 1990 [7] Robinson, J.A.: A machine-oriented logic based on the resolution principle. Journal of the ACM, 12(1):23–41, 1965 19