Download Redes Neuronales y Algoritmos Genéticos Angel Fernando Kuri

Document related concepts

Propagación hacia atrás wikipedia , lookup

Red neuronal artificial wikipedia , lookup

Perceptrón multicapa wikipedia , lookup

Conexionismo wikipedia , lookup

Programación de expresiones de genes wikipedia , lookup

Transcript
Redes Neuronales y Algoritmos Genéticos
Angel Fernando Kuri Morales
Resumen
Se presenta un método para entrenar redes neuronales (perceptrones
multicapa) usando algoritmos genéticos. Se hace una breve discusión del modelo
conexionista y el modelo evolutivo. Se presenta un caso de ejemplo y se discuten
las ventajas de esta forma de entrenamiento sobre otras formas más tradicionales.
1. Introducción
Las computadoras son más eficientes (más rápidas y más baratas) cada
día. Esta tendencia se ha mantenido constantemente durante los últimos 50 años
y, como resultado de lo anterior, se hace plausible y atractivo abordar ciertos
problemas usando técnicas que hace pocos años se hubiesen desechado por
incosteables ya que requieren de muchos recursos de cómputo o de mucho
tiempo (estos dos elementos son, de alguna manera, intercambiables). Dentro de
estas técnicas se encuentran, de manera primordial, aquellas que, de alguna
manera, pretenden emular (más adelante aclararemos este concepto) fenómenos
naturales de gran complejidad. La Naturaleza es prolija en el uso de sus recursos.
Los tiene en abundancia y en cantidades que, en la escala humana, son prácticamente ilimitadas. En este trabajo nos referiremos a dos de estos modelos: el
modelo conexionista y el modelo evolutivo. En particular nos referiremos a la
manera en que estos dos modelos se han logrado entrelazar.
En los párrafos que siguen expondremos los principios en los que se basan
ambos modelos. Por razones de espacio nos es imposible abordarlos más que
forma esquemática. Sin embargo, trataremos de sintetizar las bondades que
ofrecen y sus limitaciones. En la segunda parte hablaremos del modelo
conexionista y de las llamadas “Redes Neuronales Artificiales” (RNs). En la tercera
parte nos referiremos al modelo evolutivo y a los llamados “Algoritmos Genéticos”
(AGs). En la cuarta parte esbozaremos algunas áreas de aplicación de lo que
hemos denominados “Redes Neuronales Genéticas” (RNGs) y las ventajas que
éstas ofrecen sobre las RNs más convencionales. Por último, en la quinta parte
ofreceremos algunas conclusiones de índole general.
2. El Modelo Conexionista y las Redes Neuronales Artificiales
En las computadoras tradicionales las instrucciones básicas se ejecutan de
manera secuencial en la unidad central de proceso (UCP). La UCP,
tradicionalmente, sigue la denominada “arquitectura (o modelo) de von Neumann”.
Esta arquitectura define un sistema que, de manera secuencial, va tomando los
contenidos de la memoria central (RAM), interpretándolos y ejecutando la
instrucción correspondiente. En algunos casos la instrucción indica que la
localidad de RAM de la cual tomar la siguiente instrucción no es la subsecuente.
Típicamente el hecho de “saltar” de una localidad de instrucción a otra depende de
ciertas condiciones que los datos deben cumplir. Dicho de manera muy básica, lo
que otorga a la computadora la posibilidad de exhibir un comportamiento
“inteligente” es la capacidad de tomar las decisiones basadas en la satisfacción de
las condiciones anotadas anteriormente. Con esta arquitectura se han
desarrollado sistemas que aprenden, generalizan y clasifican: exhiben comportamientos asociados a un ser inteligente.
Pero hay cosas que un ser humano puede hacer muy fácilmente, con mayor
precisión y más rápidamente que una computadora de von Neumann. Por
ejemplo, un ser humano, al ver la pata de un elefante sabe rápidamente que ES
un elefante. Por contraste, una computadora digital tiene grandes dificultades para
determinarlo. Si consideramos que una UCP actual puede llevar a cabo cientos de
millones de comparaciones por segundo es claro que el mecanismo de proceso
que llevan a cabo los cerebros humanos no puede estar fundamentado en el
mecanismo secuencial de von Neumann. Las neuronas que conforman nuestros
cerebros son mucho más lentas (del orden de milisegundos) que una compuerta
digital y su capacidad de establecer comparaciones lo es también. Por otra parte,
una neurona es una unidad funcionalmente muy simple. Lo único que puede
“hacer” es reaccionar a los estímulos de las neuronas vecinas y emitir un estímulo
que se propaga a algunas de ellas si la suma de los estímulos de entrada excede
de un valor llamado el “umbral” de la neurona.
Derivado de consideraciones como las anteriores, los estudiosos de la
computación se dieron a la tarea de tratar de entender la aparente contradicción
implícita en ellas. Y, sabiendo un poco de la forma como se conforman las redes
neuronales biológicas, es relativamente fácil llegar a las siguientes conclusiones:
a) En una arquitectura neuronal, el potencial primordial de cómputo se
encuentra en la interacción concertada de todas las neuronas que
conforman a la red.
b) La información que se almacena en una red neuronal no se ubica en un
punto específico del espacio; más bien está en el estado de las
neuronas y en la arquitectura misma de la red.
c) La capacidad de cómputo se identifica con el alto número de neuronas
de la red y el aún más alto número de conexiones (“sinapsis”) entre ellas
(en el humano, hay cerca de 1011 neuronas y 1015 interconexiones).
Derivado de lo anterior se plantea un modelo denominado “conexionista” en
el cual se preservan las dos características ya señaladas: unidades de proceso
muy simples llamadas (por analogía) neuronas y un esquema de interconexión
vasto y complejo .
En la figura 1 se muestra un esquema de una red neuronal artificial. En esta figura,
cada círculo representa una neurona y cada línea representa una sinapsis. En la
figura se distinguen cuatro capas (o conjuntos de neuronas). La primera se conoce
como capa de entrada o de presentación; las dos segundas se denominan
“ocultas” porque no tienen contacto directo con el mundo exterior; la última se
llama de “salida”. Implícito en la figura está el hecho de que, a cada sinapsis, se
encuentra asociado un valor numérico llamado el “peso” de la sinapsis. En la
figura ilustrada, cada neurona en todas las capas (excepto la de salida) está
conectada con cada una de las neuronas en la capa siguiente.
Probablemente el tipo de red más usado es el denominado Perceptrón
Multicapa (PMC). Este tipo de red propaga sus señales solo hacia adelante, como
se muestra en la figura 1.
Figura 1. Esquema de una Red Neuronal Artificial
En las RNs cada neurona representa una función simple (típicamente
g(x)=1/[1+exp(x)]). Cuando se presenta un conjunto de datos a una RN, cada
neurona en la capa de entrada transforma sus entradas en una salida y la propaga
hacia otras neuronas en la siguiente capa. Estas, a su vez, transforman y
propagan sus señales de entrada y salida, respectivamente. Las neuronas en la
capa de salida, finalmente, presentan sus salidas al entorno. Se dice que una RN
“aprende” cuando a un conjunto de valores de entrada la red responde con el
correspondiente (y adecuado) conjunto de valores de salida. Esta posibilidad
depende de la arquitectura de la red y de los pesos asociados. Típicamente la
arquitectura es fija y lo que se modifica cuando se “entrena” una red son los
valores de los pesos. Uno de los principales problemas a resolver cuando se
entrena a una red neuronal es cómo obtener los pesos que permitan el ajuste
adecuado a los valores de entrenamiento y lo hagan también a valores fuera del
conjunto de entrenamiento. Es decir, se pide de una RN que aprenda y generalice.
El otro problema fundamental en el campo de las RNs es aquél que se refiere a la
determinación de la arquitectura de la red: cuál es el número de capas óptimo para
resolver un problema dado; cómo interconectar las neuronas; qué funciones de
activación elegir, etc.
El Perceptrón Multicapa de Retropropagación
Lo que se entiende por “adecuado” conjunto de valores de salida está
determinado por una medida del error (entre los valores esperados y aquellos
2
1 p (i)
y − d (i ) .
∑
2 i =1
En donde d es el valor deseado, y es el valor obtenido, p es el número de patrones
de entrenamiento y el superíndice indica el número de categorías. Para minimizar
este error se aplica el denominado “algoritmo de retropropagación”, que es el
siguiente.
1. Inicializar los pesos a valores aleatorios pequeños.
r
2. Aleatoriamente elegir el patrón de entrada x u .
3. Propagar la señal hacia adelante a lo largo de la red.
4. Calcular δ il = g ' (h iL )[d iu − yiL ] . L es el número de capas de la red.
obtenidos) a minimizar. En un PMC esta medida está dada por E =
donde hli representa la entrada neta a la i-ésima unidad de la l-ésima capa
y g’ es la derivada de la función de activación g.
5. Calcular las deltas de las capas precedentes propagando los errores
hacia atrás: δ il = g ' (h li )∑ wlij+1δ lj+1 para l=(L-1),...,1. En donde wijl denota
j
el peso asociado a la conexión entre la i-ésima neurona de la capa l-1
con la j-ésima neurona de la capa l.
6. Actualizar los pesos usando ∆wl ji = η δ li y lj−1
( 0 < η < 1 ).
7. Ir al paso 2 y repetir para el siguiente patrón hasta que el error en la
capa de salida esté debajo de un umbral predeterminado o un número
máximo de iteraciones sea alcanzado.
Este algoritmo está tan generalizado que es conveniente hablar de un PMC de
retropropagación (PMCR).
En un trabajo de esta naturaleza es imposible entrar en los detalles finos de
implantación del PMCR. (El lector interesado puede consultar [8, 9, 10]). Pero es
importante consignar que la operación exitosa de una RN de este tipo depende de
un conjunto de parámetros que el diseñador debe de elegir cuidadosamente a
través de un proceso de prueba y error o, en el mejor de los casos, a ciertos
heurísticos dictados por el tipo de problema y la experiencia en problemas
análogos. Aún siendo así, las RNs han demostrado su eficacia y utilidad
innegables por lo que, hoy por hoy, el paradigma conexionista está firmemente
consolidado.
3. El Modelo Evolutivo y los Algoritmos Genéticos
Para entender el modelo evolutivo es preciso reconocer que la naturaleza
es un ingeniero consumado. Lo es en el sentido de que los seres vivos
representan la solución al problema de la supervivencia de un organismo que se
enfrenta a condiciones determinadas por el entorno en el que se desarrolla. El
más conocido pionero y defensor de este punto de vista fue Darwin quien observó
que las especies evolucionan poco a poco a lo largo de intervalos de tiempo que,
en la escala humana, resultan enormes; que las especies actuales son el fruto de
la acumulación de innumerables cambios paulatinos de otras que las antecedieron
y que lo que dirige esos cambios es la pertinencia que estos tienen al favorecer la
subsistencia de los individuos de la especie en función de su medio ambiente. A
mediados de este siglo se empezaron a comprender las razones por las que así
ocurre. Watson y Crick explicaron el mecanismo de la herencia identificando la
molécula de ADN (ácido desoxirribonucleico) como la portadora de la información
(a nivel celular) que determina las características del individuo. El ADN codifica al
individuo (el genotipo) usando un alfabeto químico muy simple y, al ser interpretado por el organismo que lo gesta, da origen al individuo mismo (el fenotipo).
El ADN, pues, contiene la información de la mejor solución (el individuo) al
problema fundamental del ser vivo (la supervivencia). La teoría de la evolución que
considera esta forma de transmisión de la información de una generación a otra se
denomina neodarwinismo.
En los seres vivos la información, pues, se encuentra contenida en su ADN.
Es información intrínseca que se deriva de un proceso de aprendizaje
generacional. La idea de la Computación Evolutiva y de los Algoritmos Genéticos
(AGs) en particular, es simular parcialmente el proceso anterior para lograr que
una computadora aprenda. Es decir, que encuentre el mejor ADN: el que permita
que el individuo sobreviva mejor frente a las condiciones de su entorno (el
problema a resolver).
El Algoritmo Genético Simple
La literatura reporta un gran número de variantes de AGs. Una de ellas
(propuesta originalmente por Holland) se conoce como el “AG Simple” o “AG
Canónico”. Opera de la siguiente forma [que ilustramos con un ejemplo]:
a) Se identifica una forma de codificar la solución al problema [Encontrar la
solución al sistema 1) f1 ( x, y ) = x 2 + y 2 + x + y − 8 = 0 ; 2) f 2 ( x, y ) = xy + x + y − 5 = 0 .
La solución consiste de dos números. Cada uno de estos números se codifica con
25 bits. El primer bit es el signo; los siguientes cuatro representan la parte entera y
los últimos 20 la parte decimal.]
b) Se genera un número arbitrario n de posibles soluciones, al azar. [En este caso
suponemos que n = 100 por lo que se generan 100 cadenas, cada una de ellas de
50 bits de longitud a las que se denomina el cromosoma o genoma]. Cada una de
estas posibles soluciones es un individuo de la población. En un AG el individuo es
el genoma.
c) Se determina una medida de adaptación de los individuos. Esta medida nos
permite calificar qué tan bien se adaptan al medio ambiente. [En el ejemplo, la
medida de adaptación es: Minimizar f1 ( x, y ) + f 2 ( x, y ) sujeto a que se cumpla que
f1 ( x, y ) ≥ 0 y f 2 ( x, y ) ≥ 0 . Aquellos individuos que satisfagan las condiciones y que
induzcan valores menores en f1 ( x, y ) y f 2 ( x, y ) reciben una mejor evaluación; el
medio ambiente les es más favorable]. Los individuos se evalúan y catalogan de
acuerdo con su desempeño y se otorga una mayor probabilidad de supervivencia
a los individuos más aptos. Puede pensarse que las calificaciones de los
individuos definen las zonas de una ruleta. A mayor probabilidad, mayor área le
toca al individuo. En la figura 2 se ilustra un caso sencillo (n = 4 ).
d) La ruleta se gira n veces. Se seleccionan los n individuos elegidos en este
proceso. Nótese que los individuos más aptos tienen mayores probabilidades de
ser elegidos y que puede haber varias copias del mismo individuo. Aunque
estadísticamente podemos esperar que los mejores individuos prevalezcan, nunca
se predetermina cuáles son estos. En ese sentido, la selección induce una
búsqueda aleatoria dirigida. Tenemos, pues, una nueva población resultante de
aplicar el operador de selección.
e) Ahora seleccionamos al azar una pareja de individuos de la nueva población. El
ADN de éstos (que llamamos los padres) se va a combinar con un proceso muy
simple: escogemos un punto de cruzamiento aleatoriamente e intercambiamos los
segmentos correspondientes a cada uno de los padres. Este proceso se ilustra en
Figura 2. Selección Proporcional.
la figura 3. El denominado cruzamiento en un punto se repite n/2 veces, de
manera que n padres dan origen a n descendientes o hijos. La población derivada
del operador de cruzamiento es distinta a la población padre.
f) Por último, induciremos el tercer operador del AGS: el operador de mutación. Su
aplicación consiste, simplemente, en elegir aleatoriamente un cierto número de
bits de los genomas de la población y cambiarlos: trocar los 0s por 1s y viceversa.
La población mutada es distinta de la población cruzada.
g) Los individuos de la nueva población (seleccionada, cruzada y mutada) se
evalúan de uno en uno y los pasos (d), (e) y (f) se repiten hasta que se alcanza
algún criterio de terminación. Uno muy simple es establecer a priori el número de
iteraciones (generaciones) durante las cuales se aplicarán los operadores
genéticos.
En el ejemplo que esbozamos, nuestra meta es que el AG termine
encontrando aquellos individuos que satisfagan el sistema de (a); es decir, que
encuentre los valores de las variables x e y que hagan cero a f1(x,y) y a f2(x,y)
simultáneamente. Nosotros hicimos un proceso análogo al mencionado y el AG
nos entregó los siguientes valores: x=0.99879679; y=2.00275002. El lector puede
verificar fácilmente que una solución exacta está dada por x=1 y y=2. El error en la
solución encontrada por el AG es de, aproximadamente, 0.01. De manera que,
entre otras muchas aplicaciones, un AG nos ofrece un método general de
resolución de ecuaciones simultáneas no lineales!
Figura 3. Cruzamiento en un Punto.
Decir que un AG funciona y entender por qué lo hace (y cuando no) son
asuntos muy distintos. En un trabajo de esta naturaleza es imposible siquiera
tratar de analizar el mecanismo genético. El lector interesado puede consultar, por
ejemplo, [11, 12, 13].
4. Redes Neuronales Genéticas
Como ya se anotó, los PMCRs dependen, de manera básica, del algoritmo
de retropropagación (AR). Varios de los parámetros que un usuario de una RN
debe determinar son impuestos por dicha forma de entrenamiento. Por ejemplo η
y L en las fórmulas arriba, así como el momento, el factor de decaimiento de los
pesos, el umbral de discriminación y la constante de tiempo (que no se habían
mencionado1 antes). Otros más no dependen de AR. Por ejemplo, el tipo de
función de activación, el esquema de interconexión de la red, las disciplina de
1
El lector interesado puede referirse a [7].
aprendizaje, la forma de presentación de las muestras de entrenamiento, etc. ¡En
un PMCR podemos contar más de 45 parámetros!
La idea que surge de inmediato, al conocer las bondades de los dos
paradigmas anotados, el conexionista y el evolutivo, es evidente: sería posible
hacer que una RN fuese optimizada (es decir, que sus parámetros de operación
fuesen elegidos de alguna manera que garantizara que estos han sido elegidos de
manera cercana al óptimo)? La respuesta, evidente también, es SI. Podemos
“pedirle” a un AG que busque (y encuentre) por nosotros cómo establecer a) La
arquitectura de la red y/o b) Los valores de los parámetros de la misma. De esta
forma, el proceso de elección del detalle de una RN para resolver tal o cual
problema se hace menos heurístico. Se han desarrollado varios enfoques para
estos dos problemas. Por ejemplo, Montana y Davis [1] han evolucionado los
pesos de las RNs; Miller, Todd y Hegde [2] han evolucionado la arquitectura de la
RN usando codificación directa y Kitano [3] usó codificación gramátical para el
mismo propósito. Una discusión más detallada de tales aplicaciones puede ser
encontrada en [4] y [5]. Para ello, por supuesto, hay que presumir que un AG no
se encuentra plagado por la misma enfermedad: la necesidad de determinar sus
propios parámetros de manera casuística.
De lo anotado arriba no es evidente que este sea el caso. Parecería que un
AG sufre de la misma dolencia que una RN: la necesidad de ser “entonado” para
cada problema2. En los trabajos que se reportan los autores, de hecho, usaron
AGs “clásicos”. Pero, recuerde el lector, que no existe “el” AG. De hecho, existe un
sinnúmero de variantes de AGs. Una vez elegida la variante adecuada, podemos
desligarnos (relativamente) de la necesidad de establecer parámetros de manera
heurística.
En un trabajo reciente [6] hemos atacado el problema de entrenar un PMCR
usando un tipo de AG que brinda solidez y nos permite prescindir de la definición
de parámetros antes mencionada. Este tipo de AG que hemos denominado
“ecléctico” (AGE) incorpora una serie de características que lo hacen
esencialmente diferente de un AG simple, a saber: Dada una población de N
individuos: a) Los mejores N individuos se mantienen siempre en la población
(elitismo global3), b) Durante el cruzamiento, las parejas son seleccionadas de
manera determinística apareando el mejor individuo con el peor; el segundo mejor
con el segundo peor, y así sucesivamente, c) El cruzamiento se hace de manera
anular, d) Los parámetros del AGE evolucionan junto con la mejor solución y e) El
AGE determina, de manera automática, la conveniencia de invocar un algoritmo
complementario llamado escalador de mutación aleatoria. Con este algoritmo se
resuelve una serie de problemas inherentes a un AGS4.
Cuando se usa un AGE en vez del algoritmo de retropropagación se hace
innecesario definir los ya mencionados η , L, el momento, el factor de decaimiento
2
En un AG simple hay que definir, a priori, el tamaño de la población, la probabilidad de
cruzamiento y la probabilidad de mutación.
3
En la literatura, a esta forma de manejo de la población se le denomina “selección µ + λ ”.
4
El lector interesado en el detalle del AGE puede consultar [7].
de los pesos, el umbral de discriminación y la constante de tiempo. Más aún,
podemos tratar de minimizar el error de entrenamiento relativo a otras medidas de
distancia. En el trabajo mencionado hemos minimizado las siguientes normas5:
L
n
1
O ( i )− Z ( i )
MEE = ∑∑ 10
s s i =1
L
n
1
MAE = ∑∑ O(i ) − Z (i )
s s i =1
L
n
1
MSE = ∑ ∑ (O(i ) − Z(i ))2
s s i =1
SAE = max O(i ) − Z (i )
s ,i
Estas normas simplemente denotan formas de medir qué tan adecuada es la
respuesta de la i-ésima neurona en relación a la respuesta deseada.
Hay dos medidas de qué tan exitoso es un método de entrenamiento. Una es el
índice de entrenamiento (IE) que definimos como la razón entre el número de
valores correctos arrojados por la RN cuando se le presenta el conjunto de
entrenamiento y el número de elementos del conjunto. El otro es el índice de
generalización (IG) que es la razón entre el número de valores correctos obtenidos
por la red cuando se le presentan datos fuera del conjunto de entrenamiento. El
IE establece qué tan bien una RN puede aprender; el IG mide qué tan bien la RN
puede generalizar. Encontramos tanto el IE como el IG para las redes neuronales
genéticas. Condujimos varios conjuntos de corridas. Entrenamos la red de 5
formas diferentes: uno para cada norma definida y uno para el PMCR tradicional.
Un Problema de Predicción
Los resultados de un problema de predicción se muestran en la Tabla 1.
Aquí se tomaron las ventas anuales de una aerolínea comercial y, de las ventas
del año inmediato anterior y se predijo el comportamiento de sus ventas en el año
inmediatamente siguiente. Este es un problema de interés práctico pero de difícil
solución usando métodos de aproximación tradicionales. Particularmente, es difícil
encontrar una forma adecuada de extrapolar los datos. Las RNs funcionan
sorprendentemente bien (como se verá más adelante) pero sufren de las
desventajas ya citadas. Entrenamos la red usando el AR clásico y la entrenamos,
también, evolucionando los pesos asociados a las neuronas usando las normas
antes mencionadas. La conclusión es que podemos prescindir del algoritmo de
entrenamiento típico (retropropagación) y reemplazarlo por un AG. Con ello
5
O(i) denota el valor observado y Z(i) denota el valor deseado.
disminuimos sensiblemente la necesidad de fijar parámetros de los que depende
la operación de la RN.
Tabla 1. Aplicación de Distintas Normas
para un Problema de Predicción
PRUEBA (12 ELEMENTOS)
Error Promedio
MEE
5.74%
MAE
9.34%
MSE
10.04%
SAE
9.50%
PMCR
17.67%
ENTRENAMIENTO
(108 ELEMENTOS)
Error Promedio
MEE
10.62%
MAE
5.27%
MSE
5.26%
SAE
5.68%
PMCR
3.35%
Figura 4. Predicción usando RNGs.
5. Conclusiones
Hay problemas de aprendizaje que pueden atacarse ventajosamente
aprovechando las características del modelo conexionista. Sin embargo, la
obtención de la correcta disposición de los elementos y/o parámetros de dichas
redes ubica al usuario en una posición incierta. Depende de su habilidad personal
para poder sacar aprovechar las arquitecturas neuronales. Para evitar esta
dependencia casuística es posible usar el modelo evolutivo para afinar el
comportamiento de la red.
En este trabajo hemos no solamente mostrado que es posible combinar
ambos paradigmas con las ventajas esperadas, sino que es posible determinar la
bondad de las RNs usando otras medidas de desempeño.
El campo donde se desarrollan ambos modelos es aún incipiente pero está
tomando cada vez más auge. Debemos de esperar, en el futuro inmediato, que
haya interesantes desarrollos que permitan explotar las ventajas conjuntas de
ambos modelos.
Referencias
[1] Montana, D.J., and Davis, L.D., “Training feedforward Networks using Genetic
Algorithms”, in Proceedings of the International Joint Conference on Artificial
Intelligence, Morgan Kauffman, 1989.
[2] Miller, G.F., Todd, P.M., and Hedge, S.U., “Designing neural networks using
genetic algorithms”, in J.D. Schaffer, ed., Proceedings of the Third International
Conference on Genetic Algorithms, Morgan Kauffman, 1989.
[3] Kitano, H., “Designing Neural Networks using genetic algorithms with graph
generation system”, Complex Systems 4:461-476, 1990.
[4] Yao, X., “A Review of Evolutionary Artificial Neural Networks”, International
Journal of Intelligent Systems, 8:539-567, 1993.
[5] van Rooij, A.J.F., Jain, J.C., and Johnson, R.P., Neural Network Training using
Genetic Algorithms, World Scientific, 1996.
[6] Kuri, A., “Training Neural Networks using Non-standard Norms – Preliminary
Results”, MICAI 2000.
[7] Kuri, A., A Comprehensive Approach to Genetic Algorithms in Optimization and
Learning, Theory and Applications, Volume 1: Foundations, pp. 215-219, Ed.
Politécnico, 1999.
[8] Jain, A., Mohiuddin, K., “Artificial Neurla Networks: A Tutorial”, Computer, IEEE
Computer Society, pp. 31-44, March, 1996.
[9] Yao, X., “Evolving Artificial Neural Networks”, Proceedings of the IEEE,
87(9):1423-1447, September, 1999.
[10] Kuri, A., “Non-standard Norms in Genetically Trained Neural Networks”, First
IEEE Symposium on Combinations of Evolutionary Computation and Neural
Networks, May 11-12, 2000, San Antonio.
[11] Holland, J., “Adaptation in Natural and Artificial Systems”, Ann Arbor, Mich.,
University of Michigan Press, 1975.
[12] Mitchell, M., Forrest, S., and Holland, J., “The Royal Road for Genetic
Algorithms: Fitness Landscapes and GA Performance”, in F.J. Varela and P.
Bourgine, eds., Toward a practice of autonomous systems: Proceedings of the
First European Conference on Artificial Life, MIT Press, 1992.
[13] Rudolph, G., “Convergence Analysis of Canonical Genetic Algorithms”, IEEE
Transactions on Neural Networks, 5(1):96-101, January, 1997.
Angel Fernando Kuri Morales
Profesor investigador del Centro de Investigación en Computación (CIC) del
Instituto Politécnico Nacional desde 1996. En 1974 se graduó como Ingeniero
Mecánico Electricista en la Universidad Anáhuac. En 1976 recibió un grado de
maestría en Ciencias de la Computación de la Universidad de Illinois en UnrbanaChampaign, USA. En 1986 recibió el grado doctoral de Kennedy-Western
University, con la tesis Genetic Automata and Information System Losslessness. El
Dr. Kuri ha incursionado en los campos de inteligencia artificial, diseño de
sistemas electrónicos digitales, arquitectura de computadoras, telecomunicaciones, desarrollo de sistemas de información, modelación matemática de
sistemas de información, entre otros. En varias ocasiones ha sido incluido en las
ediciones de Who is Who in The World. Ha sido profesor titular del programa de
Ciencias de la Computación de la UNAM desde 1978. Ha sido socio fundador de
las empresas Micromex, Idet Ingeniería, Idet Consultores e Idet Centro de
Capacitación. En 1999 publicó el libro A Comprehensive Approach to Genetic
Algorithms in Optimization and Learning. Se ha desempeñado como Subdirector
de Investigación Aplicada del CIC desde 1996.
Teléfono:
Fax:
e-mail:
5729-6000 ext 56547
5729-6000 ext 56607
[email protected]