Está en la página 1de 81

1

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

Comentarios sobre el captulo . . . . . . . . . . . . . . . . . . . .

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.

Cruza o recombinacin . . . . . . . . . . . . . . . . . . . . 2.4.8.1. 2.4.8.2. 2.4.8.3. 2.4.8.4.

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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . Aptitud en bruto . . . . . . . . . . . . . . . . . . Aptitud estandarizada . . . . . . . . . . . . . . . Aptitud ajustada . . . . . . . . . . . . . . . . . . Aptitud normalizada . . . . . . . . . . . . . . . . . . . .

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.

Operadores secundarios 3.2.6.1. 3.2.6.2. 3.2.6.3. 3.2.6.4. 3.2.6.5.

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

Lingstica se reere al texto analizado con el trmino corpus.

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

Panorama General del PLN


1.1. Orgenes del PLN
Los recursos de procesamiento disponibles para las calculadoras programables de primera generacin, no eran diferentes a aquellos de las primeras computadoras. Si tratamos de imaginar lo que sera comprar una calculadora programable barata, con el n de hacer una traduccin automtica del ruso al espaol, podemos tener una idea de la magnitud del reto que enfrentaron los pioneros del PLN, en los aos que van desde 1950 hasta 1965. Hasta el da de hoy, las computadoras representan objetos lingsticos de forma no lingstica. As, las palabras se representan como la secuencia de bytes, siendo stos las representaciones en cdigo ASCII

1 de las letras que las confor-

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

ingls: American Standard Code for Information Interchange.

10

CAPTULO 1.

PANORAMA GENERAL DEL PLN

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.

PANORAMA GENERAL DEL PLN

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

ingls: Hidden Markov Models (HMM's).

CAPTULO 1.

PANORAMA GENERAL DEL PLN

13

1.3.

Dos tcnicas del PLN a considerar

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?

1.3.1. La bsqueda de patrones y ELIZA


No muy alejado temporalmente a la poca de Turing, en 1966 Weizenbaum escribi un programa que nombr ELIZA [3]. Este programa entra en la categora de sistemas de Procesamiento de Lenguaje Natural tempranos, y era capaz de realizar una conversacin limitada con el usuario. Considere la siguiente sesin con ELIZA, en este caso imitando las respuestas de un psicoterapista Rogeriano: Usuario: Usted se parece a mi padre en algunos aspectos. ELIZA: PADRE? Usuario: Usted no es tan agresivo, pero creo que no quiere que yo lo note. ELIZA: VO? Usuario: Que no discute conmigo. ELIZA: USTED? Usuario: Porque me tiene miedo. ELIZA: LE AGRADA PENSAR QUE LE TENGO MIEDO? POR QU CREE USTED QUE NO DISCUTO CON QU LE HACE PENSAR QUE NO SOY AGRESICUL ES EL PARECIDO QUE NOTA CON SU

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.

PANORAMA GENERAL DEL PLN

14

Expresiones regulares

(RE's

3 ) Son una poderosa herramienta para la bsque-

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

que no est presente en la cerradura de la cadena. (FSA's

Autmatas de estados nitos

4 ) Se dene a un autmata de estados

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

5 ) El comportamiento de un autmata de es-

tados nitos determinista depende por completo del estado en el que se

FSA's no deterministas

(NDFSA's

6 ) Un autmata de estados nitos no de-

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

Esto denota el orden en que un NDFSA explora los

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

3 Del 4 Del 5 Del 6 Del 7 Del 8 Del

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.

PANORAMA GENERAL DEL PLN

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.

1.3.2. Modelos ocultos de Markov


Podemos comenzar mencionando a los N-gramas, que son conjuntos de palabras o letras, que dado el lenguaje son ms probables de encontrar que otros. Pensemos por ejemplo que en espaol la sucesin de palabras: ... repentinamente tres muchachos parados en la banqueta ... es ms probablemente leda en un texto que: ... tres repentinamente banqueta la muchachos en parados ... Hay que notar que no se le est dando un tratamiento especial al signicado de las palabras, ms bien, el hecho de que la primera oracin sea semnticamente correcta y la segunda sea incorrecta es consecuencia de las categoras sintcticas de cada palabra, y de que suponemos que el texto ledo est correctamente escrito. Para formalizar lo anterior, decimos que un palabra que se va a leer, despus de haber ledo las de Lenguajes o bien LM's

N grama ayuda a predecir la N 1 anteriores. Estos

modelos estadsticos de secuencias de palabras tambin son llamados Modelos

9 . Los LM's son ampliamente usados en la traduccin

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

ingls: Language Models

CAPTULO 1.

PANORAMA GENERAL DEL PLN

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 |x1 ...xn1 )

aproximamos el valor buscado con:

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

10 al momento de asignar etiquetas [4]. Los modelos ocultos de

W = w1 . . . wn ,

se busca la asig-

. . . tn

con ti

el conjunto de todas las etiquetas, que le

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

secuencias, se elige aquella que sea la ms probable para la secuencia de palabras

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)

P (y|x)P (x) P (y) [ec 1]

10 Una

ambigedad se presenta cuando la palabra a etiquetar, puede tener ms de una

categora sintctica.

CAPTULO 1.

PANORAMA GENERAL DEL PLN

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 )

, y despus eliminar el denominador P(W), puesto

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:

t = argmax (P (W |tn )P (tn )) i i

