Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice general
I Introduccin II Fundamentos Tericos
1. Panorama General del PLN
1.1. 1.2. 1.3. Orgenes del PLN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diferentes modelos . . . . . . . . . . . . . . . . . . . . . . . . . . Dos tcnicas del PLN a considerar 1.3.1. 1.3.2. 1.4. Modelos ocultos de Markov La bsqueda de patrones y ELIZA . . . . . . . . . . . . .
5 9
10
10 12 13 13 15 17
2. Cmputo Evolutivo
2.1. 2.2. 2.3. 2.4. Breve historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Algoritmos Genticos 2.4.1. 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.6. 2.4.7. El espacio de bsqueda
19
19 20 21 22 23 23 25 26 26 27 28 29 29 30 30 30 31 31 32 32 33
Un algoritmo gentico simple . . . . . . . . . . . . . . . . Individuos . . . . . . . . . . . . . . . . . . . . . . . . . . . Aptitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . Poblaciones . . . . . . . . . . . . . . . . . . . . . . . . . . Codicacin . . . . . . . . . . . . . . . . . . . . . . . . . . Seleccin 2.4.7.1. 2.4.7.2. 2.4.7.3. 2.4.7.4. . . . . . . . . . . . . . . . . . . . . . . . . . . . Seleccin por Ruleta . . . . . . . . . . . . . . . . Seleccin por Rango . . . . . . . . . . . . . . . . Seleccin por Torneo . . . . . . . . . . . . . . . . Muestreo Estocstico Universal . . . . . . . . . . Cruza en un punto . . . . . . . . . . . . . . . . . Cruza en dos puntos . . . . . . . . . . . . . . . . Cruza uniforme Cruza ordenada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.8.
2.4.9.
Mutacin
. . . . . . . . . . . . . . . . . . . . . . . . . . .
NDICE GENERAL
2.4.10. Por qu funcionan los Algoritmos Genticos? . . . . . . . 2.4.10.1. La hiptesis de los bloques constructores . . . .
33 35
3. Programacin Gentica
3.1. 3.2. Concepto de Programacin Gentica . . . . . . . . . . . . . . . . Descripcin detallada de la Programacin Gentica . . . . . . . . 3.2.1. 3.2.2. 3.2.3. Las estructuras sometidas a adaptacin Estructuras iniciales Aptitud 3.2.3.1. 3.2.3.2. 3.2.3.3. 3.2.3.4. 3.2.4. 3.2.5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
37 40 40 42 44 45 46 46 47 47 47 47 48 50 51 52 52 53 54
Seleccin glotona . . . . . . . . . . . . . . . . . . . . . . . Operadores primarios para modicar estructuras 3.2.5.1. 3.2.5.2. Reproduccin . . . . . . . . . . . . . . . . . . . . Cruza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mutacin . . . . . . . . . . . . . . . . . . . . . . Permutacin Encapsulacin Edicin . . . . . . . . . . . . . . . . . . . . . . . Destruccin . . . . . . . . . . . . . . . . . . . . .
3.2.6.
III Desarrollo
4. Diseo del algoritmo
4.1. 4.2. 4.3. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . Hiptesis y soluciones esperadas 4.3.1. 4.3.2. 4.3.3. 4.3.4. 4.3.5. 4.3.6. 4.3.7. 4.3.8. 4.4. 4.4.1. 4.4.2. 4.4.3. Aptitud de los individuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Primera fase de desarrollo . . . . . . . . . . . . . . . . . . . . . . Dos esquemas de presin selectiva
55
56
56 57 57 61 63 65 66 67 68 69 72 74 75 76 77 78
Operador de cruza . . . . . . . . . . . . . . . . . . . . . . Operador de mutacin . . . . . . . . . . . . . . . . . . . . Poblacin inicial . . . . . . . . . . . . . . . . . . . . . . . Reporte de eciencia . . . . . . . . . . . . . . . . . . . . . El mtodo unicador . . . . . . . . . . . . . . . . . . . . . Almacenamiento y recuperacin de la informacin En busca de patrones . . . .
Segunda fase de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . La disyuntiva entre aprendizaje computacional efectivo, y produccin de gramticas lingsticamente correctas 4.4.3.1. Comentarios nales y futuros trabajos . . . . . . . . . . . Instrucciones para usar el cdigo . . . . . . . . .
Parte I
Introduccin
En el ao de 1950 Alan M. Turing propuso el artculo Computing machinery and Intelligence (Maquinaria de cmputo e Inteligencia), para la revista Mind (Mente), una prueba para demostrar la existencia de inteligencia en una mquina. La prueba se basaba en la hiptesis positiva (es decir, susceptible a ser comprobada por la experiencia mediante un mtodo cientco), de que si una mquina se comporta en todos los aspectos como inteligente, entonces debe de ser inteligente. Consista a su vez en colocar a un juez, un participante humano y una computadora en habitaciones distintas. El juez tendra que decidir cul de los participantes era una computadora (determinando consecuentemente cul era la persona). Solamente poda hacer preguntas, a las cuales la computadora y la persona podan responder mintiendo. La tesis de Turing es que si la persona y la computadora son los sucientemente hbiles, al juez le resultara imposible determinar cul de los dos era el humano. Hasta la fecha no se ha logrado que una mquina pase esta prueba en una experiencia con mtodo cientco. Es de esta forma que el Procesamiento computacional de Lenguajes Naturales, ha estado intrnsecamente relacionado con el desarrollo de la Inteligencia Artifical desde sus comienzos. Ahora es un rea diversa y algunas de sus principales ramas son: Traduccin Automtica, Anlisis de Textos y Produccin Automtica de Lenguaje Escrito, que a su vez trata prosa y dilogos por separado. Un procesador de lenguaje natural se considera exitoso, al asumir que el comportamiento del sistema es tal, que internamente realiza las mismas cosas que uno hace al entender el lenguaje natural. Formando las mismas estructuras lgico-funcionales que nosotros los seres humanos formamos. Haciendo las mismas deducciones y notar las mismas implicaciones. Esto parece ser el mismo supuesto que se hace cuando se dice que otro ser humano, ha entendido el mensaje que hemos emitido, y sin embargo no existe evidencia directa que demuestre que la mente de otra persona funcione como la propia. Por el contrario, estudios de neurociencia recientes, sugieren que el mismo estmulo sensorial a nivel celular producen efectos observables completamente diferentes, incluso en gemelos idnticos [1]. Por otra parte, se tienen abundantes trabajos en Lingstica, que le dan un tratamiento especial a las ambigedades propias del lenguaje natural hablado o escrito. Una ambigedad a nivel lxico aparece cuando la misma palabra, puede tener ms de un signicado, que debe deducirse a partir del contexto oracional o conocimientos previos. La ambigedad propia del lenguaje natural es una dicultad esencial para el Procesamiento de Lenguajes Naturales, que de ahora en adelante en este trabajo se abrevia PLN. En el campo de las Ciencias de la Computacin, el uso de diccionarios (bases de datos), gramticas, bases de conocimientos y correlaciones estadsticas, han conducido a resultados satisfactorios en el procesamiento de corpus reducidos
1,
en otras palabras, textos bien delimitados en cuanto a extensin y contenido se reere. Esto choca con las posturas de muchos lingistas, quienes tal vez acertadamente sealan que se pierde la naturalidad propia del lenguaje. Hasta ahora el panorama no resultara favorable para esta tesis, si el objetivo
1 En
de la misma fuera dar una explicacin terminante de cmo es que el humano entiende el lenguaje natural, mostrando los procesos exactos que suceden en el cerebro, y el mecanismo mediante el cual se adquiere la habilidad de expresar ideas de forma escrita. Es resaltable que para este n tampoco existe un consenso entre cientcos de las Neurociencias y lingistas. Estos ltimos sostienen que el lenguaje es un producto de la mente, y por lo tanto est sujeto a la voluntad de la misma, mientras que los neurocientcos muestran que en el acto de aprender nuevos conceptos, se modica la estructura del cerebro humano. Lejos de pretender resolver una controversia que se ha mantenido durante dcadas de estudio, este trabajo busca aplicar tcnicas de programacin desarrolladas por distintos investigadores para producir comentarios de manera automtica en un dilogo. Particularmente se hace uso de la programacin gentica aplicada a la inferencia gramatical del lenguaje objetivo, en este caso, el espaol. Una sntesis de la razn por la cual se opt por la programacin gentica sobre otros mtodos computacionales para el PLN, as como una breve expliacin de lo que es la inferencia gramatical, se da a continuacin [2]: En los primeros intentos serios por construir una mquina que pasara la prueba de Turing, se utiliz el mtodo conocido como reconocedor de patrones. ste simplemente reconoca cierta combinacin de palabras, para elaborar una especie de mscara o molde, en el que el resto de las palabras que aparecieran pudieran ser vistas como el contenido del enunciado. Tuvo cierto xito en sistemas que facilitan consultas a bases de datos, pero se consider pobre cuando se trata de simular una interaccin ms parecida a la que se observa entre seres humanos. Esto porque no se puede abarcar la aparentemente inagotable aparicin de nuevas combinaciones de palabras. La induccin gramatical es la construccin gradual de una gramtica correcta basada en un conjunto nito de una muestra de expresiones. El camino de hacer ms ecientes las gramticas inferidas introduciendo probabilidades, vara dependiendo del modelo a desarrollar. Ejemplos de gramticas basadas en frecuencias son las Gramticas Probabilsticas libres de contexto (Probabilistic Context Free Grammars, PCFG's) introducidas por Charniak en 1993 [9]. Asignan una probabilidad a cada cadena (oracin) bien formada del lenguaje natural, de modo que la suma de todas las probabilidades asignadas sea igual a uno. Otro ejemplo es el de los modelos ocultos de Markov, propuesto por Rabiner y Juang en 1993, y paralelamente por Kupiec en 1989 [10], que asigna una probabilidad a cada cadena, tal que la suma de las probabilidades asignadas a cadenas con la misma longitud sea igual a uno. Por ms potente que ahora pueda parecer la induccin o inferencia gramatical puramente probabilstica, trabajos recientes muestran que los mejores esfuerzos terminan por encontrarse con un problema mayor, que es el de un dominio que aprende (crece), mientras parece ser necesario descubrir un conjunto de categoras y un conjunto de reglas denidas sobre el mismo. Ms an, si no se tiene especial cuidado al momento de asignar probabilidades, se ocasiona el problema de frecuencia cero, consecuencia de asignar una pequea probabilidad a todos los posibles valores, lo que ocasiona que formas gramaticalmente incorrectas, sean tan probables como otras correctas, y cada vez ms inaccesibles.
Este trabajo de tesis utiliza un algoritmo de programacin gentica, para adaptar gramticas hipotticas a un modelo ms efectivo de un subconjunto del lenguaje de estudio. La efectividad o fuerza de una poblacin de gramticas se mide en su capacidad de parsear el conjunto de entrenamiento. El programa gentico es estadsticamente sensible, pues la utilidad de patrones frecuentes se refuerza mediante la seleccin aleatoria de nodos del rbol, al momento de ejecutar los operadores de recombinacin: cruza y mutacin. El aprendizaje del lenguaje de estudio, sigue siendo un problema ms complicado, evidente por el hecho de que las categoras lxicas emergen como nodos ms ecientes para capturar regularidades en el conjunto de prueba. Adems, el tamao de las gramticas se usa para medir la aptitud de los individuos, considerando mejor adaptadas a las ms simples.
Parte II
Fundamentos Tericos
Captulo 1
man. Tres dcadas de Ciencias de la Computacin nos han dejado lenguajes de programacin, que facilitan referirse a objetos lingsticos como palabras y oraciones, tan fcil como referirse a nmeros. Sin embargo, los primeros trabajos en Lingstica Computacional, deben verse en el contexto de los recursos que haba disponibles en la poca en que fueron realizados. De modo que eran trabajos que cuanticaban, por ejemplo, el nmero de apariciones de una palabra en un texto extenso. Una de las primeras aplicaciones de la Computacin a la Lingstica en ser planicada y patrocinada fue la Traduccin Automtica (TA). Las comunidades militares y de inteligencia en los Estados Unidos y del resto del mundo, tenan grandes esperanzas puestas en la TA. Desgraciadamente, pese al nivel del patrocinio, la primera generacin de trabajos en TA fue muy decepcionante. Las teoras Lingsticas que los fundamentaban eran sumamente rudimentarias; no tomaban en cuenta a la ambigedad, ni el hecho de que el signicado est involucrado. Y an cuando se quisieran ocupar mejores teoras, los recursos necesarios no estaban disponibles, de modo que se limitaban a realizar marginalmente ms que una sustitucin palabra por palabra. En gran medida, los avances en el PLN han surgido de un cambio de apreciacin
1 Del
10
CAPTULO 1.
11
con respecto de lo que es una computadora. Pues aunque son excelentes herramientas para la aritmtica, conviene verlas como mquinas manipuladoras de smbolos muy generales. Los smbolos pueden representar nmeros, o conceptos ms complejos como palabras, oraciones, rboles o redes. El cdigo que la mquina ejecuta realiza operaciones muy simples, como traspasar informacin de una parte de la memoria a otra, o sumar dos nmeros. Los lenguajes de programacin de alto nivel, tales como Prolog, Java o Haskell, por nombrar tres, permiten al programador especicar instrucciones en trminos de conceptos ms ricos y mejor orientados al problema a resolver. La existencia de compiladores que traducen de este nivel ms abstracto a instrucciones primitivas, libra al programador de la carga de replantear cada idea en trminos de lenguaje de mquina, y lo deja concentrarse en el problema que realmente le interesa. Un hito en el desarrollo del PLN como se conoce el da de hoy, fue la aparicin en 1971 del programa SHRDLU de Winograd, escrito en LISP, que era el lenguaje predilecto de los investigadores en Inteligencia Artical durante la dcada de 1970's. Esta contribucin signic una prueba de existencia, al exhibir que la comprensin del lenguaje natural era posible para la computadora, si se restringa el dominio. SHRDLU mostraba de una manera primitiva, un nmero importante de habilidades, como son la interpretacin de preguntas, declaraciones y rdenes, capacidad para realizar deducciones, explicar sus acciones y aprender nuevas palabras. Estas habilidades no haban sido visto juntas en un mismo programa de computadora. SHRDLU no hubiera sido posible sin lenguajes de alto nivel, menos an considerando que fue escrito por un solo investigador [3]. Remontndonos a la poca que sigui a la Segunda Guerra Mundial, pueden distinguirse dos vertientes principales al campo: el modelo de autmatas y probabilidades, y el modelo de teora de la informacin. Los autmatas surgieron del trabajo de Turing sobre el cmputo algortmico, considerado por muchos como el fundamento de las Ciencias de la Computacin modernas. Esto despus inuy en el trabajo de la neurona de McCulloc-Pitts, un modelo simplicado de la neurona como un elemento de cmputo que puede ser descrito con lgica proposicional. Siguiendo en orden cronolgico, vinieron los trabajos de Kleene, sobre autmatas nitos y expresiones regulares, de Shannon, que aplic modelos probabilsticos de procesos de autmatas de Markov discretos al procesamiento del lenguaje y considerando a ste, Chomsky en 1956 seal a las mquinas de estados nitos como una forma de caracterizar gramticas, y deni un lenguaje de estados nitos como aquel generado por un autmata de estados nitos[5]. La segunda intuicin producida en esta poca, fue la del desarrollo de algoritmos probabilsticos para el procesamiento del lenguaje hablado y escrito, que se relaciona a la otra contribucin de Shannon: la metfora del canal con ruido y decodicacin para la transmisin de lenguaje. Shannon tom prestado el concepto de entropa de la Termodinmica, como una forma de expresar la capacidad de transmisin de un canal, o el contenido de informacin de un lenguaje. Con el paso del tiempo, estas dos intuiciones originales llevaron a distintos modelos, que en la siguiente seccin se describen por separado, y adems, dos importantes mtodos del PLN a que dieron lugar la aplicacin de estos mo-
CAPTULO 1.
12
delos de forma pura o aumentada, procurando sealar las fortalezas y fallos de cada uno.
1.2.
Diferentes modelos
Uno de los principales puntos de la investigacin hecha durante los ltimos 50 aos en el PLN, es que el conocimiento contenido en el lenguaje, y fenmenos como la ambigedad, pueden ser modelados a travs de un conjunto reducido de teoras formales. Todas estas teoras o modelos derivan de herramientas estndar de las Ciencias de la Computacin, Matemticas y Lingstica. Entre los ms importantes estn: mquinas de estados, sistemas de reglas, lgica, modelos probabilsticos y modelos de espacios vectoriales. En su presentacin ms simple, las mquinas de estados son modelos formales que consisten de estados, transiciones entre estados y una representacin de entrada. Algunas de las variaciones de este modelo bsico son los autmatas de estado nito y transductores, deterministas y no deterministas. Estrechamente relacionadas a este modelo, estn sus contrapartes declarativas: sistemas de reglas formales. Entre los ms importantes a considerar estn las gramticas regulares, relaciones regulares, gramticas libres de contexto y gramticas con caractersticas aumentadas. El tercer modelo que juega un papel importante en la captura del conocimiento en el lenguaje es la lgica. La lgica de primer orden, tambin llamada clculo de predicados, y formalismos relacionados como el clculo lambda, han sido extensamente utilizados para modelar la semntica y pragmtica del lenguaje, sin embargo, ms recientemente tcnicas derivadas de las llamadas lgicas no clsicas en semntica lxica han cobrado importancia. Los modelos probabilsticos son cruciales para capturar cualquier tipo de conocimiento contenido en el lenguaje. Cada uno de los modelos anteriores, puede aumentarse con el uso de probabilidades. Por ejemplo, la mquina de estados puede aumentarse para producir un autmata con pesos o modelo de Markov. Ms adelante se explicar el funcionamiento del modelo oculto de Markov
2 , que
se usan por todos lados en el campo: en el etiquetado de partes del discurso, reconocimiento del discurso, comprensin de dilogo, transformacin de texto a discurso y traduccin automtica. La ventaja clave de los modelos probabilsticos, es su capacidad de resolver problemas relacionados con ambigedades. Casi cualquier problema en el PLN puede traducirse a: Dadas N elecciones para una entrada, elegir la ms probable. Finalmente, los modelos de espacios vectoriales, basados en lgebra lineal, son la base de la obtencin de informacin, y muchos tratamientos para el signicado de las palabras. As, por ejemplo, existen modelos que mapean conceptos del lenguaje natural a vectores, pretendiendo despus representar conceptos compuestos como la composicin de los vectores asociados a las partes [4].
2 Del
CAPTULO 1.
13
1.3.
Regresando al experimento propuesto por Alan M. Turing mencionado en la introduccin, puede agregarse que l mismo predijo que a nales del siglo XX, una mquina con diez Gigabytes de memoria podra engaar al juez, hacindolo pensar que se trataba de un ser humano quien haca de interlocutor. En la actualidad, contando con mquinas an ms potentes que las descritas por Turing, nuevas preguntas surgen con respecto a la suciencia de esta prueba para la inteligencia de las computadoras. Es decir, sin tomar en cuenta el hecho de que algunas personas son notablemente ms fciles de engaar que otras, es el manejo del lenguaje de forma humana suciente por s mismo para demostrar la existencia de inteligencia?
Como bien seal Weizenbaum, en este caso el xito de ELIZA en este dominio se debe a que no necesita conocer algo en particular del mundo, para imitar a un psicoterapista Rogeriano. La relevancia de este caso, es que mucha gente que interactu con ELIZA lleg a pensar que realmente los entenda a ellos y sus problemas. Muchos de ellos, incluso seguan creyendo en su capacidad de comprensin despus de que se les explicaba el mecanismo mediante el cual ELIZA funcionaba. Desde entonces las teoras de la Cognicin, y de la Inteligencia Articial han avanzado lo suciente como para tener muchas cosas que decir al respecto. En este trabajo, me limito a describir el funcionamiento de un reconocedor de patrones, como lo fue ELIZA. Es preciso introducir deniciones de conceptos importantes que se seguirn utilizando a lo largo de todo este trabajo:
CAPTULO 1.
14
Expresiones regulares
(RE's
da de patrones. Las operaciones bsicas sobre expresiones regulares incluyen la concatenacin de smbolos, disyuncin de smbolos, contadores, anclas y operadores de precedencia. Operadores avanzados como la estrella de Kleene y la cerradura estn relacionados con la concatenacin arbitraria de la expresin regular a la que se le aplica. En el primer caso, la repeticin va desde cero veces dando como resultado la cadena vaca o
nitos, como un par de estados distinguidos: el inicial y nal, el resto de los estados y las transiciones denidas entre ellos. Cada expresin regular bien formada, tiene un autmata de estados nitos asociado y viceversa. Un autmata dene un lenguaje formal, como el conjunto de cadenas que ste acepta. Este lenguaje puede usar cualquier conjunto de smbolos, incluyendo cartas, palabras o incluso imgenes grcas. Para mayor informacin sobre autmatas de estados nitos se puede consultar la fuente utilizada para esta seccin [4] (captulo 2) , o bien cualquier libro que trate el tema de Teora de la Computacin.
FSA's deterministas
encuentra.
(DFSA's
FSA's no deterministas
(NDFSA's
terminista, en ocasiones debe tomar una decisin entre mltiples caminos, bajo la misma cadena de entrada y el mismo estado actual. Cualquier NDFSA puede transformarse en un DFSA.
Estrategia de bsqueda
estados siguientes a explorar. La estrategia por bsqueda a profundidad (depth rst search) utiliza una estructura de datos tipo pila LIFO tructura de datos tipo FIFO
7 . La
estrategia por bsqueda en amplitud (breath rst search) utiliza una es-
8.
Un importante uso de las RE's es la sustitucin textual. As, algunos lenguajes como PERL, facilitan la sustitucin de cadenas descritas por una expresin regular, por otras especicadas en el programa. Adems, muchas veces existen caractersticas extendidas de las RE's, como son los registros de memoria, mediante los cuales, se tiene acceso a las cadenas ledas que coinciden con la descripcin establecida por la expresin regular. El programa ELIZA funcionaba realizando sustituciones textuales en cascada
ingls: Regular Expression. inlgls: Finite State Automaton. ingls Deterministic Finite State Automaton. ingls: Non Deterministic Finite State Automaton ingls: Last In First Out. ingls: First In First Out.
CAPTULO 1.
15
por medio de RE's, cada una procesando una parte del texto alimentado y cambindolo. La primera sustitucin, cambiaba las instancias de mi por su, y
soy / estoy por usted es / usted est . La siguiente ronda de sustituciones
buscaba patrones relevantes y los transformaba a una salida apropiada, de modo que usted est triste era sustituido por lamento escuchar que usted est
triste , o bien por qu cree usted que usted est triste? . Desde luego, un buen
procesamiento del texto recibido implicara desarrollar una gran cantidad de casos especiales por separado, a pesar de que como se dijo antes, el imitador de un psicoterapista Rogeriano no requera de un conocimiento previo del mundo. Al nal de la parte dedicada al desarrollo de un algoritmo, se obtendr una estructura por medio de cmputo evolutivo, que despus ser utilizada para demostrar la fortaleza de esta tcnica de programacin, propia de la rama de la inteligencia articial conocida como aprendizaje de computadoras.
automtica, como un posprocesamiento de la traduccin palabra por palabra, e incluso en la correccin automtica de textos. El clculo de probabilidades puede expresarse para una cadena de como la aplicacin de la regla de la cadena:
palabras
P (x1 x2 ...xn ) =P (x1 )P (x2 |x1 )P (x3 |x2 )...P (xn |xn1 ) 1 1 Sustituyendo cada palabra Wi por su respectiva Xi
en la frmula, la regla
de la cadena nos muestra el vnculo entre calcular la probabilidad conjunta de una secuencia, y la probabilidad condicional de una palabra dadas las que la preceden. Sin embargo, viendo ms detenidamente la ecuacin escrita arriba, conclumos que entre ms larga sea la secuencia de palabras, ms improbable
9 Del
CAPTULO 1.
16
ser leer una palabra ms en la oracin. Adems, no es una forma exacta de calcular la probabilidad de que una palabra aparezca dada una secuencia larga de palabras que le preceden en un texto, y no se puede aproximar simplemente contando cuntas veces aparece la palabra despus de una cadena lo sucientemente larga, porque el lenguaje natural es creativo y un contexto en particular, pudo no haber sido tomado en cuenta antes. Con las consideraciones anteriores, se propone el uso de bigramas para el clculo de probabilidades. En un LM de bigramas, se aproxima la probabilidad de ocurrencia de una palabra, con la probabilidad condicional de la palabra que le precede. Es decir en lugar de calcular:
P (xn |xn1 ).
Aqu, la suposicin de que la probabilidad de que aparezca una palabra depende solamente de la palabra que le precede, se conoce como suposicin de Markov, y los modelos de Markov son la clase de modelos probabilsticos que suponen que se puede predecir la probabilidad de una unidad futura, sin tener que mirar muy atrs en la secuencia de eventos (en nuestro caso de palabras). El uso fuerte de la probabilidad y estadstica en el PLN, no est en la prediccin de las palabras que pueden aparecer en un texto como tal, sino en la correcta clasicacin de cada palabra en su categora gramatical correspondiente. A esto se le conoce como el problema de etiquetado. El problema de etiquetado es bastante viejo en proporcin a la edad del PLN mismo. Stolz en 1965 fue el primero en usar probabilidades para resolver ambigedades Markov (HMM) aplicados a la eliminacin de ambigedades en etiquetas, son un caso especial de Inferencia Bayesiana o Clasicacin Bayesiana. En sta, se proporciona un conjunto de observaciones y el trabajo consiste en determinar a cul clase de un conjunto establecido pertenecen. Como en el PLN se procesa la secuencia de palabras que forman una oracin, se trata como una clasicacin de observaciones secuenciales. Para una oracin formada por las palabras nacin de etiquetas t1
W = w1 . . . wn ,
se busca la asig-
. . . tn
con ti
corresponde. La aproximacin bayesiana al problema comienza por considerar todas las posibles secuencias de etiquetas. De este universo enorme con dada. Es decir, se busca la
||T ||n
t T n que satisfaga t = argmax (P (tn |W )), donde i n ti es la etiqueta i en la posicin n. Hasta ahora la expresin matemtica resulta bastante clara, sin embargo, no se
conoce una forma directa de computar la ecuacin anterior. La intuicin de la Clasicacin Bayesiana consiste en usar la regla de Bayes:
P (x|y)
10 Una
categora sintctica.
CAPTULO 1.
17
As se obtiene un conjunto de probabilidades ms fciles de calcular. Ahora se puede sustituir [ec 1] en la primera ecuacin, obteniendo:
t = argmax
P (W |tn )P (tn ) i i P (W )
que se calcula la probabilidad para cada secuencia de etiquetas ti T , sin que P(W) cambie en uno de los clculos. Con esta simplicacin llegamos a:
[ec 2]
Por desgracia [ec 2] no es fcil de calcular tampoco. Los etiquetadores que utilizan HMM's estn fundados por esta razn en dos suposiciones, la primera consiste en que la probabilidad de que una palabra aparezca depende solamente de su propia etiqueta, esto signica que es independiente de las palabras alrededor de la misma, y de sus respectivas etiquetas:
n i=1 P (wi |ti ). La segunda suposicin es que la probabilidad de que una etiqueta aparezca, de-
P (W |tn ) i
n i=1 P (ti |ti1 ). Agregando las simplicaciones mencionadas en el prrafo anterior, la [ec 2] quebigramas:
P (tn ) i
da como se ve a continuacin :
Es necesario mencionar que cuando las probabilidades son todas cercanas a cero, en vez de multiplicarlas se dividen, y (expresada frecuentemente como , se sustituye por una divisin
).
probabilidades. Una es la probabilidad de transicin de etiquetas, mientras que la otra es la probabilidad de que aparezca una palabra en particular, dada cierta etiqueta. A la primera la expresa
P (ti |ti1 ),
do para casos especiales, por ejemplo, qu tanto se ve un adjetivo con etiqueta ADJ despus de un sustantivo con etiqueta SUS, contando en un corpus etiquetado y sucientemente extenso cuntas veces aparece ADJ despus de SUS:
P (ti |ti1 ) =
C(ti1 ,ti ) C(ti1 ) , aqu C se reere al conteo. Para realizar estimados de la segunda probabilidad, se procede de la misma forma. De modo que si la etiqueta VBZ representa a un verbo conjugado en tercera persona del singular, y pretendemos determinar un estimado de la probabilidad de que sea la palabra es la que ha sido etiquetada, se procesa el corpus con la frmula:
P (es|V BZ) =
1.4.
Al nal de esta primera seccin se revisaron dos mtodos distintos de realizar PLN. El reconocimiento de patrones mediante autmatas de estados
CAPTULO 1.
18
nitos, puede extenderse mediante programacin lgica inductiva. Esta tcnica de programacin, muy posterior a la primera versin del algoritmo ELIZA, permitira el reconocimiento de nuevos patrones que no fueron agregados al conjunto de reglas base del algoritmo. La pregunta es, cmo lo hara?. Para ello, requerira determinar mediante un preprocesamiento la estructura sintctica de la oracin que se desea reconocer. Los mtodos probabilsticos resultan realmente tiles para que la computadora resuelva ambigedades relacionadas con el etiquetado, es decir, situaciones en las que una palabra puede tener ms de una categora sintctica en una oracin. El limitante aparece cuando no se cuenta con un corpus bien etiquetado realmente extenso, porque queda claro que por la naturaleza creativa del lenguaje un texto limitado no puede ser representativo del mismo. A pesar de los nuevos avances, es notable la necesidad de un paradigma menos rgido, que se adapte a la estructura y naturaleza de las oraciones que procesa el algoritmo. Claro est, y se explicar la razn en las siguientes secciones, que el cmputo evolutivo no se libra de la necesidad de direccin por parte de un agente humano, aunque se puede evitar el trabajo tedioso de etiquetar textos para proporcionar corpus buenos.
Captulo 2
Cmputo Evolutivo
2.1. Breve historia
Desde 1859, el concepto de la evolucin Darwinista con su principio de supervivencia del ms apto, capt la imaginacin popular. Este principio sirve como punto de partida para introducir el Cmputo Evolutivo, si se piensa que un ser vivo evolucionado demuestra un comportamiento optimizado complejo a cada nivel: la clula, el rgano, el individuo y nalmente la poblacin [6]. En apariencia las especies biolgicas han resuelto los problemas del caos, oportunidad, interacciones no lineales y temporalidad. El concepto evolutivo puede ser aplicado a problemas que al ser enfrentados con heursticas y mtodos clsicos de optimizacin, no producen resultados satisfactorios. La teora de la seleccin natural establece que los animales y plantas que existen hoy, son el resultado de millones de aos de adaptacin a las exigencias del medio ambiente. En cualquier punto del tiempo, un nmero indeterminado de organismos pueden coexistir y competir por los mismos recursos disponibles en un ecosistema. Aquellos ms capaces de obtener dichos recursos y tener xito procreando, sern los que tengan descendientes numerosos en el futuro. Caso contrario para los que tienen dicultades para adaptarse. Los ms aptos poseen caractersticas seleccionadas que pasan a la siguiente generacin, y con el paso del tiempo la poblacin entera del ecosistema se dice que ha evolucionado porque se observa que posee ms caractersticas que la hace ser ms apta. En las tcnicas del Cmputo Evolutivo se abstraen estos principios evolucionistas en algoritmos que pueden ser usados para encontrar soluciones ptimas a una gran variedad de problemas. En los algoritmos de bsqueda, se tiene un nmero de posibles soluciones a un problema y se pretende hallar la mejor posible en un tiempo jo. En un espacio de bsqueda nito y pequeo, todas las posibles soluciones pueden ser procesadas en una cierta cantidad de tiempo y la mejor entre ellas queda determinada. Sin embargo, una bsqueda exhaustiva resulta inviable a medida que el espacio de bsqueda crece. En los algoritmos de bsqueda tradicionales se realiza un muestreo aleato-
19
CAPTULO 2.
CMPUTO EVOLUTIVO
20
rio (trayectoria aleatoria) o heurstico (gradiente descendiente) del espacio de bsqueda, tomando una posible solucin a la vez con la esperanza de que la ptima puede y va a ser encontrada. El aspecto clave que distingue un algoritmo de bsqueda evolutivo, es que est basado en una poblacin de soluciones. A travs de la adaptacin sucesiva de un nmero grande de individuos, el algoritmo evolutivo realiza una bsqueda dirigida eciente. Esto resulta ms efectivo que la bsqueda aleatoria y es menos susceptible a estancarse en ptimos locales que cuando se utiliza un gradiente descendiente. El Cmputo Evolutivo surgi de llevar ideas de la teora biolgica evolucionista a las Ciencias de la Computacin, y contina atento de nuevos hallazgos en la investigacin en Biologa para ms inspiracin. Como sea, aunque es cierto que se lleva a cabo una simplicacin de la complejidad observada en el mapa gentico de los seres vivos, las propiedades adaptativas del cdigo gentico ilustran cmo ambas comunidades pueden contribur a un entendimiento comn de las abstracciones evolutivas adecuadas. Existen cuatro paradigmas histricos que han servido de base para mucho de lo que se ha logrado en el campo del Cmputo Evolutivo: la programacin evolutiva de Fogel y otros investigadores en 1966, las estrategias evolutivas de Recheuberg en 1973, los Algoritmos Genticos de Holland en 1975, y la Programacin Gentica de Koza entre 1992-1994.
2.2.
Caractersticas
En un algoritmo evolutivo, un esquema de representacin es elegido por el investigador para denir el conjunto de soluciones que forman el espacio de bsqueda del algoritmo. Un nmero de soluciones individuales se crean para formar la poblacin inicial. Los siguientes pasos se repiten iterativamente hasta que una solucin se encuentra tal que satisface los criterios de terminacin predenidos. Cada individuo es evaluado usando una funcin de aptitud que es especca al problema que se desea resolver. Basndose en los valores de aptitud, cierta cantidad de individuos son elegidos para ser padres. Nuevos individuos o descendencia, son producidos de aquellos padres usando operadores de repro-
CAPTULO 2.
CMPUTO EVOLUTIVO
21
1.
El tercer punto lleva implcito una pregunta que permanece sin respuesta en la Biologa: Por qu todas las formas de vida conocidas, usan dos polmeros cualitativamente distintos, los cidos nucleicos y las protenas, con la necesidad asociada de traduccin? Teoras recientes se concentran en el descubrimiento de que el ARN puede actuar como medio de almacenamiento gentico y tambin como molcula cataltica. El Cmputo Evolutivo ha avanzado ms en la formalizacin del concepto de lenguaje de representacin.
2.3.
Ventajas
El Cmputo Evolutivo ofrece ventajas prcticas a varios problemas de optimizacin. Estas ventajas incluyen el enfoque simple de la aproximacin, la respuesta robusta al cambio de circunstancias, su exibilidad y ms. A continuacin se profundiza en algunos puntos a favor de las tcnicas propias del Cmputo Evolutivo:
Enfoque simple
mo consiste en una inicializacin, variacin iterativa y seleccin al margen de un ndice de desempeo. En particular, no es necesario que un gradiente de informacin sea presentado al algoritmo. Tras las iteraciones de variacin aleatoria y seleccin, la poblacin puede converger a soluciones ptimas. La efectividad de un algoritmo evolutivo depende de los operadores de variacin y seleccin aplicados a una representacin e inicializacin adecuadas.
Mltiples aplicaciones
problema que pueda ser formulado como uno de optimizacin de funcin. Se requiere una estructura de datos para representar las posibles soluciones. La representacin puede ser elegida por el diseador humano de acuerdo a la intuicin que tenga del problema, y debe permitir que los operadores de variacin mantengan un vnculo de comportamiento entre los padres e hijos. Pequeos cambios en la estructura de los padres, deben producir pequeos cambios en los descendientes. Un area clsica para la aplicacin de algoritmos evolutivos son los problemas de combinatoria discreta.
Paralelizacin
1 Genotipo
CAPTULO 2.
CMPUTO EVOLUTIVO
22
han vuelto populares y ms disponibles, es de esperarse que el potencial de aplicar algoritmos evolutivos a problemas ms complejos tambin crezca. Generalmente las soluciones individuales son evaluadas independientemente a aquellas con las que compite, esto quiere decir que la evaluacin puede manejarse en paralelo, mientras que la seleccin solo requiere un operador serial.
Los algoritmos
narse con tcnicas de optimizacin ms tradicionales, de formas tan simples como sera usar un gradiente de minimizacin despus de una bsqueda primaria con un algoritmo evoultivo que delimite bien el dominio de bsqueda. Adems, los algoritmos genticos pueden ser utilizados para mejorar el desempeo de redes neuronales, sistemas difusos produccin, sistemas inalmbricos y otras estructuras de programacin.
2 , sistemas de
son robustos a cambios dinmicos en el entorno, y requieren comenzar desde el principio para encontrar una solucin. Por el contrario, los algoritmos evolutivos pueden adaptar las soluciones propuestas al cambio de circunstancias. La poblacin generada de soluciones evolucionadas provee una base para seguir mejorando, y en muchos casos no es necesario reiniciar la poblacin aleatoriamente. Se ha hecho uso extensivo de esta propiedad ventajosa del cmputo evolutivo para evolucionar redes neuronales recurrentes, que controlan el funcionamiento de agentes autnomos, como robots que se mueven con ciertas limitantes.
Los al-
goritmos evolutivos pueden enfrentarse a problemas en los cuales no existe conocimiento humano previo. An cuando el conocimiento humano debera ser usado cuando se requiere y est disponible, frecuentemente resulta poco adecuado para rutinas automticas que resuelven problemas. La inteligencia articial puede aplicarse a muchos problemas difciles que requieren alta velocidad computacional, pero no pueden competir con la inteligencia humana. Ciertos problemas tienen asociado un sistema experto, que puede no coincidir con la experiencia humana, puede no estar calicado, no ser consistente o simplemente provocar errores. Fogel declar al respecto: La I.A. resuelve problemas, pero no resuelve el problema de cmo resolver problemas [11].
2.4.
Algoritmos Genticos
Los Algoritmos Genticos, que abreviado se escribe AG's, fueron inventados por John Holland y desarrollados en su libro titulado Adaptacin en sistemas naturales y articiales en el ao de 1975. Holland propuso los AG's como
2 Del
CAPTULO 2.
CMPUTO EVOLUTIVO
23
un mtodo heurstico basado en la supervivencia del ms apto. Los AG's demostraron entonces ser una til herramienta para resolver problemas de bsqueda y optimizacin. Aqu se dedica un espacio para explicar el funcionamiento de estos algoritmos, que pueden considerarse como la tcnica del Cmputo Evolutivo ms popular, y porque la Programacin Gentica retoma en gran medida muchos aspectos que primero estuvieron presentes en los AG's [6].
CAPTULO 2.
CMPUTO EVOLUTIVO
24
diante el uso de una funcin de aptitud. Cada cromosoma tiene un valor que corresponde a la evaluacin de qu tan buena es la solucin que representa. La solucin ptima es entonces la que le corresponda el cromosoma que maximice la funcin de aptitud. Una vez bien denidos los mecanismos de reproduccin y la funcin de aptitud, el AG es evolucionado de acuerdo a la misma estructura bsica. Comienza generando una poblacin inicial de cromosomas, que debe ofrecer una amplia variedad de material gentico. Los recursos genticos, tambin conocidos como pool gentico, tiene que ser tan grande como sea posible para que cualquier solucin del espacio de bsqueda pueda ser engendrada. Generalmente la poblacin inicial se genera aleatoriamente. Entonces, el AG se cicla en un proceso iterado para hacer que la poblacin evolucione. Cada iteracin consiste en los siguientes pasos:
SELECCIN:
cin. Esta seleccin se realiza con una probabilidad que depende en la aptitud relativa de los individuos, de modo que los mejores terminan siendo ms seleccionados que los malos y menos adaptados.
individuos seleccionados. Para generar nuevos cromosomas, el algoritmo puede hacer uso de la recombinacin o cruza, y de la mutacin. La aptitud de los nuevos cromosomas es evaluada. Durante el ltimo paso, individuos de la vieja poblacin son
eliminados y reemplazados por los nuevos. Los operadores de cruza y mutacin operan con probabilidades diferentes sobre los individuos seleccionados. Antes de implementar un AG, es importante considerar ciertas directrices para el diseo de algoritmos de bsqueda en general: 1. Determinismo: una bsqueda puramente determinista puede tener una varianza demasiado alta en sus resultados, pues puede quedar atorado en los peores casos y no poder salir debido a su determinismo. Ms an, la prediccin de los peores casos no siempre es posible. 2. No determinismo: un mtodo de bsqueda estocstico usualmente no sufre del potencial mencionado arriba de caer en el peor caso. Es natural pensar entonces que una bsqueda debera ser estocstica, sin embargo pueden contener una porcin sustancial de determinismo. Es suciente procurar tener suciente no determinismo para evitar la cada en los peores casos. 3. Determinismo local: un mtodo puramente estocstico puede ser muy lento. Es razonable hacer tantas predicciones deterministas y ecientes como sea posible, de las direcciones ms prometedoras de los procedimientos locales. Esto se llama escalamiento de montaa local o bsqueda glotona
CAPTULO 2.
CMPUTO EVOLUTIVO
25
La habilidad del AG de explorar y explotar simultneamente, y el xito en su aplicacin a problemas del mundo real, refuerza la conclusin de que es una poderosa y robusta tcnica de optimizacin. En las siguientes subsecciones se desarrollan a detalle elementos de la terminologa y operadores de un AG.
2.4.3. Individuos
Un individuo agrupa dos formas de soluciones: el cromosoma que es la informacin gentica en bruto (genotipo) que el AG manipula, y el fenotipo que es la expresin del cromosoma en trminos del modelo. Si pensamos en un problema de optimizacin en
R3
cada una de stas sera un factor. Un cromosoma se subdivide en genes. En los AG's, un gen es la representacin de un factor y el medio de controlarlo. Cada factor en el conjunto de soluciones se corresponde con un gen del cromosoma. El cromosoma debera de alguna forma contener informacin de la solucin que representa. La funcin de morfognesis, que normalmente se conoce como funcin objetivo, mapea a cada genotipo con su respectivo fenotipo. Esto simplemente signica que cada cromosoma codica exactamente una solucin, pero no necesariamente que cada solucin es representada por solo un cromosoma. Es decir, la funcin objetivo no es necesariamente biyectiva, e incluso en ocasiones resulta imposible pretender que lo sea, especialmente en representacin binaria para el cromosoma. No obstante, se debe pedir que la funcin objetivo sea suprayectiva, es decir, que todas las soluciones posibles al problema deben de corresponderse con al menos un cromosoma, para asegurarse que el espacio de bsqueda puede explorarse en su totalidad. Cuando la funcin objetivo no es inyectiva, y ms de un cromosoma mapea a la misma solucin, se dice que la representacin es degenerada. Una degeneracin ligera no es preocupante, pero una degeneracin grande es un problema serio, que puede afectar el comportamiento del AG pues si varios cromosomas representan al mismo fenotipo, obviamente el signicado de cada gen no se va a corresponder con una caracterstica especca de la solucin.
Los genes son instrucciones bsicas para el diseo de un AG. Un cromosoma es una secuencia de genes, que pueden describir una solucin posible al problema. La estructura de cada gen est codicada en un registro de parmetros del fenotipo, estos parmetros son instrucciones para el mapeo entre el genotipo y el fenotipo. Este mapeo es necesario para obtener versiones del conjuto de soluciones con las cuales el AG puede trabajar.
CAPTULO 2.
CMPUTO EVOLUTIVO
26
2.4.4. Aptitud
La aptitud de un individuo en un AG es el valor de una funcin objetivo para su fenotipo. Para calcular la aptitud el cromosoma debe primero ser decodicado, y la funcin objetivo debe de evaluarse. La aptitud no solamente indica que tan buena es la solucin, sino tambin expresa qu tan cerca est el cromosoma del ptimo. En el caso de optimizacin multicriterio, la funcin objetivo es denitivamente ms difcil de determinar. En los problemas de optimizacin multicriterio, muchas veces existe un dilema sobre cmo determinar que una solucin es mejor que otra, qu hacer cuando una solucin es mejor en un critero que otra, pero peor en otro? Aqu el dilema surge ms del concepto de mejor solucin, que de la forma en que se implementa un AG para encontrarla. Si a veces la combinacin de multiples criterios para obtener una funcin objetivo puede dar buenos resultados, esto supone que la combinacin de criterios puede llevarse a cabo de una forma consistente.
2.4.5. Poblaciones
Una poblacin es una coleccin de individuos. Consiste en un nmero denido de individuos siendo evaluados, los parmetros del fenotipo que denen a los individuos y alguna informacin acerca del espacio de bsqueda. Los dos aspectos importantes de las poblaciones usadas en AG's son los siguientes: 1. La generacin de la poblacin inicial. 2. El tamao de la poblacin. Para cada problema, el tamao de la poblacin depender de la complejidad del mismo. Adems la misma es normalmente inicializada de forma aleatoria, esto quiere decir, que si los cromosomas son binarios, cada bit es inicializado con un uno o un cero con la misma probabilidad. Tambin hay casos en que la poblacin puede inicializarse con buenas soluciones conocidas previamente. Idealmente, la primera poblacin debera tener un pool gentico lo sucientemente grande para explorar todo el espacio de bsqueda. Para lograr esto, en casi todos los casos la poblacin inicial es elegida de forma aleatoria, sin embargo, en ocasiones se puede hacer uso de alguna heurstica especial para sembrar a la primera poblacin. As, la aptitud promedio de la poblacin ya es alta, y esto puede ayudar al AG a encontrar una buena solucin ms rpido. Con todo y heursticas, uno debe procurar que el pool gentico de la poblacin sea lo sucientemente grande, de lo contrario solo se explorar una pequea porcin del espacio de bsqueda y nunca se tendr la certeza de encontrar ptimos globales. El tamao de una poblacin es un problema por s mismo. Entre ms grande es, ms fcil es explorar el espacio de bsqueda. Pero ha quedado establecido que el tiempo requerido por un AG para converger al ptimo global es
O (n log n)
CAPTULO 2.
CMPUTO EVOLUTIVO
27
una poblacin ha convergido cuando todos los individuos son muy similares entre s, y el mejoramiento solo puede lograrse mediante la mutacin. Goldberg tambin ha mostrado que la eciencia de un AG para alcanzar el ptimo global en vez de uno local, est muy determinado por el tamao de la poblacin. Una poblacin grande es til, pero requiere mucho ms costo computacional, memoria y tiempo. Generalmente se usan 100 individuos, pero es un nmero que puede cambiarse de acuerdo a los resultados observados y los recursos computacionales disponibles.
2.4.6. Codicacin
La codicacin es el proceso de representar genes individuales. El proceso puede llevarse a cabo utilizando bits, nmeros, rboles, arreglos, listas o cualquier otro objeto. La codicacin depende en la aproximacin que se desea al resolver el problema. Se puede por ejemplo emplear directamente nmeros reales o enteros. A continuacin se describen los tres tipos de codicacin ms utilizados en los AG's: Codicacin binaria: El mtodo ms comn de codicacin utiliza cadenas binarias para representar los cromosomas. Cada bit en la cadena puede representar alguna caracterstica de la solucin. Todas las cadenas de bits estn asociadas a una solucin, pero no necesariamente la mejor. Otra posibilidad es que toda la cadena represente un nmero. El modo de codicacin con cadenas de bits vara de un problema a otro. La codicacin binaria posibilita representar muchos cromosomas con un nmero pequeo de alelos codicacin puede no ser natural y se torna necesario hacer correcciones despus de que los operadores genticos han actuado. La longitud de una cadena binaria depende de la precisin deseada, esto quiere decir que los enteros se representan con exactitud, los nmeros reales requieren truncarse y la cantidad de stos que se pretende codicar incrementan la longitud de la cadena de bits. Codicacin entera o de permutacin: Cada cromosoma es una cadena de nmeros, que representa a su vez una secuencia especca. En ocasiones es necesaria alguna correccin despus de operar genticamente sobre los cromosomas. La codicacin de permutacin es til solamente para resolver problemas de ordenamiento, por ejemplo el problema del agente viajero. Es evidente que se requieren correcciones para algunos operadores de cruza y mutacin para dejar un cromosoma consistente, que no repita valores.
4 De
valor
n0 , el
informacin sobre notacin asinttica, puede consultarse cualquier libro que trate el tema de Anlisis de Algoritmos.
5 Un
alelo es cada una de las formas alternativas que puede tener un gen que se diferencan
CAPTULO 2.
CMPUTO EVOLUTIVO
28
Codicacin por valores: Cada cromosoma es una cadena de valores, y estos valores pueden ser de cualquier tipo siempre que estn conectados al problema, por ejemplo, pueden usarse nmeros reales. Esta codicacin produce resultados buenos para algunos problemas especiales. Sin embargo, es necesario desarrollar operadores genticos especcos para los valores usados en el AG, y que sean adecuados para el problema. La codicacin directa de valores puede usarse en problemas, en los que valores complicados como nmeros reales aparecen.
2.4.7. Seleccin
La seleccin es el proceso de elegir a dos padres de la poblacin para cruzarlos. Despus de denir la codicacin el siguiente paso es decidir cmo se realizar la seleccin, en otras palabras, cmo se van a elegir los individuos de la poblacin que van a generar la descendencia para la siguiente generacin, y cuntos descendientes van a procrear. El propsito de la seleccin es enfatizar a los mejores individuos de una generacin, con la esperanza de que sus descendientes sean ms aptos. En un AG, se eligen cromosomas para que sean padres, siendo la pregunta a contestar cules cromosomas elegir? Segn la teora evolucionista de Darwin, son los ms aptos los que sobreviven y producen descendencia. Se requiere entonces un mtodo que recoge cromosomas aleatoriamente de la poblacin, de acuerdo a su funcin de evaluacin. Entre ms alta sea su funcin de aptitud, ms probabilidad tiene un individuo de ser seleccionado. La presin
selectiva se dene como el grado en que los mejores individuos son favorecidos.
Con una presin selectiva grande, los mejores individuos son altamente favorecidos. Esta presin selectiva conduce al AG a un mejoramiento de la aptitud de la poblacin en las generaciones sucesivas. La tasa de convergencia de un AG est muy determinada por la magnitud de la presin selectiva, son de hecho, directamente proporcionales. AG's deberan ser capaces de detectar soluciones ptimas o casi ptimas bajo un amplio espectro de esquemas de seleccin con las presiones que stos implican. Como sea, si la presin selectiva es muy baja, la tasa de convergencia ser baja y el AG necesitar un tiempo innecesariamente largo para encontrar la solucin ptima. Si la presin selectiva es muy alta, el AG puede converger prematuramente a un ptimo local, no global. Por ello, los esquemas de seleccin adems de proporcionar presin selectiva, deben propiciar que exista y se preserve la diversidad en la poblacin, siendo que esto evita la convergencia prematura. Hay dos tipos de esquemas de seleccin, la seleccin proporcional y la seleccin basada en ordinales. La seleccin proporcional escoge individuos tomando en cuenta sus valores de aptitud en relacin con los valores de aptitud de los dems individuos en la poblacin. La seleccin basada en ordinales escoge individuos basndose no en el valor de aptitud puro, sino tomando en cuenta un rango dentro de la poblacin. Esto requiere que la presin selectiva sea independiente de la distribucin de aptitud de la poblacin, y se basa solamente en el ordenamiento relativo (ranking) de la poblacin. Debe de haber un balance entre la seleccin y la variacin producida con la
CAPTULO 2.
CMPUTO EVOLUTIVO
29
cruza y mutacin. Una seleccin muy fuerte signica que individuos sub-ptimos pueden tomar el control de la poblacin, reduciendo la diversidad necesaria para el cambio y progreso; una seleccin muy dbil signicar evoluciones lentas. El elitismo es cuando el mejor individuo o unos pocos entre los mejores, son copiados a la nueva poblacin. Estos individuos pueden perderse si por azar no son seleccionados para procrear, o si por la aplicacin de la cruza o mutacin se destruyen. Con el elitismo se puede mejorar el desempeo de un AG. A continuacin se describen a detalle cuatro mtodos de seleccin importantes y representativos de todos los que existen:
al valor obtenido.
es el tamao de la
entre 0 y
T. r.
El individuo cuyo
Recorrer los individuos de la poblacin, sumando sus valores de aptitud hasta que la suma sea mayor o igual que valor de aptitud ponga la suma sobre este lmite es seleccionado. La seleccin por ruleta es sencilla de implementar pero genera ruido. La tasa de evolucin depende en la varianza de las aptitudes en la poblacin.
CAPTULO 2.
CMPUTO EVOLUTIVO
30
relativo de la poblacin con respecto a los valores de aptitud (ranking), y asigna a cada cromosoma una aptitud de este ordenamiento. El peor individuo tiene aptitud 1 y el mejor
N.
Esto lleva a una convergencia lenta, pero evita una mantiene la presin selectiva cuando la
varianza de la aptitud es baja. Preserva la diversidad y por ello conduce a una bsqueda exitosa. Aqu, la presin selectiva est dada por el nmero de copias mximo del mejor individuo en la siguiente generacin. El ordenamiento obedece a una funcin establecida, lineal o exponencial por ejemplo, que dene la dominacin de los individuos ms aptos sobre el resto de la poblacin.
Nu
individuos. El mejor
Nu .
media que va a generar la descendencia est completa. La poblacin intermedia tiene consecuentemente un valor de evaluacin promedio ms alto. Este mtodo conduce generalmente al ptimo global.
CAPTULO 2.
CMPUTO EVOLUTIVO
31
3. Finalmente, los valores en las posiciones despus del miasma son intercambiados entre las dos cadenas seleccionadas. El modo ms simple de llevar a cabo la cruza es elegir aleatoriamente un punto de corte, y despus copiar todo antes del punto de corte del primer padre y todo despus del punto de corte del segundo padre, en el cromosoma del hijo. A continuacin se describen algunos mtodos de cruza importantes y signicativos:
CAPTULO 2.
CMPUTO EVOLUTIVO
32
representacin gentica buena, genes que codican caractersticas dependientes de la solucin deben estar juntos.
el cromosoma de la descendencia es creado al copiar la regin correspondiente mscara de cruza aleatoriamente de la misma longitud que un cromosoma. L mscara es una especie de estncil. Cuando hay un 1 en la mscara, se copia el segmento del primer padre, cuando hay un 0 se copia del segundo. Una nueva mscara de cruza se genera de manera aleatoria para cada par de padres. La descendencia por consiguiente tendr una mezcla de genes de ambos progenitores. El nmero de puntos de corte efectivos no est jo, pero debe promediar L/2, donde L es la longitud del cromosoma. Existe la posibilidad de producir dos descendientes, si se invierten los papeles de los padres con respecto a la mscara, es decir, si al primer hijo se copiaba del padre uno cuando en la mscara haba un 1, al segundo hijo se copiar del padre dos. Si al primer hijo se copiaba del padre dos cuando en la mscara haba un 0, al segundo hijo se copiar del padre uno.
CAPTULO 2.
CMPUTO EVOLUTIVO
33
2.4.9. Mutacin
Despus de la cruza, los cromosomas son mutados. La mutacin evita que el algoritmo se atore un un ptimo local. La mutacin juega el rol de recuperadora de informacin gentica perdida y disruptora aleatoria de informacin gentica. Es una pliza de seguro contra la prdida irreversible de informacin gentica. Se ha considerado tradicionalmente como un operador de bsqueda simple. Si la cruza debe explotar las soluciones actuales para encontrar mejores, la mutacin debe explorar el espacio de bsqueda. Tambin se considera un operador que en un segundo plano mantiene la diversidad gentica de la poblacin. La mutacin introduce nuevas estructuras genticas en la poblacin, al alterar aleatoriamente algunos de los bloques constructores presentes. Existen varios tipos de mutacin dependiendo de la representacin usada. Para cromosomas binarios, la mutacin puede consistir en invertir el valor de cada bit con una pequea probabilidad. La probabilidad usualmente tomada es
1/L, donde L es la
longitud del cromosoma. Puede emplearse una mutacin que suceda solamente si mejora la calidad de la solucin. Este tipo de operadores puede acelerar la bsqueda, pero igualmente si no se tiene cuidado, puede reducir la diversidad de la poblacin y hacer que el algoritmo converga a un ptimo local. Estos son los conceptos clave que deben tomarse en cuenta cuando se habla de mutacin en AG's:
a 1 y un 1 a 0 en el cromosoma seleccionado para mutar. Dos posiciones aleatorias del cromosoma son elegidas y los bits
o valores correspondientes a stas, son intercambiados. Esta mutacin es til para problemas de permutaciones. Una posicin aleatoria del cromosoma se elige, y se revierte el orden
de los bits o valores adelante de la misma para producir al nuevo individuo mutado.
Probabilidad de mutacin
tacin es la probabilidad de mutacin (Pm ). La probabilidad de mutacin decide la frecuencia en que los componentes de un cromosoma deben mutar. Si no hay mutacin, la descendencia se genera inmediatamente despus de la cruza sin cambio alguno. Si la mutacin se lleva a cabo, una o ms partes del cromosoma son cambiadas. La mutacin no debe ocurrir demasiado, pues entonces el AG se torna una bsqueda aleatoria comn.
CAPTULO 2.
CMPUTO EVOLUTIVO
34
entre patrones en los cromosomas. Holland dedujo una expresin que predice la cantidad de copias de un esquema en particular que habr en la siguiente generacin, tras la aplicacin de los operadores genticos. Debe notarse que particularmente buenos esquemas se propagarn a las generaciones futuras. Por ello, esquemas que son de bajo orden
de aptitud por encima del promedio se denominan bloques constructores. Esto termina por implicar el principio de los bloques constructores para AG's: esquemas de bajo orden, bien denidos y de aptitud promedio se combinarn por medio del operador cruza para producir esquemas de alto orden, y aptitud por encima del promedio. Como los AG's pueden procesar muchos esquemas en un mismo ciclo evolutivo, se dice que tienen paralelismo implcito. Ahora, antes de entrar en la explicacin de la hiptesis de los bloques constructores, es necesario desarrollar algunos aspectos matemticos de fondo muy importantes [7]: Un esquema H describe un subconjunto de puntos en el espacio de bsqueda del problema con ciertas similitudes especicadas. En particular, si se tiene una
L cada una, sobre un alfabeto de K = 2 (solamente estn en el alfabeto el 0 y el 1), entonces un esquema est identicado por una cadena de longitud L sobre un alfabeto extendido de tamao K + 1 = 3 (se aade el smbolo *). L Habrn (K + 1) esquemas de longitud L. Por ejemplo, cuando L = 3 y K = 2
poblacin de cadenas binarias con longitud tamao habrn 27 esquemas diferentes. Una cadena del espacio de bsqueda pertenece a un esquema en particular, si para todas las posiciones hallado en la posicin
j = 1, ..., L,
el caracter
del esquema, o si en esta posicin hay un * en el esquema. As, por ejemplo, las cadenas 010 y 110 pertenecen al esquema *10. Hay una representacin geomtrica interesante de lo que sucede. Para un alfabeto binario es posible representar las de un hipercubo de dimensin 3:
L=3
23 = 8
Todos los esquemas que cubren las 8 cadenas, son a su vez entidades geomtri-
CAPTULO 2.
CMPUTO EVOLUTIVO
35
cas asociadas con el cubo arriba ilustrado. Particularmente cada uno de los 12 esquemas de orden 2 (con 2 bits jos y un *), contienen dos puntos del espacio de bsqueda, y se corresponde con una de las 12 aristas en el cubo. Cada arista ha sido etiquetada con el esquema al que pertenecen los dos puntos que la delimitan. Anlogamente, a cada una de las seis caras en el cubo le corresponde un esquema de orden 1 que describe los cuatro puntos presentes en la misma. En el ejemplo se seala a la cara con esquema *0*. Generalizando, a un esquema de orden dimensin
O (H),
le corresponde un hiperplano de
L O (H),
en el hipercubo de dimensin
2LO(H) individuos del espacio de bsqueda. El nmero de esquemas para un orden O (H)
viduo en la poblacin de cadenas binarias). Este esquema contiene a
L
es:
2O(H) .
O(H)
CAPTULO 2.
CMPUTO EVOLUTIVO
36
solucin ptima de un problema cuando estn bien diseados. Si el lector est interesado, puede consultarse el trabajo de Holland titulado: Adaptacin en sistemas naturales y articiales [12], que en las fuentes bibliogrcas utilizadas est bien documentado ([6] y [7]), y se desarrolla con detalle el Teorema de esquemas y La asignacin ptima de pruebas
8.
8 Del
Captulo 3
Programacin Gentica
3.1. Concepto de Programacin Gentica
El paradigma de la Programacin Gentica, que de ahora en adelante se abrevia PG en esta tesis, contina el camino marcado por los algoritmos genticos para tratar problemas de optimizacin, incrementando la complejidad de las estructuras que llevan a cabo la adaptacin. En particular, las estructuras que se adaptan en la programacin gentica son generales, programas de computadoras jerarquizados que varan dinmicamente de tamao y forma. En Inteligencia Articial, Procesamiento Simblico y Aprendizaje de Mquina muchos problemas aparentemente distintos, pueden reducirse a la bsqueda de un programa de computadora que produzca la salida deseada bajo ciertas entradas. La PG arma que el proceso de resolver estos problemas se puede reformular como la bsqueda de un individuo altamente apto en el espacio de programas computacionales posibles. El espacio de bsqueda lo determinan las funciones y terminales apropiados, que forman a los programas para el dominio del problema a resolver. La PG proporciona una forma de encontrar a este individuo ms apto. Muchas caractersticas propias de los Algoritmos Genticos se heredan a la Programacin Gentica, desde el uso del principio de Darwin de la supervivencia del ms apto. Ms adelante en el desarrollo del algoritmo, se mostrar cmo un programa computacional que resuelve (o aproximadamente resuelve) un problema emerge de esta combinacin de la seleccin natural de Darwin y operadores genticos adaptados a estructuras ms complejas. La PG comienza con una poblacin inicial de programas computacionales inicializados aleatoriamente compuestos de funciones y terminales apropiados al dominio del problema. Las funciones pueden ser operadores aritmticos estndares, operadores de programacin comunes, funciones matemticas, funciones lgicas, o bien funciones con dominio especco. Dependiendo del problema en particular, el programa de computadora puede tener valores booleanos, enteros, reales, complejos, vectoriales, simblicos o mltiples (multivaluados). La creacin de la poblacin inicial es de hecho una bsqueda ciega en el espacio de programas de
37
CAPTULO 3.
PROGRAMACIN GENTICA
38
computacin asociados al problema. Cada programa de computadora generado en la poblacin, se mide en trminos de qu tan bien se desempea en el ambiente del problema a resolver. Esta me-
dida de aptitud vara con el problema. En muchos casos queda determinada por
el error producido al ejecutar el programa computacional obtenido, de modo que entre ms cercano es el error a cero, mejor es el programa. Si el programador pretende reconocer patrones o clasicar ejemplos, la medida de aptitud de un programa puede ser el nmero de ejemplos que clasica correctamente. El proceso gentico de reproduccin sexual entre dos programas padres seleccionados en proporcin a su aptitud, se utiliza para crear nuevos programas descendientes. Los programas padres son por lo regular distintos en tamao y forma. Los programas hijos estn compuestos de subexpresiones (subrboles, subprogramas, subrutinas, bloques constructores) de los padres. Esta descendencia tpicamente es distinta en tamao y forma de sus padres. En la siguientes secciones, se pretende mostrar cmo esta tcnica de programacin produce al paso de las generaciones poblaciones con medida de aptitud promedio en ascenso. Adicionalmente los programas computacionales producidos pueden adaptarse a cambios en el medio de manera efectiva. El comportamiento jerrquico de los programas que se producen mediante PG es una caracterstica central de la misma. En muchos casos los resultados producidos son jerarquas por default, prioridades de tareas, o jerarquas en las que un comportamiento precede o suprime a otro. La variabilidad dinmica de los programas producidos en el camino a una solucin, tambin es una caracterstica importante de la PG. Resulta difcil y contraproducente tratar de especicar o restringir el tamao y forma por adelantado de la solucin. Puede reducir la ventanta a travs de la cual el sistema ve al mundo e impedir el hallazgo de un individuo bien adaptado. Adems, se tiene la ausencia o el bajo perl que juega el preprocesamiento de entradas, y posprocesamiento de salidas. Las entradas, resultados intermedios y salidas, son expresados directamente en trminos de la terminologa natural al dominio del problema. Finalmente, las estructuras que experimentan adaptacin durante un algoritmo de PG son activas. No son codicaciones pasivas de la solucin, pues son susceptibles a ser ejecutadas en su forma alcanzada. Resumiendo, un programa gentico consta de los siguientes pasos: 1. Generacin de la poblacin inicial, compuesta aleatoriamente de funciones y terminales del problema. 2. Iterar los siguientes pasos hasta que el criterio de terminacin se satisface: (a) Ejecutar cada programa en la poblacin y asignarles una medida de aptitud de acuerdo a qu tan bien se desempean para resolver el problema. (b) Crear una nueva poblacin de programas de computacin aplicando los dos operadores primarios siguientes, que se aplican a la poblacin dependiendo en su aptitud.
CAPTULO 3.
PROGRAMACIN GENTICA
39
(i)
(ii)
Crear nuevos programas con recombinacin gentica de partes aleatoriamente elegidas de dos programas existentes.
El mejor programa computacional generado en cualquier generacin, es designado como el resultado de la PG. Este resultado puede ser una solucin (o una solucin aproximada) al problema. Abajo se muestra un diagrama de ujo que sintetiza el paradigma de la PG.
CAPTULO 3.
PROGRAMACIN GENTICA
40
3.2.
Esta seccin est dedicada a describir aspectos de la PG que son importantes y no estn cubiertos con las descripciones del captulo anterior. La PG, puede ser denida como una clase de Algoritmo Gentico que usa codicacin de rboles, pero por ser la tcnica utilizada en la segunda parte de esta tesis, este tipo de codicacin no se incluye en la seccin dedicada a los AG's, y en conjunto, a la PG se le da un tratamiento ms extensivo.
Nf unc funciones de F = f1 , f2 , ..., fNf unc y el conjunto de Nterm T = {a1 , a2 , ..., aNterm }. Cada funcin particular fi en el conjunto F toma un nmero especco z(fi ) de argumentos. Esto es, la funcin fi tiene aridad z(fi ). Las funciones en el conjunto F pueden incluir:
conjunto de terminales de operadores aritmticos (+, -, *, etc.), funciones matemticas (tales como sen, cos, exp, y log), operadores booleanos (tales como AND, OR, NOT ), operadores condicionales (tales como IF _ THEN _ ELSE), funciones que causan iteracin (tales como DO _ UNTIL), funciones que causan recursin, y cualquier funcin con dominio especco que deber denirse. Los terminales son tpicamente tomos variables que representan las entradas del programa, sensores, detectores o variables de estado de algn sistema. Tambin son tomos constantes, como el nmero 3.0 o la constante booleana FALSE. Ocasionalmente, los terminales son funciones que no toman argumentos explcitamente, y que su funcionalidad real est en los efectos laterales que tienen en el estado del sistema. Considrese el conjunto de funciones terminal
F = {AN D, OR, N OT }
y el conjunto
T = {D0, D1},
CAPTULO 3.
PROGRAMACIN GENTICA
41
sirven de argumento para las funciones. Al combinar los conjuntos de funciones y terminales en uno solo:
puede
verse a los terminales como funciones del conjunto C que requieren cero argumentos para evaluarse. Entonces los cinco miebros del conjunto C, pueden verse como funciones que toman 2, 2, 1, 0 y 0 argumentos respectivamente. Como ejemplo, la funcin de equivalencia en lgebra boolena (x
y ),
que
devuelve TRUE si los argumentos en ambos lados del operador son TRUE o FALSE ambos, y de otra forma devuelve FALSE. Esta funcin booleana en forma normal disjuntiva (FND) y notacin preja puede escribirse as:
Este rbol es equivalente al rbol de parseo que la gran mayora de los compiladores construyen internamente para representar un programa computacional en especco. Consecuencia de lo anterior es que el espacio de bsqueda en PG, pueda verse como el espacio de rboles con raz, de nodos etiquetados, con ramas ordenadas cuyas etiquetas que corresponden a los nodos internos son las funciones y las que corresponden a las hojas, los elementos terminales del conjunto combinado C. En este punto puede notarse la existencia de jerarqua en las estructuras que se adaptan por medio de la PG. Esta es una diferencia central con aquellas estructuras que se adaptan por medio de un AG. En PG los conjuntos de funciones y terminales se seleccionan de modo que cumplan los requisitos de cerradura y suciencia.
La propiedad de
cerradura requiere que cada funcin del conjunto de funciones pueda aceptar como sus argumentos, a cualquier valor y tipo de dato que con posibilidad pueda regresar alguna funcin dentro del conjunto de funciones, y cualquier valor y tipo de dato que pueda asumir un terminal en el conjunto de los terminales. En apariencia, este requerimento hara imposible la produccin de programas computacionales comunes por medio de PG, ya que combinan operaciones aritmticas con booleanas, cuando una operacin aritmtica no puede aceptar variables o constantes booleanas como argumentos y viceversa. Adems, muchas operaciones matemticas comunes no estn denidas para ciertos valores numricos, como logaritmo de cero, o devuelven un valor no computable, como cuando se divide entre cero. Con todo, la cerradura puede lograrse de una manera directa para casi todos los programas, manejando cuidadosamente un nmero limitado de situaciones segn sea el caso. No se profundiza aqu en las tcnicas em-
CAPTULO 3.
PROGRAMACIN GENTICA
42
pleadas, que involucran manejo de excepciones o escritura de funciones protegidas que checan los argumentos antes de evaluarlos.
La propiedad de
suciencia requiere que el conjunto de funciones y terminales sea capaz de expresar una solucin al problema. El usuario de PG debe saber o creer que alguna composicin de las funciones y terminales que proporciona, pueden conducir a una solucin del problema. El en particular, es comn a todo problema paso de identicar variables que tienen suciente poder explicativo para resolver un problema cientco. Este paso, dependiendo del problema, puede ser obvio o requerir una intuicin ms aguda. En algunos casos, el trabajo de identicar variables con suciente poder explicativo resulta imposible. Existen incluso sistemas que efectan induccin de leyes naturales (cientcas) a partir de datos empricos. BACON, desarrollado por Langley y su equipo en 1987 [14] requiere que el usuario proporcione un repertorio de funciones, es decir, el conjunto de funciones que se usar, y que identique las variables independientes del problema, que es el conjunto de terminales.
La funcin '+' con aridad binaria (toma dos argumentos) fue seleccionada para ser la etiqueta del nodo raz del rbol. Siempre que un punto del rbol es etiquetado con una funcin
del conjunto
F,
entonces
z (f )
lneas, donde
z (f )
funcin
f,
son creados para que partan del nodo etiquetado. Entonces, para
CAPTULO 3.
PROGRAMACIN GENTICA
43
cada una de las lneas debe elegirse un elemento del conjunto combinado C de funciones y terminales para etiquetar el nodo al que llegan. Si una funcin se elige para que etiquete el punto nal de una de las nuevas lneas, el proceso descrito arriba contina recursivamente. Si un terminal se elige para ser la etiqueta de cualquier nodo, ese nodo se torna una hoja del rbol y el proceso de generacin se termina para este punto. La profundidad de un rbol se dene como la longitud de la trayectoria ms larga desde la raz hasta una hoja del mismo. El proceso generativo puede implementarse de varias formas, resultando en rboles iniciales aleatorios de varias formas y tamaos. Dos de los mtodos bsicos son los siguientes:
gitud de la trayectoria desde la raz hasta cada hoja, es igual a una profundidad predenida. Esto se logra restringiendo la eleccin de etiquetas
F,
variables. La profundidad de los mismos no debe ser mayor a un valor predenido. Esto se logra haciendo una seleccin aleatoria de etiquetas sobre el conjunto combinado elementos de
C,
T,
F,
palabras, la distancia mxima entre la raz y una de las hojas del rbol. El mtodo de generacin considerado como el mejor en un amplio rango de problemas, es uno llamado: Mitad y mitad escalonada. En programacin gentica usualmente no se conoce, o no se desea especicar el tamao y la forma de una solucin al comienzo del algoritmo. El mtodo de mitad y mitad escalonada produce una variedad de rboles en cuanto a tamao y forma se reere. Este mtodo incorpora a ambas, la generacin por llenado y por crecimiento. Requiere la creacin de un mismo nmero de rboles usando como parmetro de profundidad valores que van desde 2 hasta un mximo predenido. Por ejemplo, si la profundidad mxima es 6, 20 % de los rboles tendrn profundidad 2, 20 % 3, y as hasta 6. Entonces, para cada valor de profundidad, 50 % de los rboles se crean por medio de generacin por llenado y 50 % por medio de generacin por crecimiento. Ntese que para todos los rboles creados por medio de generacin por llenado, para una profundidad especca, todas las trayectorias de la raz del rbol a las hojas, tienen la misma longitud, y por lo tanto, todos los rboles tienen la misma forma. En contraste, para los rboles creados por medio de generacin por crecimiento, el nico control es la longitud mxima de una trayectoria desde la raz hasta una hoja. Esto signica que para una profundidad mxima establecida, estos rboles pueden y seguramente variarn en forma. De ah que el mtodo de
CAPTULO 3.
PROGRAMACIN GENTICA
44
generacin por mitad y mitad escalonada, crear rboles que sern variados en cuanto a forma y tamao. Individuos duplicados en la poblacin aleatoria inicial, son inproductivos, desperdician recursos computacionales y reducen la diversidad gentica de la poblacin. Es deseable pero no necesario evitar individuos duplicados en la poblacin inicial. En PG, se observa que es ms probable crear individuos duplicados en la poblacin inicial cuando la profundidad mxima establecida es pequea. A veces se recomienda checar cada expresin-S producida para que sea nica en la poblacin, antes de que se inserte. Ocasionalmente, se debe insertar un rbol de mayor tamao cuando se han agotado todos los posibles rboles para cierta profundidad. La variedad de una poblacin es el porcentaje de individuos para los cuales no hay un duplicado exacto en la poblacin. Si el chequeo de duplicados se lleva a cabo bien, la variedad de la poblacin inicial es de 100 %. En generaciones subsecuentes, la creacin de individuos duplicados es parte inherente del proceso gentico. Comparativamente, en el AG convencional con individuos de longitud ja, cada gen en los cromosomas de la poblacin inicial es tpicamente creado usando un valor binario aleatorio. Entre ms grande es el cromosoma de un individuo y el espacio de bsqueda, menos necesario es checar si se crean individuos duplicados en la poblacin inicial. Opcionalmente se pueden sembrar individuos en la poblacin inicial. Lo anterior, si no se realiza con cuidado y se introducen individuos con aptitud relativamente alta en la poblacin inicial, creada aleatoriamente y por consecuencia con aptitud promedio baja, despus de una generacin resultar en casi una dominacin total de la poblacin por copias y descendientes de los individuos sembrados. En trminos de diversidad gentica, el resultado ser despus de una sola generacin, similar a comenzar con un tamao de poblacin igual al nmero relativamente bajo de individuos sembrados. Si se pretende hacer este tipo de siembra, 100 % de la poblacin inicial debera sembrarse con individuos con un nivel de aptitud parecido.
3.2.3. Aptitud
La aptitud es la fuerza que dirige la seleccin natural de Darwin en los Algoritmos Genticos convencionales y la Programacin Gentica. En la naturaleza, la aptitud se traduce en la probabilidad con que un individuo llega a la edad reproductiva y tiene descendencia. Esta medida puede ponderarse para considerar el nmero de descendientes. En el mundo articial de algoritmos matemticos, medimos la aptitud en cierta forma y se usa esta medida para controlar la aplicacin de operaciones que modican estructuras en nuestra poblacin articial. La aptitud puede medirse de varias maneras. La ms comn es crear una medida explcita para cada individuo en la poblacin. Esta aproximacin se usa en la gran mayora de aplicaciones de los AG's. Cada individuo en la poblacin tiene asignado un valor escalar de aptitud, que produce un proceso evaluador explcito bien denido.
CAPTULO 3.
PROGRAMACIN GENTICA
45
Tambin puede calcularse la aptitud por un proceso co-evolutivo, como cuando la aptitud de la estrategia para un juego se calcula aplicando determinada estrategia contra una poblacin de estrategias contrarias en el mismo juego. El hecho de que un individuo sobrevive y se reproduce es indicativo de su buena adaptacin. Esta denicin implcita de aptitud es usada frecuentemente en la investigacin de vida articial. Aqu solo se describirn cuatro medidas explcitamente calculadas de la aptitud: aptitud en bruto, aptitud estandarizada, aptitud ajustada y aptitud normalizada.
r(i, t)
i,
al tiempo generacional
t,
M.
Ne
r(i, t) =
j=1
|S(i, j) C(j)|
CAPTULO 3.
PROGRAMACIN GENTICA
46
donde aptitud
(de
S (i, j) es el valor que devuelve una expresin-S i para el caso de Ne casos) y donde C (j) es el valor correcto para el caso de aptitud
j.
es igual al nmero de valores que no coinciden con la salida esperada bajo cierta entrada. Como la aptitud en bruto se expresa en la terminologa natural del problema, el mejor valor ser el menor o el mayor, dependiendo si la aptitud en bruto es el error o benecio alcanzado por el individuo evaluado.
s(i, t)
el mejor valor siempre es el ms bajo. Si en un problema en particular, uno intenta minimizar el error, el individuo con valor de aptitud en bruto igual a 0 ser el mejor. En este caso, el valor de la aptitud estandarizada es igual a la aptitud en bruto:
de la aptitud estandarizada igual a 0. Si este no es el caso, pueden ajustarse los valores sumando o restando una constante a todos los valores de aptitud. Si en un problema en particular, la aptitud en bruto es mejor mientras mayor sea, la aptitud estandarizada se calcula a partir de la aptitud en bruto de esta forma:
s(i, t) = rmax r(i, t) rmax es igual al mximo valor posible que alcanza la aptitud en bruto, r (i, j) es la aptitud en bruto observada al tiempo generacional t, para el individuo i. Para los casos en que no se tiene una cota superior para la aptitud en
Donde y bruto, la aptitud estandarizada puede calcularse directamente de sta tomando en cuenta los valores observados. Similarmente cuando no se tiene una cota inferior y el menor valor de aptitud en bruto es el mejor, los valores de aptitud se invierten y se procede igual.
a(i, j)
s (i, t)
a(i, j) =
Aqu
1 1 + s(i, t) i
al tiempo
s (i, t)
t.
El
valor de la aptitud ajustada se encuentra entre 0 y 1, y es mayor para los mejores individuos en la poblacin. Tiene el benecio de exagerar pequeos cambios en la aptitud estandarizada a medida que sta toma valores cercanos al 0, como frecuentemente ocurre en las ltimas generaciones del algoritmo. Esta exageracin es evidente cuando la aptitud estandarizada alcanza de hecho al 0, cuando una solucin perfecta al problema se encuentra.
CAPTULO 3.
PROGRAMACIN GENTICA
47
Debe notarse que para ciertos mtodos de seleccin distintos a los proporcionales a la aptitud, como seleccin por torneo, la aptitud ajustada no es relevante y no se utiliza.
a (i, t)
n (i, t) es necesario. sta se calcula a partir de la aptitud M de esta forma: n(i, t) = a(i, t)
M k=1
a(k, t)
La aptitud normalizada tiene tres caractersticas deseables: va de 0 a 1, es ms grande en los mejores individuos de la poblacin y la suma de los valores de las aptitudes normalizadas de toda la poblacin es igual a 1. Claramente, tampoco ser relevante para mtodos de seleccin que no son proporcionales a la aptitud como el torneo, y en esos casos no se debe usarse.
3.2.5.1. Reproduccin
El operador de reproduccin en la programacin gentica es el motor bsico de la seleccin natural de Darwin, y de la supervivencia del ms apto. Este operador es asexual, por lo que opera sobre solo una expresin-S padre y produce solo una expresin-S hija en cada aplicacin. Consiste en dos pasos: primero,
CAPTULO 3.
PROGRAMACIN GENTICA
48
una expresin-S se selecciona de la poblacin de acuerdo a algn mtodo de seleccin basado en la aptitud. Despus el individuo seleccionado es copiado, sin alterarlo, de la poblacin actual a la siguiente generacin. Ya se mencionaron en el captulo anterior algunos mtodos de seleccin. En este trabajo de tesis se presta especial atencin al mtodo de torneo, que no es proporcional a la aptitud. En l, un nmero especco de individuos (generalmente dos) se seleccionan aleatoriamente de la poblacin, y el de mejor aptitud es seleccionado. Los padres pueden y generalmente son seleccionados ms de una vez en la reproduccin de la generacin actual. Se puede ahorrar una cantidad considerable de recursos computacionales, si no se calcula la aptitud de cada individuo que aparece en la generacin actual como resultado de reproduccin de la generacin anterior. Su aptitud no cambiar y por ello no es necesario que se vuelva a calcular, a menos que los casos de aptitud varen de generacin en generacin. Esto puede ahorrar en promedio un 10 % de operaciones.
3.2.5.2. Cruza
La cruza o recombinacin sexual en programacin gentica crea variacin en la poblacin, introduciendo unos cuantos individuos que contienen partes tomadas de cada padre. El operador de cruza comienza con dos expresiones-S padres. Esto signica que es un operadore sexual. Los padres son elegidos de la poblacin intermedia generada por medio del operador de reproduccin aplicado a la poblacin actual. La operacin comienza al seleccionar independientemente, usando una distribucin uniforme de probabilidad, un nodo de cada padre que ser el punto de cruza para ste. Es tpico que los padres no tengan el mismo tamao. El fragmento de cruza de un padre en particular es el subrbol que contiene su raz, y excluye al subrbol que est por debajo del punto de cruza seleccionado. Este ltimo se conoce como fragmento de recombinacin. La primera expresin-S hija se produce borrando el fragmento de recombinacin del primer padre e insertando el fragmento de recombinacin del segundo padre en el punto de cruza del primero. La segunda expresin-S hija se produce de forma simtrica. Como ejemplo considrense las siguientes expresiones-S que son funciones booleanas en notacin preja:
Aparecen las funciones AND, OR y NOT y los terminales que son los argumentos booleanos D0 y D1. Abajo pueden verse las estructuras de rbol que se corresponden con cada expresin.
CAPTULO 3.
PROGRAMACIN GENTICA
49
Asmase que los nodos de ambos rboles estn numerados a profundidad de izquierda a derecha, y que los nodos 2 y 6 del primer y segundo rbol respectivamente son seleccionados aleatoriamente. Esto quiere decir que los puntos de cruza son la funcin NOT y la funcin AND para el primer y segundo rbol respectivamente. Los correspondientes fragmentos de recombinacin seran los siguientes:
los
CAPTULO 3.
PROGRAMACIN GENTICA
50
Es importante sealar que debido a la cerradura del conjunto de funciones, se producen expresiones sintcticamente correctas. Adems es preferible seleccionar como puntos de cruza siempre un nodo interno del rbol, es decir, que no sea ni la raz ni una hoja. Es sencillo ver la razn de esto, puesto que al seleccionar la raz de un rbol como punto de cruza, se inserta a partir de la misma un subrbol que proviene de la pareja en el proceso de cruza, perdiendo de esta forma informacin del padre que pudiera ser buena. Cuando se selecciona una hoja en cambio, se lleva a cabo una operacin idntica a la llamada mutacin puntual, que se ve a detalle ms adelante. Cuando un individuo se cruza insestuosamente con otro que es idntico a l, la descendencia en PG ser generalmente diferente. Esto porque los puntos de cruza seleccionados son casi siempre distintos. Este hecho es de gran importancia cuando se desea contrastar un algorimto de programacin gentica, con un AG clsico, con individuos de longitud ja. En el AG clsico, la cruza incestuosa puede conducir a una convergencia prematura, dando como resultado un subptimo global. En PG, la cruza entre dos individuos idnticos produce descendientes diferentes a los padres, exceptuando el caso poco probable en el que los puntos de cruza seleccionados de forma aleatoria en ambos progenitores son los mismos. Para tener un control sobre los recursos computacionales y de tiempo que se utilizarn al ejecutar un algoritmo de programacin gentica, usualmente se ja un tamao mximo de los individuos, esto en trminos de su profundidad. Existen diferentes formas de llevar a cabo este control. Una muy simple es abortar la produccin de un descendiente cuando se detecta que ste va a exceder la profundidad mxima permitida, copiando al padre en la nueva generacin.
CAPTULO 3.
PROGRAMACIN GENTICA
51
en este trabajo [7]: mutacin, permutacin, edicin, encapsulamiento, y destruccin. La aplicacin de cada uno depende del tipo de problema que se pretende resolver.
3.2.6.1. Mutacin
El operador de mutacin introduce cambios aleatorios en las estructuras presentes en la poblacin. En algoritmos genticos convencionales que operan con individuos codicados en cadenas lineales, la mutacin benecia a la poblacin reintrodiciendo diversidad gentica, evitando as una convergencia prematura. Por otra parte, para problemas con espacios de bsqueda no lineales, se observan casos en los que un fragmento de cromosoma que desaparece en generaciones tempranas por medio de mutacin, es requerido en generaciones posteriores para alcanzar un resultado ptimo. Es importante reconocer que el operador de mutacin tiene poca importancia relativa en el AG convencional, y que est asociado a una tcnica de bsqueda semialeatoria en el espacio de bsqueda. La mutacin es un operador gentico asexual, es decir, que opera en solamente un individuo, que se selecciona en base a su aptitud normalizada. Similarmente como se procede en la cruza, debe seleccionarse al azar un punto de mutacin dentro de la expresin-S asociada con el individuo seleccionado. Este punto puede ser interno (una funcin), o externo (un terminal). El operador de mutacin borra lo que sea que est por debajo del punto de mutacin seleccionado, e inserta un subrbol generado aleatoriamente en ese punto. Esta operacin se controla por un parmetro que dene el tamao mximo, en trminos de la profondidad, para el subrbol creado aleatoriamente y que se insertar en el punto de mutacin. Un caso especial de mutacin ocurre cuando se inserta un terminal en el punto de mutacin aleatorio. Esta mutacin puntual ocurre ocasionalmente durante el operador de cruza cuando ambos puntos de cruza son ambos terminales. Como ejemplo vemos en la imagen de abajo el diagrama titulado con ANTES, con el nodo 3 seleccionado como punto de mutacin, en el que se encuentra el terminal D0, y el subrbol generado de forma aleatoria (NOT D1), que es insertado para producir al individuo con la expresin-S que se representa con el rbol titulado DESPUS.
CAPTULO 3.
PROGRAMACIN GENTICA
52
A diferencia de los efectos positivos que tiene la mutacin en los AG's clsicos, en PG es realmente improbable que una funcin o terminal desaparezca por completo de una poblacin. Esto reduce la importancia del operador de mutacin, como restaurador de la diversidad gentica en una poblacin.
3.2.6.2. Permutacin
Para explicar cmo funciona este operador secundario de la Programacin Gentica, es necesario mencionar el operador de inversin en Algoritmos Genticos. ste funciona reordenando los valores entre dos puntos del cromosoma invirtiendo su orden. Esto acerca algunos alelos, mientras que aleja a otros. Cuando se aplica a individuos con buena aptitud relativa, el operador de inversin ayuda a establecer relaciones genticas estrechas entre combinaciones de alelos que se desempean bien cuando estn juntos dentro del cromosoma. Se debe recordar aqu, que en AG's los alelos tienen signicado porque ocupan un lugar especco en el cromosoma. La permutacin es un operador asexual. Comienza seleccionando un punto interno de la expresin-S seleccionada, si la funcin en el punto seleccionado tiene
k!
permutaciones de los
mismos. Si la funcin en el punto seleccionado es conmutativa, el operador de permutacin no tendr efecto alguno. La utilidad del operador de permutacin no se ha demostrado de forma conclusiva.
3.2.6.3. Edicin
El operador de edicin provee una forma de editar y simplicar una expresinS mientras la ejecucin se lleva a cabo. Es un operador asexual. Funciona aplicando recursivamente un conjunto de reglas dependientes e independientes del dominio a cada expresin-S de la poblacin. La regla universal independiente del dominio es la siguiente: si una funcin no
CAPTULO 3.
PROGRAMACIN GENTICA
53
tiene efectos laterales, no depende del contexto y toma como argumentos valores constantes, el operador de edicin debe evaluar la funcin y sustituirla con el valor obtenido. Por ejemplo, la expresin aritmtica en preorden: ser sustituida por el valor 3. Adems, el operador de edicin aplica un conjuto de reglas establecidas para cada dominio en especco. Para el dominio de los problemas numricos, se podra insertar un 0 cada vez que una subexpresin es sustrada de s misma, o la expresin cuando se le suma cero o se multiplica por 1. En un dominio booleano, uno podra aplicar reglas de edicin como las siguientes:
( +2 1 )
debe
3.2.6.4. Encapsulacin
La encapsulacin sirve para identicar automticamente un subrbol potencialmente til, y darle un nombre para hacer referencia a l y usarlo despus. Un asunto clave en Inteligencia Articial y aprendizaje de mquinas, es cmo escalar tcnicas prometedoras que tienen xito resolviendo subproblemas, para resolver as el problema mismo. Una forma de resolver un problema grande es descomponerlo en problemas jerrquicamente menores. Identicar estos subproblemas que descomponen al problema original en partes tiles es un paso
CAPTULO 3.
PROGRAMACIN GENTICA
54
vital. Es esto lo que por medio de la Inteligencia Articial y el aprendizaje de mquinas se pretende automatizar. La encapsulacin es un operador gentico asexual. El individuo a operar se selecciona generalmente con una probabilidad proporcional a la aptitud normalizada. Comienza seleccionando un nodo interno del rbol asociado a la expresin-S aleatoriamente, es decir, una funcin de la expresin-S. El resultado de la operacin es una expresin-S hija, y una nueva denicin de subrbol. Durante la operacin se remueve el subrbol que est por debajo del punto seleccionado, y crea una funcin nueva para permitir referencias al subrbol elegido, en otras palabras, se agrega un elemento nuevo al conjunto de funciones
funciones encapsuladas no tienen argumentos, y son nombradas segn se van creando. Dependiendo del problema, para mayor
eciencia las funciones encapsuladas pueden ser compiladas y en su lugar insertarse directamente el cdigo de mquina que les corresponda. Lo anterior implica que a travs del operador de mutacin, las funciones recientemente encapsuladas pueden ser insertadas en el individuo mutado. Adems, por tratarse de un punto indivisible de un rbol, una funcin encapsulada no puede ser objeto del efecto destructivo que puede tener la cruza. En trabajos tempranos de Koza, el operador de encapsulamiento fue conocido como la operacin de denir bloques constructores.
3.2.6.5. Destruccin
Para algunos problemas complejos, la distribucin de valores de aptitud puede estar sesgada, de modo que un gran porcentaje de los individuos pueden tener muy poca o nula aptitud en bruto. Este sesgo puede ocurrir en poblaciones en las que los individuos pueden recibir una penalizacin en su aptitud, porque de otro modo consumiran una cantidad innita de tiempo en ser evaluados, como se observa en problemas de control o aquellos que involucran ciclos iterativos. Ms an, cuando ocurre una distribucin de aptitudes altamente sesgada, los pocos individuos con una aptitud marginalmente mejor, comienzan dominando la poblacin y la diversidad gentica cae. El operador de destruccin ofrece una forma ms rpida que la cruza para enfrentar el problema expuesto antes. Se controla mediante dos parmetros, un porcentaje y una condicin que especica cundo debe de emplearse. Por ejemplo, el porcentaje puede ser 10 % y el operador puede invocarse en la generacin 0. En ese evento, inmediatamente despus del clculo de la aptitud para la generacin 0, todos los individuos excepto el 10 % son eliminados. Empleado en la generacin 0 con un porcentaje de 10 %, se recomendara generar al principio 10 veces ms individuos de los que se deseara tener en las generaciones siguientes. La seleccin de los individuos en la operacin de destruccin, se realiza de forma probabilstica basndose en la aptitud. La reseleccin no est permitida, para maximizar la diversidad en la poblacin.
Parte III
Desarrollo
55
Captulo 4
natural, que a su vez tengan asociadas gramticas libres de contexto. Resulta fundamental en este punto aclarar que no se pretende generar una gramtica de ese tipo para el lenguaje natural, que como se sabe, es dependiente del contexto. Ms an, la tcnica de programacin elegida siendo no determinista, puede arrojar distintos resultados en cada ejecucin, dejando la pregunta abierta de cul de esas estructuras generadas es la correcta y por qu razn. Gramticas libres de contexto para contextos especcos, han sido utilizadas con xito en el Procesamiento de Lenguajes Naturales, para sistemas que utilizan un subconjunto bien denido de oraciones, como lo puede ser por ejemplo, un sistema que proporciona el horario de llegadas de un aereopuerto. Puede consultarse el libro de Jurafsky [4] sobre PLN y Lingstica Computacional. Aqu podra plantearse la siguiente pregunta: Cul es la motivacin del uso de Programacin Gentica, para elaborar un programa que resuelva un problema que bien podra enfrentar un sistema experto? En efecto, para el mismo subconjunto de oraciones en espaol que se pretende analizar, podra programarse un mdulo bastante simple en Perl, por nombrar un lenguaje eciente para la tarea, que utilizando una tabla donde se almacene la oracin leda, proporcione la respuesta adecuada. La cuestin es esta: Qu pasara si al programa se le presentara una oracin que no est presente en la memoria? Mientras que el sistema experto posee una memoria esttica, la Programacin Gentica permite la creacin de estructuras modicables, susceptibles en este
1 En
ingls parse signica analizar, es parte importante del proceso de traducir una ex-
56
CAPTULO 4.
57
caso, de ser guardadas cada vez que se enfrentan a una estructura gramatical que desconocen. La Programacin Gentica se gana su clasicacin dentro de las tcnicas de programacin propias del Aprendizaje de Mquinas. Este trabajo busca precisamente la implementacin de un algoritmo, capaz de aprender primero un conjunto de oraciones de entrenamiento sin relacin entre ellas. Despus de hacer observaciones sobre los resultados obtenidos en esta primera fase, se proceder a que el algoritmo pueda asociar una respuesta a la entrada proporcionada por un usuario, dependiendo del resultado de analizar la misma.
4.2.
Como hiptesis para estre trabajo se tiene que el Cmputo Evolutivo, ser capaz de producir y almacenar un conjunto de conocimientos, que en forma de una gramtica libre de contexto, sean capaces procesar oraciones del espaol. Esta gramtica, tendr limitaciones en su capacidad para capturar la complejidad del lenguaje natural, pero servir como representacin interna de un subconjunto de producciones escritas que el usuario proporcione en una sesin de entrenamiento.
4.3.
La induccin gramatical consiste en la construccin gradual de una gramtica libre de contexto basada en un conjunto de expresiones como muestra. Esta seccin est basada en el artculo de Tony C. Smith e Ian H Witten de la universidad de Waikato, en Hamilton, Nueva Zelanda [2]. Como ya se mencion en la introduccin de esta tesis, el uso del Cmputo Evolutivo como tcnica de programacin exhibe ventajas claras sobre aproximaciones probabilsticas puras, entre las cuales destaca la capacidad de inferir conjuntos de reglas y categoras sobre las oraciones proporcionadas como entrada, de manera simultnea. Esto debido a la sensibilidad estadstica propia de los individuos presentes en un algoritmo evolutivo, que pueden poseer patrones frecuentes tiles y reforzarlos durante la seleccin aleatoria de nodos. Algunos esfuerzos histricos por inducir gramticas libres de contexto con AG's han resultado exitosos. En 1992, Koza escribi un algoritmo para detectar exones con cinco bases nitrogenadas de longitud en el ADN . Tras 35 generaciones, el rbol resultante de 61 nodos era 100 % efectivo para identicar todos los exones en un segmento de 1000 bases nitrogenadas. Por otra parte, en 1991 Wyard escribi un AG para inducir la gramtica del lenguaje de los parntesis bien balanceados con anidaciones permitidas, por ejemplo la cadena: ()(())((())). Este algoritmo obtuvo una gramtica correcta y concisa en solamente 3 generaciones
2 Un
empalme, por ello se mantienen en el ARN maduro. Adems, en los genes que codican una protena cada exn codica una parte especca de la protena completa.
CAPTULO 4.
58
para un conjunto de prueba que contena 20 cadenas. Wyard tambin intent producir un algoritmo que indujera la gramtica para el lenguaje que contiene a las cadenas con el msmo nmero de A's y B's, que es ms complejo. En este caso no fue posible producir una gramtica exitosa, y se observaba que el modelo se estancaba en mximos locales. En el desarrollo de un AG para la inferencia o induccin de una gramtica libre de contexto que describiera un lenguaje ms complejo, como el ingls en el caso del artculo de Smith y Witten, se retom la representacin de Koza de una gramtica por medio de una expresin-S formada de los operadores lgicos AND, OR y NOT en el conjunto de nodos no terminales, y las palabras presentes en la oracin para los nodos terminales. El algoritmo desarrollado aqu solamente utilizar los operadores AND y OR. En este punto para mejorar la exposicin, resulta necesario introducir algunos conceptos propios de la Teora de Compiladores. Esta materia por s sola es una rama de las Ciencias de la Computacin que abarca a su vez varias reas en comn con las dems, por esta razn y porque la parte terica de este trabajo ya se ha concludo, los conceptos se exponen durante la especicacin del algoritmo como pies de pgina. Para estudiar los temas a detalle se recomienda consultar el libro sobre compiladores de Keith D. Cooper y Linda Torczon[8]. Muchas gramticas en Forma Normal de Chomsky, se traducen fcilmente a expresiones-s lgicas. Por ejemplo, la siguiente gramtica en FNC y en la forma de Backus-Naur :
P Sust S
3 La
notacin tradicional para representar una gramtica libre de contexto se llama forma
de Backus-Naur, o BNF por su nombre en ingls. En este trabajo, un smbolo no terminal comienza con mayscula, un terminal solo consta de minsculas y el signo deriva, e indica las reglas de produccin. Las gramticas libres de contexto en Forma Normal de Chomsky tienen reglas de produccin de la siguiente forma:
quiere decir
A A S
del smbolo inicial, S es el smbolo inicial, produccin aparece si transformada a FNC [5].
En esta gramtica los smbolos 'A', 'B' y 'C' son no terminales, 'B' y 'C' deben ser distintos
es un terminal y
CAPTULO 4.
59
Art Sust
Est asociada a la siguiente expresin-S lgica en caso de que no haya restricciones al nmero de argumentos que recibe el operador AND:
En este trabajo, se limita al operador AND para que reciba solamente dos parmetros y el primero sea siempre una palabra, contenida en el conjunto de los smbolos terminales. Al operador OR de opcin, se le permite recibir un nmero de parmetros que vare entre 1 y el nmero de smbolos terminales presentes en esa iteracin de la ejecucin del algoritmo, y adems no puede recibir como parmetro a ms operadores OR. La razn de requerir estas limitaciones tiene que ver con el tipo de gramticas libres de contexto que se desea producir, cuestin a la que se regresa ms adelante. Con lo anterior, la gramtica libre de contexto del ejemplo, estara asociada a la siguiente expresin-S lgica:
CAPTULO 4.
60
Aqu es importante sealar que esta representacin no es una verdadera expresinS lgica, simplemente porque el operador AND se usa para indicar concatenacin, e impone un orden estricto a sus argumentos. El operador OR indica que cualquiera de sus parmetros puede sustituir a todo el nodo, es decir, es un operador de opcin. Lo establecido en estos prrafos ser de gran importancia para el resto de este trabajo. Adems, no es casual que se limitara la aridad del operador AND a dos argumentos. Comparando las dos imgenes anteriores se ve claro que en la segunda el rbol tiene ms profundidad que en la primera. La jerarquizacin es un efecto deseado en la Programacin Gentica. Esto va a permitir que se extraiga ms y mejor informacin de las oraciones que se pretende analizar sintcticamente. Ahora bien, una vez que el algoritmo, logra producir una estructura capaz de analizar sintcticamente una oracin del conjunto de prueba, esta estructura debe de
capaz de analizar sintcticamente todas las oraciones procesadas hasta este punto. La necesidad de introducir un operador de unicacin de esta clase, se explica de manera sencilla: pensemos que si se pretendiera conseguir un individuo capaz de analizar sintcticamente todas las oraciones en el conjunto de prueba, a travs de la aplicacin de operadores genticos que funcionan de manera aleatoria, el nodo raz sera especialmente sensible, al proporcionar la primera eleccin de derivacin. Por otra parte, el operador de unicacin asegura que tras procesar todas las oraciones se obtendr una gramtica cuyos componentes fueron las estructuras, que estadsticamente se desempearon mejor en una poblacin de
CAPTULO 4.
61
O(n3 )
El algoritmo que determina la aptitud de un individuo en este trabajo lleva a cabo un anlisis sintctico descendente o top-down parsing
5 como se le conoce
en ingls. Requiere que las gramticas que evala sean de la clase LL(1). Esta clase es un subconjunto de las gramticas libres de contexto que procesan de manera lineal y de izquierda a derecha (left to rigth en ingls), las palabras en la oracin. Derivando siempre el smbolo no terminal que est ms a la izquierda, y generando el rbol de forma descendente de la raz a las hojas. Se asignarn valores de aptitud no nulos a los individuos que logren generar rboles de anlisis sintctico para una porcin de la oracin de entrada, siempre
4 Un
compilador debe inferir una derivacin para la cadena de entrada, o determinar que
dicha cadena no pertenece al lenguaje generado por la gramtica que modela el lenguaje en cuestin. La raz del rbol que representa el anlisis sintctico de la oracin es conocida, se trata del smbolo inicial de la gramtica. En el ejemplo sera el no terminal 'OR'. Las hojas de ese rbol son conocidas, pues deben coincidir de izquierda a derecha con las palabras que forman la oracin procesada.
5 Un
sistemticamente crece el rbol hasta que sus hojas coinciden con las palabras contenidas en la oracin de entrada. La eciencia de un analizador sintctico descendente depende de forma crtica en su habilidad de seleccionar la regla de produccin correcta, cada vez que expande un signo no terminal. En el peor de los casos, la estructura de una gramtica libre de contexto puede ocasionar que un parser no termine. Un analizador sintctico descendiente promedio, al seguir una secuencia de reglas de produccin y no poder llegar al punto de terminacin, que es cuando las hojas del rbol producido son exactamente las palabras de la oracin, ledas de izquierda a derecha, recurre a lo que se conoce en ingls como backtrack. Esto es, retrocede hasta el punto donde haba ms de una regla de produccin posible a elegir y la toma, hasta que agote las posibilidades. La eliminacin de la recursin izquierda de las reglas es el primer paso para transformar una gramtica a una forma LL(1), despus, mediante el uso de la siguiente palabra en la oracin que se procesa, puede determinarse la regla correcta a utilizar, eliminando el backtrack. Se recomienda consultar el captulo 3 de la fuente [8], para una exposicin detallada de cada paso.
CAPTULO 4.
62
y cuando esta porcin sea un prejo de la misma, es decir, una secuencia contnua de palabras desde el principio hasta la penltima palabra. Si la funcin que evala a cada individuo se llama EV, para un individuo x, se tendra lo siguiente:
EV (x) =
donde
n 10 N
por la funcin EV es 10. Este valor ser el asignado a individuos que generan con xito el rbol de anlisis sintctico para toda la oracin. Tomando en cuenta el mtodo de seleccin usado en este algoritmo que ser el de torneo binario, y dado que este mtodo no es proporcional a la aptitud del individuo con respecto al resto de la poblacin, el valor de aptitud ser igual al valor devuelto por la funcin EV de evaluacin. Para ilustrar un ejemplo de individuo exitoso, en el caso de que la cadena de entrada fuera: el perro muerde el hueso, la gramtica de la imagen anterior producira el siguiente rbol de anlisis sintctico:
Finalmente se logra tener individuos que estn asociados a gramticas libres de contexto, que al procesar una oracin contenida en el conjunto de entrenamiento, producen un rbol de anlisis sintctico correcto, o indican que el lenguaje que modela su gramtica no contiene a dicha oracin. Hay que notar que aqu no aparece el operador lgico OR, pues ste indica la opcin entre varias reglas de produccin. En el contexto de analizadores sintcticos, la ambigedad signica que se puede llegar a la misma oracin por medio de ms de una secuencia de producciones diferentes. Cuando se desea obtener la estructura sintctica asociada a un programa computacional, es absolutamente importante que la gramtica del lenguaje usado no sea ambigua. En el caso del algoritmo desarrollado en esta tesis, controlar que no exista ambiguedad resulta un problema que puede disparar la complejidad. Adems, la no ambigedad de las gramticas producidas es producto de las restricciones estructurales impuestas a los individuos.
CAPTULO 4.
63
con respecto al resto de la poblacin, no tienen un exceso de nodos, pero poseen sucientes para aportar informacin gentica al momento de hacer la recombinacin. La siguiente imagen muestra el sector de la poblacin beneciado por este primer esquema de presin selectiva:
6 La
de la poblacin siempre pasa a la generacin siguiente tantas veces como deba repetirse el proceso de seleccin. Si se realizan 2 torneos para llenar la poblacin intermedia que servir para la recombinacin gentica, en ella aparecer 2 veces dicho individuo. Para la siguiente generacin, aparecer hasta 4 veces, y as sucesivamente.
CAPTULO 4.
64
Llamando sigue:
EV (x) =
Aqu
n 10 N n
es la longitud
es la longitud en palabras
ser 0.
Una vez que se logra obtener un individuo que logra analizar toda la oracin de entrada y su nmero de nodos est por debajo del promedio de la poblacin, es decir, que su valor de EV es 10. Se procede a presionar a la poblacin de una forma ms agresiva para que los individuos pierdan la mayor cantidad de nodos posible. Esto se logra con el segundo esquema de presin selectiva que se expone a continuacin. Se usar una variable que se llamar presentes en el individuo que se EV queda de la siguiente forma: dio que tienen los individuos de la poblacin :
, dependiente del nmero de nodos promeN ODOS , y el nmero de nodos evala: nodos. As, la expresin de la funcin n 10 + N N ODOS/nodos
EV (x) donde y
El trmino
= =
= /max
en toda la poblacin.
max
CAPTULO 4.
65
ser muy alto y perder su utilidad. De esta forma se introduce una forma de presin selectiva que ocasionar que entre individuos con la misma capacidad para analizar oraciones, se conserven los que posean menor nmero de nodos. Ahora bien, este esquema de presin selectiva proporciona igualmente una forma de saber cundo la poblacin no puede presionarse ms; si el valor de debe detenerse y devolver la estructura obtenida.
para el
CAPTULO 4.
66
Explicacin del proceso Cruza directa Cruza directa Cruza directa Si el padre del nodo con un terminal es un operador AND, usar este ltimo como pun-
terminal
AND
to de cruza del primer padre. Si es un operador OR, usar el primer hijo del nodo AND como punto de cruza del segundo padre Si el primer hijo del operador OR es un terminal, usar este ltimo como punto de cruza del segundo padre. Si es AND, se reduce al caso de terminal contra AND Si el primer hijo del operador OR es un operador AND, se usa este ltimo como punto de cruza del segundo padre. Si es un terminal, se reduce al caso terminal contra AND
terminal
OR
AND
OR
Adems, se tiene la complicacin adicional de preservar el nmero de hijos permitido a cada operador. En el caso del operador AND, se sustituyen los subrbol hijo por el segmento de recombinacin que provienen del otro padre. En el caso del OR, como se mencion antes, se permiten tantos hijos como nmero de palabras en la oracin procesada. Aqu se permite agregar ms hijos hasta que se alcanza este el lmite, y a partir de entonces se observa un comportamiento de carrusel, en el que el nuevo descendiente se agrega al nal del listado, y se elimina al primer descendiente del listado de subrboles hijos. El proceso procura ser no destructivo, por lo que se observa que los hijos obtenidos sean al menos tan aptos como los padres que los originaron. Si no pasan esta prueba, no ocupan el lugar de los padres en la poblacin intermedia.
CAPTULO 4.
67
mutado se agrega a la poblacin existente si puede analizar sintcticamente un prejo mayor o igual, que el analizado por el individuo original, que ser entonces sustitudo. En Algoritmos Genticos tradicionales, se asigna una probabilidad pequea a la mutacin para evitar que el algoritmo se estanque en mximos locales. En este caso, se pens en la mutacin como un operador que facilite la introduccin de las palabras nuevas del diccionario a la poblacin de forma pasiva, o bien, sin agragerlas directamente a los individuos presentes. De esta forma, se pretende que no le tome demasiado tiempo a la poblacin encontrar gramticas bien adaptadas.
poblacin de
P OB = N 150
mitad escalonada. En caso de que se est utilizando el mtodo de generacin por crecimiento, dado que solamente se tienen dos operadores (AND y OR), se tendr cuidado de que la posibilidad de elegir entre un smbolo terminal y uno no terminal sea la misma, es decir 50 % y 50 % respectivamente. En cuanto al nivel mximo de niveles permitidos a los rboles que codican a los individuos, regresando a las imgenes anteriores podemos apreciar que para una oracin de 5 palabras, se necesit un rbol con profundidad 5, que representara una gramtica capaz de analizarlo sintcticamente, as pues, el nmero de elementos presentes en el conjunto de smbolos terminales, o bien, de palabras, que llamamos de niveles, entonces:
Npalabras ,
es el mximo nmero
M = Npalabras + 1
de modo que se permitir que los individuos vayan un nivel ms abajo del ptimo en busca de una solucin. Adems se usar el operador secundario de destruccin con un parmetro porcentual del 25 %, por lo que al inicio de cada ejecucin, se generarn POB * 3 individuos adicionales a los POB existentes, es decir, un total de POB * 4 individuos de los cuales solamente el 25 % ms apto pasar a formar parte de la poblacin. Se va a aplicar el operador cada vez que una oracin se agregue desde el conjunto de entrenamiento, y bajo el supuesto de que en la iteracin anterior se consigui una estructura que lograba analizar la oracin anterior. En este punto se reinicializar la poblacin. Una oracin ser agregada desde el conjunto de entrenamiento al algoritmo, para que las gramticas presentes en la poblacin se adapten de modo que puedan analizarla sintcticamente. Como atributo a la clase que dene los parmetros del problema, se agreg un entero que especica el nmero mximo de iteraciones extras que se le permite realizar a cada ejecucin del programa gentico, para que por medio del esquema de presin selectiva agresivo encuentre un individuo apto con el menor nmero de nodos posible. Por lo anterior, en la generacin 0 se generan POB * 4 individuos de los cuales
CAPTULO 4.
68
POB pasarn a la siguiente generacin. Si menos de POB individuos tienen una aptitud mayor que cero, para ocupar el residuo se llevar a cabo una seleccin aleatoria de individuos que no estn presentes en la poblacin intermedia. Finalmente, es importante mencionar que por ser la programacin gentica una tcnica de programacin no determinista, a pesar de plantear un nmero de individuos por generacin a partir de la complejidad del problema a resolver, no es completamente seguro que se alcance formar al individuo o solucin deseada en un nmero predenido de generaciones. Por esto, se desarroll un esquema adaptativo que permite la recuperacin cuando el algoritmo cae en mximos locales. Por medio de un parmetro del algoritmo, se especica el mximo de generaciones permitidas por proceso evolutivo para encontrar al individuo capaz de analizar sintcticamente toda la oracin. De no alcanzarse este objetivo, la poblacin se reinicializa. As se sale de un caso en el que caractersticas genticas de un individuo que no obtiene la aptitud deseada, dominan a toda la poblacin.
En regresin simblica, es comn encontrarse con umbrales como el que se exhibe en las oraciones de siete palabras. La cantidad de smbolos no terminales
CAPTULO 4.
69
que deben encadenarse de manera correcta para llegar al mejor resultado va en aumento mientras mayor sea el espacio de bsqueda. Adems la explosin en las posibles combinaciones de los elementos terminales en una solucin, hace que el algoritmo sea menos eciente. En el caso de las oraciones con ocho palabras o ms, no se puede garantizar incluso que el algoritmo encuentre un individuo capaz de analizar toda la oracin pasados varios minutos de que el algoritmo comenz su ejecucin. Esto no es aceptable para lograr la funcionalidad que se esparaba obtener del programa gentico en un principio. Afortunadamente, la causa de este problema, que es con seguridad las limitaciones estructurales impuestas, tambin proporcionan una forma de solucionarlo. Al comienzo de la primera fase de desarrollo se mencion la
unicacin que se
lleva a cabo cuando al nal de una ejecucin, en la que la estructura de rbol obtenida, que representa una gramtica libre de contexto capaz de analizar la oracin recin procesada, se une a
una gramtica libre de contexto que concentra el conocimiento adquirido por ejecuciones pasadas, de mo-
do que despus de est unin la gramtica resultante puede procesar todas las oraciones procesadas hasta ese punto. Dado que las ejecuciones del algoritmo que procesan oraciones de hasta seis palabras de longitud, se llevan a cabo en pocos segundos, la solucin propuesta ya se puede intur. El procesamiento de oraciones arbitrariamente largas se lleva a cabo componiendo varias ejecuciones del algoritmo hasta que se produce una estructura de rbol, asociada a una gramtica libre de contexto capaz de analizar la oracin en su totalidad. Se tratar de maximizar el tamao de los bloques en los que se separa la oracin original. As por ejemplo la oracin: Uno dos tres cuatro cinco seis siete ocho, implicara dos ejecuciones del algoritmo; en la primera se procesara la oracin: Uno dos tres cuatro cinco seis y en la segunda la oracin: seis siete ocho. Los mejores individuos de ambas ejecuciones se uniran para al nal obtener una estructura capaz de analizar la oracin en su totalidad. El mecanismo que sigue el mtodo unicador se explica en la siguiente subseccin. Por lo expuesto aqu, se entiende que sea de gran importancia para este trabajo.
AN D(uno, AN D(dos, OR(AN D(dos, cuatro), AN D(tres, OR(AN D(cuatro, seis), AN D(cuatro, OR(AN D(cinco, seis))))))))
CAPTULO 4.
70
Despus de unir ambas estructuras, se obtiene un rbol asociado a una gramtica libre de contexto capaz de analizar sintcticamente la oracin en su totalidad. La raz del segundo rbol, resaltada en un tono gris en la siguiente imagen, pasa a ser el segundo hijo de un nodo del primer rbol, que a su vez es padre de la ltima palabra que ste logra analizar, en el primer segmento de la oracin:
CAPTULO 4.
71
AN D(uno, AN D(dos, OR(AN D(dos, cuatro), AN D(tres, OR(AN D(cuatro, seis), AN D(cuatro, OR(AN D(cinco, AN D(seis, AN D(siete, AN D(ocho, AN D(nueve, AN D(diez, OR(seis, ocho, diez, once))))))))))))))
CAPTULO 4.
72
Los detalles de implementacin no se especican, pero se resalta la necesidad de calcular bien la longitud de los segmentos que se alimentaran a cada proceso evolutivo, de modo que al momento de unicar, la ltima palabra que lograba analizar el mejor individuo de la iteracin anterior, sea la primera palabra que analiza el mejor individuo del programa gentico que recin ha terminado.
CAPTULO 4.
73
Una vez realizada la transformacin y escrito el archivo, es posible en ejecuciones futuras recuperar la informacin obtenida realizando la transformacin inversa, del formato XML a la representacin interna de rbol, conservando la identidad nica de los nodos hojas, y la numeracin de los nodos internos que se report en el archivo. El algoritmo est listo para ser utilizado con el objetivo original de recibir un entrenamiento para simular un dilogo. Anticipando la situacin en la que la estructura de rbol que se obtiene del archivo con extensin XML requiera adiciones, producto del programa gentico, ser necesario regenerar el etiquetado y actualizar la versin del archivo donde se concentra la informacin. Para este punto, una transformacin del formato XML a una representacin ms simple que no tome en cuenta atributos extras es necesaria. La cadena que describe al rbol en notacin inja ser suciente. De manera resumida, las transformaciones de la informacin aprendida por el algoritmo durante distintas ejecuciones se describen en el siguiente esquema:
CAPTULO 4.
74
4.4.
Hasta este punto se ha logrado evolucionar una poblacin con un nmero bien denido de individuos, hasta que se obtiene un individuo capaz de analizar sintcticamente la oracin de entrada proporcionada por el usuario. No solamente esto, sino que el genotipo de este individuo, que es el rbol asociado a la gramtica libre de contexto capaz de llevar a cabo la tarea antes mencionada, tiene caractersticas especiales que permiten hacer el anlisis sintctico de manera muy eciente. Por parte del cmputo evolutivo, se han obtenido resultados satisfactorios. Y es bueno mencionar que las estructuras reportadas en el archivo XML, donde adems las palabras del lenguaje natural estudiado tienen etiquetas nicas, tienen un gran potencial de alimentar a un algoritmo que las procese y produzca otra estructura cuyos nodos no terminales posean atributos sintetizados a partir de los terminales que sean sus descendientes. Ahora bien, el trabajo de desarrollar un simulador de dilogo no es algo sencillo, y en este trabajo solamente se da el primer paso. En la clase con nombre Dialogo.java, existen los mtodos necesarios para iniciar y concluir una sesin de entrenamiento, en la que se solicita al usuario que introduzca oraciones. Si la respuesta correcta est almacenada en memoria, el algoritmo responde, de lo contrario, a travs del proceso que involucra programacin gentica y que se expuso en la seccin anterior, el algoritmo aprende la respuesta que pide al usuario, y el comentario inicial si es necesario. Al nalizar una sesin de entrenamiento, los archivos de texto dialogo.txt y agenda.txt se actualizan con el nuevo conocimiento (o informacion) adquirida. En el primero est una sucesin alternada de entradas y salidas, mientras que en el segundo se almacenan las etiquetas de los nodos que han de recorrerse para producir la resupuesta adecuada. Se trata realmente de un simulador simple, sin embargo gracias a que est sustentado en un proceso que transforma cadenas del lenguaje natural a una estructura que la computadora puede procesar ecazmente, el potencial de crecimiento es grande. Debemos preguntarnos como programadores si una cadena es lo mismo que un rbol.
CAPTULO 4.
75
CAPTULO 4.
76
P ara la primera oracin o N T 1 : N T 2 : aaaa0 : N T 3 : aaaa1 : N T 4 : aaaa2 : N T 5 : aaaa3 : N T 7 : aaaa4 : N T 9 : aaaa5 : N T 10 : aaaa3 : P A : aaaa6 y para la segunda N T 1 : N T 13 : aaaa7 : N T 23 : aaaa8 : N T 24 : aaaa1 : N T 25 : aaaa9 : P A : aaaa2
Notamos que la marca PA se utiliza cuando se reportan dos palabras que son hijas del mismo padre con operador AND. Ahora bien, al introducir en enunciado Conoces a Gabriela Mistral de la clase de discretas? el algoritmo detecta que el rbol diere en el contenido del nodo aaaa2 de lo que est proporcionando el usuario. Una propuesta podra ser, seguir leyendo la oracin de entrada, hasta que encuentre una palabra que sea igual a la que contiene el nodo aaaa3, es decir, en este caso la palabra de, si la encuentra, reserva en la memoria el segmento que no reconoci: Gabriela Mistral, y lo utiliza cada vez que encuentre un nodo aaaa2 en la respuesta. Bajo este esquema sencillo de bsqueda de patrones, se tendra que modicar la dinmica de las sesiones de entrenamiento, para que el algoritmo pudiera proponer distintas oraciones de respuesta, dependiendo de los patrones que encontrara. Informacin adicional podra ser escrita en los nodos y reportada en el archivo con extensin xml para futuras ejecuciones. Cuestiones ms avanzadas, como lo son el gnero y nmero de un sustantivo, o la conjugacin correcta de los verbos, pertenecen a la Lingstica Computacional y escapan al alcance de este trabajo. Pero el poder de adaptacin del cmputo evolutivo podra sin duda proponer valores para el conjunto de etiquetas de un rbol lo sucientemente robusto. Denir este conjunto de etiquetas y la funcin de evaluacin para distinguir a un individuo no apto de uno apto, requerira sin duda de un estudio detallado del problema. Puede tomarse en cuenta, que con el resultado obtenido de este trabajo, el planteamiento de un simulador de dilogo tipo ELIZA, es decir, un buscador de patrones, es casi directo.
4.4.2. La disyuntiva entre aprendizaje computacional efectivo, y produccin de gramticas lingsticamente correctas
Como se mencion al comienzo de la primera fase de desarrollo, en un algoritmo evolutivo es esencial contar con un mtodo que evale a los individuos para determinar su aptitud en determinado ambiente. En el artculo que se menciona ah mismo, Tony C. Smith e Ian H Witten de la universidad de Waikato [2], realizan induccin gramatical sobre una oracin del ingls por medio de programacin gentica, y concluyen exhibiendo una de las estructuras que obtienen,
CAPTULO 4.
77
que el algoritmo es capaz de inducir gramticas con caractersticas lingsticamente correctas, como la distincin entre sujeto y predicado, por nombrar la ms evidente. Pese a que es un artculo de gran importancia para este trabajo, el aspecto de la implementacin del algoritmo que usaron no es lo sucientemente claro como para reproducirlo. Por esta razn, se plante un mtodo de evaluacin que dependa de restricciones estructurales fuertes en los genotipos de los individuos. El aprendizaje de mquina observado es eciente, pero a modo de reivindicacin del rea de Inteligencia Articial llamada Lingstica Computacional, es necesario decir que las gramticas aqu inducidas son lingsticamente incorrectas. Es decir, tomando una oracin al azar de un peridico o libro, lo ms probable es que los conocimientos adquiridos y almacenados en el archivo con extensin XML, no fueran capaces de realizar un anlisis sintctico sobre sta, pero s generar una estructura con el diseo requerido y aprenderla.
CAPTULO 4.
78
mismas carpetas y el diagrama, adems del archivo PDF de este trabajo. Todo el cdigo est comentado para javadoc, y adicionalmente en algunos mtodos se comentaron partes para diferenciar los diferentes casos que se resolvieron.
CAPTULO 4.
79
Bibliografa
[1] NATURAL LANGUAGE PROCESSING, H. M. Noble [2] A GENETIC ALGORITHM FOR THE INDUCTION OF NATURAL LANGUAGE GRAMMARS, Tony C. Smith, Ian H. Witten. Departamento de Ciencias de la Computacin, Universidad de Waikato, Hamilton, Nueva Zelanda. [3] NATURAL LANGUAGE PROCESSING IN PROLOG, Gerald Gazdar, Chris Mellish. [4] SPEECH AND LANGUAGE PROCESSING: AN INTRODUCTION TO NATURAL LANGUAGE PROCESSING, COMPUTATIONAL LINGUISTICS, AND SPEECH RECOGNITION, Daniel Jurafsky, James H. Martin. [5] INTRODUCCIN A LA TEORA DE LA COMPUTACIN, Elisa Viso Gurovich [6] INTRODUCTION TO GENETIC ALGORITHMS, S. N.
Sivanandam, S. N. Deepa. [7] GENETIC PROGRAMMING: ON THE PROGRAMMING OF COMPUTERS BY MEANS OF NATURAL SELECTION, John R. Koza. [8] ENGINEERING A COMPILER, Keith D. Cooper, Linda Torczon. [9] STATISTICAL LANGUAGE LEARNING, Eugene Charniak. [10] ROBUST PART-OF-SPEECH TAGGING USING A HIDDEN MARKOV MODEL, Julian Kupiec. [11] EVOLUTIONARY COMPUTATION, David B. Fogel. [12] ADAPTATION IN NATURAL AND ARTIFICIAL SYSTEMS, John H. Holland. [13] GENETIC ALGORITHMS, Goldberg. 80
BIBLIOGRAFA
81
[14] COMPUTATIONAL MODELS OF SCIENTIFIC DISCOVERY AND THEORY FORMATION, P. Langley, J. Shrager.