[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:

pende solamente de la etiqueta que le precede, esto es, se maneja un LM de

P (tn ) i

da como se ve a continuacin :

t = argmax (P (tn |W )) argmax i


i=1

P (wi |ti )P (ti |ti1 ) [ec 3]

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

).

La [ec 3] contiene dos tipos distintos de

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 ),

y puede determinarse un estima-

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) =

C(V BZ,es) C(V BZ) .

1.4.

Comentarios sobre el captulo

Al nal de esta primera seccin se revisaron dos mtodos distintos de realizar PLN. El reconocimiento de patrones mediante autmatas de estados

CAPTULO 1.

PANORAMA GENERAL DEL PLN

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-

duccin. Los valores de aptitud de la descendencia se calculan con la misma


funcin usada en los padres. Finalmente, sobrevivientes de la poblacin vieja son seleccionados para formar la nueva poblacin junto con los descendientes. De modo que se obtiene la siguiente generacin. El mecanismo que determina cuntos y cules individuos seleccionar para que sean padres, cuntos descendientes crear, y cules individuos pasarn a la siguiente generacin representa el mtodo de seleccin. Muchos mtodos de seleccin que varan en complejidad han sido propuestos. Generalmente se asegura que cada generacin tenga el mismo tamao. Pueden introducirse tres caractersticas fundamentales del Cmputo Evolutivo en el contexto de la teora biolgica evolucionista: 1. Genes particulares y gentica de poblaciones.

CAPTULO 2.

CMPUTO EVOLUTIVO

21

2. Cdigo gentico adaptativo. 3. Dicotoma entre genotipo y fenotipo

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

El Cmputo Evolutivo es conceptualmente simple. El algorit-

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

Un algoritmo evolutivo puede usarse para cualquier

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

La evolucin es un proceso altamente paralelo. En estos tiem-

pos, en que las computadoras que soportan procesamiento distribudo se


es la totalidad de informacin gentica que posee un individuo en forma de

ADN, el fenotipo es la expresin de ste en determinado ambiente.

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.

Hibridacin con otros mtodos

Los algoritmos

evolutivos pueden combi-

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

Robustez a cambios dinmicos

Mtodos tradicionales de optimizacin no

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.

Capacidad para solucionar problemas sin soluciones conocidas

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

ingls: fuzzy systems.

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].

2.4.1. El espacio de bsqueda


Muy frecuentemente uno busca la mejor solucin dentro de un conjunto de soluciones. El conjunto de todas las soluciones alcanzables, donde la mejor se encuentra contenida, recibe el nombre de espacio de bsqueda. Todos y cada uno de los puntos en el espacio de bsqueda representa una posible solucin. De lo anterior, cada posible solucin puede marcarse con un valor de aptitud, dependiendo de la denicin del problema. Por medio de los AG's, uno busca la mejor solucin entre un nmero de soluciones posibles, representada como un punto en el espacio de bsqueda. Las dicultades surgen de inmediato: los ptimos locales y el punto de partida de la bsqueda.

2.4.2. Un algoritmo gentico simple


Un algoritmo es una serie de pasos para resolver un problema. Un AG es un mtodo para resolver problemas que usa la gentica como modelo. En l se maneja una poblacin de posibles soluciones, donde cada individuo se representa mediante un cromosoma que es su abstraccin. La codicacin de todas las posibles soluciones en cromosomas es la primera parte, y en ningn sentido la ms directa de un AG. Un conjunto de operadores de reproduccin debe de denirse, de modo que aplicados directamete a los cromosomas se encarguen de realizar mutaciones y recombinaciones en las soluciones del problema. La correcta representacin y operadores de reproduccin son absolutamente determinantes, ya que el comportamiento del AG depende en extremo de ellos. Frecuentemente resulta muy difcil encontrar una representacin adecuada, que respete la estructura del espacio de bsqueda, y operadores de reproduccin que sean coherentes y relevantes de acuerdo a las propiedades del problema que se desea resolver.

CAPTULO 2.

CMPUTO EVOLUTIVO

24

La seleccin debe poder comparar cada

individuo en la poblacin, esto me-

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:

El primer paso consiste en elegir individuos para la reproduc-

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.

REPRODUCCIN: EVALUACIN: REEMPLAZO:

En el segundo paso, la descendencia se obtiene de los

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

3 de acuerdo con la estrategia.


3 Textual

del ingls: local hill climbing or greedy search

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

con tres variables: X, Y y Z,

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

4 funciones de evaluacin, donde

es el tamao de la poblacin. Se dice que

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.

5 . Por otro lado, para muchos problemas esta

4 De
valor

Orden n log n signica que existe una constante positiva

tal que a partir de un

n0 , el

nmero de operaciones realizadas por el AG no sobrepasa a

c(n log n). Para mayor

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

en su secuencia, y que se pueden manifestar en modicaciones concretas en la funcin de ese gen.

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:

2.4.7.1. Seleccin por Ruleta


La seleccin por ruleta es una de las tcnicas de seleccin tradicionales de los GA's. El principio de este mtodo es una bsqueda lineal a travs de la ruleta, cuyas rebanadas estn asignadas en proporcin a la aptitud asignada al individuo. Un valor de seleccin es jado, que es una porcin aleatoria de la suma de todas las aptitudes de la poblacin. La poblacin se recorre hasta llegar al valor de seleccin jado. Este es solamente un mtodo de seleccin moderado, pues los individuos aptos no necesariamente son elegidos, pero ciertamente tienen ms probabilidades de serlo. Un individuo apto va a contribuir ms al valor de seleccin jado, pero si no lo excede, el siguiente individuo en la ruleta tiene una oportunidad de ser elegido, y puede que ste sea poco apto. Es esencial que la poblacin no sea ordenada con respecto a su aptitud, pues esto creara un sesgo en la seleccin. Este mtodo se implementa siguiendo los siguientes pasos: 1. Sumar el total de los valores de aptitud, o valores esperados de seleccin de la poblacin. Llmese 2. Reptanse

al valor obtenido.

veces los siguientes pasos (donde

es el tamao de la

poblacin): Escoger un valor entero

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.

2.4.7.2. Seleccin por Rango


La seleccin por ruleta tendr problemas cuando los valores de aptitud dieren mucho. Si la aptitud del mejor cromosoma es 90 %, su rebanada ocupa el 90 % de la circunferencia de la ruleta, y los dems cromosomas tienen pocas posibilidades de ser seleccionados. La seleccin por rango realiza un ordenamiento

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

convergencia prematura. Tambin

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.

2.4.7.3. Seleccin por Torneo


Una estrategia de seleccin ideal debe permitir ajustar la presin selectiva y la diversidad de la poblacin, para anar la bsqueda del AG. A diferencia del mtodo de seleccin por ruleta, la seleccin por torneo proporciona presin selectiva llevando a cabo un torneo competitivo entre ganador de

Nu

individuos. El mejor

individuo del torneo es el que tiene el valor de evaluacin ms alto, es decir, el

Nu .

El torneo competitivo es repetido hasta que la poblacin inter-

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.

2.4.7.4. Muestreo Estocstico Universal


El muestreo estocstico universal proporciona un sesgo nulo y una mnima propagacin. Los individuos son mapeados a segmentos contiguos de una lnea, tal que la longitud de cada segmento se corresponde con la aptitud del individuo, exactamente como en el caso de la seleccin por ruleta. Entonces, un conjunto de apuntadores es distribudo a intervalos iguales en la lnea, tantos como el nmero de individuos que se desea seleccionar. El muestreo estocstico universal, asegura una seleccin de descendencia ms cerca a la merecida, que la que se observa en la seleccin por ruleta.

2.4.8. Cruza o recombinacin


La cruza es el proceso de tomar dos soluciones padres y producir a partir de ellas una hija. Despus de la seleccin, la poblacin est enriquecida con individuos ms aptos, stos son clones de los originales pero no hay individuos nuevos. La cruza se aplica a esta poblacin intermedia con la esperanza de crear una mejor descendencia. La cruza es un operador de recombinacin que opera en tres pasos: 1. El operador de reproduccin selecciona aleatoriamente un par de dos cadenas individuales para la cruza. 2. Un punto de corte se ja a lo largo de la longitud de la cadena. A este punto se le conoce como miasma en Gentica.

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:

2.4.8.1. Cruza en un punto


El AG tradicional utiliza cruza en un punto, donde los dos cromosomas apareados son cortados en un mismo punto y las regiones despus del punto son intercambiadas. Aqu, el punto de corte se elige de forma aleatoria a lo largo de la longitud del cromosoma, que puede ser una cadena binaria, y los bits despus del mismo son intercambiados. Si el sitio del punto de corte es bien elegido, los descendientes sern mejores que los padres, de lo contrario puede perjudicar severamente la calidad de las cadenas.

2.4.8.2. Cruza en dos puntos


Adems de la cruza en un punto, muchos algoritmos de cruza distintos han sido desarrollados, muchos involucrando ms de un punto de corte. Debe notarse que aadir ms puntos de corte reduce el desempeo del AG. El problema al aadirlos es que los bloques constructores (consultar en las pginas 31 y 32 las deniciones de esquema y bloque constructor) son destrudos ms constantemente. La ventaja de tenerlos es que el espacio de bsqueda puede ser explorado ms extensamente. En la cruza por dos puntos, se eligen dos puntos de forma aleatoria y el contenido entre ambos es intercambiado entre los padres. A diferencia de la cruza por un solo punto, el principio y nal de un padre s puede pasar directamente al hijo en este caso. Si ambas regiones, el principio y nal de cromosoma, contienen buena informacin gentica, en la cruza por un solo punto, ninguno de los dos descendientes obtendr ambas buenas caractersticas. Usar cruza en dos puntos evita este problema, por esto es generalmente considerada mejor que la cruza por un punto. Esta observacin puede ser generalizada a la posicin de cada gen en un cromosoma. Los genes que estn cerca entre s tienen ms posibilidades de pasar juntos a la descendencia. Esto genera una correlacin entre genes contiguos que no se desea tener. Por consecuencia, la eciencia de la cruza en

puntos depender de la posicin de los genes dentro del cromosoma. En una

CAPTULO 2.

CMPUTO EVOLUTIVO

32

representacin gentica buena, genes que codican caractersticas dependientes de la solucin deben estar juntos.

2.4.8.3. Cruza uniforme


La cruza uniforme es diferente a cruzar con de uno u otro padre, elegido de acuerdo a una

puntos. Cada segmento en generada

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.

2.4.8.4. Cruza ordenada


La cruza ordenada por dos puntos se utiliza cuando el problema est basado en permutaciones. Dados dos cromosomas padres, dos puntos de corte se jan aleatoriamente generando una particin en tres regiones: izquierda, centro y derecha. La cruza ordenada por dos puntos se comporta de la siguiente forma: el primer hijo hereda su seccin izquierda del padre uno, y su parte media queda determinada por los genes (que son valores) en la seccin media del padre 1 en el orden en que aparecen en el padre dos. En la imagen de abajo se ejemplica este mtodo con dos permutaciones que representan a los padres.

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:

Inversin o Flipping Intercambio Reversa

La inversin o ipping de un bit signica cambiar un 0

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

El parmetro importante en la tcnica de mu-

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.

2.4.10. Por qu funcionan los Algoritmos Genticos?


Las heursticas de bsqueda de los AG's estn basadas en el teorema de esquemas de Holland. Un esquema se dene como una plantilla que describe un subconjunto de cromosomas con secciones similares. Para codicacin binaria,

CAPTULO 2.

CMPUTO EVOLUTIVO

34

un esquema consiste de los bits 0, 1 y un meta caracter denotado: * (no importa

6 si es 0 1). Las plantillas son un medio efectivo para describir similitudes

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

7 , estn bien denidos y tienen un valor

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

de la cadena coincide con el caracter de la posicin j

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

cadenas como las esquinas

Todos los esquemas que cubren las 8 cadenas, son a su vez entidades geomtri-

6 Del ingls: Don't care. 7 El orden se reere a la cantidad

de bits jos en la plantilla, es decir, que no son *.

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

(la longitud de un indi-

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)

2.4.10.1. La hiptesis de los bloques constructores


La hiptesis de los bloques constructores es uno de los criterios ms importantes de cmo es que un AG funcionan. En el libro de Goldberg [13] se enuncia: Un algoritmo gentico logra un alto desempeo a travs de la sobreposicin de esquemas cortos, de bajo orden y aptitud alta, llamados bloques constructores. El concepto de lo que es un esquema con aptitud alta no est claro. La interpretacin ms obvia es que lo es si la aptitud promedio de todas las cadenas que describe est por encima del promedio de todas las cadenas presentes en el espacio de bsqueda. Esta versin de la hiptesis de los bloques constructores recibe el nombre de hiptesis de los bloques constructores esttica. No es difcil encontrar contraejemplos para la misma. Otra interpretacin es que un esquema tenga aptitud alta si el promedio de las aptitudes de sus representantes en la poblacin del AG durante algn ciclo evolutivo, es ms alta que el promedio de todas las aptitudes de los individuos presentes en la poblacin. Esta variante puede llamarse hiptesis de bloques constructores relativa. El signicado de la hiptesis de los bloques constructores se puede ilustrar considerando las funciones trampa concatenadas , que son un tipo de funciones de aptitud propuestas por Goldberg como problemas de prueba. Para cada funcin trampa, el cromosoma compuesto solamente por ceros es un ptimo global. Los esquemas que corresponden a estas cadenas son los bloques constructores. Por ejemplo, supngase que la funcin trampa produce cadenas binarias aleatorias de longitud 4, y que se procede a concatenar 5 de estas cadenas para producir un individuo, que entonces tiene longitud 20. Los bloques constructores son los esquemas: 0 0 0 * * * * * * * * * * * * * * * * * , * * * * 0 0 0 0 * * * * * * * * * * * * , etc. Si se producen inicialmente sucientes individuos, se espera que algunos estn en los esquemas de los bloques constructores, pero es improbable que exista un individuo que est contenido en la mayora de stos. Para una poblacin lo sucientemente grande, un AG que utilice el operador de cruza por un punto ser suciente para encontrar el ptimo global del problema. Esta es una explicacin un tanto supercial de por qu los AG's convergen a la

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

ingls: Scheme Theoreme, Optimal Alocation of Trials.

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)

Copiar programas de computacin existentes a la nueva generacin.

(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.

Descripcin detallada de la Programacin Gentica

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.

3.2.1. Las estructuras sometidas a adaptacin


En todo sistema adaptativo o capaz de aprender, por lo menos una estructura es sometida a adaptacin. Para el AG convencional y la PG, las estructuras que se adaptan son poblaciones de puntos individuales en el espacio de bsqueda. En el caso de la PG, cada individuo en la poblacin es un programa computacional con estructura jerrquica. La forma y el tamao de estos programas cambian dinmicamente durante el proceso. El conjunto de estructuras posibles en la PG es el conjunto de todas las posibles composiciones de funciones, que pueden ser compuestas recursivamente del

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},

donde D0 y D1 son variables atmicas booleanas que

CAPTULO 3.

PROGRAMACIN GENTICA

41

sirven de argumento para las funciones. Al combinar los conjuntos de funciones y terminales en uno solo:

C = F + T = {AN D, OR, N OT, D0, D1},

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:

(OR (AN D (N OT D0) (N OT D1)) (AN D D0 D1)).


Adems puede ilustrarse como un rbol como se muestra abajo.

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.

Cerradura de los conjuntos de funciones y terminales:

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.

Suciencia de los conjuntos de funciones y terminales:

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.

3.2.2. Estructuras iniciales


Las estructuras iniciales en PG consisten de los individuos en la poblacin inicial, que estn asociados a una expresin formada por elementos del conjunto combinado C de funciones y terminales, susceptible a representarse con una estructura discreta. Estas expresiones se conocen como expresiones-S por la palabra en ingls structured o estructurada. La generacin de cada expresin-S individual en la poblacin inicial se realiza generando aleatoriamente un rbol con raz, de nodos etiquetados con ramas ordenadas que la representa. Se comienza seleccionando una de las funciones del conjunto F aleatoriamente, (usando una distribucin uniforme de probabilidades), para que sea la etiqueta de la raz del rbol. Se elige un elemento del conjunto F, pues elegir una etiqueta del conjunto T para la raz dara como resultado un rbol degenerado que consistira de un solo nodo. Abajo se muestra el comienzo de la creacin de un programa con estructura aleatoria de rbol.

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 )

es el nmero de argumentos que toma la

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:

Generacin por llenado


al conjunto

Involucra la creacin de rboles en los que la lon-

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,

para los nodos cuya distancia a la raz sea menor a la pro-

fundidad establecida, y del conjunto profundidad mxima alcanzable.

para las hojas que cumplen con la

Generacin por crecimiento

Involucra la creacin de rboles con formas

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,

de funciones y terminales, para nodos

cuya profundidad no exceda el mximo, y restringiendo la eleccin a los

T,

para las hojas del rbol, en la profundidad mxima.

El nmero de elementos del conjunto de funciones minales

F,

y del conjunto de ter-

presentes en un individuo, determinan su profundidad, o en otras

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.

3.2.3.1. Aptitud en bruto


Esta es la aptitud establecida en la terminologa natural del problema mismo. Qu tan bien las expresiones-S evaluadas se adaptan al comportamiento esperado. La aptitud es usualmente evaluada sobre un conjunto de casos de aptitud. Estos casos de aptitud proveen una base para evaluar la aptitud de las expresiones-S en la poblacin, sobre un nmero de situaciones representativas diferentes sucientemente grande, tal que un rango amplio de aptitudes numricas en bruto pueda obtenerse. Los casos de aptitud son generalmente un subconjunto nito del espacio de dominio, que puede ser enorme o innito. En el caso de funciones booleanas con pocos argumentos, es prctico usar todas las combinaciones posibles de valores de los argumentos. Los casos de aptitud deben ser representativos del espacio de dominio en su totalidad, porque son la base para generalizar los resultados obtenidos. Uno puede minimizar el efecto de seleccionar un conjunto particular de casos de aptitud, al cambiar el mismo para computar la aptitud de cada generacin. Con todo y esto, el benecio potencial de esta aproximacin se ve reducido por el inconveniente, de que el desempeo de un individuo pueda no ser comparable a travs de las generaciones. Un buen diseo procura que los casos de aptitud sean elegidos al principio de cada corrida del algoritmo, y que no varen de generacin en generacin. La denicin ms comn de aptitud en bruto, es que sta signica error. Es decir, que la aptitud en bruto de una expresin-S individual es la suma de distancias, al valor correcto esperado. Si la expresin-S evaluada toma valores enteros, por ejemplo, la suma de distancias es la suma de los valores absolutos de las diferencias entre los nmeros involucrados. Cuando la aptitud en bruto es error, se denota

r(i, t)

para cualquier expresin-S individual

i,

al tiempo generacional

t,

para una poblacin de tamao

M.

La ecuacin que debe resolverse es:

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.

Si la expresin-S toma valores booleanos o simblicos, la suma de distancias

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.

3.2.3.2. Aptitud estandarizada


La aptitud estandarizada

s(i, t)

replantea la aptitud en bruto de modo que

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:

s(i, t) = r(i, t). Es conveniente y deseable hacer el mejor valor

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.

3.2.3.3. Aptitud ajustada


La aptitud ajustada

a(i, j)

se calcula a partir de la aptitud estandarizada

s (i, t)

como se indica a continuacin:

a(i, j) =
Aqu

1 1 + s(i, t) i
al tiempo

s (i, t)

es la aptitud estandarizada de un individuo

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.

3.2.3.4. Aptitud normalizada


Si el mtodo de seleccin empleado es proporcional a la aptitud, el concepto de aptitud normalizada ajustada

a (i, t)

para una poblacin de tamao

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.4. Seleccin glotona


Una poblacin de tamao 500 es suciente para resolver casi todos los problemas que tratan de optimizacin en PG. Problemas ms complejos requieren poblaciones ms grandes para ser resueltos. Estos problemas generalmente conllevan un consumo de tiempo excesivo para calcular las aptitudes de los individuos. Esto aunado al incremento en el tamao de la poblacin resulta en algoritmos menos ecientes. En PG y AG's es posible mejorar el desempeo de un algoritmo por medio de la seleccin glotona. Esto es, cuando los individuos son seleccionados de la poblacin para que se les aplique un operador gentico, los mejores individuos tienen una posibilidad todava mayor a la que reciben con una asignacin de aptitud normalizada [7].

3.2.5. Operadores primarios para modicar estructuras


Esta subseccin describe los dos operadores primarios usados para modicar a las estructuras que deben adaptarse en la programacin gentica: 1. Reproduccin de Darwin. 2. Cruza (recombinacin sexual).

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:

E1 : (OR (N OT D1) (AN D D0 D1))

E2 : (OR (OR D1 (N OT D0)) (AN D (N OT D0) (N OT D1)))

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:

f 1 : (N OT D1) f 2 : (AN D (N OT D0) (N OT D1))

Los subrboles asociados se muestran abajo.

Los descendientes que resultan de efecuar la cruza sern entonces 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.

3.2.6. Operadores secundarios


Existen en la programacin gentica adems de los operadores genticos primarios, cinco operadores secundarios que son opcionales que se mencionan

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

argumentos, se debe seleccionar una de las posibles

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

(AN D X X) X (OR X X) X (N OT (N OT X)) X


Estas reglas son conocidas como tautologas en la lgica de primer orden y se utilizan para simplicar expresiones, se podran aplicar tambin las leyes de De Morgan. La aplicacin recursiva de la edicin consume muchos recursos computacionales y tiempo. No tiene equivalente en AG's, donde los individuos ya codicados tienen longitud ja y son de complejidad estructural uniforme. Se puede aplicar con dos motivaciones; la primera es cosmtica y consiste en producir resultados ms legibles, la segunda persigue mejorar la eciencia global del programa, al hacer que ste procese individuos ms simples. Este operador se controla mediante un parmetro de frecuencia, que especica si el operador de edicin debe o no aplicarse a determinada generacin. Existe un argumento en contra del uso de este operador, y dice que puede degradar la eciencia del programa reduciendo prematuramente la variedad de estructuras disponibles para la recombinacin. Como sea, el efecto del operador de edicin es muy poco claro. En esta subseccin se introdujo un concepto importante en Programacin Gentica, que es el de los intrones. Se trata de una comparacin ms con un concepto presente en la Gentica de los seres vivos, y se reere a la aparicin de cdigo redundante en el genotipo de un individuo. Sin embargo, en los seres vivos, los intrones pueden ser varias expresiones que no necesariamente pueden simplicarse a una expresin ms corta, como sucede en los dominios tpicos de la Programacin Gentica.

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

F . Las nuevas Eo , E1 , E2 , ...

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

Diseo del algoritmo


4.1. Planteamiento del problema
Se ha establecido en los captulos anteriores la teora bsica para sustentar el desarrollo de un algoritmo que mediante la Programacin Gentica, cree estructuras capaces de analizar sintcticamente

1 varias oraciones del lenguaje

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-

presin al lenguaje de mquina.

56

CAPTULO 4.

DISEO DEL ALGORITMO

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.

Hiptesis y soluciones esperadas

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.

Primera fase de desarrollo

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

exn es un segmento de ADN que no se rompe durante el proceso de segmentacin y

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.

DISEO DEL ALGORITMO

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 :

O S P Art V erbo Sust Sust

S Art V erbo el muerde perro hueso

P Sust S

Se expande a la siguiente gramtica:

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

es la cadena vaca. La tercera

est en el lenguaje. Cualquier gramtica libre de contexto puede ser

CAPTULO 4.

DISEO DEL ALGORITMO

59

O Art V erbo Sust Sust

Art Sust V erbo el muerde perro hueso

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.

DISEO DEL ALGORITMO

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

unicarse a la gramtica lograda hasta este punto, que ser entonces

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.

DISEO DEL ALGORITMO

61

individuos a los que se les peda analizar una oracin en particular.

4.3.1. Aptitud de los individuos


A propsito del anlisis sintctico, debido a que se pretende generar una gramtica libre de contexto que modele un subconjunto del lenguaje objetivo donde estn las oraciones analizadas, un resultado positivo ser una estructura que acepte todas las oraciones del conjunto de entrenamiento como elementos del lenguaje que modela. El mecanismo necesario para contestar la pregunta de pertenencia al lenguaje modelado, es una parte esencial de un compilador. Se conoce como analizador sintctico o con el trmino tcnico parser (del ingls) . Para el objetivo de este algoritmo es vital que el analizador sintctico sea eciente. Ser el responsable de determinar el valor de aptitud de cada individuo, sin el cual no se puede llevar a cabo ninguna clase de Cmputo Evolutivo. Es posible hacer una particin en el universo de las gramticas libres de contexto, en una jerarqua basada en la dicultad de anlisis sintctico de las gramticas. Una gramtica libre de contexto arbitraria produce oraciones analizables en casos, donde

O(n3 )

para el peor de los

es la longitud en palabras de la oracin que se analice.

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

analizador sintctico descendente (top-down parser) comienza en la raz del rbol, y

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.

DISEO DEL ALGORITMO

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

es la longitud de la oracin procesada y

prejo que logra analizar el individuo

n la longitud en palabras del x, de modo que el valor mximo alcanzado

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.

DISEO DEL ALGORITMO

63

4.3.2. Dos esquemas de presin selectiva


La presin selectiva ayuda al algoritmo gentico a seleccionar individuos con la misma aptitud bajo criterios de seleccin adicionales, por ejemplo, el nmero de nodos presentes en el rbol que representa a la gramtica libre de contexto. Se debe de tener cuidado al incluir presin selectiva en el valor de evaluacin que se piensa utilizar al momento de llevar a cabo la seleccin. En el presente caso, dado que se est usando un torneo determinista como mtodo de seleccin, si la presin selectiva es muy agresiva, puede ocasionar que individuos con pocos nodos y no tan aptos dominen a la poblacin en pocas generaciones. Esto provocara que escaseara informacin gentica til para la recombinacin gentica, y que en un lapso no mayor a P generaciones, donde P es el tamao de la poblacin , el algoritmo llegara a un mximo local (lo cual sera muy contraproducente). Por lo expuesto en el prrafo anterior, para el algoritmo que se expone en esta tesis se opt por introducir dos esquemas de presin selectiva. En el primer esquema, se penaliza el valor de evaluacin de los individuos con un nmero de nodos que est por encima del promedio de la poblacin con un valor jo de 0.25, si est por debajo del promedio de la poblacin se distinguen dos casos nuevamente,

los individuos que no reciben penalizacin

son aquellos que

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

razn de esto es simple. Pensemos que en un torneo determinista, el mejor individuo

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.

DISEO DEL ALGORITMO

64

Llamando sigue:

al valor de penalizacin jado en 0.25, o bien 0 para el sector de

la poblacin que se pretende beneciar, la funcin de evaluacin quedara como

EV (x) =
Aqu

n 10 N n
es la longitud

es nuevamente un individuo cualquiera de la poblacin,

de la oracin que logra analizar sintcticamente y el valor de

es la longitud en palabras

de la oracin analizada. Debe enfatizarse que para un conjunto de individuos,

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

se reere al mximo valor alcanzado por

Este valor sirve para escalar el valor de

a 1.0, que de otra forma podra

CAPTULO 4.

DISEO DEL ALGORITMO

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

individuo menos apto en la poblacin es igual a 1.0, la ejecucin del algoritmo

4.3.3. Operador de cruza


Cada vez que se agrega una nueva oracin del conjunto de entrenamiento, se debe renovar el conjunto de smbolos terminales, que de ahora en adelante llamamos diccionario. El diccionario es sencillamente un conjunto de palabras del lenguaje objetivo. Hay presin selectiva para que se le de prioridad a individuos con menos nodos, bajo la suposicin de que las gramticas ms chicas son ms efectivas. Dos gramticas de la poblacin existente se eligen de manera aleatoria para la reproduccin sexual. Un nodo elegido al azar de un padre se intercambia por uno del otro padre, para generar dos hijos. Es importante respetar las restricciones estructurales impuestas a los rboles que representan las gramticas, durante la generacin de los individuos. Debe evitarse que despus de la cruza se produzcan individuos con operadores OR que a su vez tengan descendientes OR, que un nodo terminal posea hijos o que un nodo AND tenga un primer hijo distinto a un terminal. Si en la seleccin aleatoria de punto de cruza en ambos padres se selecciona un nodo terminal, o nodos con el mismo operador, ya sea OR o AND, la cruza puede realizarse directamente. De lo contrario debe de hacerse un procesamiento que involucra a los nodos hijos o al nodo padre de alguno de los puntos de cruza seleccionados. Abajo se muestra una tabla con la explicacin del proceso que se lleva a cabo en algunos de los casos. Los casos que no se muestran son simplemente simtricos a los que se consideran:

CAPTULO 4.

DISEO DEL ALGORITMO

66

Primer padre terminal AND OR

Segundo padre terminal AND OR

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.

4.3.4. Operador de mutacin


Siempre que dos individuos se seleccionan para efectuar una reproduccin sexual, otro se selecciona al azar para llevar a cabo una mutacin. La seleccin aqu, contrariamente con respecto al resto del algoritmo, se hace directamente proporcional al tamao del individuo (es ms probable elegir gramticas de mayor tamao). Esto bajo la suposicin de que las gramticas ms grandes no mejoran la aptitud de la poblacin vista en conjunto. Ms an, un mayor tamao indica la presencia de nodos que pueden beneciarse de la mutacin. As, a individuos cuyos rboles sintcticos poseen una estructura interna correcta, pero que sus hojas contienen elementos del diccionario en orden equivocado, se les da la oportunidad de corregirse. El proceso comienza eligiendo cinco individuos aleatoriamente de la poblacin, de los cuales se conserva aquel con el mayor nmero de nodos. Sabiendo cul individuo mutar, un nodo hoja se selecciona al azar, y se reemplaza por un smbolo terminal aleatorio, es decir, una palabra del diccionario. El individuo

CAPTULO 4.

DISEO DEL ALGORITMO

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.

4.3.5. Poblacin inicial


Si

es la longitud de la oracin analizada en palabras, se inicializa una

poblacin de

P OB = N 150

individuos por medio del mtodo de mitad y

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 ,

resulta un horizonte conable para marcar el

lmite al que pueden crecer los individuos generados. Si

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.

DISEO DEL ALGORITMO

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.

4.3.6. Reporte de eciencia


Habiendo concludo la implementacin del programa gentico descrito en las subsecciones anteriores, es posible realizar pruebas con oraciones de distintas longitudes. Esto es necesario para plantear el funcionamiento global del programa gentico, de modo que alcance su objetivo sin acaparar tiempo y recursos computacionales. Despus de haber hecho diez pruebas con oraciones de seis longitudes distintas, los promedios de generaciones requeridas y nmero de nodos en el mejor individuo obtenido fueron los que se muestran en la siguiente grca:

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.

DISEO DEL ALGORITMO

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.

4.3.7. El mtodo unicador


Suponiendo que se deseara producir una gramrica libre de contexto capaz de analizar sintcticamente la oracin: uno dos tres cuatro cinco seis siete ocho nueve diez once , que claramente tiene ms de seis palabras, procederamos a generar una poblacin incial distinta, y ejecutar un programa gentico para cada uno de los segmentos: uno dos tres cuatro cinco seis y seis siete ocho nueve diez once . Ahora, si los mejores individuos obtenidos de dichas ejecuciones fueran los descritos por las cadenas:

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.

DISEO DEL ALGORITMO

70

AN D(seis, AN D(siete, AN D(ocho, AN D(nueve, AN D(diez, OR(seis, ocho, diez, once))))))


La siguiente imagen muestra a las estructuras de rbol correspondientes a estas descripciones, con una lnea que indica el nodo por el que el operador unicador va a juntar toda la informacin contenida en ambos rboles:

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.

DISEO DEL ALGORITMO

71

La cadena que describe a la estructura que se muestra arriba es la siguiente:

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.

DISEO DEL ALGORITMO

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.

4.3.8. Almacenamiento y recuperacin de la informacin


Producir una estructura capaz de analizar sintcticamente una cantidad considerable de oraciones, en el orden de miles, puede tomar varias horas en una computadora de escritorio comercial sin un procesador que tenga tecnologa multi-ncleo. Una vez llevado a cabo este trabajo, sera una gran desventaja si al terminar la ejecucin se perdiera la informacin obtenida y se tuviera que repetir el proceso. Por esta razn, la clase llamada ArbolXML.java posee mtodos capaces de transformar la informacin a un formato que puede reportarse en un archivo con extensin XML. Este formato, tiene una estructura de rbol explcita, y permite adems la especicacin de atributos para cada nodo que pueden determinarse durante el proceso de transformacin. As, los nodos con smbolos terminales, es decir, aquellos que contienen palabras del lenguaje natural analizado, pueden recibir una etiqueta nica, dependiendo de la palabra que contengan. Adicionalmente, pueden numerarse las versiones de los rboles que se estn reportando, y los nodos que contienen smbolos no terminales, o bien, operadores OR y AND. Como ejemplo, la siguiente imagen muestra al archivo con extensin XML que resulta de la ejecucin que procesa la oracin: agua para el que agua pide.

CAPTULO 4.

DISEO DEL ALGORITMO

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.

DISEO DEL ALGORITMO

74

4.4.

Segunda fase de desarrollo

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.

DISEO DEL ALGORITMO

75

4.4.1. En busca de patrones


Si el usuario introdujera la cadena: Conoces a Ana de clase de discretas?, con su respectiva respuesta: No conozco a ninguna Ana, sera deseable que en una segunda sesin de entrenamiento, si el algoritmo recibiera la cadena: Conoces a Gabriela Mistral de la clase de discretas? respondiera: No conozco a ninguna Gabriela Mistral. Para lograr esto, tendramos que trabajar sobre los recorridos en el rbol que estn marcados por las secuencias de nodos que aparecen en el archivo agenda.txt. As, si stas fueran las nicas dos oraciones que hubiera procesado el algoritmo hasta este punto, el rbol reportado en el archivo con extensin xml podra ser el siguiente (hay nodos contrados por cuestin de espacio):

Y el archivo agenda.txt reportara entonces las secuencias de nodos:

CAPTULO 4.

DISEO DEL ALGORITMO

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.

DISEO DEL ALGORITMO

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.

4.4.3. Comentarios nales y futuros trabajos


Este trabajo pudo exhibir la versatilidad del cmputo evolutivo, enfrentando un problema difcil como lo es la produccin de una gramtica libre de contexto para el lenguaje natural. Se observ que la eciencia del anlisis sintctico era de gran importancia para la funcin de evaluacin, y por ello se impusieron limitaciones morfolgicas fuertes a los genotipos de los individuos. Al nal se logr un algoritmo que produjera la gramtica deseada, pero, qu tan buena es realmente esta gramtica? Esta pregunta puede responderse de diferente manera. Si se piensa en qu tanto logra capturar la complejidad y el signicado del lenguaje natural, est claro que se quedara corta. Es ms, por un teorema de Teora de la Computacin[5] sabemos que una gramtica libre de contexto lineal por la derecha, es equivalente a un autmata de estados nitos. Y debera de quedar claro, pues al ver el rbol que se reporta en los archivos con extensin xml, no estamos viendo otra cosa que un autmata de estados nitos. Por otro lado, si pensamos en trminos de aprendizaje computacional, se logr una gramtica que puede extenderse sin lmite, con potencial de ser procesada nuevamente para extraer conocimiento ms renado. Estas pueden ser tal vez las palabras nales de este trabajo: debemos esperar que las computadoras tengan un proceso de aprendizaje similar al de los humanos, en el cual el conocimiento adquirido debe de ser reprocesado para depurarlo y elevar su valor. En trabajos futuros, ser esencial contar con un corpus lo sucientemente robusto para la extraccin de informacin. En el caso de este trabajo, se proporcion al algoritmo un nmero relativamente pequeo de lneas en el archivo dilogo.txt. A continuacin se despliega el diagrama de clases UML del algoritmo desarrollado durante este trabajo. Si la versin de la tesis est impresa, es probable que no se aprecien las letras pequeas, por esta razn se adjunt un disco con el cdigo y las clases compiladas en carpetas con el nombre de Cdigo y Clases, respectivamente, y el archivo del diagrama. Si la versin es electrnica, se econtrarn las

CAPTULO 4.

DISEO DEL ALGORITMO

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.

4.4.3.1. Instrucciones para usar el cdigo


El cdigo puede entrar en funcionamiento ejecutando desde la lnea de comandos las clases Dialogo, o Main. Es decir, introduciendo en la terminal cualquiera de las siguientes lneas:

java Dialogo java M ain


Desde luego, se debe de estar en el directorio donde estn las clases compiladas que se desea ejecutar, y tener la mquina virtual de java instalada. En el primer caso, la clase Dialogo lleva a cabo una sesin de entrenamiento. En el segundo caso, la clase Main permite cargar un nmero arbitrario de oraciones a la estructura de rbol que almacena el conocimiento adquirido, sin necesidad de interaccin con el usuario.

CAPTULO 4.

DISEO DEL ALGORITMO

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.

También podría gustarte