herramienta de software para entrenar y simular redes neuronales

Anuncio
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
BIBLIOTECA EDUARDO COTE LAMUS
RESUMEN - TESIS DE GRADO
AUTORES : A LIRIO MAYORGA DELGADO Y HECTOR JULIO PEDROZA
GARZON
FACULTAD: INGENIERIAS
PLAN DE ESTUDIOS:. DE INGENIERÍA DE SISTEMAS
DIRECTOR : NANCY TORCOROMA VELÁSQUEZ
TÍTULO DE LA TESIS: HERRAMIENTA DE SOFTWARE PARA ENTRENAR Y
SIMULAR REDES NEURONALES ARTIFICIALES.
RESUMEN
El objetivo principal de la presente investigación fue recopilar y analizar la
información existente sobre las redes neuronales artificiales, contemplando
todos los aspectos relacionados con la estructura, entrenamiento y
formulación matemáticas de los diferentes algoritmos. Se siguió una
metodología precisa, acorde con el tipo de investigación, esto con el fin de
garantizar la eficacia de los resultados. La investigación concluye con la
presentación de una herramienta de software que implementa los algoritmos
más representativos, permitiendo poner en practica todos los conocimientos
CARACTERISTICAS
reunidos en 208
este documento.
PLANOS ______ILUSTRACIONES_____CD ROM 1 .
PAGINAS
CARACTERÍSTICAS
PAGINAS
208
PLANOS ______ILUSTRACIONES_____CD ROM 1 .
HERRAMIENTA DE SOFTWARE PARA ENTRENAR Y SIMULAR REDES
NEURONALES ARTIFICIALES
HECTOR JULIO PEDROZA GARZON
ALIRIO MAYORGA DELGADO
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
FACULTAD DE INGENIERIAS
PLAN DE ESTUDIOS DE INGENIERIA DE SISTEMAS
SAN JOSE DE CUCUTA
2003
HERRAMIENTA DE SOFTWARE PARA ENTRENAR Y SIMULAR REDES
NEURONALES ARTIFICIALES
HECTOR JULIO PEDROZA GARZON
ALIRIO MAYORGA DELGADO
Proyecto de grado presentado como requisito para optar
el título de Ingeniero de Sistemas
Director
NANCY TORCOROMA VELASQUEZ
Ingeniero de Sistemas
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
FACULTAD DE INGENIERIAS
PLAN DE ESTUDIOS DE INGENIERIA DE SISTEMAS
SAN JOSE DE CUCUTA
2003
Primero le doy gracias a Dios por haberme
dado esta gran oportunidad.
Dedicada especialmente a mis padres por su
gran apoyo tanto en lo económico como en lo moral.
A
mis
hermanos
por
el
apoyo
brindado
A Aleida por brindarme su amistad, su apoyo y por ser
una persona incondicional.
A mi pequeña hija por ser parte importante de mi
esperanza.
A mi amigo y compañero de tesis.
Alirio
A todos los que siempre estuvieron conmigo...
Héctor
AGRADECIMIENTOS
Los autores expresan sus agradecimientos a:
Dios, por darnos el don de ser profesionales.
Nancy Torcoroma Velásquez, Ingeniera de Sistemas y Directora del proyecto, por sus
valiosas orientaciones.
Milton Vera, por su gran orientación en el manejo y uso del lenguaje de
programación(JAVA).
Mery Yaneth Sarmiento, Ingeniera de Sistemas y Directora del grupo de investigación en
inteligencia artificial de la Universidad Francisco de Paula Santander, por su constante
motivación y apoyo en el trabajo realizado.
Los integrantes del grupo de investigación en Inteligencia Artificial (GIIA)
David Gregorio Maurello Rincón, Ingeniero de sistemas.
CONTENIDO
Pág.
INTRODUCCION
1
1
3
PLANTEAMIENTO DEL PROBLEMA
1.1 TITULO
3
1.2 FORMULACION DEL PROBLEMA
3
1.3 OBJETIVOS
4
1.3.1
Objetivo general
4
1.3.2
Objetivos específicos
4
1.4 JUSTIFICACION
5
1.5 ALCANCES Y LIMITACIONES
6
1.5.1
Alcances
6
1.5.2
Limitaciones
7
2. MARCO CONCEPTUAL
8
2.1
INTELIGENCIA ARTIFICIAL
8
2.2
LA NEURONA BIOLÓGICA
9
2.2.1
Partes de la neurona biológica
10
2.2.1.1 El cuerpo
10
2.2.1.2 Las dendritas
11
2.2.1.3 El axón
11
2.2.1.4 Las sinapsis
12
2.2.1.5 La membrana celular
12
2.2.2
Funcionamiento y comunicación interneuronal
13
2.2.3
Aprendizaje en la neurona biológica
14
LA NEURONA ARTIFICIAL
16
Elementos fundamentales
17
2.3.1.1 Sinapsis o pesos de interconexión
17
2.3.1.2 Un sumador
17
2.3.1.3 Función de activación o de transferencia
17
2.4
18
2.3
2.3.1
REDES NEURONALES ARTIFICIALES
2.4.1
Definición
18
2.4.2
Historia
18
2.4.3
Taxonomía
22
2.4.3.1 Fase de diseño
22
2.4.3.2 Fase de aprendizaje
22
2.4.3.3 Fase de prueba
22
2.4.4 Elementos de una red neuronal artificial
23
2.4.4.1 Neuronas
23
2.4.4.2 Estado de activación
23
2.4.4.3 Función de salida o de transferencia
24
2.4.4.4 Conexiones entre neuronas
27
2.4.4.5 Regla de propagación
28
2.4.4.6 Función o regla de activación
29
2.4.4.7 Regla de aprendizaje
30
2.4.4.8 Representación del ambiente
30
2.4.5 Clasificación de las redes neuronales artificiales
30
2.4.5.1 Según el mecanismo de aprendizaje
30
2.4.5.2 Según su topología
34
2.4.5.3 Según el tipo de asociación entre la información de entrada y salida
35
2.4.5.4 Según su modo de operación
36
2.4.6 Estado del arte de las redes neuronales artificiales
37
2.4.7 Aplicaciones de las redes neuronales artificiales
42
2.4.8 Ventajas y desventajas de las redes neuronales artificiales
42
3
ESTRUCTURA Y FORMULACION MATEMÁTICA DE LOS PRINCIPALES
ALGORITMOS
DE
ENTRENAMIENTO
EN
REDES
NEURONALES
ARTIFICIALES
44
3.1 RED TIPO PERCEPTRON
44
3.1.1 Perceptron básico unicapa
45
3.1.1.1 Funcionamiento
46
3.1.1.2 Estructura y aprendizaje
47
3.1.2 Perceptron multicapa
49
3.1.2.1 Funcionamiento perceptron multicapa
49
3.1.2.2 Estructura y aprendizaje perceptron multicapa
50
3.1.2.3 Problemas del perceptron multicapa
53
3.1.3 Problemas generales del perceptron
53
3.2 PROPAGACION INVERSA(BACKPROPAGATION)
54
3.2.1 Regla delta generalizada
55
3.2.1.1 Momentun en la regla delta generalizada
55
3.2.2 Funcionamiento
55
3.2.2.1 Fase hacia delante
56
3.2.2.2 Fase hacia atrás
57
3.2.3 Estructura y aprendizaje
57
3.2.4 Importancia
62
3.2.5 Problemas generales
62
3.3 ALGORITMO DE KOHONEN
65
3.3.1 Funcionamiento
65
3.3.2 Estructura y aprendizaje
67
3.4 MEMORIAS ASOCIATIVAS
70
3.4.1 Red de hopfield
71
3.4.1.1 Funcionamiento
73
3.4.1.2 Aprendizaje de la red de hopfield
75
3.4.1.3 Estabilidad y función de energía
78
3.4.1.4 Algoritmo secuencial (Asíncrono)
79
3.4.1.5 Algoritmo paralelo (Sincrono)
80
3.4.1.6 Problemas de la red de hopfield
82
3.4.2 Memorias asociativas bidireccionales BAM
83
3.4.2.1 Funcionamiento
83
3.4.2.2 Aprendizaje
85
3.4.2.3 Capacidad de memoria en la red BAM
85
3.5 ALGORITMOS GENETICOS
86
3.5.1 Historia
86
3.5.2 Definición
86
3.5.3 Clases de algoritmos genéticos
87
3.5.4 Funcionamiento
88
3.5.5 Componentes y características
90
3.5.5.1 Problema a ser optimizado
90
3.5.5.2 Representación de las soluciones del problema
90
3.5.5.3 Decodificación del cromosoma
91
3.5.5.4 Evaluación
91
3.5.5.5 Selección
91
3.5.5.6 Operadores genéticos
94
3.5.5.7 Inicialización de la población
95
3.5.5.8 Parámetros y criterios de parada
95
3.5.6 Fundamentos matemáticos
96
3.5.6.1 Análisis del efecto de la selección
97
3.5.6.2 Análisis del efecto de cruce
98
3.5.6.3 Análisis del efecto de mutación
98
3.5.7 Aprendizaje
99
3.6 SISTEMAS DIFUSOS
100
3.6.1 Conjuntos difusos
100
3.6.2 Lógica difusa
101
4. ARQUITECTURA DEL SISTEMA EN LA METODOLOGIA OMT
103
4.1 ANALISIS ORIENTADO A OBJETOS
103
4.1.1 Del problema
103
4.1.1.1 Formulación del problema
103
4.1.1.2 Descripción del problema
103
4.1.2 Modelado de objetos
104
4.1.2.1 Objetos y clases
105
4.1.2.2 Diccionario de datos
106
4.1.2.3 Identificación de asociaciones
108
4.1.2.4 Atributos identificativos
109
4.1.3 Modelado dinámico
110
4.1.3.1 Escenarios
111
4.1.3.2 Identificación y seguimiento de sucesos
135
4.1.3.3 Diagramas de estado
145
4.1.4 Modelo funcional
150
4.1.4.1 Listado de valores de entrada y de salida
151
4.1.4.2 Diagramas de flujo de datos (DFD)
151
4.2 DISEÑO ORIENTADO A OBJETOS
155
4.2.1 Diseño del sistema
155
4.2.1.1 Identificación de la concurrencia
155
4.2.1.2 Asignación de subsistemas a procesadores y tareas
155
4.2.1.3 Administración de almacenes de datos
156
4.2.1.4 Manejo de recursos globales
156
4.2.1.5 Selección de una implementación de control de software
157
4.2.1.6 Manejo de condiciones de contorno
158
4.2.1.7 Arquitectura del sistema
159
4.2.2 Diseño de objetos
160
4.2.2.1 Visión general del diseño de objetos
160
4.2.2.2 Diseño de algoritmos para los métodos de las clases
161
4.2.2.3 Diagrama de control en el sistema Intelligent Spider
170
4.3 IMPLEMENTACION Y PRUEBAS
171
4.3.1 IMPLEMENTACION
171
4.3.2 PRUEBAS
177
5. CONCLUSIONES
178
6. RECOMENDACIONES
180
BIBLIOGRAFIA
181
ANEXOS
184
LISTA DE FIGURAS
Pág.
Figura 1. Partes de una neurona biológica
10
Figura 2. Coincidencia pre-post, ley de Hebb
15
Figura 3. Coincidencia pre-moduladora.
16
Figura 4. Esquema típico de la neurona artificial
16
Figura 5. Función de transferencia limitador fuerte
24
Figura 6. Función de transferencia lineal
25
Figura 7. Función de transferencia sigmoidal
26
Figura 8. Función tangente hiperbólica
26
Figura 9. Conexiones entre elementos de la misma capa
27
Figura 10. Conexiones entre elementos de diferente capa
28
Figura 11. Conexiones recurrentes
28
Figura 12. Estructura perceptron unicapa
46
Figura 13. Estructura del perceptron multicapa
49
Figura 14. Estructura algoritmo propagación inversa
54
Figura 15. Problema de los mínimos locales
64
Figura 16. Estructura red de kohonen
67
Figura 17. Modelo de red de hopfield
71
Figura 18. Estructura 1 de las memorias asociativas bidireccionales
83
Figura 19. Estructura 2 de las memorias asociativas bidireccionales
84
Figura 20. Diagrama algoritmos genéticos
89
Figura 21. Modelo de objetos de herramienta de software entrenador de redes
neuronales
104
Figura 22. Seguimiento de sucesos para escenario principal del sistema
136
Figura 23. Sucesos para escenario perceptron
137
Figura 24. Sucesos para escenario propagación inversa
138
Figura 25. Sucesos escenario hopfield
139
Figura 26. Sucesos escenario kohonen
140
Figura 27. Sucesos escenario memorias asociativas
141
Figura 28. Sucesos escenario algoritmos genéticos
142
Figura 29. Sucesos escenario generar código
143
Figura 30. Sucesos escenario propagar patrones
144
Figura 31. Diagrama de estados escenario principal del sistema
146
Figura 32. Diagrama de estados escenario perceptron
147
Figura 33. Diagrama de estados escenario propagación inversa
148
Figura 34. Diagrama de estados escenario hopfield
149
Figura 35. Diagrama de estados escenario propagar patrones
150
Figura 36. Listado de valores de entrada y de salida
151
Figura 37. Diagrama de flujo de datos del nivel más general para el sistema
intelligent spider
152
Figura 38. Diagrama de flujo de datos para el proceso establecer enlace
152
Figura 39. Diagrama de flujo de datos para el proceso seleccionar algoritmo
153
Figura 40. Diagrama de flujo de datos para el proceso propagar
153
Figura 41. Diagrama de flujo para el proceso entrenar
154
Figura 42. Diagrama de flujo de datos para el proceso registrar valores
154
Figura 43. Arquitectura del sistema entrenador de redes neuronales artificiales
160
Figura 44. Modelo de objetos optimizado para la herramienta de entrenamiento de
redes neuronales artificiales
161
Figura 45. Diagrama de control para el sistema intelligent spider
170
LISTA DE CUADROS
Pág.
Cuadro 1. Características de los tipos de redes neuronales mas importantes en la
historia
21
Cuadro 2. Paradigmas de aprendizaje y algoritmos mas conocidos
31
LISTA DE ANEXOS
Pág.
Anexo A. Manual de usuario
185
Anexo B. Detalles técnicos
199
Anexo C. Encuesta
206
INTRODUCCION
El propósito fundamental de los sistemas basados en redes neuronales es mantener un
control centralizado de varias funciones, aplicando mecanismos de aprendizaje que imiten
el comportamiento de los seres humanos para lograr la autonomía y eficiencia que los
caracteriza.
Estos sistemas, actualmente son utilizados en el manejo y control de funciones sensoriales
artificiales, para hacer que las maquinas puedan ver, oír y tomar decisiones sobre diferentes
fenómenos; para lograr esto, se requiere la integración de diferentes tecnologías(hardware
y software) y las más modernas técnicas de representación y gestión del conocimiento.
A lo largo de los últimos 30 años se han venido desarrollando métodos y técnicas en
inteligencia artificial, y aunque los resultados obtenidos son en gran parte satisfactorios; se
espera que el desarrollo de nuevas tecnologías y la masificación del paralelismo a nivel de
circuitos computacionales den un nuevo auge al estudio de esta rama de la ciencias
computacionales.
Para comprender el funcionamiento de las redes neuronales artificiales se necesita estudiar
el funcionamiento biológico del cerebro humano, ya que este es la base de los diferentes
modelos matemáticos que tratan de simular las características propias de la inteligencia
humana. En este documento se explica detalladamente el paralelo entre neurona biológica
2
y neurona artificial a nivel de estructura, funcionamiento y modo de aprendizaje para luego
llevar al lector hacia el concepto de red neuronal artificial, realizando un breve recorrido de
su historia y aportes en la inteligencia artificial, destacando las áreas donde se han aplicado,
los trabajos y autores mas importantes, realizando un análisis de las características y
ventajas que ofrece esta tecnología con respecto a los métodos convencionales y a otras
técnicas de inteligencia artificial.
Esta investigación profundiza sobre los algoritmos de: perceptron, propagación inversa,
hopfield, kohonen, memorias asociativas y algoritmos genéticos haciendo énfasis en las
formulas matemáticas que dan soporte a cada uno de ellos, estos algoritmos son
considerados los mas relevantes en el proceso de aprendizaje de las redes neuronales
artificiales, para cada uno de ellos se explica el origen, funcionamiento, ventajas,
aplicaciones y problemas, manteniendo un lenguaje claro y unificado para representar los
procesos.
Este trabajo concluye con la presentación de una herramienta de apoyo para el estudio de
las redes neuronales artificiales, su diseño la hace apropiada tanto para principiantes como
expertos interesados en desarrollar aplicaciones basadas en esta tecnología.
1. PLANTEAMIENTO DEL PROBLEMA
1.1 TITULO
HERRAMIENTA DE SOFTWARE PARA ENTRENAR Y SIMULAR REDES
NEURONALES ARTIFICIALES.
1.2 FORMULACION DEL PROBLEMA
Las redes neuronales artificiales son un tema complejo. Requieren mucha investigación,
paciencia, dedicación e ingenio de parte de aquellos interesados en usarlas como alternativa
para solucionar problemas donde el computo tradicional ha tenido gran dificultad durante
años.
Para entender, que son las redes neuronales artificiales, como funcionan y en que se
aplican se hace necesario reunir y procesar una gran cantidad de información, que en
nuestro medio se encuentra dispersa, es compleja y muchas veces errada. Además no se
cuenta con talento humano capacitado y experimentado en el área, que este en capacidad de
guiar y resolver dudas en eventuales procesos investigativos que sobre esta área se pueden
desarrollar.
El material bibliográfico que sobre el particular se consigue carece de
profundidad, dificultando la comprensión del verdadero sentido y potencial de la
computación inteligente; igualmente ocurre con las herramientas de apoyo que hasta el
momento se han desarrollado, las cuales presentan serias limitaciones obligando a sus
4
usuarios a moldear sus necesidades de acuerdo a las alternativas ofrecidas, lo cual va en
contra de la particularidad de cada problema.
1.3 OBJETIVOS
1.3.1 Objetivo general. Diseñar una herramienta de software que permita entrenar y
simular Redes Neuronales Artificiales.
1.3.2 Objetivos específicos.
Realizar una búsqueda bibliográfica actualizada acerca del estado del arte en las
redes neuronales y los métodos usados para su modelación y entrenamiento, esto
con el fin de generar documentación formal acerca del área de estudio.
Diseñar un sistema computacional que cumpla con las características necesarias
para modelar redes neuronales artificiales teniendo en cuenta las diferentes
aplicaciones que se pueden tratar.
Desarrollar un software que permita entrenar redes neuronales artificiales para
cualquier aplicación respondiendo a las exigencias de la puesta en marcha del
sistema.
Comprobar la eficacia del sistema a través de la evaluación de los resultados
obtenidos.
5
Utilizar una metodología orientada a objetos para el diseño y el desarrollo del
software.
Servir de base a las investigaciones, que en redes neuronales artificiales, se vienen
realizando en la Universidad Francisco de Paula Santander.
1.4 JUSTIFICACIÓN
La Universidad Francisco de Paula Santander no cuenta con herramientas apropiadas para
el desarrollo de investigaciones en el área de inteligencia artificial, y aunque estas se
pueden conseguir en el mercado su costo es muy elevado y no ofrecen soluciones
completas, sino, por el contrario muy particulares de acuerdo a problemas específicos,
predeterminando el método de solución y limitando al usuario a enfocar su investigación en
el mismo sentido que la herramienta propone.
Esta herramienta de software se crea para brindar apoyo a las investigaciones que se
vienen realizando en el área de inteligencia artificial y que prevén el uso de redes
neuronales como parte de su desarrollo. Es base fundamental para llevar a cabo algunas de
las etapas trazadas en los dos macroproyecto que se están desarrollando al interior del
grupo de investigación en inteligencia artificial(GIIA).
Teniendo en cuenta las observaciones hechas en el proceso de acreditación del plan de
estudios de Ingeniería de Sistemas donde se sugiere la iniciación de procesos investigativos
en diferentes áreas, esta herramienta sirve de apoyo a la investigación en el área de
6
inteligencia artificial, proporcionando un soporte a estudiantes y docentes involucrados en
las materias electivas referentes a “inteligencia artificial”, “redes neuronales artificiales”,
“sistemas expertos” e “imágenes y robótica”.
1.5 ALCANCES Y LIMITACIONES
1.5.1 Alcances.
Presentación de documentación formal de las diferentes arquitecturas y algoritmos
de entrenamiento para redes neuronales artificiales.
Estudio matemático de las formulas que representan los diferentes tipos de redes
neuronales.
Para el diseño y programación de la herramienta de software se utilizara una
metodología orientada a objetos, este sistema se realizará en lenguaje de
programación Java garantizando así la concurrencia lógica de procesos a través de
la programación de hilos y a demás la capacidad para funcionar en un entorno de
red.
Apoyo al plan de capacitación para los integrantes del grupo de investigación en el
área de Inteligencia Artificial, dicho plan estará respaldado por manuales técnicos y
de usuario.
7
1.5.2 Limitaciones.
Se seleccionaran las arquitecturas y algoritmos mas relevantes en el diseño y
entrenamiento de redes neuronales.
No todos los problemas de aplicación se pueden solucionar con redes neuronales
debido a que no funcionan correctamente.
En la formalización del conocimiento se usaran reglas de producción.
Para la simulación de las Redes Neuronales no se utilizará un software de monitoreo
especial.
Se va a utilizar el mismo software creado y este incluye el
comportamiento de la red para el problema planteado.
2. MARCO CONCEPTUAL
2.1 INTELIGENCIA ARTIFICIAL
Es una rama de la ciencia de la computación que permite a las máquinas extraer y
automatizar el comportamiento de los seres inteligentes, mediante la implementación de
algoritmos matemáticos.
La inteligencia artificial a través de módulos computacionales puede ser aplicada en
procesos tales como: la percepción, comprensión del lenguaje natural, aprendizaje, juegos,
demostración de teoremas, sistemas expertos, robótica y en la solución de problemas en
general.
Historia. Los primeros pasos de la inteligencia artificial datan del 3.000 antes de cristo,
con la creación de un sistema lógico para diagnóstico de enfermedades. En 1651 un libro de
Hobbes habla de el futuro uso de las máquinas en el desarrollo de una inteligencia más
poderosa poco antes de que Pascal inventase la primera calculadora.
Después de la segunda guerra mundial aparece la rama científica de la inteligencia
artificial. En 1956, John McCarthy dio nombre a la ciencia en una conferencia en Vermont
orientada a atraer a otros científicos, que juntos sentarían las bases para el futuro desarrollo
en inteligencia artificial.
9
En 1957, ya se había desarrollado el general problem solver(GPS) . Un año después,
McCarthy desarrolló el lenguaje de programación LISP, que aún se utiliza actualmente.
Poco después se separaron lo que se consideran las dos ramas de la inteligencia artificial;
por un lado el desarrollo de algoritmos que se comportasen de forma inteligente y por otro
el conexionismo o redes de neuronas artificiales.
En la actualidad, se tienen programas que analizan oraciones sintacticamente, que pintan,
que escriben cuentos, que hacen música clásica,
coches que conducen solos, y las
tecnologías de redes neuronales que ya están siendo utilizadas por bancos para sustituir a
las tarjetas de crédito en los cajeros reconociendo rasgos como la pupila de los clientes
(sistemas de biometría).
2.2 LA NEURONA BIOLOGICA
Definición. La neurona es el bloque fundamental de construcción del sistema nervioso,
capaz de recibir y transmitir información, es una célula similar a otras células del cuerpo
humano con ciertas especializaciones. Todas las neuronas están constituidas por las mismas
partes básicas, así como las mismas subdivisiones anatómicas independientemente del
tamaño y forma de la misma.
Se estima que en cada milímetro del cerebro hay cerca de 50.000 neuronas, conteniendo en
total más de cien mil millones de neuronas y sinapsis en el sistema nervioso humano.
Según los trabajos en investigación y ciencia realizados por el español Ramón y Cajal, la
neurona no es una masa continua sino una red de unidades discretas.
10
2.2.1 Partes de la neurona biológica
Figura 1. Partes de la neurona biológica
2.2.1.1 El cuerpo. El cuerpo de la célula es el que recibe y suma todas las señales
eléctricas de entrada que provienen de las dendritas.
La actividad de mantenimiento de las células se lleva a cabo en el cuerpo, donde una
fábrica química construye una variedad de moléculas. El cuerpo también controla la
energía de la neurona y regula otras actividades.
11
La capa externa del cuerpo tiene la capacidad única de generar impulsos nerviosos, lo cual
es considerado como una función vital.
El diámetro del cuerpo según los estudios
realizados oscila entre 5 a 100 micras.
2.2.1.2 Las dendritas. Las dendritas, son la vía de entrada de las señales que se combinan
en el cuerpo de la neurona. Son ramas que salen del cuerpo, las cuales poseen conexiones
sinápticas en donde se reciben señales que generalmente vienen de otros axones. Hay un
número significativo de conexiones sinápticas como lo son de axón a axón, axón a cuerpo y
dendrita a dendrita.
A diferencia de los circuitos eléctricos comunes, no hay conexión física en las sinapsis, sino
que un espacio separa los químicos especiales que son liberados por el axón y se transmiten
hacia la dendrita; estos químicos se llaman neurotransmisores. Algunos neurotransmisores
son “activadores” y otros son “inhibidores”.
2.2.1.3 El axón. El axón es una fibra que lleva la señal desde el cuerpo de la célula hacia
otras neuronas. El axón puede ser tan corto como 0.1 mm ó tan largo como 1 metro.
El axón tiene varias ramas cerca de la punta, cada una terminando con una sinapsis desde
donde la señal se trasmite, así la neurona puede generar pulsos que pueden activar o inhibir
otras neuronas(cientos o miles), las cuales a su vez son activadas por cientos o miles de
otras neuronas. De esta manera es como la conectividad de las neuronas, más que su
complejidad funcional, da la capacidad de procesamiento al cerebro humano.
12
2.2.1.4 Las sinapsis. Son las unidades funcionales y estructurales elementales que median
entre las interacciones de las neuronas. En las terminaciones de las sinapsis se encuentran
vesículas que contienen sustancias químicas llamadas neurotransmisores, que ayudan a la
propagación de las señales electroquímicas de una neurona a otra.
La conexión sináptica es un pequeño bulbo que contiene estructuras esféricas llamadas
vesículas sinápticas, algunas neuronas que han sido activadas muy débilmente transmiten
ciertos signos electromagnéticos a través de su interior con cierta respuesta; podemos decir
que son "locales" pues el impulso muere después de cierta distancia.
2.2.1.5 La membrana celular. Permite a la célula la transmisión de señales, siendo la
comunicación cerebral de dos tipos: química a través de las sinapsis y eléctrica dentro de la
neurona.
La maravillosa y compleja acción de la membrana celular crea en la célula la habilidad de
producir y transmitir aún ambos tipos de señales. La membrana celular tiene cerca de 5
nanómetros de espesor y consiste de dos capas de moléculas con lípidos.
En la membrana existen varios tipos de proteínas que se pueden clasificar en 5 grupos:
bombas, canales, receptores, enzimas y proteínas estructurales.
Las bombas mueven iones a través de la membrana para mantener concentraciones.
13
Los canales permiten selectivamente el paso de iones y controlan un flujo a través
de la membrana. Algunos canales se abren o cierran dependiendo del potencial
eléctrico de la membrana, otros se controlan químicamente.
Los receptores reconocen y unen varios tipos de moléculas y son muy específicos.
Las enzimas en las membranas aceleran una gran variedad de reacciones químicas.
2.2.2 Funcionamiento y comunicación intraneuronal. En la transmisión el mensaje (que
es un impulso nervioso de carácter eléctrico) es conducido a través del cuerpo celular a lo
largo del axón hasta el botón sináptico para liberar alguna sustancia transmisora. La
neurona tiene un medio interno y un medio externo, tanto fuera como dentro tiene iones
positivos y negativos, aunque cada medio suele tener una mayor concentración de iones, así
el medio interno tiende a ser negativo y el medio externo a ser positivo; de tal forma que el
medio externo de la neurona lo constituyen fundamentalmente sodio y cloro y en el medio
interno potasio (K+) y aniones (A-).
La concentración de sodio en una neurona es 10 veces más baja que en sus alrededores y la
concentración de potasio es 10 veces más alta. Estas concentraciones tienden a nivelarse
por medio de "fugas" en la célula, debido a poros en las membranas.
Para mantener las concentraciones una proteína llamada "bomba de sodio" continuamente
saca sodio de la célula y mete potasio. Se pueden mover cientos de millones de iones de
potasio por segundo. La combinación de estos dos químicos es responsable de crear y
14
mantener el equilibrio dinámico químico que constituye el estado de reposo de una
neurona.
La concentración iónica causa que en el interior de la célula se genere un potencial de -70
milivoltios con respecto a sus alrededores; para que la célula se "encienda" o sea activada,
las entradas sinápticas deben reducir este nivel a aproximadamente -50 milivoltios, cuando
esto ocurre, los niveles de sodio y potasio se invierten repentinamente, en un milisegundo el
interior de la célula se vuelve 50 milivoltios positivo con respecto al medio ambiente
externo. Este cambio de polaridad se transmite a través del axón y sus conexiones. Cuando
el pulso llega a la terminal del axón, se abren canales de calcio con voltaje controlado, esto
acciona la liberación de moléculas neurotransmisoras y el proceso continúa a otras células;
después de generar un potencial, la célula entra en un período de varios milisegundos en el
cual regresa a su estado de reposo en preparación para otro pulso. Se cree que más de 30
sustancias trabajan como neurotransmisores, un mismo neurotransmisor puede ser activador
en una sinapsis e inhibidor en otra.
2.2.3 Aprendizaje en la neurona biológica. Según el psicólogo canadiense Donald O.
Hebb(1949), el aprendizaje en las neuronas ocurre por la actividad neuronal coincidente,
esto se conoce como la ley de Hebb o aprendizaje Hebbiano. “Cuando el axón de la célula
A excita la célula B y repetidamente toma lugar en su activación, ocurre algún proceso de
crecimiento o cambio metabólico en una o ambas células tal que la eficacia de A, como
una de las células que dispara a B, se incrementa.” Según la regla de aprendizaje de Hebb,
la actividad coincidente en las neuronas presináptica y postsináptica es crítica para
15
fortalecer la conexión entre ellas; según Hebb este proceso se denomina mecanismo
asociativo pre-post.
Figura 2. Coincidencia pre-post, ley de Hebb
Para Hebb la neurona biológica debe su peculiaridad de procesamiento de la información a
la capacidad de autoorganización que ellas tienen.
En el año 1993 Ladislav Tauc y Eric Kandel propusieron una segunda regla de aprendizaje
en la cual la conexión sináptica entre dos neuronas se puede fortalecer sin actividad de la
célula postsináptica, mediante una tercera neurona llamada neurona moduladora la cual
incrementa la liberación del neurotransmisor de la célula presináptica.
16
Figura 3. Coincidencia pre-moduladora.
2.3 LA NEURONA ARTIFICIAL
Definición. Es la que intenta mimetizar las características más importantes de la neurona
biológica, siendo esta el elemento básico de procesamiento de la red neuronal artificial.
El funcionamiento de una neurona artificial, básicamente consiste en aplicar un conjunto de
entradas, cada una representando la salida de otra neurona, o una entrada del medio
externo, realizar una suma ponderada con estos valores, y "filtrar" este valor a través de una
función matemática llamada función de activación[9,11,21].
Figura 4. Esquema típico de la neurona artificial
17
El cuerpo de la neurona es a menudo representado por la suma ponderada de las entradas,
seguida por una función lineal o no lineal, llamada función de activación que usa los
valores de entrada para determinar la actividad de la neurona. La eficiencia sináptica es
representada por los "pesos de interconexión".
2.3.1 Elementos fundamentales
2.3.1.1 Sinapsis o pesos de interconexión. Representan la fuerza de interconexión entre
las neuronas, y pueden ser positivos(excitatorios) o negativos(inhibitorios); además pueden
ser fijos o adaptables. Las redes con pesos adaptables usan leyes de aprendizaje para ajustar
los valores de la fuerza de interconexión. Si la red neuronal usa pesos fijos las tareas a ser
ejecutadas deben estar bien definidas.
2.3.1.2 Un sumador. El cual produce la suma ponderada de las entradas de acuerdo a los
correspondientes pesos de las conexiones.
2.3.1.3 Función de activación o de transferencia. Tiene como misión limitar la amplitud
de la salida generada por la neurona.
Existen distintos tipos de redes neuronales con diferentes funciones de activación, pero la
estructura interna de la neurona, es común en la mayoría de las redes. La elección de la
función de activación junto con la forma de ponderación determinan las características de la
neurona artificial.
18
2.4 REDES NEURONALES ARTIFICIALES
2.4.1 Definición. Las redes neuronales artificiales son redes interconectadas masivamente
en paralelo de elementos simples, con organización jerárquica, los cuales intentan
interactuar con los objetos del mundo real del mismo modo que lo hace el sistema nervioso
biológico del ser humano[3,11,15,16,34].
Las redes neuronales son consideradas modelos analógicos que tienen como su principal
objetivo reproducir en la medida de lo posible las características y la capacidad de
procesamiento de información del conjunto de neuronas presentes en el cerebro de los seres
vivos; con características importantes como lo es la robustez, tolerancia a fallos, capacidad
de adaptación, aprendizaje y la capacidad de procesar información defectuosa[16,17].
2.4.2 Historia. Las redes neuronales no son un concepto nuevo, la idea de una red
neuronal fue originalmente concebida como un intento por modelar la fisiología del
cerebro. El objetivo era crear un modelo capaz de realizar procesos del pensamiento
humano; muchos de los primeros trabajos fueron realizados por filósofos, psicólogos y
fisiólogos.
Las primeras explicaciones teóricas sobre el cerebro humano fueron dadas por algunos
antiguos filósofos griegos, como Platón y Aristóteles. En este orden de ideas también
aportaron Descartes(1596-1650) y los filósofos empiristas del siglo XVIII.
19
El primero en estudiar el cerebro humano a partir de un análisis neuronal fue William
James(1890), cuya afirmación "la actividad de un punto en la corteza cerebral(neurona) es
modelada por la suma ponderada de las entradas", sirvió de base para el trabajo realizado
por Warren McCulloch, un neurofisiólogo, y Walter Pitts, un matemático, quienes en 1943
lanzaron una teoría para modelar la actividad nerviosa del cerebro, el que hasta hoy sirve
como fundamento para la construcción de muchas redes neuronales.
Otra importante obra que habla sobre el inicio de las redes neuronales y titulada “La
organización del comportamiento” fue escrita por Donald Hebb en 1949.
Para el año de 1957 aparece una de las primeras redes neuronales conocidas, la cual se
llamaba “Perceptron” , cuyo creador fue Frank Rosenblatt; cuyo modelo era capaz de
generalizar; es decir, después de haber sido entrenada con ciertos patrones este modelo de
red era capaz de reconocer otros similares a los ya aprendidos.
En el año de 1959 fue desarrollada la primer red neuronal aplicable a problemas reales,
cuyo nombre fue “Adaline” y desarrollada por Bernard Widrow y Marcial Hoff.
seguidamente en 1967 se presento un trabajo realizado por uno de los más considerados
investigadores de las redes neuronales, Stephen Grossberg, cuyo modelo de red se llamo
“Avalancha” y su objetivo era el reconocimiento continuo del habla y el aprendizaje de los
movimientos de los brazos en los robots.
20
En 1977 James Anderson diseño un modelo lineal llamado “Asociador lineal”; también
para ese mismo año el ingeniero electrónico de la universidad de Helsinki Teuvo Kohonen
desarrollo un modelo muy similar al de Anderson. Para el año de 1980 el
japones Kunihiko Fukushima desarrollo un modelo de red neuronal para el reconocimiento
de patrones llamado “El Neocognitrón” .
En 1982 en la academia nacional de las ciencias John Hopfield presentó su trabajo, una red
neuronal que lleva su mismo nombre “Red de Hopfield”.
Para 1985, el Instituto Americano de física comenzó lo que ha sido la reunión anual
“Neural Network for Computing”, en 1987 se formó la “Internatonal Neural Networks
Society(INNS), bajo la dirección de Grossberg, Kohonen y Amari, en 1988 se da la unión
del IEEE y de la INNS. La “International Joint Conference on Neural Network (IJCNN)”,
en 1991 nace en europa la “International Conference on Artificial Neural Networks
(ICANN).
Actualmente existen dos grandes tendencias en el estudio de las redes neuronales. Un
primer grupo compuesto por los biólogos, físicos y psicólogos, los cuales trabajan en el
desarrollo de modelos que imiten el comportamiento del cerebro.
El segundo grupo consiste de ingenieros que poseen el conocimiento del cómo estas
neuronas artificiales pueden ser interconectadas para formar redes con poderosas
capacidades computacionales. Estos últimos utilizan los modelos biológicos desarrollados
por el primer grupo como punto de partida de sus investigaciones[9,16,18].
21
Cuadro 1. Características de los tipos de redes neuronales más importantes en la historia
Nombre de la red
Año
Perceptron
1957
ADALINE/MADALINE
1960
Avalancha
1967
Cerebellatron
1969
Backpropagation
1974
1985
Brain-Estate-in-a-Box
1977
Neocognitron
1978
1984
1980
1984
Self-Organizing-Map
(SOM).
Topology Preserving Map
(TPM)
Hopfield
Memoria asociativa
bidireccional
Maquinas de Boltzman y
Cauchy
Teoría resonancia
adaptativa (ART)
Counter-propagation
Aplicaciones más
importantes
Reconocimiento de
caracteres impresos
Filtrado de señales,
Ecualizador adaptativo
Reconocimiento de
habla Continua
Control del movimiento
de los brazos de un
robot
Síntesis de voz, Control
de robots,
Reconocimiento de
patrones
Extracción de
reconocimiento de bases
de datos
Reconocimiento de
caracteres manuscritos
Reconocimiento de
patrones, Codificación
de datos, Optimización
1982 Reconstrucción de
patrones y optimización
1985 Memoria heteroasociativa
1985 Reconocimiento de
1986 patrones, Optimización
1986 Reconocimiento de
patrones
1986 Comprensión de
imágenes
Inventada/desarrollada
por
Frank Rosenblatt
Bernard Widrow
Stephen Grossberg
David Marr, James Albus,
Andres Pellionez
Paul Werbos, David
Parker, David Rumelhart
James Anderson
K. Fukushima
Teuvo Kohonen
John Hopfield
Bart Kosko
Jeffrey Hinton, Terry
Sejnowski, Harold Szu
Gail Carpenter, Stephen
Grossberg
Robert Hecht-Nielsen
22
2.4.3 Taxonomía. En el desarrollo de aplicaciones basadas en redes neuronales artificiales
se pueden distinguir tres fases: diseño, aprendizaje y pruebas.
2.4.3.1 Fase de diseño. Constituye la fase inicial y la mas importante de todas ya que de
un buen diseño depende el desempeño de la red. En esta etapa se hace un conocimiento del
problema para extraer cuales son los patrones mas representativos que se utilizaran como
entrada a la red neuronal, y que a partir de estos empieza el proceso de entrenamiento.
Además, en esta fase se debe seleccionar el algoritmo, la estructura y configuración mas
adecuadas de la red neuronal.
2.4.3.2 Fase de aprendizaje. Durante esta fase la red es entrenada para que vaya
modificando sus pesos sinápticos, adaptándolos paulatinamente para que la respuesta de la
red sea correcta.
Una de las características más importantes de las redes neuronales artificiales es su
capacidad de aprendizaje, dado mediante la actualización o cambio de los pesos sinápticos
propios de las conexiones.
2.4.3.3 Fase de prueba. En esta fase se evalúan los resultados obtenidos después de una
o más iteraciones, estos resultados
pueden ser calculados inmediatamente, así como
adaptados iterativamente según el tipo de red neuronal y según la función de ecuaciones
dinámicas de prueba utilizadas; después de una iteración se comparan los valores de las
neuronas de la última capa con los valores deseados, y así determinar la validez del diseño.
23
2.4.4 Elementos de una red neuronal artificial. Suele considerarse que todo modelo de
red neuronal queda caracterizado por la especificación de ocho aspectos o elementos
básicos[16,17,48].
2.4.4.1 Neuronas. Son el conjunto de elementos simples e interconectados que procesan
la información, y que suelen disponerse en capas o niveles estructurados jerárquicamente.
Se caracterizan tres tipos de neuronas según su disposición en el modelo: neuronas de
entrada, neuronas de salida y neuronas ocultas.
Las neuronas de entrada reciben las señales del entorno, las cuales pueden ser
señales provenientes de sensores o de otros sectores del sistema.
Las neuronas de salida son las encargadas de enviar las señales fuera del sistema.
Las neuronas ocultas son aquellas cuyas entradas y salidas se encuentran dentro del
sistema, sin contacto con el exterior.
2.4.4.2 Estado de activación. Toda neurona en una red neuronal se encuentra en uno de
dos estados posibles, reposo y excitado, cada uno de los cuales tiene asignado un valor.
Los valores de activación pueden ser discretos o continuos, además pueden ser limitados o
ilimitados.
24
2.4.4.3 Función de salida o de transferencia. Existen cuatro funciones de transferencia
típicas que determinan el valor de salida o la respuesta de cada neurona.
Limitador fuerte. Se asocia a neuronas binarias en las cuales, cuando la suma de
sus entradas es mayor o igual que el umbral de la neurona, la activación es uno (1);
si es menor la activación es menos uno(-1).
Figura 5. Función de transferencia limitador fuerte
25
Función lineal. La salida de una función de transferencia lineal es igual a su
entrada.
a = n
Figura 6. Función de transferencia lineal
Función sigmoidal. Esta función toma los valores de entrada, los cuales pueden
oscilar entre mas y menos infinito, y restringe la salida a valores entre cero y uno,
de acuerdo a la expresión siguiente:
f(n) =
1
1+ e − n
Esta función es comúnmente usada en redes multicapa, como la Backpropagation,
en parte porque la función logística o sigmoidal es diferenciable.
26
Figura 7. Función de transferencia sigmoidal
Función tangente hiperbólica o gaussiana. Esta dada por la siguiente ecuación.
f(n) =
e n − e −n
e n + en
Figura 8. Función tangente hiperbólica
La función tangente hiperbólica es simétrica en el origen, y a diferencia de la función
sigmoidal, la tangente hiperbólica produce valores negativos, lo cual es útil en algunos
27
modelos, especialmente cuando utilizamos valores negativos para los pesos iniciales de la
red [35].
2.4.4.4 Conexiones entre neuronas. El esquema de interconexión es lo que define a la
arquitectura de una red neuronal artificial, es el que indica como se propagará la señal
desde un elemento procesador a otro o hacia sí mismo; dichas interconexiones son
unidireccionales y tienen un peso asociado para cada conexión, estos pesos forman la
memoria de la red.
Las conexiones excitatorias, usualmente señales positivas o cercanas a 1, aumentan el valor
de entrada al elemento procesador, mientras que las conexiones inhibitorias decrementan el
valor.
Tres diferentes esquemas de interconexión entre los elementos procesadores en una red
neuronal son:
Conexiones entre elementos procesadores de la misma capa.
Figura 9. Conexiones entre elementos de la misma capa
Conexiones entre elementos procesadores de diferente capa.
28
Figura 10. Conexiones entre elementos de diferente capa
Conexiones recurrentes que conectan a un elemento procesador consigo mismo
Figura 11. Conexiones recurrentes
Si la información fluye en una dirección, las conexiones son llamadas de propagación hacia
adelante. La realimentación permite que la información fluya entre elementos procesadores
en ambas direcciones y/o recursivamente[16,46].
2.4.4.5
Regla de propagación. Combina las salidas de cada neurona con las
correspondientes ponderaciones establecidas por el patrón de conexión para especificar de
esta forma cómo se evaluaran las entradas que reciba cada neurona. El efecto global sobre
una neurona de todas las demás neuronas suele considerarse aditivo y constituye la llamada
entrada neta o potencial post-sináptico. Todas las entradas ponderadas por los pesos que
29
recibe una unidad constituyen la entrada neta que determinará la activación de la neurona a
través de una función de activación[48].
2.4.4.6 Función o regla de activación. El grado de activación de cada elemento de una
red neuronal artificial determina la presencia o ausencia de señal en sus conexiones de
salida, este grado de activación está dado en función de la suma de sus entradas.
La contribución de un elemento a la entrada de otro puede representarse como el producto
de su grado de activación por el peso de su conexión. Existe la posibilidad de establecer
conexiones de retroalimentación, que básicamente trabajan con el grado de activación
previo del elemento en cuestión.
La regla de activación combina las entradas con el estado actual de la neurona, para
producir un nuevo estado de activación en la neurona, a partir de un estado que ya existía y
la combinación de las entradas con los pesos de las conexiones.
La salida obtenida en una neurona para las diferentes formas de la función de activación
son evaluadas por las siguientes funciones de filtrado[16,17,46]:
función lineal
función Limitador Fuerte
función sigmoidal
función tangente hiperbólica
30
2.4.4.7 Regla de aprendizaje. La regla de aprendizaje consiste en el procedimiento por el
cual se procederá a la modificación del patrón de conexión en función de la experiencia,
conduciendo en última instancia al establecimiento de nuevos modelos de respuesta del
sistema a los estímulos externos. El aprendizaje es considerado como un porcentaje en el
cambio de los pesos o memoria de la red[17,27,46].
2.4.4.8 Representación del ambiente. El comportamiento del ambiente vendrá dado,
dependiendo de la aplicación que vaya a dársele al modelo de red neuronal, por la
información empírica disponible o por una función estocástica que varíe temporalmente
sobre el espacio de patrones de entrada. La interacción de la red con el ambiente vendrá
representada por el conjunto de unidades de entrada y el conjunto de unidades de salida,
cuyas entradas y salidas representarán respectivamente a la información de entrada y a la
respuesta del sistema.
2.4.5 Clasificación de las redes neuronales artificiales.
2.4.5.1 Según el mecanismo de aprendizaje. Los criterios que se siguen para cambiar el
valor asignado a las conexiones cuando se pretende que la red aprenda una nueva
información se conoce como la regla de aprendizaje.
De forma general, se suelen
considerar dos tipos de reglas de aprendizaje para las redes neuronales: La regla de
aprendizaje supervisado, y no supervisado.
31
Cuadro 2. Paradigmas de aprendizaje y algoritmos mas conocidos
Paradigma
Regla de
aprendizaje
Supervisado
Corrección
del error
No
supervisado
Arquitectura
Algoritmo de aprendizaje
Perceptron o perceptron
multicapa
Algoritmos de aprendizaje perceptron,
retropropagación del error, ADALINE,
MADALINE
Elman y Jordan
recurrentes
Retropropagación del error
Boltzmann
Recurrente
Algoritmo de aprendizaje
Boltzmann
Competitivo
Competitivo
LVQ
Red ART
Red de Hopfield
ARTMap
Aprendizaje de memoria asociativa
Corrección
del error
Proyección de Sannon
Multicapa sin
realimentación
VQ
Competitiva
Competitiva
Kohonen SOM
SOM
ART1, ART2
Por refuerzo Hebbian
Híbrido
Corrección
de error y
competitivo
Red ART
Multicapa sin
realimentación
Sin realimentación o
competitiva
Redes RBF
Aprendizaje supervisado.
Análisis lineal de discriminante
Análisis de componentes principales
Algoritmo de aprendizaje RBF
En el proceso de aprendizaje supervisado, el
entrenamiento de la red es controlado por un agente externo(supervisor) que
determina la respuesta que debería generar la red a partir de una entrada
determinada. La salida es comparada con la deseada y en caso de que no coincidan
se procede a modificar los pesos de las conexiones, con el fin de conseguir que la
32
salida obtenida se aproxime a la deseada. Existen diferentes formas de llevar a cabo
el aprendizaje supervisado:
Aprendizaje por corrección de error. Este tipo de aprendizaje consiste en
ajustar los pesos de las conexiones de la red en función de la diferencia entre los
valores deseados y los obtenidos en la salida de la red; es decir en función del
error cometido en la salida.
Aprendizaje por refuerzo. En el aprendizaje por refuerzo el entrenamiento se
realiza sin conocer exactamente la salida deseada para una determinada entrada.
Existe una relación de entrada-salida a través de un proceso de éxito o fracaso,
produciendo una señal(señal de refuerzo) que mide el buen funcionamiento del
sistema.
Los pesos se ajustan en base a la señal de refuerzo basándose en un mecanismo
de probabilidades. "Si una acción tomada por el sistema de aprendizaje es
seguida por un estado satisfactorio, entonces la tendencia del sistema a producir
esa particular acción es reforzada. En otro caso, la tendencia del sistema a
producir dicha acción es disminuida". La función del supervisor es más la de un
crítico que la de un maestro.
Aprendizaje estocástico.
Durante el entrenamiento de la red se realizan
cambios aleatorios e los valores de los pesos de las conexiones de las red y se
evalúa su efecto a partir de la salida deseada y de distribuciones de probabilidad.
33
Aprendizaje no supervisado. El aprendizaje no supervisado se caracteriza
porque la red no recibe influencia externa para ajustar los pesos de las
conexiones entre sus neuronas. La red no conoce ninguna relación entre las
entradas y las salidas que debe generar, por ello, suele decirse que estas redes
son capaces de auto-organizarse.
El éxito de este tipo de aprendizaje se logra buscando en el conjunto de datos de entrada
características, regularidades, correlaciones o categorías que se puedan establecer entre
ellos.
Entre los algoritmos mas relevantes para este tipo de aprendizaje están:
Aprendizaje hebbiano. Este tipo de aprendizaje consiste en ajustar los pesos
de las conexiones de acuerdo con la correlación (multiplicación en el caso de
valores binarios +1 y -1) de los valores de activación(salidas) de las dos
neuronas conectadas sin tener en cuenta si se deseaba o no esos estados de
activación.
Aprendizaje competitivo y cooperativo. Esta idea se basa en la existencia de
competencia y cooperación
entre las neuronas de una cierta capa por la
oportunidad de entrenarse (aprender). Esto, se refiere a que, la neurona que
produce la salida mayor se le considera ganadora, y tiene la capacidad de inhibir
a las otras neuronas(no presentan activación: salida nula). Todo ello conlleva a
que solamente los pesos de la neurona ganadora podrán ser ajustados.
34
2.4.5.2 Según su topología. Cuando hablamos de la topología o arquitectura de las redes
neuronales nos referimos a la organización y disposición de las neuronas en la red
formando capas o grupos de neuronas más o menos alejadas de la entrada y la salida de las
red. Evaluando como parámetros de clasificación el numero de capas, el numero de
neuronas por capa, el grado de conectividad y el tipo de conexiones entre neuronas, existen
redes neuronales monocapa y multicapa.
Redes monocapa. Una red de este tipo está formada por dos capas: una capa de
entrada y una de salida. La capa de entrada es sólo un receptor para los valores
de entrada que se distribuirán hacia la capa siguiente. La capa de salida está
constituida por las neuronas que procesan la información.
Redes multicapa. Una red multicapa se caracteriza por disponer de conjuntos
de neuronas agrupadas en varios niveles o capas. Existen tres tipos de capas: de
entrada, ocultas y de salida.
Para identificar la capa a la cual pertenece una neurona solo basta con identificar el
origen de las señales de entrada y el destino de las señales de salida, puesto que
normalmente todas las neuronas de una capa reciben señales de entrada de otras
capa anteriores, mas cercanas a las entradas de la red y envían sus señales de salida
a una capa posterior , mas cercana a las salidas de la red.
35
2.4.5.3 Según el tipo de asociación entre la información de entrada y salida. Cuando
se aplica un estímulo (dato de entrada) la red responde con una salida asociada a la
información de entrada.
Existen dos formas primarias de realizar esta asociación entre información de entradasalida que se corresponde con la naturaleza de la información almacenada en la red. Estos
dos mecanismos de asociación dan lugar a dos tipos de redes neuronales que son las redes
hetero-asociativas y las auto-asociativas , cuyos modelos no son diferentes en principio.
Redes hetero-asociativas.
Estas redes al asociar información de entrada con
información de salida, precisan al menos de dos capas, una para captar y retener la
información de entrada y otra para mantener la salida con la información asociada.
En cuanto a su conectividad existen redes hetero-asociativas con conexiones hacia
delante o feedforward, redes con conexiones hacia atrás o feedforward/feedback y
redes con conexiones laterales. El aprendizaje de este tipo de redes puede ser con
supervisión o sin supervisión.
Redes auto-asociativas. Este tipo de redes asocia una información de entrada con
el ejemplar mas parecido de los almacenados conocidos por la red; Se pueden
implementar con una sola capa de neuronas.
36
En cuanto a la conectividad en este tipo de redes existen conexiones laterales entre
las neuronas y en algunos casos conexiones autorrecurrentes, en cuanto al tipo de
aprendizaje, habitualmente el utilizado por estas redes es el no supervisado.
2.4.5.4 Según su modo de operación. Cuando se habla del modo de operación de una red
neuronal se está haciendo referencia a la manera en que la red neuronal procesa los
estímulos externos y crea la respuesta de salida. Puede considerarse a una red neuronal
como perteneciente a una de dos grandes categorías, como lo son las redes estáticas y las
dinámicas.
Redes estáticas. Son redes que toman problemas resueltos para construir sistemas
que toman decisiones y que a demás pueden realizar clasificaciones, tomando
aquellos problemas que no tienen solución computacional e implementado
algoritmos para su solución.
Las redes estáticas producen un mapa de datos a datos y es por ello que se utilizan
como aproximadores universales de funciones. Debido a su modo de
funcionamiento, estas redes tienen una capacidad limitada para sintetizar funciones
dependientes del tiempo en comparación con lo que exponen las rede dinámicas.
Entre este tipo de redes encontramos la red Perceptron y las redes multicapa, con
las cuales se resuelven los problemas de clasificación de patrones no separables
linealmente[17].
37
Redes dinámicas. Son las utilizadas para sintetizar un comportamiento dinámico,
es decir algo que evoluciona en el tiempo, para lo cual se alimenta la red con
muestras pasadas por todas las variables involucradas en la solución del problema.
Este tipo de redes responde de manera diferente ante diferentes secuencias de
entradas, haciendo uso de manera implícita o explícita de la variable tiempo. Este
aspecto las hace en principio más idóneas que las redes estáticas para la síntesis de
funciones en las que aparezca de alguna manera el parámetro tiempo. Algunas
Redes dinámicas por naturaleza son las redes recurrentes tipo Hopfield (DNN-H) y
las redes recurrentes tipo multicapa (DNN-M)
Otras redes neuronales. Son redes que se caracterizan por no tener un par entrada
salida asociado, sino que extraen características de las entradas sin que se conozca
la salida. Estas redes asocian una respuesta a una entrada en particular mediante un
procedimiento simple, Entre este tipo de redes encontramos las red de Kohonen, las
memorias asociativas bidireccionales BAM y la red de funciones radiales.
2.4.6 Estado del arte de las redes neuronales artificiales. Diseñar y construir maquinas
capaces de realizar procesos con cierta inteligencia ha sido uno de los principales objetivos
y preocupaciones de los científicos a lo largo de la historia. De los intentos realizados en
este sentido se han llegado a definir líneas fundamentales para la obtención de maquinas
inteligentes en la cual sobresale la obtención de autómatas que realizan funciones típicas de
los seres humanos mediante la formalización de conocimiento a través de la inteligencia
artificial.
38
La mayoría de investigaciones en redes neuronales han culminado con la presentación de
un modelo matemático. Se ha tratado de comprender diferentes características innatas del
ser humano para representarlas por medio de redes neuronales logrando hasta ahora
resultados verdaderamente sorprendentes. Estos hechos han llevado a que organizaciones
importantes como la IEEE se vinculen a patrocinar y colaborar en busca de resultados
óptimos.
También se han formado otras organizaciones entre las cuales están la
International Neural Network Society (INNS), la International Joint Conference on Neural
Networks (IJCNN), la International Conference on Artificial Neural Networks (ICANN) y
la Sociedad Europea de Redes Neuronales (ENNS).
Son numerosos los trabajos que se realizan y que se publican cada año, las aplicaciones
nuevas que surgen y las empresas que lanzan al mercado productos nuevos tanto en
hardware como en software es grande. En relación con la información que se publica en las
revistas especializadas en el área de redes neuronales,
cabe destacar como las
organizaciones y revistas más interesantes las siguientes: la Neural Networks, revista oficial
de la Sociedad Internacional de Redes Neuronales (INNS); Network, Computation in
Neural System; IEEE Transactions on Neural Networks, publicada por IEEE Neural
networks Council; Neural Computation; e International Journal of Neural Systems.
En Estados Unidos podemos destacar la labor patrocinada por la Oficina de Tecnología
Táctica de la Agencia de Proyectos de Investigación Avanzada del Departamento de
Defensa (DARPA/TTO) y llevada a cabo en el Instituto Tecnológico de Massachussets
(MIT) desde octubre de 1987 a febrero de 1988, en el cual se reviso el estado actual de la
tecnología de redes neuronales artificiales, así como sus posibles aplicaciones al área de
39
defensa y otras áreas, tales como: clasificación de patrones, robótica, visión artificial,
procesamiento de señales y reconocimiento de voz.
Dentro del entorno europeo, hay que señalar las dos citas anuales de la sociedad europea de
redes reuronales (ENNS) y, como fuente de planificación política de investigación (por
medio de la financiación selectiva de proyectos de investigación), el programa ESPRIT,
que durante los últimos años ha financiado una veintena de proyectos que podrían
enmarcarse dentro del área de las redes neuronales y sus aplicaciones. La participación
española en estos proyectos ha sido reducida, quedando limitada a las universidades
Politécnica y Autónoma de Madrid, universidad Politécnica del país vasco, centro de
estudios avanzados de Blanes, instituto de cibernética del CSIC, instituto de ingeniería del
conocimiento (IIC) y la empresa Software de Base, S.A.
En España se esta trabajando una aplicación de redes neuronales para la mejora de la
calidad del jamón ibérico. El objetivo del trabajo es desarrollar un sistema electrónico que
ayude a la determinación de la calidad del jamón, el trabajo se está realizando en
colaboración con los siguientes grupos de investigación, además de la empresa JAPASUR
y FUNDECYT:
- Grupo de tecnología de los alimentos (Facultad de Veterinaria - UEX).
- Instituto de física aplicada (CSIC - Madrid).
- Grupo de sensores (Universidad Politécnica de Cataluña).
- Centro nacional de microelectrónica (CNM - CSIC - Barcelona).
40
También en España se esta trabajando en redes neuronales para la detección de cubierta
nubosa y clasificación de nubes. Esta línea de investigación trata la segmentación de las
imágenes meteosat de la península ibérica en las clases mar, tierra, nubes bajas, medias,
altas, nubes de desarrollo vertical y nieblas. El trabajo se realizó bajo la cooperación con el
grupo de meteorología del departamento de física de la universidad de Extremadura.
Se están desarrollando trabajos en redes neuronales para la evaluación morfológica de
ganado Bovino. Esta línea de trabajo se ha estado desarrollando durante los últimos 4 años;
el objetivo es lograr un sistema, que a partir de fotografías de campo (una lateral, otra de
frente y una posterior) permita obtener una evaluación morfológica del animal, el trabajo
esta siendo llevado a cabo en colaboración con expertos del CENSYRA.
Se ha iniciado una nueva línea de investigación para el diagnostico de cáncer de mama,
mediante redes neuronales, que nace con el objetivo de desarrollar un sistema que analice
mamografías de alta resolución, e indique las zonas en las que exista un principio de
cáncer. Este trabajo se esta realizando en conjunto con personal médico de los hospitales
provincial e infanta Cristina de Badajoz en España.
La oficina de transferencia de resultados de la investigación(OTRI) de la UEX en España
ha desarrollado un software sobre redes neuronales para la empresa Conservas Vegetales de
Extremadura, S.A, que permita llevar mejor control del estado de la producción.
Latinoamérica y en especial Colombia no ha sido ajena a este proceso investigativo. La
inteligencia artificial se ha tomado los escenarios científicos del país, prueba de esto es el
41
gran interés que existe en la mayoría de universidades en participar de los seminarios y
congresos que sobre estos temas se organizan.
En cuanto a las redes neuronales artificiales se han desarrollado investigaciones en
instituciones como la Universidad Nacional, Universidad de los Andes, Universidad
Industrial de Santander, Universidad del Valle, entre otras, las cuales han encaminado sus
esfuerzos a dar solución a problemas del mundo real utilizando las mas modernas técnicas
de computación aplicada a las redes neuronales. Los avances mas significativos se han
logrado en campos como el control industrial, la medicina y la enseñanza.
En la Universidad de Pamplona el grupo de investigación en inteligencia artificial
(GINAR), esta trabajando en un proyecto titulado “Sistema de toma de decisiones para el
sector empresarial aplicando técnicas de inteligencia artificial”.
En la Universidad Francisco de Paula Santander hace tiempo se vienen desarrollando
estudios, análisis y proyectos de investigación en el área de inteligencia artificial, pero solo
hasta hace poco se formalizó el grupo de investigación en esta área. Actualmente se están
adelantando investigaciones en áreas como el reconocimiento de patrones e imágenes, para
la detección de enfermedades transmitidas por vectores actualmente se esta desarrollando
un trabajo titulado “ Sistema de toma de decisiones para el apoyo logístico del control
entomológico y epidemiológico de las enfermedades transmitidas por vectores (E.T.V)”,
utilizando redes neuronales; también se esta trabajando en visión artificial, robótica, entre
otros En la mayoría de estos proyectos se están utilizando redes neuronales artificiales.
42
2.4.7 Aplicaciones de las redes neuronales artificiales. Las redes neuronales son una
tecnología computacional emergente que puede utilizarse en un gran numero y variedad de
aplicaciones. Se pueden desarrollar redes neuronales en un periodo de tiempo razonable y
pueden realizar tareas concretas mejor que otras tecnologías convencionales, incluyendo los
sistemas expertos.
Hay muchos tipos diferentes de redes neuronales, cada uno de los cuales tiene una
aplicación particular mas apropiada.
Las redes neuronales han encontrado muchas
aplicaciones con éxito en la visión artificial, reconocimiento de textos manuscritos, en la
simulación de centrales de producción de energía, en la detección de explosivos, en la
identificación de blancos de radares, en el procesado de señales e imágenes, reconocimiento
de voz y caracteres, sistemas expertos, análisis de imágenes médicas, control remoto,
control de robots, inspección industrial, en exploración científica se utilizan redes
neuronales en los vehículos de investigación espacial, en la biometría para distinguir
personas según patrones corporales tales como su huella, rostro, pupila y otros.
2.4.8 Ventajas y desventajas de las redes neuronales artificiales. Las ventajas más
relevantes que presentan las Redes Neuronales Artificiales frente a otros sistemas de
procesamiento de información son las siguientes:
Pueden sintetizar algoritmos a través de un proceso de aprendizaje.
Para utilizar la tecnología neuronal no es necesario conocer los detalles
matemáticos. Solo se requiere estar familiarizado con los datos de trabajo.
43
Las redes neuronales son robustas, pueden fallar algunos elementos de
procesamiento pero la red continua trabajando, esto contrario a lo que sucede en
programación tradicional.
Se utilizan con especial énfasis en la solución de problemas no lineales.
El procesamiento interno en la estructura de la red se da en forma paralela
acelerando el proceso para la obtención de resultados.
Permiten cuantificar la información que se quiere procesar, de este modo se hace
superior a las teorías convencionales basadas solo en dos posibles estados.
Las desventajas de las Redes Neuronales son:
Las Redes Neuronales Artificiales se deben entrenar para cada problema
Necesitan realizar múltiples pruebas para determinar la arquitectura más adecuada,
su entrenamiento es largo y puede consumir varias horas de CPU.
Debido a que las redes se entrenan en lugar de programarlas, estas necesitan muchos
datos.
3. FORMULACION MATEMÁTICA DE LOS PRINCIPALES ALGORITMOS DE
ENTRENAMIENTO EN REDES NEURONALES ARTIFICIALES
En nuestra investigación sobre redes neuronales artificiales hemos tenido en cuenta los
detalles más importantes que sobre esta área se conocen a nivel mundial, de aquí surge la
inclinación a profundizar en los siguientes algoritmos.
3.1 RED TIPO PERCEPTRON
En 1957, Frank Rosenblatt presentó el perceptron, una red neuronal con aprendizaje
supervisado. El primer modelo de perceptron fue desarrollado en un ambiente biológico
imitando el funcionamiento del ojo humano, el fotoperceptron como se le llamo era un
dispositivo que respondía a señales ópticas. El perceptron trabaja bien con patrones de
entrada binarios.
En 1962, Frank Rosenblatt desarrolló una prueba de convergencia y definió el rango de
problemas para los que su algoritmo aseguraba una solución, entonces propuso los
'Perceptrons' como herramienta computacional[16,43,].
El modelo del perceptron es la base de la mayor parte de las arquitectura de las redes
neuronales artificiales que se interconectan entre sí. El perceptron separa las regiones por
45
un hiperplano cuya ecuación queda determinada por los pesos de las conexiones y por el
valor umbral de la función de activación de la neurona.
Los pesos pueden ser positivos o negativos.
Los pesos junto con las funciones de
activación dictan la operación de la red neuronal, normalmente las funciones no se
modifican de tal forma que el estado de la red neuronal depende del valor de los factores de
peso que se aplican a los estímulos de la neurona.
3.1.1 Perceptron básico unicapa. Este tipo de perceptron consta de dos niveles o capas.
El primer nivel está compuesto por un número de unidades de entrada, denominadas
unidades sensoriales. El segundo nivel está compuesto por un número de unidades de
salida denominadas unidades de asociación, cuyas entradas son las salidas de las unidades
de entrada por sus pesos asociados.
Este tipo de red solo pude establecer dos regiones separadas por una frontera lineal en el
espacio de patrones de entrada, donde se tendría un hiperplano. Un perceptron unicapa no
es más que un conjunto de neuronas no unidas entre sí, de manera que cada una de las
entradas del sistema se conectan a cada neurona, produciendo cada una de ellas su salida
individual. (Véase la Figura 12).
46
Figura 12. Estructura perceptron unicapa
3.1.1.1 Funcionamiento. El perceptron se diseñó para trabajar con patrones de entrada y
salidas de tipo binario. Así, la salida será de uno (1) cuando la activación de la neurona
alcance un valor y cero (0) en caso contrario.
La función de activación que suele utilizar este algoritmo es la función escalón.
La regla de aprendizaje que se emplea para la adaptación de los pesos está basada en el
error. Durante la fase de aprendizaje se presentan a la red los patrones de entrada y la
salida deseada para cada entrada. El error viene dado por la diferencia entre la salida
deseada y la salida real de la neurona. El método requiere que cada patrón de entrada salida se presente a la red las veces necesarias hasta que ni los pesos ni el umbral varíen.
47
3.1.1.2 Estructura y aprendizaje.
En el aprendizaje supervisado se presentan al perceptron unas entradas con las
correspondientes salidas que se desea que la red aprenda.
En el aprendizaje no supervisado, solo se presentan al perceptron las entradas y,
para esas entradas la red debe dar una salida parecida.
Los siguientes son los pasos que sigue el algoritmo durante su proceso de aprendizaje
(regla delta)[16,33,43].
1. Inicializar el valor de los pesos wi(t) y del umbral θ (t ) con valores aleatorios pequeños.
wi(t): representa el valor del i-ésimo peso en el instante t.
θ (t ) :es el valor del umbral.
2. Presentar un nuevo vector de entrada X p = (Xo, X1,....Xn-1) y su correspondiente salida
deseada d i , donde:
d i : salida deseada para la neurona i
48
3. Calcular la salida real de la neurona en el instante t.
n −1
y i (t) = f( ∑ wi (t ) x i (t ) - θ (t ) ),
i =0
donde f es la función de activación de tipo escalón, representada por:
1 si net ≥ 0
f(net) =
0 si net ≤ 0
n −1
net = ( ∑ wi (t ) x i (t ) - θ (t ) ), entrada neta para cada una de las neuronas
i =0
4. Hallar el error en las neuronas de salida
δ i = ( d i (t ) - y i (t ) ), donde
y i (t ) : salida real para la neurona i
5. Se modifican los pesos de acuerdo a la siguiente fórmula.
w i (t + 1) = w i (t ) + α [ d i (t ) – y i (t ) ] x i (t ) , donde
0 ≤ i ≤ n - 1.
α : rata o factor de aprendizaje(0.0 ≤ α ≤ 1
w i (t + 1) : vector de pesos para la neurona i en el instante t+1
49
6. Regresar al paso 2 hasta agotar el conjunto de entrenamiento.
3.1.2 Perceptron multicapa. Consiste básicamente en poner varias capas elementales
interconectadas sucesivamente con el objeto de dotar a la red de la complejidad suficiente
para realizar la tarea requerida. Es una red de tipo feedforward que permite establecer
regiones de decisión mucho más complejas que las de dos semiplanos, como en el
perceptron de un solo nivel.
Esta estructura nació con la intención de dar solución a las limitaciones del perceptron
clásico o unicapa, y supuso el resurgimiento del movimiento conexionista. Como su
nombre lo indica, se trata de un unos cuantos (dos o tres) perceptrones unicapa conectados
en cascada.
Figura 13. Estructura del perceptron multicapa
3.1.2.1
Funcionamiento perceptron multicapa.
En el perceptron multicapa, cada
neurona necesita de un "uno (1)" para tener un lindero entrenable. Se puede hacer que la
50
red aprenda dos o tres formas básicas y que dada otra forma que no ha aprendido, la
clasifique como la más cercana a las que conoce.
Este tipo de algoritmo utiliza la función de activación sigmoidal por ser diferenciable en
todos sus puntos, de manera que se pueda propagar el error hacia atrás. Esta red no
requiere mas de cuatro(4) capas o niveles, además el exceso en el numero de neuronas en
cada nivel puede generar ruido .
3.1.2.2 Estructura y aprendizaje perceptron multicapa. El aprendizaje en el perceptron
multicapa lo realiza siguiendo el mismo procedimiento que en el perceptron unicapa y se
lista en los siguientes pasos[33]:
1. Inicializar el valor de los pesos wi (t ) y del umbral θ (t ) con valores aleatorios pequeños.
2. Presentar un nuevo vector de entrada X p = (Xo, X1,....Xn-1) y su correspondiente salida
deseada d i .
3. Calcular la salida real de la neurona.
n −1
y pk (t ) = f( ∑ wi (t ) x i (t ) - θ (t ) ) donde f: es la función de activación tipo sigmoidal
i =0
k: es el índice de neuronas en la ultima capa
51
4. Hallar el error en las neuronas de salida
0
δ pk
= y pk (t ) [1- y pk (t ) ].[ d k (t ) - y pk (t ) )
0
= error en la neurona k de la ultima capa
donde δ pk
5. Se propaga el error de la capa de salida hacia la capa anterior
para cada neurona de la penúltima capa se tiene:
δ pjh =
k
∑
0
w jk
δ pk
j =1
donde j: neuronas de la penúltima capa
w jk : peso entre la neurona j de la penúltima capa y la neurona k de la ultima capa
h: identificador de capa oculta
el error propagado es:
n −1
n −1
i =0
i =0
δ j = [f( ∑ wi (t ) x i (t ) - θ (t ) )].[1 - f( ∑ wi (t ) x i (t ) - θ (t ) )].δ pjh
n −1
donde, f( ∑ wi (t ) x i (t ) - θ (t ) ): salida de la neurona j en la penúltima capa
i =0
52
6. Modificar los pesos de todas las conexiones
Para la capa de salida se modifican utilizando la siguiente formula.
n −1
0
w okj (t + 1) = w okj (t)+ α δ pk
. f( ∑ w j (t ) x i (t ) - θ (t ) ).
i =0
0
donde δ pk
: error de la neurona k en la capa de salida
w okj (t + 1) : vector de pesos entre la neurona de salida k y la neurona oculta j en la
iteración t +1
Para la penúltima capa se actualizan los pesos utilizando la formula siguiente:
w hji (t+1)= w hji (t)+ α δ j . x i (t ) , donde
w hji (t+1): peso entre la entrada i y la neurona j de la penúltima capa
δ j = error de la neurona j de la penúltima capa
x i (t ) : valor de entrada para la neurona i
α = es la razón de aprendizaje de la red, que debe estar entre 0 y 1 (un valor
recomendado es de 0,35). Un valor demasiado elevado puede llevar a errores.
7. Regresar al paso 2 hasta agotar el conjunto de entrenamiento.
53
3.1.2.3 Problemas del perceptron multicapa.
El principal problema de este tipo de perceptron está en su entrenamiento, ya que es
difícil modificar correctamente los pesos de las capas ocultas.
El exceso de capas y el numero de neuronas en cada una de ellas puede generar
ruido.
3.1.3 Problemas generales del perceptron.
Necesita que la función de error sea continua y derivable, lo cual implica que las
funciones de activación deben ser continuas y derivables como por ejemplo las
sigmoideas.
El método es iterativo, es decir se va saltando en cada iteración una cantidad que
debería ser muy pequeña (diferencial) para poder acercarnos rápidamente a los
valores deseados.
En ciertos modelos el proceso de entrenamiento es muy lento.
Se necesita conocer algún método lo más simple posible para calcular la derivada
parcial del error respecto a cada uno de los pesos en cada instante (en cada
iteración).
54
3.2 PROPAGACIÓN INVERSA (BACKPROPAGATION)
Fue ideado a principios de los 70 por Werbos, y redescubierto a principios de los 80 por
Parker y Rumelhart independientemente; sin embargo, no se hizo popular hasta 1986,
cuando Rumerlhart, Hinton y Williams presentaron una descripción clara y concisa del
mismo.
Desde la fecha de 1986 han surgido nuevas versiones que han tratado de aumentar la
velocidad de convergencia del algoritmo y han tratado de superar algunos de sus
inconvenientes, como la tendencia a alcanzar mínimos locales y no globales[27,29,37].
Este algoritmo llamado Backpropagation (propagación del error hacia atrás) esta basado
en la generalización de la regla delta. Es un algoritmo aplicable en modelos de redes
neuronales de dos(2) o más capas; por esto es considerado un algoritmo multicapa, el cual
representa internamente el conocimiento de modo que es capaz de organizar la información
en la capa intermedia para conseguir cualquier correspondencia entre la entrada y la salida
de la red[16,17]. (Véase la Figura 14).
Figura 14. Estructura algoritmo propagación inversa
55
3.2.1 Regla delta generalizada. Se refiere a la utilización de una función de activación y
al calculo de un error asociado a la red. Es aplicable a redes con capas intermedias con
conexiones hacia delante y cuyas células tienen funciones de activación continuas(lineales
o sigmoideas) que son funciones no decrecientes y derivables.
La función de error busca el estado estable de mínima energía o de mínimo error a través
del camino descendente de la superficie de error. Por ello realimenta el error del sistema
para realizar la modificación de los pesos en un valor proporcional al gradiente decreciente
de dicha función de error[16].
3.2.1.1 Momentum en la regla delta generalizada. Según Rumelhart, Hinton y William,
al utilizar un valor alto en la rata de aprendizaje el entrenamiento puede ser más rápido,
pero se pueden generar oscilaciones, por lo tanto sugieren que para filtrar esas oscilaciones
se añada en la expresión del incremento de los pesos un termino constante β (momentum)
que determina el efecto en la iteración t+1 del cambio de los pesos en el instante t. Con
este momentum se consigue la convergencia de la red en menor número de iteraciones, la
expresión es la siguiente[44]:
w ji (t+1) = w ji (t) + α δ pj y pi + β [ w ji (t) - w ji (t-1)]
0 < β < 1 ( en general se utiliza 0.9)
3.2.2 Funcionamiento. El aprendizaje de este algoritmo es de tipo supervisado y supone
la necesidad de disponer de pares de entrenamiento entrada-salida deseada. Este proceso se
56
lleva a cabo mediante la minimización de una función objetivo, que generalmente se
corresponde con la suma de errores al cuadrado.
En una red backpropagation existe una capa de entrada con n neuronas y una capa de
salida con m neuronas y al menos una capa oculta de neuronas internas. Cada neurona de
una capa(excepto las de entrada) recibe entradas de todas las neuronas de la capa anterior y
envían su salida a todas las neuronas de la capa posterior(excepto las de salida). No hay
conexiones hacia atrás feedback ni conexiones laterales entre neuronas de la misma
capa[11,16,17]. El algoritmo de propagación inversa consta de dos fases:
3.2.2.1 Fase hacia adelante.
1. Inicialización. Se asigna aleatoriamente a la red un vector de pesos uniformemente
distribuido cuyo rango depende del usuario pero que generalmente se establecen valores
pequeños que oscilan entre - 0.5, y +0.5.
2. Propagación. Al presentar a la red el vector de entrada; esta información se propaga a
través de todas las capas hasta obtener el vector salida global de la red.
3. Comprobación del error cometido. La red compara la salida obtenida en forma real con
la salida deseada.
Una vez calculado el error se tiene que determinar el sentido en que los pesos van a
modificarse.
57
3.2.2.2 Fase hacia atrás.
1. Adaptación del vector de pesos. Los cambios en los pesos se producen en la dirección
en la que el error pueda caer lo más rápidamente posible (gradiente negativo), estas señales
de error se propagan a los nodos de las capas, empezando por la capa de salida y siguiendo
con las capas sucesivas. De esta forma, los nodos de cada capa sólo reciben una fracción
del error global en función de su aproximada contribución relativa a la obtención de la
salida.
2. Vuelta al paso 2 de la fase hacia adelante. Con los nuevos pesos obtenidos después de
la actualización se introduce un nuevo vector entrada-salida deseada.
Este proceso se repite hasta que el algoritmo obtenga la convergencia, es decir cuando el
error sea lo suficientemente pequeño[3,6,9,16,25,29].
3.2.3 Estructura y aprendizaje.
1. Se inicializan los pesos w de todas las conexiones con valores aleatorios muy pequeños.
2. Se Presenta un patrón de entrada, X p : x p1 ,x p 2 ,…,x pN especificando la salida deseada
que debe generar la red, D p : d 1 ,d 2 ,…,d M .
58
3. Calcular la salida de la red neuronal. Para esto se deben presentar las entradas e ir
calculando la salida que presenta cada capa hasta llegar a la capa de salida final, siguiendo
el procedimiento siguiente:
- Se calculan las entradas netas para las neuronas ocultas procedentes de las
neuronas de entrada.
Para calcular la entrada a una neurona oculta j se utiliza la formula siguiente.
net hpj =
N
∑w
i =1
h
ji
x pi + θ ij ,donde
h: magnitud de la capa oculta(hidden)
p: es el p-ésimo vector de entrenamiento
j: la j-ésima neurona oculta
θ : valor de umbral, el cual puede ser opcional, considerado como una entrada más.
- Se calculan las salidas de las neuronas ocultas j para el patrón p así:
y pj = f hj ( net hpj ), donde
f hj : función de activación de la neurona j en la capa h
- Se hacen los cálculos para las salidas de las neuronas de la capa de salida.
net opk =
L
∑w
j =1
o
kj
y pj + θ ko
59
y pk = f ok (net opk ), donde
net opk : entrada neta en la neurona k de la capa de salida para el patrón p
f ok : función de activación para la neurona k en la capa de salida
La formula general para la función de activación sigmoidal en cualquier neurona k de
salida es la siguiente.
f k (net jk )=
1
1+ e
− net
jk
, y la formula para la función lineal es.
f k (net jk )= net jk
4. Se calculan los términos de error para todas las neuronas teniendo en cuenta lo siguiente.
- Si la neurona k es una neurona de la capa de salida la formula para el calculo del error
es.
/
o
= (d pk - y pk ) f ok ( net opk ),
δ pk
f
o/
k
= f ok (1- f ok )
f
o/
k
= y pk (1- y pk ) derivada de la función de activación sigmoidal
/
f ok =1 derivada para la función de activación lineal
60
Teniendo en cuenta la derivada de la función de activación lineal, la formula para
calcular el error en las neuronas de salida es:
o
δ pk
= (d pk - y pk )
Cuando se utiliza la función de activación sigmoidal, el error en las neuronas de salida
se calcula mediante la formula siguiente:
o
= (d pk - y pk ) y pk (1- y pk )
δ pk
- Si la neurona j no es una neurona de la capa de salida, entonces la expresión para
calcular el error es:
o
δ pjh = f hj ( net hpj ) ∑ δ pk
wkjo , donde
/
k
δ pjh : es el error cometido en la neurona j de la capa oculta h para el patrón p.
Como el error en las capas ocultas depende de todos los términos de error en la capa
de salida, es por esto que se da la propagación hacia atrás y que en particular para la
función sigmoidal se tiene la formula siguiente.
δ pjh = x pi (1- x pi )
∑δ
o
pk
wkjo
k
donde k se refiere a todas las neuronas de la capa superior a la de la neurona j.
61
5. Se actualiza el vector de pesos, utilizando el algoritmo recursivo, comenzando por las
neuronas de salida y trabajando hacia atrás hasta llegar a la capa de entrada ajustando los
pesos.
- Para actualizar los pesos de las neuronas que pertenecen a la capa de salida se tiene la
formula que sigue a continuación.
w okj (t+1) = w okj (t) + ∆ w okj (t+1), donde
o
y pj
∆ w okj (t +1) = α δ pk
∆ : incremento
- Para actualizar los pesos de las neuronas que pertenecen a la capa oculta, la formula
es la siguiente:
w hji (t+1) = w hji (t) + ∆ w hji (t+1), donde
∆ w hji (t +1) = α δ pjh x pi
Se puede añadir un término constante llamado momentum al instante de hacer la
actualización de los pesos , adicionando a las formulas el termino estipulado.
- Para cuando se actualizan los pesos de la neuronas de la capa de salida se tiene.
62
w okj (t+1) = w okj (t) + ∆ w okj (t+1) + β ( w okj (t) - w okj (t -1)), donde
o
y pj + β ∆ w okj (t)
∆ w okj (t +1) = α δ pk
- Para cuando se actualizan los pesos de la neurona de la capa oculta se tiene.
w hji (t+1) = w hji (t) + ∆ w hji (t+1) + β (w hji (t) - w hji (t -1)), donde
∆ w hji (t +1) = α δ pjh x pi + β ∆ w hji (t)
6. El proceso se repite hasta que el error resulte aceptablemente pequeño para cada uno de
los patrones aprendidos y hasta que el error total sea menor a un valor ε dado.
1
2
Ep=
M
∑δ
k =1
2
pk
, donde E p : es el error producido por el patrón de entrenamiento p
P
∑E
E=
p =1
P
p
, donde E es el error total después de pasar todos los patrones
3.2.4 Importancia. Este algoritmo refleja su importancia en su capacidad de auto adaptar
los pesos de todas las neuronas de las capas intermedias para que estas puedan aprender la
relación que existe entre un conjunto de patrones dados y sus salidas correspondientes.
3.2.5 Problemas generales. Presenta ciertos problemas, algunos referentes a su dudosa
plausibilidad neurofisiológica, y otros referentes a ciertos aspectos computacionales, [37].
63
Los resultados dependen de los valores aleatorios que se toman inicialmente y de las
conexiones. Esto hace que sea conveniente entrenar varias veces con distintas
valores iniciales y elegir la que mejor funcione.
A veces se requiere mucho tiempo para obtener soluciones sencillas. Este problema
se reduce gracias al aumento de potencia de los procesadores y al uso de nuevas
tecnologías, sin embargo, el tiempo de cómputo aumenta mucho al aumentar el
tamaño de la red.
La "interferencia catastrófica" o empeoramiento en el rendimiento del sistema,
como consecuencia de la incorporación de nuevos ejemplos de aprendizaje.
La parálisis.
Esto sucede cuando los pesos quedan ajustados a valores muy
grandes, por lo que las unidades de proceso operan con una activación muy próxima
a 1, y por lo tanto, el gradiente del error tiende a 0, en consecuencia, no se producen
modificaciones en los pesos, por lo que el aprendizaje queda detenido. Por eso es
conveniente que los pesos de las conexiones tengan valores aleatorios y pequeños.
Inestabilidad temporal. Si usamos un coeficiente de aprendizaje elevado se van a
producir incrementos grandes en los pesos, así que se producirían oscilaciones
continuas. Esto se soluciona usando un coeficiente de aprendizaje pequeño, o, para
no tener un aprendizaje muy lento, modificando dicho coeficiente paulatinamente.
(aumentarlo si el error global disminuye, y disminuirlo en caso contrario).
64
El problema de los mínimos locales. El algoritmo de retropropagación usa una
técnica basada en el gradiente descendiente, esto significa que sigue la "superficie
del error" siempre hacia abajo, hasta alcanzar un mínimo local, pero no garantiza
que se alcance una solución globalmente óptima. Por otro lado, se han desarrollado
métodos para solventar este problema, como el modo de operación asíncrono o
probabilístico y el uso de métodos estadísticos, como el equilibrio termodinámico
simulado .
Figura 15. Problema de los mínimos locales.
Podemos considerar el error como una superficie llena de desniveles, una idea
intuitiva para solucionar esto, es aplicarle cierta energía a esa superficie agitándola
o haciéndola vibrar.
Otras técnicas que pueden ayudar a no caer en mínimos locales consisten en añadir
cierto nivel de ruido a las modificaciones de los pesos en las conexiones.
65
3.3 ALGORITMO DE KOHONEN
Teuvo Kohonen presentó en 1982 un sistema que trataba de un modelo de red neuronal con
capacidad para formar mapas de características, de manera similar a como ocurre en el
cerebro.
El objetivo de Kohonen era demostrar que un estímulo externo era suficiente para forzar la
formación de mapas.
El modelo de kohonen tiene dos variantes, denominadas LVQ (Learning Vector
Quantization) y TPM (Topology-Preserving Map) o SOM (Self-Organizating Map).
Ambas se basan en el principio de formación de mapas topológicos para establecer
características comunes entre las informaciones (vectores) de entrada a la red, aunque
difieren en las dimensiones de éstos, siendo de una sola dimensión en el caso de LVQ, y
bidimensional, e incluso tridimensional, en la red TPM[24].
3.3.1 Funcionamiento. El algoritmo de kohonen pertenece a la categoría de las redes
competitivas o mapas de autoorganización, es decir, aprendizaje no supervisado en donde
las neuronas compiten por activarse y solo una se activa cuando aparece un patrón en las
entradas, el algoritmo no requiere información sobre salidas deseadas[3,9,24].
Los pesos de las conexiones se actualizan según la neurona vencedora, conocida después de
hallar la menor distancia euclídea para cada neurona. Esta neurona se activa tomando un
valor de uno, permaneciendo las demás con un valor de cero.
66
El algoritmo de kohonen posee una arquitectura de dos capas (entrada-salida) (una sola
capa de conexiones), funciones de activación lineales y flujo de información
unidireccional.
Las unidades de entrada reciben datos continuos normalizados, se normalizan así mismo los
pesos de las conexiones con la capa de salida. Tras el aprendizaje de la red, cada patrón de
entrada activará una única unidad o neurona de salida.
El objetivo de este tipo de redes es clasificar los patrones de entrada en grupos de
características similares, de manera que cada grupo activará siempre la(s) misma(s)
salida(s). Cada grupo de entradas queda representado en los pesos de las conexiones de la
unidad de salida triunfante.
En el modelo de kohonen dos o más vectores de entrenamiento pueden ser similares si
apuntan en la misma dirección sin importar sus magnitudes; por lo cual es necesario
representar la información de entrenamiento en vectores cuya dirección sea diferente; esta
orientación se halla mediante la normalización de los vectores iniciales.
En la arquitectura de la versión original (LVQ) del modelo de Kohonen no existen
conexiones hacia atrás. Se trata de una de las N neuronas de entrada y M de salida. Cada
una de las N neuronas de entrada se conecta a las M de salida a través de conexiones hacia
adelante (feedfoward). Entre las neuronas de la capa de salida, puede decirse que existen
conexiones laterales de inhibición (peso negativo) implícitas,
pues aunque no estén
conectadas, cada una de las neuronas tiene cierta influencia sobre sus vecinas.
La
67
influencia que una neurona ejerce sobre las demás es función de la distancia entre ellas,
siendo muy pequeñas cuando están muy alejadas[47].
Por otra parte, la versión del modelo denominada TPM (Topology Preserving Map) trata de
establecer una correspondencia entre los datos de entrada y un espacio bidimensional de
salida, creando mapas topológicos de dos dimensiones, de tal forma que ante datos de
entrada con características comunes se deben activar neuronas situadas en próximas zonas
de la capa de salida[31]. (Véase la Figura 16).
Figura 16. Estructura red de kohonen
3.3.2 Estructura y aprendizaje de la red de kohonen. El aprendizaje para una red de
kohonen organiza las neuronas en vecindades locales que actúan como clasificadores de
características de los datos de entrada.
El procedimiento es basado en el calculo de
distancias euclídeas sobre los patrones de entrada y es el siguiente:
68
1. Se escogen valores iniciales para los pesos asociados con cada neurona w i (t), dichos
pesos preferiblemente se toman en forma aleatoria con valores pequeños o tomando
valores de algunos patrones de entrada. Este vector de pesos se conforma de
componentes así:
w i (t)= [ w i1 w i 2 ... w in ], donde
n: número de entradas a la red
i = 1, ... ,N
2. Se define la vecindad de la neurona ganadora que permita seleccionar las neuronas
cercanas al patrón de entrada dado en esa iteración, cuya vecindad se define mediante
un radio ρ con un valor muy pequeño.
3. Se presenta un patrón de entrada.
x i (t)= [ x 1 x 2 ...
xn ]
4. Determinar la neurona con vector de pesos más cercano al vector de entrada mediante la
utilización de la distancia Euclidiana D i entre el vector de entrada y el vector de pesos
de cada neurona.
D i = xi (t ) − wi (t ) , donde D i : representa la distancia euclidea para la neurona i
69
Donde la magnitud y normalización de xi (t ) y wi (t ) es la siguiente.
Magnitud de x =
x12 + x 22 + ... + x n2
x x
x 
Normalización de x =  1 2 ... n 
x 
 x x
Magnitud de w =
wi21 + wi22 + ... + win2
w w
w 
Normalización de w =  i1 i 2 ... in 
w 
 w w
5. Actualizar los pesos de todas las neuronas después de obtener la neurona vencedora,
utilizando la siguiente formula:
wi (t ) +α t .( xi (t ) - wi (t ) ), i ∈ B ρ
w i (t + 1) =
wi (t ) , i ∉ B ρ
donde, B ρ : es la vecindad de la neurona ganadora, la cual determina las neuronas
cuyo vector de pesos se actualiza.
Las neuronas más cercanas a la neurona ganadora deben cumplir con la siguiente
ecuación: D j ≤ D i + ρ , donde:
70
j: es el índice de las neuronas vecinas a la neurona ganadora
i: índice de la neurona ganadora
ρ :radio de vecindad
algunas formulas dinámicas de rata de aprendizaje utilizadas por este algoritmo son:
α =
1
t
, α = α 0 .(1 - ), donde
t
It
It : máximo número de iteraciones
t = Número de iteraciones
α 0 = 0.2
6. Regresar al paso 3 si t ≤ It.
3.4 MEMORIAS ASOCIATIVAS
Una Memoria Asociativa es aquella en la que una entrada evoca una respuesta asociada y
cuyo funcionamiento es similar al funcionamiento de nuestra propia memoria, al utilizar
memorias asociativas y presentar una entrada, obtenemos la salida requerida.
En las Memorias Asociativas se toman las entradas y las salidas como vectores, los cuales
se asocian mediante una matriz, que transforma el vector de entrada en el vector de salida.
71
Se han desarrollado dos tipos de memoria asociativa según la naturaleza de los patrones de
entrada-salida a asociar:
•
Memoria auto-asociativa. Asocia un patrón de entrada como el patrón de salida.
•
Memorias hetero-asociativas. Asocia un patrón de entrada con un patrón de salida
distinto.
3.4.1 Red de hopfield.
Las redes de hopfield son redes de adaptación probabilística,
recurrentes, funcionalmente entran en la categoría de las memorias auto-asociativas.
Son arquitecturas de una capa con interconexión total, con salidas de [0,1] ó [–1,1] para el
caso binario, con función de activación tipo escalón de umbral y con función de activación
sigmoidal para cuando sus salidas son analógicas. Sus conexiones son recurrentes y
simétricas, y con regla de aprendizaje no supervisado[41].
Los modelos de redes recurrentes dan soluciones inestables (dinámicas), lo que no siempre
es aconsejable en la solución de problemas.
Figura 17. Modelo de red de hopfield
72
Se puede trabajar con cualquier valor de umbral para la función de activación, pero
típicamente se usa el umbral con valor de cero(0) para cuando se trabaja con valores
bipolares de [–1,1], y cuya función de activación es:
1 si x i > θ
i
donde θ i = 0
fi =
-1 si x i < θ
i
Si se trabaja con valores binarios de 0 y 1 la función de activación es:
1 si x i > θ
i
0 si xi < θ
fi =
f i si xi = θ
i
i
Para este caso el valor del umbral se toma como.
θ i = 12
k
∑w
j =1
ij
Al trabajar con valores comprendidos entre –1 y +1 se utiliza como función de activación
la tangente hiperbólica, si se trabaja con valores reales en los rangos [-1,+1] ó [0,1] la
función de activación utilizada es del tipo sigmoidal.
73
La principal aportación de Hopfield consistió precisamente en conseguir que las redes
recurrentes fueran así mismo estables.
3.4.1.1 Funcionamiento. En la red hopfield las neuronas se conectan todas entre sí, y
consigo mismas y además los pesos asociados a las conexiones entre pares de neuronas son
simétricos es decir que w ij = w ji . La red de hopfield es recurrente y completamente
conectada, funciona como una memoria asociativa no lineal que puede almacenar
internamente patrones presentados de forma incompleta o con ruido. De esta forma puede
ser usada como una herramienta de optimización. El estado de cada neurona puede ser
actualizado un número indefinido de veces, independientemente del resto de las neuronas
de la red pero en forma paralela.
A cada estado de la red se le puede atribuir una cierta cantidad de energía, de hay el sistema
evoluciona tratando de disminuir la energía mediante un proceso de relajación, hasta
alcanzar un mínimo donde se estabiliza, los mínimos de energía se corresponden con los
recuerdos almacenados durante el aprendizaje de la red.
Varias informaciones diferentes pueden ser almacenadas en la red durante la etapa de
aprendizaje. Posteriormente ante la presentación de un estímulo nuevo se obtendrá una
configuración inicial más o menos parecida a alguno de los estímulos almacenados, el
sistema evolucionará hasta caer en una configuración estable que representa el recuerdo
asociado a ese estímulo. Si la configuración inicial discrepa mucho de los recuerdos
almacenados podemos alcanzar algún mínimo que no se corresponde a ningún recuerdo
74
almacenado, recuperando en ese caso una información espuria, o podríamos no alcanzar
ningún mínimo, quedando inestable, en ese caso se dice que la red está "confundida", no es
capaz de reconocer el estímulo, no recuerda[16,41].
La información debe ser configurada previamente en forma de vector y luego aplicada a la
única capa que conforma la red.
Para empezar en el instante inicial se le asigna a cada unidad el valor o estado
correspondiente del patrón de entrada, en donde inicialmente la salida de las neuronas
coincide con el patrón de entrada, es decir:
y i (t) = x i , donde
1≤ i ≤ N y t = 0
y i = salida en la neurona i
x i = patrón entrada en la neurona i
En cada ciclo se elige una neurona al azar y se calcula su activación según una función de
umbral.
En segunda instancia la red realiza iteraciones hasta alcanzar la convergencia es decir hasta
que:
y i (t+1) = y i (t)
75
N
y i (t+1) = f[ ∑ wij y j (t) - θ i ], donde
j =1
1≤ i ≤ N
f: función de activación
Para los modelos discretos al trabajar valores binarios de [-1, +1], la salida se obtiene según
la función escalón:
1
si
N
∑w
j =1
y i (t+1) =
ij
N
y i (t) si
∑w
-1
∑w
si
j =1
ij
N
j =1
ij
y j (t) > θ
i
y j (t) = θ
i
y j (t) < θ
i
El proceso se repite hasta que las salidas de las neuronas permanezcan sin cambios durante
algunas iteraciones. En el caso de la red de hopfield continua, trabaja con valores no
binarios y función de activación sigmoidal, permitiendo almacenar valores reales y además
actualizando las neuronas de salidas en forma simultanea mediante el funcionamiento
paralelo o síncrono y asíncrono en el caso secuencial.
3.4.1.2 Aprendizaje de la red de hopfield.
La elección de la regla de aprendizaje
depende de la interrelación de los patrones que se desean memorizar. Para calcular los
76
pesos de la red se tiene en cuenta si los patrones son codificados en forma binaria o en
forma discreta, teniendo en cuenta esto se utiliza la formula más adecuada.
El entrenamiento en la red de hopfield sigue los pasos enumerados a continuación.
1. Elegir un número de neuronas que cumpla el criterio del 15%, es decir por cada cien
(100) neuronas que tenga la red en su capa, solo puede aprender un total de quince (15)
patrones.
2. Codificar los M ítems que queremos memorizar en la red de forma que los patrones se
parezcan lo menos posible entre sí, para así aproximarnos a la condición de pseudoortogonalidad.
3. Calcular los pesos de las conexiones según la representación del patrón.
Para almacenar M ítems o patrones binarios [0 , 1], se calculan los pesos utilizando la
siguiente formula.
M
∑ (2 x
p −1
p
i
- 1)(2x pj - 1)
w ij =
0, si i = j ( la diagonal vale 0)
77
donde M: número de informaciones que debe aprender la red
x ip : valor del patrón i-ésimo correspondiente a la información p-ésima que debe
aprender la red.
Para la red Hopfield discreta que trabaja con valores de [-1,1], se calculan los pesos
mediante la utilización de:
M
∑x
p =1
p
i
x jp ,
i≠ j
w ij = w ji =
0, i = j
El aprendizaje también puede ser representado utilizando notación matricial, tomando una
matriz NxN que represente todos los pesos de la red.
w 11 w 21 w 31 …. w N 1
W=
w 12 w 22 w 32 ….w N 2
….
w 1N w 2 N w 3 N ….w NN
Donde w ij = w ji , con una diagonal igual a cero(0), o sea w ii =0
78
También se tiene el conjunto de vectores de entrada que debe aprender la red, para poder
conformar la matriz de pesos W así.
M
W = ∑ [ xiT xi − Ι ] , donde
i =1
Ι : matriz identidad NxN
x Ti : transpuesta de la matriz de entrada x i
3.4.1.3 Estabilidad y función de energía. Una red de adaptación asíncrona es estable si la
matriz de pesos es simétrica y su diagonal principal es ceros, para alcanzar estados estables
se debe encontrar una función llamada, función de energía. Se utilizan las funciones de
Liapunov, cuya formula es la siguiente.
E = − 12
∑ ∑ (w
i =1
j =1
ij
yi y j ) +
∑θ
i =1
i
y i para j ≠ i , donde:
y i : salida en la neurona i
y j : salida en la neurona j
Al basarnos en técnicas de gradiente podemos alcanzar los mínimos mediante un
procedimiento secuencial o iterativo (asíncrono), calculando el cambio de energía para una
única unidad en cada paso. El cambio de energía del sistema ante un cambio de estado de
una unidad i elegida al azar es:
∆E = E (t + 1) − E (t )
79
∆E = − net i (t + 1).∆y i (t + 1) − 12 wii
como w ii = 0, la ecuación queda
∆E = − net i (t + 1).∆y i (t + 1)
3.4.1.4 Algoritmo secuencial (Asíncrono). Este algoritmo en su etapa de aprendizaje
sigue la siguiente secuencia.
1. Toma uno de los patrones memorizados, ”x”, y lo introduce como vector de estado
inicial, con N dimensiones.
y(t) = [y 1 (t), y 2 (t), ..., y N (t)]
2. Se realizan iteraciones desde t =1 hasta la convergencia. Las actualizaciones o cambios
de estado se realizan en orden secuencial, una unidad en cada paso, desde i =1 hasta i = N.
3. Se calculan los valores de red utilizando la siguiente expresión.
net i (t+1) =
∑w
ij
y j (t ) + θ i
j
4.
Para la actualización de los estados el algoritmo tienen en cuenta la evaluación
siguientes:
80
1 net i (t+1) > 0
y i (t+1) =
0 net i (t+1) < 0
y i (k) net i (t+1) = 0
5. Se repite el mismo proceso para cada iteración hasta la convergencia, lo que ocurre
cuando ninguno de los elementos cambia de estado durante alguna iteración.
∆ E = − net i (t + 1).∆y i (t + 1)
Si hay algún cambio de energía, este debe ser negativo, puesto que E no debe decrecer
indefinidamente, las iteraciones de la red deben terminar en un número finito de pasos, de
este modo la convergencia está garantizada.
3.4.1.5 Algoritmo paralelo (Síncrono). El aprendizaje en este tipo de algoritmo se realiza
de forma similar al modelo de algoritmo secuencial y sigue los siguientes pasos.
1. Los pesos se obtienen igual que en el modelo secuencial con una diferencia, la diagonal
de la matriz no se pone a cero (0).
w ij = w ji =
M
∑ (2 x
p −1
p
i
− 1)(2 x jp − 1)
81
2. Los umbrales de la red se calculan igual que en el modelo secuencial.
θ
i
= − 12
k
∑w
j −1
ij
3. Durante la iteración t-ésima, se calculan los valores de red en paralelo para cuando
i = 1,2..., N, utilizando:
net i (t + 1) = ∑ wij y j (t ) + θ i
j
4. Para la t-ésima iteración se actualizan los estados de activación en paralelo, utilizando
esta expresión.
1 net i (t + 1) > 0
y i (t + 1) =
0 net i (t + 1) < 0
y i (t ) net i (t + 1) = 0
5. Se repite el mismo proceso para la siguiente iteración hasta la convergencia, que ocurre
cuando ninguno de los elementos cambia de estado durante cualquier iteración.
Prueba de la convergencia. Para probar si la red ha llegado a un estado de convergencia
se evalúan los resultados en la siguiente expresión.
82
∑∑ w
E(t) = - 12
i
j −1
ij
y i (t ) y j (t ) − ∑θ i y i (t ) para i=1
i
El cambio de nivel de energía debido a una iteración de actualización paralela, aplicando
∆E = E (t + 1) − E (t ) , es:
∆E = −∑ net i (t + 1)∆y i (t + 1) − 12 ∆y T (t + 1)W∆y (t + 1) = ∆ k E1 + ∆ k E 2
i
Puesto que la matriz W se forma a partir del producto externo sin la anulación de la
diagonal, es una matriz definida no negativa.
3.4.1.6 Problemas de la red de hopfield.
El número máximo de patrones que puede almacenar es igual al 15% del número de
neuronas de la red.
Requiere mucho tiempo de procesamiento, lo que limita su aplicabilidad .
Tendencia a caer en mínimos locales.
Para todo tipo de patrones se hace necesario que la matriz de aprendizaje sea
cuadrada.
83
3.4.2 Memorias asociativas bidireccionales(BAM). El principal exponente de las redes
BAM fue Bart Kosko. La red BAM es una red neuronal de dos capas que se realimentan
entre sí, donde un patrón de entrada A puede ser una cadena binaria (1 y 0) o una cadena
bipolar (1 y –1). La red BAM es hetero-asociativa.
Al igual que la red de hopfield, la red BAM es capaz de generalizar las informaciones
produciendo salidas correctas de entradas corruptas. También tiene la capacidad de
abstracción, esto es, extraer patrones ideales de ejemplos ligeramente diferentes. Estas
características se aprecian en las funciones mentales humanas y hacen que las redes
neuronales se acerquen a una imitación del cerebro[9,19,44]. (Véase la Figura 18).
Figura 18. Estructura 1 de las memorias asociativas bidireccionales
3.4.2.1 Funcionamiento. La memoria asociativa bidireccional funciona de la siguiente
manera:
84
Un vector de entrada A se aplica a la parte de la red ponderada con la matriz W y produce
un vector de salida B . B entonces se aplica a la transpuesta de W, que es la matriz WT y
se producen nuevas salidas A . Este proceso se repite hasta que la red se estabiliza, es decir
hasta cuando A y B ya no cambien.
Las neuronas en los niveles 1 y 2 funcionan como en otros modelos, se realizan sumas
ponderadas que se aplican en una función de activación. (Véase la Figura 19).
Nivel 0
WT
Nivel 1
W
A
Nivel 2
B
Figura 19. Estructura 2 de las memorias asociativas bidireccionales
Las asociaciones se almacenan en W y WT. Para recuperar un patrón (llamado por Kosko
“memoria”), se aplica la entrada A a la red y se espera a que esta se estabilice
produciéndose una salida B . Cada paso en el ciclo se va acercando más y más a la
memoria almacenada. Este proceso se llama “resonancia”. El estado de las neuronas
85
puede representar la memoria a corto plazo, porque puede cambiar rápidamente al aplicar
otro vector en la entrada A .
3.4.2.2 Aprendizaje. La red se entrena por medio de un cálculo matemático, donde la
matriz de pesos W es la suma de los productos externos de todos los pares de vectores que
contiene el conjunto de entrenamiento.
Se le puede aplicar una función de activación que puede ser una función sigmoidal ó una
función escalón, y puede definirse como:
1 si neti > 0
f(t+1) =
net si net = 0
0 si neti < 0
3.4.2.3 Capacidad de memoria en la red BAM. Hay 2n posibles estados que la red
puede tomar, donde n es el número de neuronas en el nivel más pequeño. Sin embargo se
considera que la red es capaz de almacenar menos que:
n
2log 2n
asociaciones.
Además se debe cumplir que: si se desean almacenar m patrones con n neuronas en el nivel
A y p neuronas en el nivel B, debe cumplirse que m<min(n, p)[45].
86
3.5 ALGORITMOS GENETICOS
3.5.1 Historia. Los algoritmos genéticos, son algoritmos de búsqueda basados en los
mecanismos naturales, estos fueron desarrollados por John Holland, sus colegas y
estudiantes en la Universidad de Michigan (1970) inspirándose en el proceso observado en
la evolución natural de los seres vivos. Unos cinco años más tarde David Goldberg aplicó
los algoritmos genéticos en la solución de problemas industriales[10,20].
En el año de 1975 apareció la primera publicación de Holland titulada “Adaptación en
sistemas Naturales y Artificiales”.
3.5.2 Definición. Un algoritmo genético, es una técnica de búsqueda iterativa inspirada en
los principios de selección natural. Son algoritmos matemáticos, altamente paralelos que
transforman un conjunto de objetos matemáticos individuales, usando operaciones
modeladas de acuerdo al principio darwiniano de reproducción genética y supervivencia del
más apto; y tras haberse presentado de forma natural una serie de operaciones genéticas de
entre las que se destaca la recombinación sexual.
Los algoritmos genéticos, proporcionan un método de aprendizaje basado en la analogía
con la evolución de las especies y generan un conjunto de hipótesis mediante la mutación y
recombinación de parte del conjunto de hipótesis conocido.
87
3.5.3 Clases de algoritmos genéticos.
Algoritmos genéticos generacionales. Se asemejan a la forma de reproducción de
los insectos, donde una generación pone huevos, se aleja geográficamente o muere y
es substituida por una nueva. Este modelo también es conocido como Algoritmo
Genético Canónico.
Algoritmos genéticos de estado fijo. Utilizan el esquema generacional de los
mamíferos y otros animales de vida larga, donde coexisten los padres y sus
descendientes, permitiendo que los hijos sean educados por sus progenitores, pero
también que a la larga se genere competencia entre ellos.
Algoritmos genéticos paralelos. Parte de la metáfora biológica que motivó a
utilizar la búsqueda genética, consiste en que la población es inherentemente
paralela, donde al evolucionar se recorren simultáneamente muchas soluciones,
cada una representada por un individuo de la población. Sin embargo, es muy
común en la naturaleza que no solo sea una población evolucionando, sino varias
poblaciones, aisladas geográficamente, que originan respuestas diferentes a la
presión evolutiva.
Modelos de islas. Divide la población de individuos en subpoblaciones que
evolucionan
independientemente
como
un
algoritmo
genético
normal.
Ocasionalmente, se producen migraciones entre ellas, permitiéndoles intercambiar
material genético. Con la utilización de la migración, este modelo puede explotar
88
las diferencias en las subpoblaciones; esta variación representa una fuente de
diversidad genética, sin embargo, si un número de individuos emigran en cada
generación, ocurre una mezcla global y se eliminan las diferencias locales, y si la
migración es infrecuente, es probable que se produzca convergencia prematura en
las subpoblaciones.
Modelo celular. Coloca cada individuo en una matriz, donde cada uno sólo podrá
buscar reproducirse con los individuos que tenga a su alrededor, escogiendo al azar
o al mejor adaptado; el descendiente pasara a ocupar una posición cercana. No hay
islas en este modelo, pero hay efectos potencialmente similares.
3.5.4 Funcionamiento. En los algoritmos genéticos, inicialmente se crea una población de
cromosomas, o cadena de caracteres que representan las soluciones posibles del problema
en donde hay competencia por los recursos, de la cual se hereda la mejor configuración
genética para cada generación, en donde los rasgos hereditarios que favorecen el éxito
tienden a estar más representados en la población.
De forma iterativa va actualizando la población de cromosomas. En cada iteración, todos
los miembros de la población son procesados por la función de evaluación, tras lo cual una
nueva población es generada. La nueva generación estará compuesta por:
Los
mejores
cromosomas
probabilisticamente).
de
la
población
actual
(seleccionados
89
El resto de cromosomas necesarios para mantener el número suficiente de ellos, que
se consiguen mediante el cruce de individuos. A partir de dos cromosomas padre se
generan dos cromosomas hijos recombinando sus partes. (Véase la Figura 20).
Iniciar
Generar la reserva Genética
Evaluar el desempeño
de los Individuos
Resultado
Si
Satisfactorio
No
Seleccionar
los
mejores
individuos y eliminar los
restantes
Reproducir los mejores
Figura 20. Diagrama algoritmos genéticos
Parar
90
3.5.5 Componentes y características. Los algoritmos genéticos se pueden caracterizar de
acuerdo a los siguientes componentes:
3.5.5.1
Problema a ser optimizado.
Los algoritmos genéticos son particularmente
aplicados en problemas complejos de optimización, problemas con diversos parámetros o
características que precisan ser combinadas en busca de la mejor solución, problemas con
muchas restricciones o condiciones que no pueden ser representadas matemáticamente y
problemas con grandes espacios de búsqueda.
Los algoritmos genéticos han sido aplicados en diversos problemas de optimización, tales
como, la optimización de funciones matemáticas, optimización combinatoria, problema del
cajero viajante, problema de optimización de rutas de vehículos, optimización de
distribución, optimización en negocios, síntesis de circuitos electrónicos, etc.
3.5.5.2
Representación de las soluciones del problema.
Define la estructura del
cromosoma que va a ser manipulado por el algoritmo. Normalmente, la representación
binaria es la más empleada por ser más simple, fácil de manipular a través de los
operadores genéticos, fácil de ser transformada en entero o real y además, por facilitar la
demostración de los teoremas.
La representación binaria, no puede ser empleada siempre; muchas veces el problema exige
un alfabeto de representaciones con más símbolos. Cualquiera que sea la representación
escogida, debe ser capaz de representar todo el espacio de búsqueda que se desea
investigar.
91
3.5.5.3 Decodificación del cromosoma. Consiste básicamente en la construcción de la
solución real del problema. El proceso de decodificación construye la solución para que
esta sea evaluada por el problema. La ventaja de la representación binaria es la gran
facilidad para ser transformada en entero o en real.
3.5.5.4 Evaluación. Define el criterio para ordenar los cromosomas que potencialmente
pueden pasar a formar parte de la siguiente generación. La evaluación es la unión entre el
algoritmo genético y el mundo externo, se realiza a través de una función que representa de
forma adecuada el problema y que tiene como objetivo suministrar una medida de
aptitud(calidad) de cada individuo en la población actual. La función de evaluación es para
un algoritmo genético lo que el medio ambiente es para los seres humanos. Las funciones
de evaluación son específicas de cada problema.
3.5.5.5 Selección. Consiste en escoger los mejores individuos para reproducirlos y crear la
siguiente generación. En el proceso de selección se genera a partir de la población actual
una población intermedia del mismo tamaño, dándole mas participación a los individuos
mas aptos y eliminando o asignando un menor numero de copias a los individuos menos
aptos. En este proceso no se producen nuevos puntos en el espacio de búsqueda, sino que
se determina que individuos dejaran descendencia y en que cantidad participaran en la
próxima generación.
La selección de los cromosomas que formarán parte de la siguiente generación o que serán
usados para aplicarles los operadores genéticos, puede realizarse mediante varias técnicas,
las más usuales son:
92
Selección proporcional. La probabilidad de selección de un cromosoma pi ,l del iésimo individuo en la población P(t) depende de la adaptación relativa de este con
respecto a la población así:
p i ,t =
fi
, donde: f j es la adaptación del j-ésimo individuo.
n
∑f
j =1
j
El numero esperado de descendientes N e del i-ésimo individuo en la próxima
generación es:
N e [i ] = Mpi ,t =
fi
, donde M es el tamaño de la población.
ft
Selección directa. Toma elementos de acuerdo a un criterio objetivo, como son
«los x mejores», «los x peores»... los del tipo «el cuarto individuo a partir del último
escogido» es empleada con mucha frecuencia cuando se quieren seleccionar dos
individuos distintos, y se selecciona el primero por un método aleatorio o
estocástico.
Selección aleatoria. Puede ser realizado por selección equiprobable o selección
estocástica. En la selección equiprobable todos tienen la misma probabilidad de ser
escogidos. En la selección estocástica la probabilidad de que un individuo sea
escogido depende de una heurística.
93
Selección por sorteo. Cada individuo de la población tiene asignado un rango
proporcional o inversamente proporcional a su adaptación. Se escoge un número
aleatorio dentro del rango global, y el escogido es aquel que tenga dicho número
dentro de su rango. La probabilidad de ser escogido es proporcional o inversamente
proporcional al grado de adaptación del individuo.
Selección por escaños.
Divide el rango del número aleatorio en un número
predeterminado de escaños. Tomando como «puntuación» para repartir los escaños
el grado de adaptación. Es más probable escoger un elemento de baja probabilidad
por este método que en el de selección por sorteo.
Selección por restos estocásticos. Igual que el método de selección de escaños,
sólo que los escaños no asignados directamente se asignan de forma aleatoria. La
probabilidad de escoger un elemento de muy baja probabilidad es más alta que en el
de selección por escaños.
Selección mediante torneo. No se basa en valores esperados, por lo tanto no se
requiere de un algoritmo de muestreo.
Selección mediante ruleta. Crea un pool genético formado por cromosomas de la
población actual y escoge parejas aleatorias de cromosomas y luego las empareja,
sin importar incluso que sean del mismo progenitor. El comportamiento es similar
al de una ruleta, donde se define un avance en cada tirada a partir de la posición
actual. Tiene la ventaja de que no es posible escoger dos veces consecutivas el
94
mismo elemento, y puede ser forzado a que la probabilidad de no ser elementos
próximos en la población sea alta.
Selección por ranking. El proceso de selección por ranking consiste en asignarle a
cada individuo un espacio de participación en la siguiente generación de acuerdo a
su desempeño en la generación actual.
3.5.5.6 Operadores genéticos. Son los diferentes métodos u operaciones que se pueden
ejercer sobre una población y que nos permite obtener poblaciones nuevas. Una vez que se
ha evaluado cada individuo sobre una función de evaluación, se aplican los operadores
genéticos.
Operador de cruce.
El operador de cruce es el operador de búsqueda más
importante en los algoritmos genéticos.
Este es un operador sexuado que
intercambia el material genético de un par de padres produciendo descendientes que
normalmente difieren de sus padres. La idea central es que segmentos distintos de
padres diferentes con alta adaptación deberían combinarse en nuevos individuos que
tomen ventaja de esta combinación.
El operador de cruce opera con probabilidad Pc (esto permite que en algunos casos
no haya recombinación y se mantengan los padres). Dados p y q un par de padres,
de largo l bits, se escoge aleatoriamente un punto k ∈ {1, ..., l-1} y se intercambian
95
los bits a la derecha de esa posición entre ambos individuos, obteniéndose los
descendientes s y v.
Operador de mutación. Se define mutación como una variación de las
informaciones contenidas en el código genético habitualmente, un cambio de un gen
a otro producido por algún factor exterior al algoritmo genético. En biología se
definen dos tipos de mutaciones, que son las generativas, que se heredan y las
somáticas, que no se heredan. En los algoritmos genéticos son interesantes las
mutaciones generativas.
En un
algoritmo genético simple, el operador de mutación juega un papel
secundario, invirtiendo ocasionalmente un bit. El operador de mutación invierte
cada bit del cromosoma sobre una base bit a bit con probabilidad p m ,
m{' pm } (q1, q 2, ..., ql ) = (q1' , q 2' ,..., q l' ),
∀ i ∈ {1,...l},
qi si r > p m , donde qi = 1 − qi si r ≤ p m
y r ∈ [0,1] uniformemente aleatorio, distinto para cada bit qi .
3.5.5.7 Inicialización de la población. Inicialmente se genera de forma aleatoria un
conjunto de individuos (cromosomas) los cuales se denominan población inicial M. Cada
individuo de esta población es un ser que caracteriza su propia especie, además es el código
de información sobre el cual opera el algoritmo en su primer ciclo.
96
3.5.5.8 Parámetros y criterios de parada. En un algoritmo genético varios parámetros
controlan el proceso de evolución, siendo importantes los siguientes:
Tamaño de la población en un número de puntos del espacio de búsqueda siendo
considerados en paralelo.
Tasa de cruce mediante la probabilidad que tiene un individuo a ser recombinado
con otro.
Tasa de mutación por la probabilidad de que el contenido de cada posición del
cromosoma sea alterada.
Número de generaciones sobre el número total de ciclos de evolución de un
algoritmo genético.
Total de individuos en el número total de tentativas (tamaño de la población *
número de generaciones)
Los dos últimos parámetros son empleados generalmente como criterio de parada de un
algoritmo genético.
3.5.6 Fundamentos matemáticos. Podemos comprender mejor el principio de
funcionamiento de los algoritmos genéticos a partir de la teoría de schema (patrones)
desarrollada por John Holland. Holland definió schema como un patrón que describe un
97
conjunto de cromosomas con semejanzas en algunas posiciones.
Para representar
schemata (plural de schema) se utiliza un símbolo adicional "*". Así, para un espacio de
búsqueda representado por K L existen ( K + 1) L schemata; donde:
K: Número de símbolos del alfabeto
L: Longitud del cromosoma
Para comprender mejor porque funcionan los algoritmos genéticos, basta con analizar el
efecto de los procesos de selección y reproducción sobre el schemata. En este análisis se
utilizan dos definiciones:
O(H): orden o especificidad de un schema, como el número de posiciones fijas
diferentes de *.
d(H): longitud del schema, como la distancia entre la primera y la última posición
fijas.
3.5.6.1 Análisis del efecto de la selección. Sea m(H, t) el número de representaciones de
H(schema) en un ciclo t del algoritmo con n individuos en la población. Podemos calcular
el número de probables representantes de H en el próximo ciclo, como se muestra a
continuación:
98
∑f
m(H, t+1) = n X
i ∈H
i
, donde n: número de individuos
n
∑f
j =1
j
3.5.6.2 Análisis del efecto de cruce. Sea Pd la probabilidad de destrucción de un schema
H por el cruce de un puntose da la siguiente ecuación:
Pd(H) =
δ (H )
, donde δ (H ) es la longitud del schemata
L −1
3.5.6.3 Análisis del efecto de la mutación. Sea Pm la probabilidad de ser aplicado el
operador de mutación a una determinada posición del cromosoma. Así la probabilidad de
supervivencia del cromosoma dada por la siguiente ecuación:
Ps = (1 − Pm ) O ( H ) ; Para tasas de mutación Pm << 1, es: Ps ≅ 1- Pm X O(H)
Esto significa que cromosomas de orden bajo tienen mayores posibilidades de no ser
destruidos por la mutación. Combinando el efecto de la selección, cruce y mutación, se
tiene:
m(H,t+1) ≥ m(H,t)X
f (H ) 
δ (H ) 
X 1 − Pc X
X[1- Pm X O(H)]
L − 1 
f

99
Teorema fundamental de los algoritmos genéticos: “Schematas cortos y de orden bajo
tienden a proliferar o desaparecer en las generaciones siguientes de acuerdo con la aptitud
media”.
3.5.7 Aprendizaje. El proceso de aprendizaje en los algoritmos genéticos se resume en los
siguientes pasos.
1.
Se crea una población aleatoria de cromosomas, en donde las secciones de cada
cromosoma se denominan genes, los cuales representan los parámetros para maximizar o
minimizar una función objetivo J.
J=
1
n
∑(y
i =1
i
− di )
, Donde n: numero de cromosomas
2
2. La población aleatoria de cromosomas representados por una cadena binaria se codifican
como los pesos de la red, en donde cada peso es un gen, la cadena se codifica haciendo uso
de la siguiente formula.
w(t) = w ij (t)+ w i 0 + c li (t), donde :
w i 0 : peso asociado a una entrada umbral x 0 =1
c li (t) : pesos iniciales asociado a los nodos de salida en la iteración inicial t = 0
100
3. Después de evaluar la función objetivo se escogen los padres de la siguiente generación
usando uno de los métodos de selección existentes.
4. Luego de seleccionar los padres se forman al azar las parejas y se reproducen utilizando
uno de los operadores genéticos existentes[9].
5. Se evalúan nuevamente las generaciones resultantes, respecto a la función objetivo y se
continua con el ciclo hasta que haya un cromosoma ganador.
3.6 SISTEMAS DIFUSOS
3.6.1. Conjuntos difusos. Fueron introducidos por primera vez en 1965. En un principio
Aristóteles consideraba que existían ciertos grados de veracidad y falsedad. Platón había
considerado ya grados de pertenencia[16,18].
Particularmente la escuela americana de la filosofía llamada pragmatismo fundada a
principios del siglo XX por Charles Sanders Peirce,
fundamento sus ideas en estos
conceptos; Charles fue el primero en considerar ''vaguedades'', más que falso o verdadero.
El conocimiento se adquiere y se manipula de una manera inferencial y deductiva, por
medio del razonamiento simbólico, es decir la capacidad para manipular signos que sitúan a
algo generalmente en una estructura o red de hechos, a este conjunto de hechos inciertos,
que se requieren para la solución de un problema, se le ha dado el nombre de conjuntos
difusos y a sus reglas lógica difusa.
101
La primera lógica de vaguedades fue desarrollada en 1920 por el filósofo Jan Lukasiewicz,
el cual visualizó los conjuntos con un posible grado de pertenencia y con valores de 0 y 1,
después los extendió a un número infinito de valores entre 0 y 1.
3.6.2 Lógica difusa. En 1960, Lotfi Zadeh inventó la lógica difusa guiado por el principio
de que las matemáticas pueden ser usadas para encadenar el lenguaje con la inteligencia
humana, mediante la definición de grados de pertenencia.
La Lógica difusa tiene como objetivo modelar el modo aproximado de raciocinio humano,
pretendiéndose desarrollar sistemas computacionales capaces de tomar decisiones
racionales en un ambiente de incertidumbre e imprecisión. Ofrece un mecanismo para
manipular informaciones imprecisas, tales como los conceptos de mucho, poco, pequeño,
alto, bueno, caliente, frío, etc., suministrando una respuesta aproximada para una cuestión
basada en un conocimiento que es inexacto, incompleto o no es totalmente confiable.
Lógica difusa es la rama de la inteligencia artificial que le permite a un computador
analizar información del mundo real en una escala entre falso y verdadero. Un tipo de
lógica que reconoce más que simples valores verdaderos y falsos. Con lógica difusa, las
proposiciones pueden ser representadas con grados de veracidad o falsedad[9,18].
La lógica difusa en un primer nivel puede decirse que es un lenguaje que permite trasladar
sentencias sofisticadas del lenguaje natural a un formalismo matemático. Mediante esta
afirmación se marcó una fuerte necesidad de distinguir la lógica difusa de la teoría de
probabilidad.
102
Algunos conceptos pueden ser mejor definidos en términos de palabras, que por
matemáticas; la lógica difusa y su expresión en conjuntos difusos, proveen una disciplina
que puede construir mejores modelos de la realidad.
La lógica difusa o borrosa también puede definirse como un sistema matemático que
modela funciones no lineales, que convierte unas entradas en salidas acordes con los
planteamientos lógicos que usan el razonamiento aproximado; es básicamente una lógica
con múltiples valores, que permite definir valores en las áreas oscuras entre las
evaluaciones convencionales de la lógica precisa, cuyos valores son si / no, cierto / falso,
blanco / negro etc, en donde las proposiciones pueden ser representadas con grados de
certeza o falsedad.
Se fundamentan en los conjuntos borrosos y en un sistema de inferencia borroso basado en
reglas de la forma " SI....... ENTONCES...... ", donde los valores lingüísticos de la premisa
y el consecuente están definidos por conjuntos borrosos, es así como las reglas siempre
convierten un conjunto borroso en otro.
4. ARQUITECTURA DEL SISTEMA EN LA METODOLOGÍA ORIENTADA A
OBJETOS OMT
4.1 ANÁLISIS ORIENTADO A OBJETOS
4.1.1
Del problema
4.1.1.1 Formulación del problema. Diseñar una herramienta de software que permita
entrenar Redes Neuronales Artificiales aplicando diferentes algoritmos.
4.1.1.2 Descripción del problema. Las redes neuronales artificiales poseen características
generales y particulares dependiendo de la clasificación que se haga de ellas. Por tal razón
la herramienta debe ser suficientemente flexible para explotar al máximo las ventajas que
ofrece cada modelo.
Se deben implementar interfaces que interactúen de forma amigable con el usuario, que le
permitan aplicar su experiencia y creatividad a la hora de diseñar y entrenar una red para
resolver un problema del mundo real, para lograr esto, el sistema debe enfocarse hacia una
herramienta de apoyo y no de solución. También debe considerarse que existen diferentes
algoritmos, cada una de los cuales es fuerte en determinada clase de problemas, además
cada algoritmo ofrece una gran variedad de alternativas que aumentan o disminuyen su
eficiencia.
104
4.1.2 Modelado de objetos. El modelo de objetos proporciona una representación gráfica
intuitiva del sistema entrenador de redes neuronales artificiales en forma real, mostrando su
estructura estática y la organiza en segmentos manejables describiendo clases de objetos,
sus relaciones entre sí y los atributos que caracterizan a cada una de las clases[23], que
conforman el sistema creado para entrenar redes neuronales artificiales. Este diagrama
muestra un enfoque profundo de la información que se manejará logrando identificar de
forma clara y concisa sus clases y sus asociaciones.
Figura 21. Modelo de objetos de la herramienta de software entrenador de redes neuronales
105
4.1.2.1 Objetos y clases. Las clases de objetos más relevantes en el contexto que maneja
el software de entrenamiento de las redes neuronales artificiales son las siguientes.
•
Terminal
•
Interfaz
•
Algoritmo
•
Red Neuronal
•
Neurona
•
Pesos
•
PatronEntrada
•
Factivación
•
Perceptron
•
Propagación Inversa
•
Hopfield
•
Kohonen
•
Memorias Asociativas
•
Genéticos
•
RataAprendizaje
106
4.1.2.2 Diccionario de datos
Terminal: Esta clase representa la máquina cliente y define el modo de interacción entre el
usuario y el sistema, refleja el comportamiento de los datos durante el procesamiento de los
mismos.
Interfaz1: Muestra la interacción grafica entre el usuario y el sistema, reflejando de manera
sencilla las diferentes opciones que pueden ser seleccionables.
Algoritmo: Clase que conforma el centro de la estructura de este sistema en el
entrenamiento de redes neuronales artificiales, teniendo en cuenta el modelo de algoritmo
que sea seleccionado.
Red Neuronal: Encargada de modelar la estructura de la red que se desea implementar, de
acuerdo a un algoritmo seleccionado, identificando el numero de capas y neuronas que
tendrá la estructura de la red.
Neurona: Eje
o unidad principal de la estructura de red modelada, encargada de
sincronizar todos los procesos que se deban realizar durante el entrenamiento de cualquier
modelo de red neuronal.
Pesos: Representan las conexiones entre las distintas neuronas y nodos involucrados en un
modelo de red para cualquier tipo de algoritmo de representación neuronal, toda conexión
tiene asignado un valor que puede ser aleatorio o dado en forma intencional.
107
Patrón Entrada: Esta clase proporciona los datos de entrada que la red neuronal debe
aprender durante un proceso de entrenamiento. Estas entradas se pueden elegir de acuerdo
al algoritmo escogido como entrada-salida deseada o entrada solamente.
FActivación: Proporciona el tipo de función de activación que se utilizará para evaluar la
salida en cada neurona para los diferentes algoritmos de entrenamiento usados, lográndose
así una mayor estabilidad en el aprendizaje del algoritmo que la utilice.
Perceptron: Clase de algoritmo para el entrenamiento neuronal que abstrae el
comportamiento, características, modo de aprendizaje y funcionamiento de los algoritmos
perceptron monocapa y multicapa.
Propagación Inversa:
Clase de Algoritmo específicamente utilizada para trabajar
problemas que ameritan redes neuronales multicapa en estructuras con conexiones hacia
delante y repropagación del error
Hopfield: Permite representar el modelo de red neuronal propuesto por Hopfield, modelar
su estructura, funcionamiento y modo de aprendizaje.
Kohonen: Esta clase representa la estructura de red neuronal según el modelo propuesto
por Kohonen conservando las características generales de la red neuronal e implementando
las características propias que le permiten actuar como un clasificador.
108
Genéticos: Clase que abstrae para redes monocapa y multicapa el modo de aprendizaje
propuesto por Jhon Holland basado en el principio de la selección , evolución y
reproducción natural de los individuos.
Memorias Asociativas: Modela el comportamiento en redes neuronales de dos capas
implementando características hetero-asociativas o auto-asociativas según la configuración
de neuronas en la entrada y salida de la red.
RataAprendizaje: Clase invocada por la mayoría de algoritmos de entrenamiento, para
agilizar mejor un aprendizaje optimo y así acelerar la convergencia de la red hacía la
solución más satisfactoria según el error de aprendizaje.
4.1.2.3 Identificación de asociaciones
•
Una interfaz de usuario puede estar en una o mas terminales
•
Una interfaz esta relacionada con uno o varios algoritmos
•
Una generalización de algoritmo gestiona a una variedad de algoritmos de
entrenamiento
•
Todo algoritmo tiene asociado uno o muchos pesos para sus diferentes conexiones.
•
Todo algoritmo tiene una o más de una función de activación
•
Todo algoritmo esta relacionado con una red neuronal
•
Un algoritmo de entrenamiento tiene uno o muchos patrones de entrada
•
En un algoritmo se relacionan muchas neuronas
109
•
Los pesos son parte del algoritmo de entrenamiento
•
Una función de activación pertenece aun algoritmo
•
Una red neuronal esta conformada por muchas neuronas
•
Una red neuronal tiene uno o mas patrones de entrada
•
Toda red neuronal tiene uno o mas algoritmos para su entrenamiento
•
Toda neurona pertenece a una red neuronal y esta asociada a un algoritmo
•
Todo patrón de entrada pertenece a una red neuronal y por consiguiente es utilizado
por un algoritmo de entrenamiento
•
Un perceptron posee una o más ratas de aprendizaje
•
Un algoritmo de propagación Inversa posee una o mas ratas de aprendizaje
•
Un algoritmo de kohonen tiene una o mas ratas de aprendizaje.
4.1.2.4 Atributos identificativos
•
Interfaz
Usuario
•
Algoritmo
Nombre
Num_Iteraciones
Error_deseado
•
Red Neuronal
Num_Capas
Num_Neuronas
110
•
FActivación
Nombre
Tipo
•
RataAprendizaje
Tipo
Valor
•
Perceptron
V_Umbral
•
Propagación Inversa
Valor_Umbral
Valor_Momentun
•
Kohonen
RadioVecindad
•
Genéticos
Condiciones Iniciales
Tamaño de la población
Tamaño Gen
4.1.3 Modelado dinámico. El modelado dinámico muestra el comportamiento del sistema
y en especial la secuencia de interacciones dadas en el software entrenador de redes
neuronales artificiales en relación con el tiempo.
111
4.1.3.1 Escenarios. Un escenario es una secuencia de acciones o diálogo que se produce
entre el usuario y el sistema durante su ejecución, para poder determinar o comprender el
comportamiento que se espera del mismo.
Los escenarios y sucesos muestran las interacciones principales y el intercambio de
información entre objetos.
Los escenarios más relevantes en el sistema entrenador de redes neuronales artificiales
(Intelligent Spider), son los siguientes:
•
Escenario principal del sistema.
•
Escenario Perceptron
•
Escenario Propagación Inversa
•
Escenario Hopfield
•
Escenario Kohonen
•
Escenario Memorias Asociativas
•
Escenario Algoritmos Genéticos
•
Escenario Propagar patrones
•
Escenario Generar Código
112
Escenario principal del sistema
Escenario normal:
- La interfaz muestra los menús al usuario
Si el usuario desea chequear el menú archivo
- Usuario da clic en archivo
- Usuario puede seleccionar una de las opciones abrir, guardar, guardar como,
cerrar y salir.
Si el usuario desea chequear el menú Algoritmos
- Usuario da clic en Algoritmos
- Usuario puede seleccionar perceptron, propagación inversa, hopfiel, kohonen, memorias
asociativas y algoritmos genéticos.
Si el usuario desea chequear el menú Aspecto
- Usuario puede elegir trabajar en aspecto motif, windows, metal y mac
113
Si el usuario desea chequear el menú Ayudas
- Usuario da clic en ayudas
- Usuario puede seleccionar temas de ayuda, acerca del GIIA y acerca de los autores
- El sistema muestra al usuario la información solicitada.
Escenario perceptron
Escenario normal:
- La interfaz carga y muestra al usuario el frame del perceptron y todas las opciones que
este tiene y que se deben de tener en cuenta
Si la opción es nuevo modelo
- Usuario en la lengüeta estructura introduce el numero de patrones que debe aprender la
red, el numero de neuronas que tiene ese diseño, el numero de capas y el numero de
neuronas o nodos de salida para el modelo de red a entrenar y luego clic en aceptar para
enviar la información a la aplicación o en borrar para introducir nuevos valores.
114
- El usuario en la lengüeta parámetros introduce un valor de rata de aprendizaje, el numero
de iteraciones y el error deseado, luego clic en aceptar para enviar información digitada a
la aplicación o en borrar para introducir nuevos datos
Si la opción es patrones de entrada ó estructura oculta del menú configuración
- El usuario hace clic en el submenú o en el botón patrones de entrada y cuando aparezca el
cuadro de mensaje introduce los valores para estos, después clic en aceptar para guardar
los datos o clic en borrar para no registrar nada.
- Usuario hace clic en el submenú o en el botón estructura oculta y en el cuadro de
mensaje introduce el numero de neuronas para las capas definidas, luego clic en aceptar
para guardar y enviar la información a la aplicación o clic en cancelar para no registrar
datos.
Si la opción es menú activación o menú opciones
- El usuario en el menú activación selecciona una de las opciones listadas en el submenú
para luego en el menú herramientas poder hacer uso de ellas
- Usuario en el menú activación marca y selecciona los submenús más convenientes
Si la opción es compilar del menú proceso o del botón compilar
115
- Usuario hace clic en compilar
- Aplicación envía respuesta de compilación
Si la opción es entrenar del menú proceso
- Usuario da clic en entrenar y el sistema empieza el entrenamiento
- El sistema envía una respuesta y la interfaz muestra los resultados del entrenamiento
Escenario anormal:
- La interfaz carga y muestra al usuario el frame del perceptron y todas las opciones que
este tiene y que se deben de tener en cuenta
Si la opción es nuevo modelo
- Usuario en la lengüeta estructura introduce el numero de patrones que debe aprender el
modelo de red, el numero de neuronas que tiene ese diseño, el numero de capas y el
numero de neuronas o nodos de salida para el modelo de red a entrenar y luego clic en
aceptar para enviar la información a la aplicación o en borrar para introducir nuevos
valores.
116
- El usuario en la lengüeta parámetros introduce un valor de rata de aprendizaje, el numero
de iteraciones y el error deseado, luego clic en aceptar para enviar la información digitada
a la aplicación o en borrar para introducir nuevos datos
Si la opción es patrones de entrada ó estructura oculta del menú configuración
- El usuario hace clic en el submenú o en el botón patrones de entrada y aparece un cuadro
de dialogo con un mensaje informando problemas en los datos iniciales .
- Usuario hace clic en el submenú o en el botón estructura oculta y aparece un cuadro de
dialogo informando que no se han definido capas ocultas
Si la opción es menú activación o menú opciones
- El usuario en el menú activación selecciona una de las opciones listadas en el submenú
para luego hacer uso de estas en el menú herramientas
- Usuario en el menú activación marca y selecciona los submenús más convenientes
Si la opción es compilar del menú proceso o del botón compilar
- Usuario hace clic en compilar
- Aplicación envía respuesta de compilación informando sobre los errores producidos
117
Si la opción es entrenar del menú proceso
- Usuario da clic en entrenar y el sistema no realiza ninguna operación
Escenario propagación inversa
Escenario normal:
- La interfaz carga y muestra al usuario el frame Propagación Inversa y todas las opciones
que este tiene y que se deben de tener en cuenta
- Usuario en la lengüeta estructura introduce el numero de patrones que debe aprender el
modelo de red, el numero de neuronas que tiene ese diseño, el numero de capas y el
numero de neuronas o nodos de salida para el modelo de red a entrenar y luego clic en
aceptar para enviar la información a la aplicación o en borrar para introducir nuevos
valores.
- El usuario en la lengüeta parámetros introduce un valor de rata de aprendizaje, el numero
de iteraciones y el error deseado, luego clic en aceptar para enviar información digitada a
la aplicación o en borrar para introducir nuevos datos
Si la opción es patrones de entrada ó estructura oculta del menú configuración
118
- El usuario hace clic en el submenú o en el botón patrones de entrada y cuando aparezca el
cuadro de mensaje introduce los valores para estos, después clic en aceptar para guardar
los datos o clic en borrar para no registrar nada.
- Usuario hace clic en el submenú o en el botón estructura oculta y en el cuadro de
mensaje introduce el numero de neuronas para las capas definidas, luego clic en aceptar
para guardar y enviar la información a la aplicación o clic en borrar para no registrar
datos
Si selecciona el menú activación o el menú opciones
- El usuario selecciona una función de activación de la lista de submenús
- Puede seleccionar en opciones pesos en disco, adicionar iteraciones, umbral, Nodos en la
última capa, rata de aprendizaje dinámica ,momentun y pesos fijos lo cual es tomado por
el sistema.
- En el menú herramientas configura la información de entrada para las opciones marcadas
en el menú opciones.
Si el usuario elige el submenú compilar del menú procesos o el botón compilar
- El usuario compila su estructura de red
119
Si la opción es entrenar del menú procesos o del botón entrenar
- El usuario selecciona entrenar y el sistema empieza el entrenamiento
- El sistema envía una respuesta y la interfaz muestra los resultados del entrenamiento
Si la opción seleccionada es el menú ver o cada uno de los botones para sus submenús
- Usuario puede ver los pesos iniciales, los finales, los patrones de entrada y la
configuración oculta para el modelo de red entrenado
Escenario anormal:
- La interfaz carga y muestra al usuario el frame propagación inversa y todas las opciones
que este tiene y que se deben tener en cuenta.
- Usuario en la lengüeta estructura introduce el numero de patrones que debe aprender el
modelo de red, el numero de neuronas que tiene ese diseño, el numero de capas y el
numero de neuronas o nodos de salida para el modelo de red a entrenar y luego clic en
aceptar para enviar la información a la aplicación o en borrar para introducir nuevos
valores.
120
- El usuario en la lengüeta parámetros introduce un valor de rata de aprendizaje, el numero
de iteraciones y el error deseado, luego clic en aceptar para enviar información digitada a
la aplicación o en borrar para deshacer o introducir nuevos datos
Si la opción es patrones de entrada ó estructura oculta del menú configuración
- El usuario hace clic en el submenú o en el botón patrones de entrada y se muestra un
cuadro de dialogo mostrando errores en los datos anteriores.
- Usuario hace clic en el submenú o en el botón estructura oculta y se muestra un mensaje
de error en la definición de las capas ocultas.
Si selecciona el menú activación o el menú opciones
- El usuario selecciona una función de activación de la lista de submenús
- Selecciona en opciones pesos y patrones en disco, adicionar iteraciones, umbral, nodos en
la última capa, rata de aprendizaje dinámica, momentun y pesos fijos.
- Selecciona el menú herramientas y al intentar abrir los patrones y pesos de una unidad de
disco no encuentra información, no se presentan las formulas de rata dinámica así como
tampoco el cuadro de dialogo para digitar el valor de peso para las conexiones de la red
neuronal.
121
Si el usuario elige el submenú compilar del menú procesos o el botón compilar
- El usuario compila su estructura de red y la aplicación muestra errores cometidos
Si la opción es entrenar del menú procesos o del botón entrenar
- El usuario selecciona entrenar y el sistema no hace nada
Si la opción seleccionada es el menú ver o cada uno de los botones para sus submenús
- Usuario para los pesos iniciales, los finales, los patrones de entrada y la configuración
oculta recibe mensajes de que no se ha definido todavía ninguna estructura y el modelo
no ha sido entrenado.
Escenario hopfield
Escenario normal:
- La interfaz muestra el frame hopfield y todas sus opciones
Si la opción es nuevo modelo
- El usuario en la pestaña estructura introduce el numero de patrones que debe aprender el
modelo de red, numero de entradas y el numero de neuronas que tiene ese diseño en su
122
única capa , luego hace clic en aceptar para grabar y enviar la información a la aplicación
o clic en borrar para no tener en cuenta los datos digitados.
Si la opción es patrones de entrada del menú configuración
- El usuario al dar clic en el botón o opción patrones de entrada introduce los valores de
estos patrones de entrenamiento en el cuadro o tabla que se muestra
Si despliega el menú opciones
- Usuario puede abrir patrones desde una unidad de disco y entrenar la red.
- Usuario puede marcar el submenú patrones continuos e introducir datos no binarios para
los patrones de entrada.
Si la opción es compilar
- El usuario hace clic el submenú compilar del menú procesos o en el botón compilar.
Si la opción es entrenar del menú procesos o del botón entrenar
- El usuario hace clic en entrenar y el sistema empieza el entrenamiento la aplicación
envía una respuesta y la interfaz muestra los resultados del entrenamiento.
123
Si el usuario selecciona el menú ver o los botones que representan sus submenús
- Con el submenú patrones de entrada podrá ver los datos iniciales.
- En el submenú pesos finales los pesos de la matriz generada después del entrenamiento.
Escenario anormal:
- La interfaz muestra el frame hopfield y todas sus opciones.
Si la opción es nuevo modelo
- El usuario en la pestaña estructura introduce el numero de patrones que debe aprender el
modelo de red, numero de entradas y el numero de neuronas que tiene ese diseño en su
única capa , luego hace clic en aceptar para grabar y enviar la información a la aplicación
o clic en borrar para no tener en cuenta los datos digitados.
Si la opción es patrones de entrada del menú configuración
- El usuario al dar clic en el botón o opción patrones de entrada la aplicación muestra un
cuadro de dialogo con mensaje de error en la información inicial.
124
Si despliega el menú opciones
- Usuario no encuentra el archivo que tiene codificada la información de entrada.
- Usuario puede marcar el submenú patrones continuos y la aplicación no los acepta.
Si la opción es entrenar del menú procesos o del botón entrenar
- El usuario hace clic en entrenar y el sistema no funciona.
Si el usuario selecciona el menú ver o los botones que representan sus submenús
- En el submenú pesos finales los pesos de la matriz no son vistos debido a que no hubo
proceso de entrenamiento.
Escenario kohonen
Escenario normal:
La interfaz carga y muestra al usuario el frame kohonen.
- El usuario en la pestaña estructura introduce el numero de patrones que debe aprender el
modelo de red, numero de entradas y numero de neuronas ,hace clic en aceptar para
grabar la información en borrar para no tenerla en cuenta.
125
- El usuario en la pestaña parámetros introduce valores para rata de aprendizaje, radio de
vecindad y numero de iteraciones luego clic en el botón aceptar para grabar la
información o en borrar para no tenerla en cuenta.
- El usuario en el botón o opción patrones de entrada hace clic y en el cuadro de dialogo
introduce sus valores.
- Si selecciona el menú opciones puede marcar abrir los patrones desde un disco,
adicionarle rata dinámica al entrenamiento, iteraciones ,pesos fijos y pesos en disco
- Si selecciona el menú herramientas puede abrir la información referente a los patrones de
entrada especificando la unidad donde esta se encuentra, así como un valor para los pesos
iniciales.
- El usuario compila haciendo clic en el submenú compilar del menú procesos o clic en el
botón compilar .
- El usuario selecciona entrenar y el sistema empieza el entrenamiento.
- El sistema envía una respuesta y la interfaz muestra los resultados del entrenamiento.
- Usuario con las opciones del menú ver visualiza los patrones de entrada, los pesos
iniciales y los pesos finales.
126
Escenario anormal:
La interfaz carga y muestra al usuario el frame kohonen
- El usuario en la pestaña estructura introduce el numero de patrones que debe aprender el
modelo de red, numero de entradas y numero de neuronas ,hace clic en aceptar para
grabar la información en borrar para no tenerla en cuenta.
- El usuario en la pestaña parámetros introduce valores para rata de aprendizaje, radio de
vecindad y numero de iteraciones luego clic en el botón aceptar para grabar la
información o en borrar para no tenerla en cuenta.
- El usuario en el botón o opción patrones de entrada hace clic y se muestra un mensaje de
error en los datos iniciales.
- Si selecciona el menú opciones puede marcar abrir los patrones desde un disco,
adicionarle rata dinámica al entrenamiento, iteraciones, pesos fijos y pesos en disco.
- Si selecciona el menú herramientas no puede abrir la información referente a los patrones
de entrada especificando la unidad donde esta se encuentra, así como un valor para los
pesos iniciales.
- El usuario compila haciendo clic en el submenú compilar del menú procesos o clic en el
botón compilar y se muestran los errores producidos.
127
- El usuario selecciona entrenar y el sistema no funciona.
Escenario memorias asociativas
Escenario normal:
- La interfaz carga y muestra al usuario el frame memorias asociativas y todas
las
opciones disponibles.
Si la opción es nuevo modelo
- El usuario da clic en la pestaña estructura introduce el numero de patrones, el numero de
neuronas que tiene el primer nivel y el numero de neuronas que tiene el segundo nivel ó
capa para el modelo a entrenar, clic en aceptar para guardar los datos o en borrar para
eliminarlos o para entrar datos nuevos.
Si la opción es patrones de entrada del menú configuración
- El usuario introduce los valores para los patrones.
Si la opción es compilar
- El usuario hace clic el botón o en el submenú compilar del menú procesos.
128
Si la opción es entrenar del menú procesos
- El usuario selecciona entrenar y el sistema empieza el entrenamiento.
- El sistema envía una respuesta y la interfaz muestra los resultados del entrenamiento.
Escenario anormal:
- La interfaz carga y muestra al usuario el frame memorias asociativas y todas
las
opciones disponibles.
Si la opción es nuevo modelo
- El usuario da clic en la pestaña estructura introduce el numero de patrones, el numero de
neuronas que tiene el primer nivel y el numero de neuronas que tiene el segundo nivel ó
capa para el modelo a entrenar, clic en aceptar para guardar los datos o en borrar para
eliminarlos o para entrar datos nuevos.
Si la opción es patrones de entrada del menú configuración
- El usuario hace clic en botón o en el submenú patrones de entrada y se muestra mensaje
de error en la definición de la estructura inicial.
129
Si la opción es compilar
- El usuario hace clic el botón o en el submenú compilar y la aplicación envía todos los
errores producidos.
Si la opción es entrenar del menú procesos
- El usuario selecciona entrenar y el sistema se bloquea.
Escenario genéticos
Escenario normal
- La interfaz carga y muestra al usuario el frame algoritmos genéticos.
Si la opción escogida es nuevo modelo
- Usuario en la pestaña estructura introduce el numero de entradas, capas ocultas y número
neuronas de salida que debe tener el modelo de red, hace clic en aceptar para grabar los
datos digitados o en borrar para eliminarlos.
- El usuario en la pestaña parámetros introduce un valor de error permitido, iteraciones y el
número de patrones que debe aprender el modelo de red, hace clic en aceptar para grabar
o clic en borrar para no tenerlos en cuenta.
130
- El usuario en la pestaña población introduce un valor para el numero de cromosomas o
poblaciones que se van a evaluar, el numero de condiciones iniciales y el valor para el
tamaño del gen, hace clic en aceptar para mantener activos los datos digitados.
Si la opción es patrones de entrada o entrada de neuronas en estructura oculta
- El usuario al hacer clic en el botón o en el submenú de patrones de entrada introduce los
datos pertinentes, lo mismo hace para la estructura oculta y luego clic en aceptar para
grabar la información en la aplicación o en borrar para omitir información.
Si selecciona el menú opciones
- Puede seleccionar en opciones pesos en disco para extraer datos desde una unidad, hacer
clic en método de selección o en operador de reproducción para mostrar un cuadro con las
opciones a escoger, clic en aceptar para tomar lo marcado o clic en cancelar.
Si selecciona compilar
- El usuario compila su estructura de red.
Si la opción es entrenar del menú procesos
- El usuario selecciona entrenar y el sistema empieza el entrenamiento.
131
- El sistema envía una respuesta y la interfaz muestra los resultados del entrenamiento.
Escenario anormal:
- La interfaz carga y muestra al usuario el frame algoritmos genéticos.
Si la opción escogida es nuevo modelo
- Usuario en la pestaña estructura introduce el numero de entradas, capas ocultas y número
neuronas de salida que debe tener el modelo de red, hace clic en aceptar para grabar los
datos digitados o en borrar para eliminarlos.
- El usuario en la pestaña parámetros introduce un valor de error permitido, iteraciones y el
número de patrones que debe aprender el modelo de red, hace clic en aceptar para grabar
o clic en borrar para no tenerlos en cuenta.
- El usuario en la pestaña población introduce un valor para el numero de cromosomas o
poblaciones que se van a evaluar, el numero de condiciones iniciales y el valor para el
tamaño del gen, hace clic en aceptar para mantener activos los datos digitados.
Si la opción es patrones de entrada o entrada de neuronas en estructura oculta
- El usuario al hacer clic en el botón o en el submenú de patrones de entrada se encuentra
con un dialogo donde se sugiere establecer una estructura inicial para la red, el mismo
132
procedimiento ocurre para la estructura oculta, pues no reconoce valor inicial de capas
ocultas ,hace clic en aceptar para cerrar el dialogo.
Si selecciona el menú opciones
- Puede seleccionar en opciones pesos en disco y estos no se pueden abrir.
Si selecciona compilar
- El usuario compila su estructura de red y los errores se muestran en pantalla.
Si la opción es entrenar del menú procesos
- El usuario selecciona entrenar y el sistema no funciona
Escenario generar código. Creado para mostrar el código fuente de todo modelo de red
que se haya entrenado en todos y cada uno de los algoritmos que se han tenido en cuenta.
Escenario normal:
- En el menú procesos al seleccionar generar código, la interfaz carga y muestra al usuario
el cuadro de dialogo generar código en todos y cada uno de los algoritmos, lo mismo
sucede al hacer clic en el icono de acceso directo.
133
Si el usuario elige ver el código fuente
- Usuario hace clic en siguiente para ver el código de la siguiente clase que ha sido
generado por la aplicación.
- Usuario hace clic en anterior si se encuentra activo el botón para volver el código de las
clases que han sido vistas.
- El usuario selecciona el botón cerrar y termina la visualización del cuadro de dialogo
generar código.
Escenario anormal:
- En el menú procesos al seleccionar generar código, se muestra un cuadro de dialogo en
donde se advierte que primero debe hacerse el proceso de entrenamiento antes de generar
cualquier tipo de código.
Escenario propagar patrones. Este escenario es uno de los más importantes, creado para
la recuperación de la información aprendida durante el entrenamiento de la red en todos y
cada uno de los algoritmos que se han tenido en cuenta, en este escenario se puede propagar
todos los patrones, uno de los patrones aprendidos o propagar un nuevo patrón.
134
Escenario normal:
- En el menú procesos al seleccionar propagar patrones, la interfaz carga y muestra al
usuario el cuadro de dialogo propagar patrones, esto se da en todos y cada uno de los
algoritmos.
Si la opción es propagar todos los patrones
- El usuario hace clic en aceptar y envía la orden a la aplicación.
- La aplicación empieza la recuperación de la información aprendida.
- La aplicación envía a la interfaz la información recuperada.
- El usuario visualiza todos los patrones que la red ha aprendido durante su entrenamiento.
Si la opción es propagar un nuevo patrón
- El usuario digita los valores para el nuevo patrón.
- El usuario hace clic en aceptar y envía la orden a la aplicación.
- La aplicación empieza el entrenamiento y recuperación del patrón introducido.
135
- La aplicación envía a la interfaz la información recuperada.
- Usuario visualiza la información del patrón propagado.
Escenario anormal
- Al hacer clic en propagar patrones ya sea del menú procesos o sobre el botón se presenta
un cuadro de dialogo informando que primero se debe haber entrenado la red para
después propagar sus patrones.
4.1.3.2 Identificación y seguimiento de sucesos. Un suceso es una acción que se da un
tiempo muy corto y es cuando un objeto trasmite información a otro.
136
Escenario principal del sistema
Usuario
Interfaz
Muestra menús disponibles
Aplicación
Carga la interfaz principal
Si el usuario chequea el menú archivo
Hace clic en Archivo
Usuario puede seleccionar los submenús abrir, guardar
guardar como, cerrar y salir
Si el usuario chequea el menú Algoritmo
Hace clic en Algoritmo
Usuario puede seleccionar los submenús Perceptron, Propagación Inversa
Hopfield, Kohonen, Memorias Asociativas y Algoritmos Genéticos
Si el usuario chequea el menú Aspecto
Hace clic en aspecto
Usuario puede seleccionar los submenús Motif, Windows, Metal y Mac
Si el usuario chequea el menú Ayudas
Hace clic en Ayudas
Usuario puede seleccionar los submenús Temas de ayuda
Acerca de Spider, Acerca del GIIA y Acerca de los autores
Envía solicitud del usuario
Muestra información solicitad
Procesa la solicitud y envía respuesta
Figura 22. Seguimiento de sucesos para escenario principal del sistema
137
Escenario perceptron
Usuario
Interfaz
Aplicación(perceptron)
Muestra el frame y opciones disponibles
Carga el frame principal
Si el usuario selecciona nuevo modelo
En la lengüeta estructura introduce número de patrones, numero de
Neuronas, numero de Capas y numero de salidas, clic en Aceptar para
Enviar la información digitada o en borrar para deshacer los datos
Envía información digitada
En la lengüeta parámetros introduce valor de Rata de aprendizaje
error deseado y Numero de iteraciones y clic en aceptar para grabar la
información o en borrar para introducir nuevos datos
Envía información digitada
Si selecciona patrones de entrada o estructura oculta
Con la opción patrones de entrada entra todos los posibles valores
clic en aceptar para guardar la información o en borrar para deshacer
Envía información digitada
Con la opción estructura oculta entra los valores para las Neuronas
ocultas en cada capa y clic en aceptar para grabar la información o clic
en borrar para introducir nuevos datos o para deshacer los datos digitados
Usuario selecciona opciones disponibles y compila
Si el usuario selecciona entrenar
Hace clic en el submenú entrenar del menú procesos ó en el botón
entrenar
Envía la información
Petición solicitada
Procesa la petición y envía señal de entrenamiento
Muestra resultados del entrenamiento
Figura 23. Sucesos para el escenario perceptron
138
Escenario propagación inversa
Usuario
Interfaz
Muestra el frame y opciones disponibles
En la pestaña estructura introduce número de patrones, de neuronas,
capas y salidas, hace clic en Aceptar para grabar los datos o en borrar
En la pestaña parámetros introduce valor de rata de aprendizaje, error
deseado y número de iteraciones y clic en aceptar para grabar la información
o en borrar para no tener en cuenta los datos digitados
Si selecciona patrones de entrada o estructura oculta
Con la opción patrones de entrada entra todos los posibles valores
clic en aceptar Para guardar la información o en borrar para deshacerla
Con la opción estructura oculta entra los valores para las neuronas ocultas
en cada capa y clic en aceptar para grabar la información
Aplicación(Propagación Inversa)
Carga el frame principal
Envía información digitada
Envía información digitada
Envía información digitada
Envía la información
Si el usuario selecciona el menú activación o el menú opciones
Usuario selecciona la función de activación, usuario puede marcar en
opciones pesos en disco, adicionar iteraciones, umbral, nodos en la última
capa, rata dinámica, momentun, y pesos fijos para entrenar la red
Usuario da clic en compilar
Información de compilación
Envió de solicitud
Resultados de compilación
Si el usuario selecciona entrenar del menú procesos
Hace clic entrenar
Petición solicitada
Procesa la petición Envía señal de entrenamiento
Muestra resultados del entrenamiento
Figura 24. Sucesos para el escenario propagación inversa
139
Escenario hopfield
Usuario
Interfaz
Aplicación(hopfield)
Muestra el frame y opciones disponibles
Si el usuario selecciona nuevo modelo
En la pestaña estructura introduce el número de patrones, entradas y
Neuronas, hace clic en Aceptar para grabar la información o en borrar
Carga el frame principal
Envía información digitada
Si selecciona la opción patrones de entrada
Entra todos los posibles valores de entrenamiento en la tabla que aparece
luego clic en aceptar para guardar la información o en borrar para deshacerla
Si selecciona el menú opciones
Usuario abre patrones desde una unidad de disco o marca el submenú
Valores continuos para los patrones de entrada
Solicitud de datos
clic en compilar del menú procesos o clic en el botón compilar
Envía petición a la aplicación
Resultados de compilación
Resultados de compilación
Si el usuario selecciona entrenar del menú procesos
Usuario hace clic entrenar
Petición solicitada
Procesa la petición y envía señal de entrenamiento
Muestra resultados del entrenamiento
Si selecciona el menú ver
Clic en patrones de entrada o clic en pesos finales
Muestra los resultados
Solicitud de datos
Envió de datos solicitados
Figura 25. Sucesos escenario hopfield
140
Escenario kohonen
Usuario
Interfaz
Aplicación(kohonen)
Muestra el frame y opciones disponibles
Carga el frame principal
En la pestaña estructura introduce el número de patrones, entradas y
numero de neuronas, hace clic en Aceptar para guardar la información
o en borrar para no tenerla en cuenta
Envía información digitada
En la pestaña parámetros digita valor de rata de aprendizaje, radio de
vecindad y numero de Iteraciones, clic en aceptar
Envía información digitada
Con la opción patrones de entrada entra todos los posibles valores, clic
en aceptar para grabar los datos o en borrar para deshacerlos
En el menú opciones seleccionar rata dinámica, lee patrones de un disco
Adiciona iteraciones, valor para los pesos iniciales y un intervalo para estos
Hace clic en compilar
Envía petición a la aplicación
mensaje sobre errores
Resultados de compilación
Si el usuario selecciona entrenar del menú procesos
Hace clic entrenar
Petición solicitada
Procesa la petición y envía señal de entrenamiento
Muestra resultados del entrenamiento
Figura 26. Sucesos escenario kohonen
141
Escenario memorias asociativas
Usuario
Interfaz
Muestra el frame y opciones disponibles
Aplicación(memorias asociativas)
Carga el frame principal
Si el usuario selecciona nuevo modelo del menú configuración
En la pestaña estructura introduce el número de patrones, número
de neuronas primera capa o nivel y numero de neuronas segunda capa
luego hace clic en aceptar para guardar los datos digitados o clic en borrar
Envía información digitada
Si selecciona patrones de entrada
Con la opción patrones de entrada puede introducir todos los posibles
valores, clic en aceptar o en cancelar para guardar la información
Usuario hace clic en compilar
Envía petición a la aplicación
Resultados de compilación
Resultados de compilación
Si el usuario selecciona la opción entrenar
Usuario hace clic en entrenar
Petición solicitada
Procesa la petición y envía señal de entrenamiento
Muestra resultados del entrenamiento
Figura 27. Sucesos escenario memorias asociativas
142
Escenario algoritmos genéticos
Usuario
Interfaz
Muestra el frame y opciones disponibles
Aplicación(Algoritmos Genéticos)
Carga el frame principal
Si el usuario selecciona nuevo modelo del menú configuración
En la pestaña estructura introduce el número de entradas, número
de capas ocultas y numero de neuronas o nodos de salida, luego hace
clic en aceptar para guardar la información o clic en borrar
En la pestaña parámetros digita valor de error permitido, número de
Patrones y número de iteraciones, clic en aceptar
En la pestaña población digita valor numero de cromosomas, valor
Condiciones iniciales y valor para el tamaño del gen, clic en aceptar
Si selecciona patrones de entrada o estructura oculta
Con la opción patrones de entrada puede introducir todos los posibles
valores, clic en aceptar para guardar la información o clic en Borrar
Envía información digitada
Si selecciona el menú opciones
Puede seleccionar un método de selección y un operador de reproducción
Hace clic en compilar
Envía petición a la aplicación
Resultados de compilación
Resultados de compilación
Si el usuario selecciona la opción entrenar
Usuario hace clic en entrenar
Petición solicitada
Procesa la petición y envía señal de entrenamiento
Muestra resultados del entrenamiento
Figura 28. Sucesos escenario algoritmos genéticos
143
Escenario generar código
Usuario
Interfaz
Muestra el cuadro de dialogo
Aplicación(Tipo Algoritmo)
Carga el cuadro de dialogo principal
Si Elige ver código fuente
Usuario da clic en siguiente
Usuario da clic en anterior
Envía la orden
Envía información código fuente
Muestra código fuente para la estructura de red entrenada
Figura 29. Sucesos escenario generar código
144
Escenario propagar patrones
Usuario
Interfaz
Muestra el cuadro de dialogo
Aplicación(Algoritmo)
Carga el cuadro de dialogo principal
Si selecciona propagar todos los patrones
Usuario da clic en aceptar para propagar o extraer la información
Aprendida o hace clic en cancelar para salir del cuadro de dialogo
Envía la orden
Pasa los patrones, hace la recuperación y envía
Información aprendida
Muestra todos los patrones aprendidos
Si el usuario selecciona propagar un nuevo patrón
Introduce los valores para el nuevo patrón y Hace clic en aceptar para
Iniciar el proceso de entrenamiento y recuperación del nuevo patrón o
Clic en cancelar para abandonar el cuadro de dialogo propagar patrones
Envía la información digitada
Entrena , recupera y envía los datos del nuevo patrón
Muestra la nueva información aprendida
Figura 30. Sucesos del escenario propagar patrones
145
4.1.3.3 Diagramas de estados. Los diagramas de estado nos representan los enlaces que tiene
todo objeto y las respuesta de este a todos y cada uno de los sucesos entrantes. Todo estado tiene
un intervalo de tiempo y se considera como el intervalo que existe entre dos sucesos que son
recibidos por un mismo objeto.
Los diagramas de estados relacionan de forma clara las relaciones entre sucesos y estados, estos
diagramas se suelen representar mediante grafos donde los nodos son los estados y los arcos
dirigidos nos representan las transiciones rotuladas con nombres de sucesos. Presentamos los
diagramas de estado para los escenarios descritos, los cuales son:
146
Escenario principal del sistema
Usuario da Clic
Pantalla Principal de Interfaz
Hacer: visualizar menús
Menú Archivo
Hacer: visualizar submenú
Responde solicitud
Selecciona
Envía la solicitud
Selecciona
Responde
Aplicación Activa
Hacer: procesar solicitud
Selecciona
Selecciona
Muestra opciones
Muestra
opciones
Menú Algoritmo
Hacer: visualizar submenú
Menú Ayudas
Carga opción
Menú Aspecto
Selecciona opción
Figura 31. Diagrama de estados escenario principal del sistema
147
Escenario perceptron
Pantalla Perceptron
Hacer: visualizar frame principal
Configuración
Hacer: mostrar submenú
Hacer clic
Seleccionar
Parámetros
Hacer: pedir valores
Clic
Entrenar
Hacer: señal de entrenamiento
Patrones de Entrada
Hacer: entrar valores patrones
Inf. correcta
Clic
nuevo modelo
Hacer: escoger opción
Seleccionar
opción
Estructura oculta
Hacer: neuronas capas ocultas
Hacer: entrenando
Inf. Sobre errores
Inf. opcional
Hacer: abrir
Hacer: seleccionar
posibles opciones
inf. correcta
Crear
Procesando
Compilar
Hacer: mostrar información
Estructura
Hacer: solicitar valores
Hacer: mostrar resultados
Simulación entrenamiento
Generar Código
Hacer: generar código fuente
Ver
Num. capas ocultas
Evaluar datos
Generar pesos
Hacer: mostrar patrones, pesos
Hacer: Guardar
Consultar
Figura 32. Diagrama de estados escenario perceptron
Seleccionar
148
Escenario propagación inversa
Pantalla Propagación Inversa
Hacer: visualizar frame principal
Parámetros
Configuración
Hacer: mostrar submenú
Seleccionar
Hacer clic
Activación
Hacer: seleccionar
función
Estructura
Hacer: solicitar valores
Generar Código
Hacer: generar código fuente
Solicitar
Inf. correcta
Clic
Evaluar datos
Seleccionar
opción
Estructura oculta
Hacer: neuronas capas ocultas
Hacer: entrenando
Inf. Sobre errores
Inf. correcta
Crear
Marcar rata dinámica
Entrenar
Hacer: señal de entrenamiento
Patrones de Entrada
Hacer: entrar valores patrones
Nuevo modelo
Hacer: escoger opción
Evaluar datos
Opciones
Hacer: marcar
Clic
Aceptar-Reset
Hacer: mostrar resultados
Simulación entrenamiento
Hacer: marcar
formula
Num. capas ocultas
Procesando
Compilar
Hacer: mostrar información
Ver
Generar pesos
Hacer: mostrar patrones, pesos
Hacer: abrir
Hacer: Guardar
Consultar
Seleccionar
Figura 33. Diagrama de estados escenario propagación inversa
149
Escenario hopfield
Pantalla Hopfield
Hacer: visualizar frame principal
Clic
Configuración
Hacer: mostrar submenú
Hacer clic
Patrones de Entrada
Hacer: entrar valores patrones
Entrenar
Hacer: señal de entrenamiento
seleccionar
Nuevo modelo
Hacer: escoger opción
Hacer: abrir
Seleccionar
opción
Inf. correcta
Hacer: entrenando
Inf. Sobre errores
inf. correcta
Crear
Estructura
Hacer: solicitar valores
Solicitar
Generar Código
Hacer: generar código fuente
Evaluar datos
Hacer: mostrar resultados
Simulación entrenamiento
Ver
Num. patrones
seleccionar
Consultar
Procesando
Compilar
Hacer: mostrar información
Hacer: mostrar patrones, pesos
Hacer: Guardar
Figura 34. Diagrama de estados escenario hopfield
generar pesos
150
Escenario propagar patrones
inf. solicitada
Pantalla Propagar patrones
Hacer: visualizar cuadro dialogo y
mostrar opciones
Hacer: enviar recuperación
Procesando inf.
Propagar todos
Aceptar opción
Hacer: recuperando
Hacer: seleccionando
t
seleccionar
Propagar nuevo
H
Cancelar opción
ll
Aceptar
mostrar inf.
l
Hacer: mostrar
recuperación patrones
Hacer: ocultar cuadro dialogo
Figura 35. Diagrama de estados escenario propagar patrones
4.1.4 Modelado funcional. En el modelo funcional se describe la forma en que se realizan
los cálculos y operaciones que son necesarios para el sistema de entrenamiento, sin tener
en cuenta el control y estructura de los objetos.
Aquí se especifica que valores dependen de otros valores y como se derivan los datos
producidos de los datos de entrada
y las funciones que los relacionan.
Consta de
diagramas de flujo de datos, los cuales especifican el trabajo de las operaciones y que
restricciones tienen estas.
151
4.1.4.1 Listado de valores de entrada y de salida. Estos datos tanto de entrada así como
de salida son los parámetros de todos los sucesos que se intercambian entre la herramienta
de entrenamiento y el mundo exterior.
Interior del sistema
Exterior del sistema
(S id )
Módulo
(Terminal cliente)
Usuario
Mensajes de procesamiento
E t
d
Información a recuperar
Datos propagados
Módulo
P
Figura 36. Listado de valores de entrada y de salida
4.1.4.2
Diagramas de flujo de datos(DFD). Muestran toda la secuencia de operaciones
realizadas, así como todos los valores externos y todas las relaciones funcionales entre los
valores calculados por el sistema de entrenamiento .
Los diagramas de flujo de datos no muestran información de control, tampoco la
organización de los valores en objetos.
152
Diagrama de nivel general
Opción
Usuario
Seleccionar
Establecer Enlace
Enlazar
Mostrar Interfaz
Visualizar menús
Seleccionar
Proceso,
mensajes
Solicitud de información
Proceso
Entrenar
Proceso,
mensajes
Generar
Proceso
Pasar
patrones
Proceso
Aceptación
Registrar
Seleccionar
proceso
Propagar
Generar
Figura 37. Diagrama de flujo de datos más general para el sistema Intelligent Spider
Enlace estable
Permisos
Sin Enlace
seleccionar
Usuario
Establecer Enlace
Enlazar
Figura 38. Diagrama de flujo de datos para el proceso Establecer Enlace
153
Submenú
Datos
Enlazar
Mostrar Interfaz
Visualizar menús
Usuario
Figura 39. Diagrama de flujo de datos para el proceso seleccionar algoritmo
Seleccionar proceso
Todos los patrones
Cancelar
Aceptar
Valores
Pasar Valores
Iniciar
Tabla Valores
Recuperar
Procesando
Usuario
Introducir valores
Mostrar Resultados
Visualizar
Seleccionar proceso
Propagar nuevo patrón
Cancelar
Figura 40. Diagrama de flujo de datos para el proceso propagar
154
Proceso
Cerrar aplicación
Inicializar pesos
Registrar
Inexistencia
Pasar patrón
Valores
Operaciones
Datos del patrón
Formulas
Error deseado
Calcular error
Operaciones
Aumentar iteración
Actualizar pesos
Mostrar resultados
descripción
Proceso cancelado
Guardar resultado
Pesos entrenados
Figura 41. Diagrama de flujo para el proceso entrenar
Numero patrones
Capas
Entradas
Salidas
Opciones
Proceso cancelado
Registrar Datos
Abrir
Aceptar
Archivo
Memoria
Aceptar
Almacenar
Figura 42. Diagrama de flujo de datos para el proceso registrar valores
155
4.2 DISEÑO ORIENTADO A OBJETOS
4.2.1 Diseño del sistema. Esta es la primera fase del diseño en el cual se tiene como punto
de partida la aproximación básica mas cercana a la solución del problema, en esta fase
mostraremos como es la estructura y el estilo global del sistema.
4.2.1.1 Identificación de la concurrencia. El sistema entrenador de redes neuronales esta
diseñado e implementado mediante la sincronización de procesos y la utilización de hilos
de control con lo cual desde su inicio es concurrente, además por el libre manejo que
tienen los usuarios finales de interactuar con varias secciones, con el objetivo de realizar
los mismos cálculos en diferentes arquitecturas de red. Por ello el manejo de las interfaces
que establecen comunicación con los usuarios del sistema son manejadas como procesos
independientes integrando de forma segura su propia línea de flujo y manteniendo un
estado único en la terminal servidor de aplicaciones.
Al montar la aplicación en una terminal que tenga mas de un procesador, la concurrencia
estará más reflejada hacia el usuario, pues las respuestas en los procesos es más rápida,
debido a la sincronización interna que realiza la aplicación.
4.2.1.2 Asignación de subsistemas a procesadores y a tareas. Como la aplicación estará
en una terminal servidora, en determinados momentos podrá ser accedida por varios
usuarios simultáneamente, así como un mismo usuario realizando procesos en arquitecturas
diferentes, mediante la utilización del objeto básico, el cual es el entrenamiento de los
patrones introducidos, como también la propagación de información aprendida. El
156
computador donde se establecerá el servidor de la aplicación poseerá por el momento un
solo procesador, su rendimiento en cuanto al manejo de las transacciones será producto de
la administración y la capacidad que el sistema operativo instalado posea sobre el servidor
y el desempeño que el mismo servidor tenga.
La aplicación, por estar desarrollada mediante programación orientada a objetos, con
implementación de hilos sincronizados será más útil si con el tiempo se llega a montar en
un computador que cuente con mas de un procesador, con lo cual se daría un procesamiento
en paralelo con resultados finales en muy corto tiempo. El manejo de las clases de objetos
estarán a cargo del servidor de aplicaciones, así como los accesos al sistema.
4.2.1.3 Administración de almacenes de datos. Para el sistema entrenador de redes
neuronales no se implemento bases de datos para guardar los resultados, solo se trabaja con
archivos comunes y las operaciones que sobre ellos se pueden realizar como son, el abrir y
guardar en un archivo, en el lenguaje de programación java estas operaciones las
manejamos con las clases de control de flujos de datos tanto de entrada InputStream así
como de salida OutputStream, y la información es manejada en la aplicación mediante
arreglos, los cuales son propios del lenguaje.
4.2.1.4 Manejo de recursos globales. Para controlar los recursos globales del sistema
que son solicitados por los usuarios se establece la utilización de un equipo servidor de
aplicaciones Jakarta Tomcat 4.0.1 con lo cual se hace el control de las necesidades de los
usuarios. A partir de la maquina virtual de java se hace control sobre cada proceso y esta
asigna su propio tiempo de ejecución lo que aísla un proceso de todos los demás. La
157
aplicación se maneja a partir de un enlace web proporcionado por el servidor Jakarta
Tomcat de donde podemos descargar una imagen de la aplicación en cada terminal que
haga uso del enlace para acceder la aplicación fuente.
4.2.1.5 Selección de una implementación de control de software. La implementación de
control del software para la aplicación esta manejada bajo tres ambientes que son:
- Sistemas controlados por procedimiento. El control del sistema en forma casi general
reside en el código de la herramienta. Los procedimientos y procesos que se deban llevar a
cabo emiten solicitudes externas y esperan a que éstas se produzcan y sean capturadas por
la aplicación; cuando llega una nueva entrada totalmente diferente, el control reanuda los
procedimientos que deban involucrarse en la nueva solicitud, con lo cual el estado del
sistema es manejado a través de la pila de los procedimientos que se involucran en las
solicitudes externas, así como a través de las variables locales.
- Sistemas controlados por sucesos.
En la parte de entrenamiento, propagación y
generación de código, el control también reside dentro de las clases y métodos de la
aplicación. Se asignan procedimientos de aplicación a todos y cada uno de los sucesos que
envié el usuario, y éstos son invocados por el sistema y pasados a la clase o método
controlador para el suceso producido.
- Sistemas concurrentes. El sistema Intelligent Spider es prácticamente concurrente, dado
que utiliza una clase controladora, la cual lanza una serie de hilos a ejecutarse sin ninguna
secuencia entre ellos a realizar diversa actividades sin que se presentes conflictos entre las
158
operaciones que estos realicen; cuando un proceso afecte todo el funcionamiento de
cualquier solicitud los hilos se detienen y esperan la nueva orden de la clase controladora.
Al ejecutarse el sistema en equipos multiprocesador se tendrá claro el manejo de la
concurrencia y esta se dará en tiempo real.
4.2.1.6 Manejo de condiciones de contorno. Las condiciones de contorno que se manejan
en la herramienta de entrenamiento(Intelligent Spider), hacen referencia a las siguientes
especificaciones:
Iniciación: la iniciación de la herramienta Intelligent Spider para los usuarios se dará por
medio de una sesión establecida entre el equipo servidor y la terminal cliente, esta sesión
es manejada por medio de un servidor de paginas web, el cual permiten mantener
comunicación, transparencia, correlación y unicidad entre los procesos que se estén
estableciendo entre la terminal cliente y el equipo servidor. Inicialmente se carga la
interfaz del sistema sin ningún tipo de proceso en ejecución.
Terminación: la no interacción con la aplicación se da en la siguiente forma:
- Cuando el usuario deja de mantener interacción con el servidor de la aplicación,
cerrando la terminal cliente y liberando todos los recursos reservados y ocupados en los
procedimientos solicitados por el usuario.
159
Fallos: en la aplicación Intelligent Spider el manejo de los fallos es controlado directamente
por las
excepciones que son proporcionadas por el lenguaje java especificándose
y
controlándose así la ocurrencia de algún acontecimiento no planeado.
4.2.1.7 Arquitectura del sistema. El sistema entrenador de redes neuronales esta formado
por una interfaz interactiva y de un sistema de administración y control de procesos y
operaciones. En esta aplicación las terminales de los usuarios son interfaces interactivas.
Su propósito es interactuar de manera transparente y clara con un usuario con el fin de que
este obtenga la información necesaria para la petición de un proceso o operación.
La arquitectura del sistema Intelligent Spider(Véase la Figura 43) en el cual existen dos
subsistemas principales. La topología de esta arquitectura es una estrella sencilla; en la
cual la computadora del servidor se comunica con las terminales cliente de los usuarios a
través de canales de comunicación utilizando el protocolo HTTP.
160
Equipo servidor ó
servidor de aplicaciones
Terminal cliente
del usuario final
Valores Entrada
Terminal
Generar Pesos
Compilar y Entrenar
Subsistema Entrenar
Interfaz
Datos patrones
Subsistema Propagar
Datos Modelo Red
Subsistema Generar
código fuente
Figura 43. Arquitectura del sistema entrenador de redes neuronales artificiales
4.2.2
Diseño de objetos.
Determina
las
definiciones completas de las clases y a
asociaciones que se utilizarán en la implementación, así como las interfases y los métodos
utilizados para implementar las operaciones, anexará objetos internos para la
implementación, y optimizará las estructuras de datos y los algoritmos.
4.2.2.1 Visión general del diseño de objetos. Se ha tenido en cuenta la estrategia
seleccionada durante el diseño del sistema y hemos hecho un refinamiento y adicción de
ciertos detalles al modelo de objetos inicial. (Véase la Figura 44).
161
Figura 44. Modelo de objetos optimizado
4.2.2.2 Diseño de algoritmos para los métodos de las clases. Los algoritmos diseñados
para el sistema Intelligent Spider muestran la forma como se realizan las operaciones
internamente para producir salidas satisfactorias, logrando disminuir la complejidad
computacional y elevando la comprensibilidad y flexibilidad del sistema hacia un futuro.
162
Las siguientes son las clases más relevantes implementadas en el sistema, para cada una se
describen sus propiedades y métodos.
Clase red neuronal
Atributos:
o private int numCapas. Número de capas que forman la red.
o public int estruct[]. Número de neuronas en cada capa de la red.
Constructor(es):
o public RedNeuronal(JFrame, int).
Es el constructor para esta clase, el primer
parámetro es un objeto de JFrame, referente a la interfaz sobre la cual se ejecuta, el
segundo parámetro es un dato entero referente a la función que desempeña la clase.
Métodos:
o private void CrearEstructura( ). Este método no retorna valores, su alcance es
privado y su función es crear la estructura que va a tener la red neuronal de
acuerdo al modelo seleccionado.
o private void MostrarEstructura( ). Este método no retorna valores, su alcance es
privado y su función es mostrar la estructura que tiene la red en el momento en
que el usuario lo solicite.
163
Clase genéticos
Atributos:
o private int tamGen. Se refiere al tamaño de cada gen(cada gen representa un peso
de la red).
o private int tamPobl. Representa el número de individuos que se utilizaran en el
entrenamiento.
o private int numCond. Se refiere al número de poblaciones iniciales que se utilizaran
en el entrenamiento.
o private int tipoSelec.
Indica el tipo de selección que se utilizara el método
encargado de realizar el proceso de selección.
o private int tipoReprod. Indica el tipo de reproducción que se implementa.
Constructor(es):
o public Genéticos(JPanel). Es el constructor para esta clase, su alcance es publico,
recibe como único parámetro un objeto del panel sobre el cual se van a mostrar los
resultados del entrenamiento.
Métodos:
o private int TamCrom(). Este método retorna un dato entero, su alcance es privado y
su función es calcular el tamaño de cada cromosoma teniendo como base el tamaño
de cada gen y la estructura de la red neuronal.
o private void Reproducir( ). No retorna valores, su alcance es privado y su función
es crear las nuevas generaciones de cromosomas a partir de la población anterior,
teniendo en cuenta la probabilidad de participación de cada cromosoma en la
generación anterior.
164
o private void CalcularSalida( ). No retorna valores, su alcance es privado y su
función es capturar y presentar a la red las diferentes informaciones de entrada y
evaluarlas con respecto a cada individuo o cromosoma para emitir luego una
respuesta.
o private void ConvertCrom(String). No retorna valores, su alcance es privado, recibe
un dato tipo String que corresponde a la cadena de bits que representa cada
individuo. Su función es convertir los genes que conforman cada cromosoma en su
respectivo valor decimal.
o private void CalcError(int ). No retorna valores, su alcance es privado, recibe un
dato tipo int que corresponde a la posición que ocupa cada individuo dentro de la
población. Su función es calcular el error que produce cada individuo o cromosoma
al intentar aprender las diferentes informaciones de entrada.
o private void InvertCrom( ). No retorna valores, su alcance es privado, su función es
invertir completamente el contenido de la cadena correspondiente a cada individuo.
o private void MutarCrom( ). No retorna valores, su alcance es privado, su función es
invertir ciertos bits de cada cromosoma, aplicando técnicas de probabilidad.
o private void CruceCrom( ). No retorna valores, su alcance es privado, su función es
cruzar las cadenas correspondientes a dos individuos distintos a partir de un punto
aleatorio, para generar dos nuevas cadenas del mismo tamaño.
o private void Torneo( ). No retorna valores, su alcance es privado, su función es
seleccionar los individuos que harán parte de la nueva generación, aplicando la
técnica de torneo, es decir competencia entre los individuos para seleccionar los
más aptos.
165
o private void Ranking( ). No retorna valores, su alcance es privado, su función es
seleccionar los individuos para la nueva generación de acuerdo a su grado de
adaptabilidad.
o private void Ruleta( ). No retorna valores, su alcance es privado, su función es
seleccionar los individuos para la nueva generación sometiéndolos a una ruleta, en
la cual participan de acuerdo a su desempeño en la generación actual.
o private void CalcProb( ). No retorna valores, su alcance es privado, su función es
calcular para cada individuo la probabilidad de participación en la próxima
generación, de acuerdo al error cometido en la generación actual.
o private void EvaluarCrom( int, int). No retorna valores, su alcance es privado, el
primer parámetro se refiere a la iteración y el segundo identifica el individuo. Su
función es evaluar cada individuo teniendo en cuenta el error cometido, tomando
como referencia el error máximo que se pueda cometer.
o private void InicCrom( ). No retorna valores, su alcance es privado, su función es
inicializar para cada condición inicial las cadenas de cromosomas que representarán
los individuos de cada población.
Clase kohonen
Atributos:
o private int radioVecindad. Define el tamaño de la vecindad asociada a cada
neurona.
166
Constructor(es):
o public Kohonen(). Único constructor de la clase, no recibe parámetros y su alcance
es privado.
Métodos:
o protected synchronized double Vecindad(int, int, int, int, int). Retorna un valor
decimal, su alcance es protegido, además esta sincronizado. Su función es ccalcular
para cada neurona de la red la distancia Euclidiana, entre los pesos asociados a la
neurona y cada una de las informaciones de entrada, y las almacena en un vector
para su posterior uso.
Clase memorias asociativas
Método(s):
o protected void CalcularMatrizCorrelacion( ). Toma las informaciones contenidas en
los vectores de entrada y las correlaciona en una matriz.
o protected void PropagarPatron(). A partir de los patrones originales o un Nuevo
patrón realiza un proceso de recuperación de la información.
Clase perceptron
Método(s):
o protected void Entrenar( ). Crea y pone en ejecución las neuronas de la red,
habilitando las variables y archivos que ellas necesitan.
167
o protected void Propagar( ). Se encarga de revisar la eficiencia de la red para
recuperar informaciones previamente aprendidas en el entrenamiento, para lo cual
crea y lanza a ejecutarse las neuronas de la red y les presenta un estimulo externo
para que el usuario analice su comportamiento.
o private void MostrarResultados( ). Crea el ambiente grafico que permite al usuario
ver el estado en el que se encuentra el proceso de entrenamiento
Clase PatronesEntrada
Metodos(s):
o private void InicializarPatronesdeEntrada( ). Lee las informaciones de entrada a la
red, ya sea desde una interfaz o desde un archivo especifico.
o private void CrearPatrones( ). Se encarga de crear la interfaz grafica para capturar
los valores correspondientes a las informaciones de entrada.
o private void MostrarPatrones( ). Permite al usuario ver las informaciones con que
se esta entrenando la red.
o private void GuardarPatrones( ). Toma la ruta elegida por el usuario, en la cual
desea mantener la información de entrada para un uso futuro sin que se produzcan
alteraciones.
168
Clase RataAprendizaje
Método(s):
o protected double ActualizarRata( ). Actualiza en forma dinámica y en tiempo de
ejecución el factor de aprendizaje; este servicio lo proporciona esta clase a los
algoritmos de Kohonen y propagación inversa.
Clase Factivación
Método(s):
o public double Sigmoidal( ). Filtra la entrada neta a la neurona a través de la función
sigmoide.
o public void TangenteH( ). Filtra la entrada neta a la neurona a través de la función
tangente hiperbólica.
o public void Lineal( ). Toma la entrada neta a la neurona y no realiza operación
alguna sobre ella, dejando pasar la información tal y como se produjo.
o public void Limitador( ). Evalúa la entrada neta producida por cada neurona ante
un valor umbral, produciendo para la salida de cada una de ellas estados binarios.
169
Clase Pesos
Método(s):
o protected void InicializarPesos( ). Permite tomar valores iniciales de entrenamiento
muy pequeños ya sea en forma aleatoria o en forma voluntaria mediante pesos fijos
del mismo valor.
o protected void ActualizarPesos( ). Actualiza los pesos actuales de forma particular
para cada algoritmo, el objetivo de este método es lograr que la red disminuya el
error de aprendizaje y logre la convergencia
o protected void GuardarPesos( ).
Permite que las informaciones aprendidas,
representadas en los pesos finales sean guardadas en un archivo para su posterior
utilización, así como los valores iniciales que se tomaron como referencia para el
entrenamiento.
Clase Hopfield
Método(s):
o protected void mConocimiento( ). Almacena en una matriz las informaciones de
entrada.
o protected void ConvertBipolar(). Toma los valores de entrada y los transforma en
valores bipolares.
170
4.2.2.3 Diagrama de control en Intelligent Spider. El control que se tiene dentro del
sistema esta representado en el siguiente diagrama.
Sin enlace
Llegar usuario
Terminal
Establecer Enlace
Enlace estable
Mostrar Interfaz
seleccionar
Finalizar
continuar
Solicitar Algoritmo
seleccionar opción
continuar
concluir
Solicitar valores Entrada
Introducir datos
Datos erróneos
Procesar Entradas
Datos correctos
Solicitar continuación
Ver resultados
Mostrar valores procesados
Figura 45. Diagrama de control para el sistema intelligent spider
171
4.3 IMPLEMENTACION Y PRUEBAS
4.3.1 Implementación. Para el desarrollo del sistema Intelligent Spider se eligió como mejor
alternativa la utilización de un lenguaje orientado a objetos, por lo cual se utilizó el lenguaje de
programación Java. También se utilizo el servidor Jakarta Tomcat como sitio de hospedaje
para la pagina web que sirve de enlace con la aplicación.
Lenguaje java: lenguaje de programación orientado a objetos, creado en 1995 por la
compañía Sun Microsystem. Es un lenguaje de alto nivel y propósito general similar a
C++, con marcadas características de seguridad y transportabilidad. Este lenguaje define
una máquina virtual independiente de la plataforma donde se ejecuta, es muy seguro frente
a la presencia y ataque de virus informáticos.
- Elementos de la programación orientada a objetos que usa java:
• Clase: Define un tipo de dato donde se encapsulan los metodos y los atributos.
• Objeto: Variable de tipo clase.
• Atributo: Variable dentro de un objeto.
• Método: Función dentro de un objeto.
• Bloques: Son también conocidos como modificadores, indican si los metodos y variables
pueden ser utilizados fuera de una clase; estos modificadores son public, private,
protected.
• Constructores: Son metodos que se ejecutan al crear un objeto.
172
• Herencia: Es la propiedad del java para utilizar clases construidas con anterioridad, en
clases nuevas.
• Instrucción Super: Se utiliza para llamar los constructores de las super clases.
• Herencia Privada: Indica que todo lo que se incluye en el bloque privado de la clase base,
es privado en la clase derivada.
• Herencia Pública: Indica que todo lo que este en el bloque público, será público en la
clase derivada.
• Clases Abstractas: Son clases en las cuales solo se definen los prototipos de las funciones.
• Interfaces: Se utilizan para implementar un tipo de herencia múltiple.
- ¿Porque usar java?: Java es un lenguaje independiente de la plataforma con lo cual se
puede usar en plataformas y sistema operativos distintos, ya que trae una maquina virtual,
la cual toma los programas compilados y traduce sus instrucciones en comandos que
puede manejar cualquier sistema operativo. Porque es potente para trabajar la
programación orientada a objetos y es el más propicio para implementaciones bajo
entorno web.
- Principales características de java: Es un lenguaje 100% orientado a objetos, es flexible
para el desarrollo de software, portable, simple y completo, seguro, robusto, interactivo,
utiliza una arquitectura neutral, rápido y confiable, es multitarea, multiplataforma y maneja
la memoria en forma automática
173
- Jakarta-Tomcat : Es un proyecto de código libre liderado por la organización Apache
Software Foundation. El servidor Tomcat es una aplicación web basada en Java y creada
para ejecutar servlets y páginas JSP,.
- Aplicación web: Una aplicación web es una colección de servlets, páginas JSP, clases
Java, archivos de descripción de la aplicación, documentos estáticos como: HTML,
XHTML, imágenes y otros recursos que pueden ser empaquetados y ejecutados en distintos
servidores de diferentes proveedores.
El contenedor que alberga una aplicación web no es más que la estructura de directorios en
donde están colocados todos los archivos necesarios para la ejecución de la aplicación web.
Por tanto, el primer paso en el desarrollo de cualquier aplicación web consiste en crear la
estructura de directorios en donde colocar sus componentes. En el caso del servidor
Tomcat, el directorio a partir del cual se instala cualquier aplicación web debe ser
TOMCAT-HOME/webapps, en donde TOMCAT_HOME apunta al directorio de
instalación de Tomcat.
Los directorios para una aplicación web son los siguientes:
/nombre_de_la_aplicación
Directorio raíz de la aplicación web, en el cual se colocan todos los archivos HTML y JSP
que utiliza la aplicación.
174
/ nombre_de_la_aplicación /WEB-INF
Directorio que contiene todos los recursos relacionados con la aplicación web que no se han
colocado
en
el
directorio
raíz
y
que
no
deben
servirse
al
cliente.
En este directorio se coloca el archivo web.xml, donde se establece la configuración de la
aplicación web.
/ nombre_de_la_aplicación /WEB-INF/classes
Directorio que contiene todos los servlets, normalmente contiene solamente archivos .class.
/ nombre_de_la_aplicación /WEB-INF/lib
Directorio que contiene los archivos Java de los que depende la aplicación web.
- Dificultades encontradas: Para el desarrollo de la herramienta se modelo cada
neurona(unidad de proceso en la red neuronal) como un proceso independiente a través de
la implementación de hilos, esto presento dificultades ya que la complejidad en el manejo
de la concurrencia, la comunicación y la sincronización entre procesos(neuronas) crecía o
decrecía dinámicamente según la estructura de red neuronal que se estuviera utilizando.
Para el manejo del sistema en el entorno web encontramos dificultades en lo concerniente
al manejo de archivos a través de applets ya que los exploradores actuales como lo son el
internet explorer y el netscape tienen, por seguridad, restricciones en este aspecto por lo
cual no permiten subir y manipular archivos manejando applets, utilizados como medio
para carga de aplicaciones en los equipos clientes. Debido a esto se implemento un servlet
175
para realizar esta tarea y así lograr que el usuario pueda manipular la aplicación instalada
en un servidor desde un host local.
- Sugerencias para la utilización del sistema. Para la utilización de la herramienta de
entrenamiento “Intelligent Spider” se sugiere al usuario tener en cuenta los siguientes
aspectos, los cuales son importantes para tener éxito en el momento de entrenar un modelo
de red neuronal.
•
Al codificar la información que se desea representar como patrones de entrada se debe
tener en cuenta la forma en que esta será representada(lenguaje binario o decimal) y el
algoritmo que se va a utilizar para evitar incompatibilidades.
•
Es necesario que el usuario tenga clara la relación entre la información del mundo real y
la codificación que se hace de ella, esto le permitirá interpretar mejor los resultados
obtenidos luego del proceso de entrenamiento.
•
Se debe analizar el problema a solucionar, teniendo en cuenta los puntos fuertes de cada
algoritmo para seleccionar el que más se ajuste al caso, esto debido a que algunos
algoritmos no están en capacidad de resolver todo tipo de problema.
•
Los resultados obtenidos dependen del modelo de red utilizado, de los parámetros y
opciones que el usuario defina, por lo tanto si los resultados no son óptimos se debe
revisar el modelo y cambiar algunos parámetros hasta lograr resultados satisfactorios.
176
•
Esta herramienta proporciona para cada algoritmo un archivo de texto que contiene la
información aprendida(conjunto de pesos de la red) y el código fuente correspondiente
a la etapa de recuperación de la información; esto se debe integrar a un sistema que sea
capaz de extraer información del mundo real y representarla como se codifico en la
etapa de aprendizaje para presentarlos a la red, así mismo debe ser estar en capacidad de
interpretar los resultados obtenidos de la red y presentarlos en forma clara al usuario.
•
Para evitar el sobreentrenamiento de la red neuronal artificial durante el proceso de
aprendizaje se debe iniciar con pocas iteraciones e ir comprobando el comportamiento
del error para asegurarse de no caer en mínimos locales, es decir falsas soluciones. Se
puede utilizar la opción ofrecida por el sistema que permite ir adicionando iteraciones al
entrenamiento en la medida en que se necesite.
- Como ingresar al sistema Intelligent Spider. El sistema se encuentra alojado en un
servidor de paginas web “Jakarta Tomcat”, desde el cual se abre la aplicación para que el
usuario la manipule en todas sus facetas. Para poder entrar en el sistema se requiere que el
servidor se este ejecutando porque de lo contrario no se encontrara la pagina de enlace.
Se tiene enlace con el sistema utilizando la siguiente dirección de internet:
http://192.168.13.157:8080/Alexandra/IntelligentSpider.html.
Una vez se establezca el
enlace y se cargue la pagina de entrada al sistema se debe hacer clic sobre el vinculo entrar
para que a través de un applet sea cargada la aplicación
177
4.3.2
Pruebas.
Para garantizar la eficiencia de esta herramienta se contó con el
acompañamiento de los integrantes del grupo de investigación en inteligencia
artificial(GIIA), los miembros de las electivas redes neuronales e inteligencia artificial. Se
hizo una recolección de información basada en la experiencia de jóvenes que han
investigado sobre el tema, de allí se extrajeron sugerencias y recomendaciones sobre las
características que se deberían incluir en la herramienta.
El proceso de desarrollo estuvo acompañado de exposiciones con los miembros del GIIA y
de las diferentes electivas relacionadas con el tema, para mostrar los avances y
funcionalidades que se iban implementando. En estas charlas se hicieron pruebas con
problemas reales para comprobar la eficiencia de la herramienta aplicando los diferentes
algoritmos implementados en ella. Los aportes hechos por el auditorio fueron recogidos y
discutidos para posteriormente aplicarlos en el desarrollo del sistema.
Para demostrar con hechos, la eficiencia y resultados de Intelligent Spider, a todos los que
usaron o tuvieron acceso de alguna forma se les practico una encuesta(Véase Anexo C), en
la cual se trata de indagar sobre los aspectos mas relevantes de la herramienta, factores
como la eficiencia, claridad, interfaz, complejidad, resultados, flexibilidad, etc.
Se
evaluaron y se sometieron a la opinión de personas con conocimientos básicos en redes
neuronales.
5. CONCLUSIONES
En la universidad Francisco de Paula Santander, concretamente en el plan de estudios de
ingeniería de sistemas existe un grupo de jóvenes que buscan en el estudio de la
inteligencia artificial métodos alternativos para solucionar problemas complejos que
necesitan ser analizados desde una perspectiva diferente a la que ofrecen las tecnologías
convencionales. En este sentido, las redes neuronales artificiales ofrecen formas diferentes
y mas inteligentes para dar solución a estos problemas, codificando la información por
medio de diferentes métodos matemáticos en un intento por modelar y simular la capacidad
y el proceso de aprendizaje en los seres humanos.
Las situaciones del mundo real se pueden representar mediante el uso de técnicas de
modelado de objetos(OMT) para facilitar su comprensión. Esto se debe complementar con
un lenguaje de programación orientado a objetos(ej: JAVA), que permita convertir un
modelo de objetos en una eficiente aplicación.
Las redes neuronales artificiales ofrecen ventajas relevantes sobre los sistemas
convencionales y sobre otras reconocidas técnicas de inteligencia artificial.
La herramienta que se presenta como resultado en esta investigación se caracteriza por la
facilidad con que los usuarios pueden comprender el proceso de entrenamiento de una red
neuronal artificial, además tiene en cuenta y aplica las variantes y modificaciones mas
179
importantes que se han hecho a los algoritmos de entrenamiento. Cuenta con un completo
sistema de ayudas, integrado por conceptos, estructura de los algoritmos, funcionamiento,
aprendizaje, aplicaciones y ventajas de las redes neuronales, y el manual de usuario para el
manejo de la herramienta.
Los proyectos que se vienen desarrollando en el grupo de investigación en inteligencia
artificial pueden utilizar este software como apoyo teórico y/o como herramienta de
entrenamiento en los casos en los que tienen que utilizar redes neuronales artificiales, esto
les va a permitir avanzar mas rápido en sus investigaciones.
6. RECOMENDACIONES
El usuario de esta herramienta debe tener conocimientos básicos en redes neuronales
artificiales y los diferentes algoritmos de entrenamiento, así mismo se aconseja definir bien
el problema, resolver las dudas e inquietudes antes de empezar a darle solución y tener
claros los objetivos y metas que se quieren conseguir con la investigación, así como las
etapas en que esta se divide, llevando un control sobre los avances logrados. Esto permitirá
explotar al máximo el potencial de la herramienta en el entrenamiento de redes neuronales
artificiales.
Para que este software se convierta en una herramienta de apoyo a las electivas que dentro
de su programación requieren el uso de redes neuronales artificiales, es necesario que los
docentes que se encuentran a cargo de estos grupos se comprometan a utilizarla en el
desarrollo de los contenidos propios de cada asignatura, generando espacios de practica en
los cuales los alumnos tengan la oportunidad para desarrollar aplicaciones.
Para la divulgación a nivel interno y externo de esta aplicación se requiere el compromiso
de las directivas de la universidad para proporcionar un espacio permanente en el servidor
web.
BIBLIOGRAFIA
[1] ALEXANDER, I; MORTON, H. An Introduction to Neural Computing. Chapman and
Hall. 1991.
[2] ANDERSON, James A. What Neural Nets can do Hillsdale. N. J. Lawrence Elbaum
Associatis. 1989.
[3] A, Krogh; R, Hertz; R, G, Palmer. Introduction to the theory of neural computation.
Addison-Wesley. 1991.
[4] ARNOLD, Ken; GOSLING James. El lenguaje de programación java. Editorial
Addison-Wesley Iberoamericana S.A. 1997.
[5] BECERRA, S, A,Cesar. Los 600 Principales Metodos del JAVA. Editorial Kimpres
Ltda. Octubre de 1998.
[6] BJOM, Petters; CHELLERS, Pfurts. Neural Network. V.11. Oct 1998.
[7] B, Krose; P, Van der Smagt. An introduction neural networks. Univ. De Amsterdam.
1996.
[8] DAVIS, L. Handbook of Genetic Algorithms, VNR Comp. Library . 1990.
[9] DELGADO, J, Alberto. Inteligencia Artificial y Minirobots. Ecoe Ediciones. 1998.
[10] GOLDBERG, D.Genetic Algorithms in Search, Optimization and Machine Learning,
Addison-Wesley. 1989.
[11] FREEMAN, James; SKAPURA, David. Redes Neuronales Algoritmos, Aplicaciones y
Técnicas de Programación. Addison Wesley-Diaz de Santos. 1993.
[12] FREEMAN, Miller. Insurance & Tecnology. Tecnology and Underwriting. Feb 1998.
[13] HAYKIN, Simón. Neural Network, a Comprehensive Foundation. Macmillian College
Publishing, New York. 1994.
[14]HERT, John. Neurocomputing. 1990.
[15] HERT, J; KROGH, A Y PALMER, R. Introduction to Neural Computation. Edit.
Addison Wesley. 1991.
182
[16] HILERA, R, José; MARTINEZ, J, Víctor. Redes Neuronales Artificiales
(fundamentos, modelos y aplicaciones). Addison-Wesley Iberoamericana, S.A. 1995.
[17] J, A, Freeman; D, M, Skapura. Redes Neuronales (algoritmos, aplicaciones y técnicas
de programación). Addison-Wesley Iberoamericana. 1993.
[18] MOLINA, A, Sanz; DEL BRIO, B, Martín. Redes Neuronales y Sistemas Borrosos.
2da edición. RA-MA Editorial. 2001.
[19] NILL, J, Nilsson. Inteligencia artificial: Una nueva síntesis. Editorial McGraw-Hill,
Pág. 7, 53-61. 1998.
[20] PACHECO, M, Aurelio. Notas de Aula em Computação Evolucionária.
[21] PATRICK, H, Winston. Inteligencia Artificial. Addison-Wesley Iberoamericana.
1994.
[22] R, Hecht-Nielsen. Neurocomputing. Addison-Wesley. 1990.
[23] RUMBAUGH, J; BLAHA, M; PREMERLANI, W; EDDY, F; LORENSEN, W.
Modelado y diseño orientado a objetos. Editorial Prentice Hall. Pág. 45-333. 1997.
[24] T, Kohonen. Self organization and associative memory. Springer-Verlag. Berlin. 1989.
[25] WESSERMAN, D, Philip; REYNALD, N, Van. Neural Computing, Theory and
Practice. New York. 1998.
[26] MICHALEWICZ, Z. Genetic Algorithms+Data
Springer-Verlag. 1994.
Structures=Evolution Programs,
[27] http://www.ciberconta.unizar.es/LECCION/REDES/610.html
[28] http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/areas/0.html
[29] http://www.electronica.com.mx/neural/información/backpropagation.htm
[30] http://www.electronica.com.mx/neural/información/hopfield.htm
[31] http://www.electronica.com.mx/neural/información/kohonen.htm
[32] http://www.electronica.com.mx/neural/información/perceptron.htm
[33] http://www.eupmt.es/cra/inform/info11.html
[34] http://www.fortunecity.com/skyscraper/chnos/279/articulos/redesneuronales.html
[35] http://www.fundamentos de las RNA.html
183
[36] http://www.gc.ssr.upm.es/inves/neural/ann2/supmodel/linperne.htm
[37] http://www.geocities.com/siliconvalley/campus/9756/tutorial/RNA_backpro.html
[38] http://www.gc.ssr.upm.es/inves/neural/ann2/unsupmod/fixweigh/seqhopmo.htm
[39] http://www.gc.ssr.upm.es/inves/neural/ann2/concepts/suunsupm.htm
[40] http://www.gc.ssr.upm.es/inves/neural/ann2/concepts/taxonomy.htm
[41]http://www.ingenieria.udea.edu.co/investigacion/mecatronica/mectronics/redes.html
[42] http://www.intersaint.org/acid/rvpm2.htm
[43] http://www.mailweb.udlap.mx/~pgomez/cursos/rna/notas/cap.3.html
[44] http://www.mailweb.udlap.mx/~pgomez/cursos/rna/notas/cap5.html
[45] http://www.mailweb.udlap.mx/~pgomez/cursos/rna/notas/cap7.html
[46] http://www.nitsuga.net.eu.org/redes_neuronales/APEN_D.html
[47] http://www.uca.es/dept/leng_sis_informaticos/preal/23041/traspas/HMapasdeKohonen/ppframe.html
[48] http://www.uv.es/~mlejarza/redes.htm
Anexo A. Manual de Usuario
Anexo A. Manual de Usuario
INTRODUCCION
Intelligent Spider es una herramienta de software para entrenar redes neuronales
artificiales, en este sentido, proporciona seis diferentes algoritmos de entrenamiento que
reúnen las características y usos mas generales de la tecnología neuronal.
CARACTERISTICAS GENERALES
Intelligent Spider fue desarrollado en lenguaje de programación JAVA con distribución
J2SDK, utilizando applets, servlets y html.
Cada modulo e interfaz presentada por Intelligent Spider es explicada en forma
independiente haciendo una breve descripción de las posibles opciones que en ella se
pueden encontrar, de esta forma se garantiza la comprensión por parte del usuario durante
la exploración del sistema.
INGRESO AL SISTEMA
Intelligent Spider se encuentra alojado en el servidor de aplicaciones Alexandra (Servidor
configurado en apache-tomcat para uso exclusivo de este proyecto), cuya dirección en la
red es http://192.168.13.157:8080/Alexandra/IntelligentSpider.html, una vez hecha la
conexión aparecerá la pagina inicial, en ella se encuentran enlaces a la pagina de la
universidad, a la pagina del grupo(GIIA) y un vinculo especial que permite ejecutar la
aplicación(Ver Figura 1).
Figura 1.Entrada al sistema
MODULO INTERFAZ PRINCIPAL
A continuación se presenta la interfaz principal del sistema.
Figura 2.Interfaz principal
OPCIONES DE LA BARRA DE MENUS DE LA INTERFAZ PRINCIPAL
Menú Aspecto
Este Menú contiene las diferentes opciones para la visualización del
sistema, cada una tiene una representación diferente: Motif
representación estilo Solaris, Windows representación propia de
Windows y Metal representación propia de java
Figura3.Menú Aspecto
Menú Archivo
Figura 4 Archivo
Nuevo: borra la información contenida en el frame actual,
entendiendo como frame la interfaz asociada a un algoritmo.
Cerrar: cierra la ventana activa actualmente.
Salir: esta opción es para abandonar y cerrar la aplicación
general.
Menú Algoritmos
Este menú permite acceder a cualquiera de los seis algoritmos
propuestos, un simple clic despliega una ventana interna con
todas las opciones necesarias para el algoritmo seleccionado.
Se puede tener abiertos varios algoritmos simultáneamente, en
la parte superior de cada ventana aparecerá el nombre del ítem
seleccionado. Mas adelante se explicaran con detalle las
opciones internas de cada algoritmo.
Figura 5. Menú Algoritmo
Menú ayuda
En este menú se puede acceder a un completo sistema de ayudas
clasificado por temas, obtener información acerca del GIIA y
también los datos de los autores de esta herramienta.
Figura 6.Menú Ayuda
Temas de ayuda: esta opción permite obtener información conceptual y matemática sobre
redes neuronales artificiales y algoritmos de entrenamiento, también se encuentra el
manual de usuario del sistema que podrá ser consultado en cualquier momento para
resolver dudas sobre el manejo de la herramienta. La información se encuentra
clasificada por temas para hacer mas fácil y efectiva la búsqueda.
(Ver Figura 7).
Figura 7. Interfaz temas de ayuda
MODULO PROPAGACIÓN INVERSA
Al dar clic sobre el ítem propagación inversa del menú algoritmos se carga dentro de la
ventana principal la interfaz correspondiente(Ver Figura 8).
Figura 8. Interfaz para el modulo propagación inversa
Configurando la estructura de la red: en esta pestaña se introducen los valores
correspondientes al numero de patrones de entrenamiento que se van a utilizar, la cantidad
de neuronas de entrada y de salida que va a tener la red, así mismo el numero de capas
ocultas que se desean configurar.
Configurando los parámetros de la red: en esta pestaña se asignan los valores al error
esperado, la rata de aprendizaje y el numero de iteraciones que se deben realizar para
entrenar la red.
DESCRIPCIÓN DE LA BARRA DE MENUS
Menú configuración
Figura 9. Menú configuración
Patrones de entrada: se comporta de formas diferentes
dependiendo del valor que tenga asignado la opción patrones
en disco del menú opciones. Si esta seleccionada se abrirá un
dialogo para hacer una búsqueda sobre el disco y extraer el
archivo que contiene los patrones de entrenamiento, en caso contrario se desplegara un
dialogo propio del sistema(Ver Figura 10) donde se podrán introducir los valores
correspondientes.
Figura 10. Tabla patrones de entrada
Estructura oculta: permite introducir el numero de neuronas para cada una las capas
ocultas que se deseen tener en la red(Ver Figura 11).
Figura 11. Tabla neuronas capas ocultas
Menú ver
Figura 12.Menú ver
Patrones de entrada: permite visualizar los patrones que se
están utilizando en el entrenamiento, con esta opción se puede
comprobar si ya han sido correctamente cargados por el
sistema, además permite guardar los patrones en disco.
Estructura oculta: si se selecciona esta opción se visualiza mediante un dialogo el numero
de capas ocultas utilizadas en el entrenamiento, así como el numero de neuronas en estas
capas.
Pesos iniciales: permite que el usuario vea los valores con los que el modelo de red
neuronal entrenado empezó el proceso de aprendizaje, estos valores se muestran en un
dialogo desde el cual se podrán guardar en una unidad de disco haciendo clic sobre el
botón guardar.
Pesos finales: muestra las informaciones aprendidas durante el proceso de entrenamiento,
las cuales son consideradas las memorias de la red neuronal. Los valores se cargan en un
dialogo el cual permite visualizarlos capa por capa según la estructura del modelo de red
que se haya entrenado.
Menú proceso
Figura 13. Menú proceso
Compilar: al hacer clic sobre este submenú o sobre el botón
compilar se muestran los errores cometidos desde el momento
inicial hasta antes de entrenar el modelo de red propuesto, también
permite ver los datos digitados para las opciones de estructura y
parámetros. Si no hay errores, no se muestra el mensaje de error
solo los datos registrados para la estructura de la red neuronal.
Entrenar: si se selecciona este submenú o el botón entrenar se inicia el proceso de
entrenamiento, además se visualiza en la interfaz el progreso de este, mediante una barra
de progreso, así como los valores de los errores cometidos. Este proceso no puede ser
interrumpido por el usuario debido a la implementación de hilos.
Cuando se adicionen iteraciones al entrenamiento que se este llevando acabo, hay que
hacer clic nuevamente sobre este submenú para que el proceso continué sin ninguna
alteración.
Propagar patrones: se tiene que hacer clic sobre esta opción cuando se desee recuperar la
información aprendida por la red, con lo cual se muestra un cuadro de dialogo en donde
podrá seleccionar si propagar todos los patrones ya aprendidos o propagar un nuevo
patrón, luego de seleccionar la opción hay que hacer clic sobre el botón aceptar para que
el sistema empiece el proceso de recuperación o en el botón cancelar para salirse del
cuadro de dialogo y no llevar acabo el proceso.
Para cuando se seleccione la opción nuevo patrón se debe que introducir los datos y
después dar clic en aceptar para empezar el proceso. El sistema después de realizar el
proceso muestra los datos iniciales así como los aprendidos para que se puedan comparar
y sacar conclusiones.
Generar código: después de haber entrenado el modelo de red, mediante el uso del botón
identificado con este nombre o mediante el uso del submenú generar código se podrá ver el
código fuente generado por la aplicación y que corresponde al modelo de red entrenado.
Menú activación
Figura 14. Menú activación
Permite elegir la función de activación que se utilizara para filtrar
la salida de cada una de las neuronas de la red neuronal. Se debe
tener especia cuidado pues no todos los modelos y tipos de datos se
pueden tratar con la misma función de activación, debe aplicarse un
poco de experiencia para elegir la amas adecuada.
Menú herramientas
Figura 15. Menú herramientas
Adicionar iteraciones: muestra un dialogo en el cual se digita el
numero de iteraciones que se desean agregar al entrenamiento en
proceso, permitiendo seguir entrenando a partir de los últimos
valores obtenidos. Para que las iteraciones adicionales sean
tenidas en cuenta por el sistema de debe primero marcar en el menú
opciones la casilla identificada como adicionar iteraciones.
Fijar pesos iniciales: permite asignar de forma manual un valor único para todas las
conexiones de la red, no teniendo en cuanta la inicialización aleatoria. Para poder iniciar
con este valor dado primero se debe marcar en el menú opciones la casilla identificada
como pesos fijos.
Rango pesos iniciales: mediante un dialogo permite al usuario seleccionar el rango tanto
inferior como superior, en el cual se generarán los pesos iniciales para todas las
conexiones del modelo de red a entrenar, luego de seleccionar este intervalo se debe hacer
clic en aceptar para tener en cuenta el rango o en cancelar para deshacerlo.
Rata dinámica: muestra un dialogo con las opciones disponibles para el cambio del factor
de aprendizaje inicial a medida que el entrenamiento avance, además visualiza la formula
que se utilizará según la opción escogida. Para que el sistema realice el cambio del factor
de aprendizaje en forma dinámica, primero se debe marcar en el submenú opciones la
casilla rata dinámica.
Menú opciones
Figura 16. Menú opciones
En este menú encontramos un conjunto de opciones de selección
que activan o desactivan ciertas características de las redes tipo
propagación inversa, también permite cambiar el comportamiento
de algunos submenús y el uso o no de las herramientas descritas en
el menú herramientas. El uso y combinación de algunas de estas
opciones pueden mejorar el comportamiento de la red, pero
también pueden empeorarlo, saber elegir las opciones adecuadas
exige experiencia y pericia por parte del usuario.
MODULO PERCEPTRON
Este modulo es similar al modulo propagación inversa, ya que los dos algoritmos
funcionan en forma similar, tienen los mismos menús, las únicas diferencias se dan porque
perceptron no utiliza rata dinámica, y solo tiene dos opciones en el menú activación.
Figura 17. Interfaz para el modulo perceptron
MODULO KOHONEN
Tiene los mismos menús que propagación inversa, a excepción del menú activación el cual
no esta presente en este modulo; existen algunas diferencias en sus submenús, ya que
kohonen no tiene capas ocultas ni tiene umbral, momentum y otras opciones. En este
modulo cuando se seleccione la pestaña estructura se deberá introducir información para
el numero de patrones de entrada, el total de entradas y neuronas que tendrá la única capa
que existe para este tipo de red; cuando de clic sobre la pestaña parámetros podrá
ingresar valores para factor de aprendizaje, en el numero de iteraciones y el valor para el
radio de vecindad que se evaluará entre la neurona ganadora y las vecinas, después de
ingresar estos datos deberá hacer clic en el botón aceptar o en el botón borrar para
ingresar nueva información.
Figura 18.Interfaz para el modulo kohonen
OPCIONES DE LA BARRA DE MENÚS PARA EL MODULO KOHONEN
Las opciones de cada uno de los menús(Ver Figura 19) tienen la misma funcionalidad que
las explicadas para el modulo propagación inversa.
Figura 19 .Opciones de los menús en el modulo kohonen
MODULO HOPFIELD
Contiene los mismos menús que los módulos anteriores y su funcionalidad es la misma, los
cambios que se dan al interior de los menús son omisión de ítems, pero en ningún momento
se incluyen ítems nuevos.
Figura 20. Interfaz para el modulo hopfield
OPCIONES DE LA BARRA DE MENUS PARA EL MODULO HOPFIELD
Las opciones que ofrece este modulo(Ver Figura 21) tienen la misma funcionalidad de las
ya explicadas, por tal razon lo remitimos a buscar su explicación en el modulo
propagación inversa.
Figura 21. Opciones de los menús en el modulo hopfield
MODULO ALGORITMOS GENETICOS
Figura 22. Menús para el modulo algoritmos genéticos
En esta algoritmo cuando se seleccione la pestaña estructura el usuario deberá tener claro
cuantas entrada tendrá el modelo de red que desea entrenar, las capas ocultas que tendrá,
así como el número de salidas que se evaluarán. Para la pestaña parámetros se debe tener
en cuenta el margen de error que se quiere obtener al entrenar los patrones, además se
deben señalar con cuantos patrones o informaciones de entrada la red neuronal será
entrenada así como el numero de veces que se pasaran los patrones antes de culminar el
entrenamiento.
En la pestaña población se debe involucrar el numero de individuos o cromosomas con los
que la red empezará la evaluación y entrenamiento, también el numero de condiciones
iniciales y la representación de cada gen a partir de un valor dado, es decir con cuantos
bits se quiere representar el gen en la cadena de cromosomas.
OPCIONES DE LA BARRA DE MENUS PARA EL MODULO ALGORITMOS
GENETICOS
Para este modulo las cosa nuevas que deben tener en cuenta son las listadas dentro del
menú herramientas las cuales son únicas para el tipo de algoritmo estipulado y que ningún
otro las implementa, estos submenús en su orden son:
Método de selección: al hacer clic sobre este se llega a un cuadro de dialogo en donde de
debe seleccionar el método que se utilizara para el proceso de entrenamiento, después de
escogerlo se debe hacer clic en aceptar para que la selección de las generaciones
apropiadas sean mediante el método tenido en cuenta y no por el que el sistema toma de
entrada.
Operador de reproducción: le permitirá a través de un cuadro de dialogo escoger el
.método que se utilizará en la reproducción de los individuos y que dependiendo del
escogido le permitirá al cromosoma que representa el individuo tener una opción baja o
alta de entrar a hacer parte de la próxima generación
Figura 23. Menú Herramientas para el modulo algoritmos genéticos
MODULO MEMORIAS ASOCIATIVAS
Presenta una configuración similar al modulo hopfield con la diferencia que en este
algoritmo se manejan dos capas de neuronas y no una como en la red de hopfield. Su
configuración es sencilla, se debe especificar cuantos patrones quieres que la red aprenda,
especificar el numero de neuronas que tendrá la capa en el nivel de entrada o capa cero y
el numero de neuronas que conformarán la capa de salida o de nivel uno.
Figura 24. Interfaz para el modulo memorias asociativas
Los submenús se manejan en la misma forma como son manejados en el modulo
propagación inversa ya que estos no presentan cosas nuevas sino que por el contrario
suprimen, por lo cual se recomienda que en el momento de dudas se debe ir al modulo
propagación inversa y verificar que función cumple cada uno de los submenús para
luego utilizar esta interfaz sin ningún problema.
Figura 25. Detalle de submenús en el modulo memorias asociativas
MODULO GENERAL PARA EL PROCESO PROPAGAR PATRONES
Esta parte se encuentra en todos los módulos correspondientes a los algoritmos estudiados
solo que aquí se describe paso a paso su función y como hacerlo. El submenú propagar
patrones se encuentra dentro del menú procesos para todos los algoritmos, también lo
puedes hacer a través del icono directo identificado con el mismo nombre. Antes de
propagar se debe haber entrenado el modelo de red neuronal ya que la función propagar
lo que hace es recuperar la información aprendida a partir de unos patrones o
informaciones iniciales. Este modulo presenta la posibilidad de recuperar la información
aprendida para todos los patrones iniciales, así como la propagación un nuevo patrón que
la red neuronal no conozca, cuya respuesta deberá ser interpretada para asociarla con una
de las informaciones iniciales. Al iniciar este modulo aparecerá activa la opción de
propagar todos los patrones por lo que solo se debe hacer clic sobre el botón aceptar y
esperar un momento hasta que el sistema muestra la información recuperada, la cual se
muestra según la grafica en la tabla de abajo.
Figura 26. Dialogo general para el proceso propagar todos los patrones
Si se quiere propagar un nuevo patrón o información que el modelo de red neuronal
entrenada no conoce se debe activar el botón propagar un nuevo patrón haciendo clic
sobre el y luego en la única tabla que aparece introducir los datos teniendo en cuenta que
para pasar de casilla en casilla se debe hacer uso de la tecla tabuladora o de las teclas de
dirección y además eliminar los datos que aparecen inicialmente como lo es 0.0, los cuales
son datos de tipo doble después de digitar los datos se debe hacer clic en aceptar y
esperar que el sistema muestre la información propagada para interpretarla y asociarla
con uno de los patrones iniciales; esta información se muestra en la figura siguiente en la
tabla inferior.
Figura 27. Dialogo general para el proceso propagar un nuevo patrón
Anexo B. Detalles técnicos
Anexo B. Detalles técnicos
En este anexo se describen los detalles técnicos sobre la instalación y correcto uso de las
herramientas utilizadas para el desarrollo del paquete Intelligent Spider y su correcta
aplicación. Se uso JAVA versión 1.3.1_02 como lenguaje de programación
ENTORNO JAVA 2 SDK STANDARD EDITION
Java 2 SDK es un entorno de desarrollo que permite crear aplicaciones autónomas, applets
y demás componentes mediante la utilización del lenguaje java. El Java 2 SDK Standard
edition contiene la maquina virtual java, clases que incluye la API de la plataforma JAVA 2
y varios archivos de soporte. Se puede descargar el JAVA 2 Standard Edition versión
1.3.1_02 de la dirección web http://java.sun.com/j2se/1.3.1_02/download.html.
Requerimientos del sistema. Java 2 SDK Standard Edition se adapta y puede ser usado
sobre las siguientes plataformas:
Windows 95, Windows 98(1st 2nd edición), Windows NT 4.0 con el service Pack 5,
Windows ME, Windows 200 profesional, Windows 2000 Server, Windows 200
Para obtener una correcta ejecución del JAVA 2 SDK Standard Edition es necesario contar
mínimo con el siguiente hardware:
Procesador Pentium de 166Mhz o más rápido
Memoria Ram de 32 Mb
Disco duro con espacio libre mínimo de 40 Mb
INSTALACION DE JAVA 2 SDK STANDARD EDITION
Instalación en Windows. Se descarga primero una copia de la distribución de JAVA 2
SDK con nombre como j2sdk-1.3.1_ numero de versión o también j2re-13.1_numero de
versión. Guarde este archivo en su disco. Para iniciar el proceso de instalación de un doble
clic sobre el archivo ejecutable descargado y siga los pasos del programa de instalación. Se
debe elegir el directorio C:\ como el directorio base para que se pueda ejecutar y utilizar
correctamente el Java.
Después de instalado JAVA para que el sistema pueda reconocer el compilador de java se
tiene que ajustar la variable PATH en el fichero autoexec.bat para evitar escribir
explícitamente la ruta completa de los distintos ejecutables java cada vez que se deseen usar.
Ajuste de la variable de entorno PATH en windows. Si se desea ajustar la variable de
forma permanente, se debe actuar de manera diferente en cada una de las plataformas de
uso.
Windows 95/98: Edite el archivo C:\autoexec.bat y añada las siguiente líneas
SET JAVAPATH = C:\jdk1.3.1_02
SET PATH = %JAVAPATH%\BIN;.\
SET CLASSPATH = %JAVAPATH%\BIN\classes.zip;.\
Guarde los cambios y reinicie el computador para que los cambios tengan efecto.
Windows NT: Presione en el botón Inicio y luego elija la opción configuración, luego
panel de control. Haga doble clic sobre sistema para que aparezca la ventana
propiedades, en esta ventana seleccione la opción Entorno y añada la ubicación de la
carpeta bin del JRE1.3.1_número versión al final del PATH.
Windows ME: Presione el botón Inicio y elija la ruta Programas, Accesorios,
Herramientas del sistema y a continuación la utilidad para modificar la configuración
del sistema, diríjase a variables de entorno y añada la ubicación de la carpeta bin del
jsdk1.3.1_numero de versión al final del PATH. Reinicie para agregar los cambios.
Windows 2000: Presione el botón Inicio y elija la opción Configuración, a continuación
Panel de Control, de doble clic sobre Sistema y aparecerá la ventana denominada
Propiedades del sistema. En esta ventana seleccione Avanzado y luego efectué un clic
sobre el botón de variables de entorno y añada la ubicación de la carpeta bin del
jsdk1.3.1_numero versión o del JRE1.3.1_numero versión al final del PATH.
Arrancar JAVA en Windows. Para arrancar JAVA, se debe iniciar una ventana de MSDOS y ubicados en el directorio C:\ se debe escribir C:\>cd jdk1.3.1_número de versión y
enter, después de ubicarnos en este directorio debemos escribir C:\jdk1.3.1_número de
versión>cd bin y enter. Luego de ejecutar estos pasos ya estamos listos para entrar a
compilar y correr cualquier clase escrita bajo el lenguaje JAVA.
Compilar y ejecutar clases.java en Windows. Para poder ejecutar cualquier clase en java
debemos primero compilarla para cerciorarnos de estar libre de errores, para lo cual
debemos hacer lo siguiente:
Estando ubicados en C:\jdk1.3.1_número de versión\bin> se debe escribir javac [nombre
clase].java y luego enter. Después de compilar la clase, esta se ejecuta escribiendo después
del bin la siguiente línea. C:\jdk1.3.1_número de versión\bin>java [nombre clase], luego enter.
Instalacion en Linux. Descargue el archivo j2re-1.3.1_02-linux-i386.bin el cual es un
archivo de tipo binario, o el archivo j2re-13.1_02-linux-i386-rpm.bin el cual contiene los
paquetes RPM del java Standard Edition.
Instalación del Archivo binario:
Verificar el tamaño del archivo después de descargarlo.
Copiar el archivo en el directorio donde se desee instalarlo, se recomienda el directorio
/usr/local.
Ejecutar el archivo j2re-1.3.1_02-linux-i386.bin y luego aceptar los términos de
licencia. Se debe verificar que el archivo tenga los permisos de ejecución 755 y luego
teclear: ./j2re-1.3.1_02-linux-i386.bin. Se mostraran los terminos de licencia los cuales
se deben aceptar para seguir con el proceso de instalación.
Instalación del Archivo RPM:
Verificar el tamaño del archivo después de descargarlo
Ejecutar el script j2re-1.3.1_02-linux-i386.bin y luego aceptar la licencia. Se debe
verificar que el archivo tenga los permisos de ejecución 755 y luego teclear:
-/j2re-1.3.1_02-linux-i386-rpm.bin. Se mostrarán los términos de licencia los cuales
debes aceptar para seguir con el proceso de instalación
Verificar que este como super-usuario o root, de lo contrario debes cambiarse
Ejecute el siguiente comando para la instalación del paquete:
rpm-iv j2re-1.3.1_02.i386.rpm
Ajuste de la variable PATH en Linux. Editar la variable PATH es una tarea sencilla.
Todo lo que se tienes que hacer es añadir la línea siguiente a tu /etc/profile
|export PATH=$PATH:/usr/local/j2re/bin|
Esto añade a PATH la ruta /usr/local/bin/j2re. Una vez hecho esto se recarga /etc/profile
escribiendo: |root@localhost:~# source /etc/profile|
Se prueba si el shell puede encontrar el compilador Java simplemente tecleando "javac".
Compilar y ejecutar clases.java en Linux. Estando ubicados en el directorio en donde fue
instalado java se debe escribir: javac [nombre clase].java y luego enter. Después de compilar la
clase, esta se ejecuta escribiendo después del directorio origen la siguiente línea: java [nombre
clase], luego enter.
CONECTIVIDAD MEDIANTE SERVIDOR JAKARTA TOMCAT 4.0.1
Instalación de Jakarta Tomcat 4.0.1 en Linux. Se descarga el código de Tomcat de
http://jakarta.apache.org. La última versión estable (4.0.1)que se uso se puede descargar de
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.1/bin/jakarta-tomcat4.0.1.tar.gz.
Se instala Tomcat en /usr/local/jakarta-tomcat-4.0.1.
$cp jakarta-tomcat-4.0.1.tar.gz /usr/local
$tar xvzf /usr/local/jakarta-tomcat-4.0.1.tar.gz
$rm /usr/local/jakarta-tomcat-4.0.1.tar.gz
Una vez hecho este proceso, se debe configurar la variable de entorno llamada
CATALINA_HOME, que apunte al directorio anterior, lo que en bash (Bourne Again
SHell) se hace de la siguiente forma:
$CATALINA_HOME=/usr/local/jakarta-tomcat-4.0.1; export CATALINA_HOME
Se debe Recordar que antes de lanzar el Tomcat debe de tener también una variable de
entorno llamada JAVA_HOME que apunte al directorio raíz de la instalación de su JVM, y
que además el directorio JAVA_HOME/bin debe estar incluido en la variable de entorno
PATH.
Con esta configuración se corre el servidor Tomcat a través del script:
/usr/local/jakarta-tomcat-4.0.1/bin/startup.sh
y se detiene con el comando: /usr/local/jakarta-tomcat-4.0.1/bin/shutdown.sh
Instalación de Jakarta Tomcat 4.0.1 en Windows. Se descarga el código de Tomcat
4.0.1 que se encuentra disponible en http://jakarta.apache.org. En este caso se descargarán
los binarios, ya que al tratarse de un programa que está escrito en Java los podremos usar en
cualquier plataforma que tenga una maquina virtual(JVM). La última versión (4.0.1) que es
la que se usará, se puede descargar directamente desde jakarta-tomcat-4.0.1.tar.gz.
Se instala Tomcat desde un fichero comprimido que ya se ha descargado, se descomprime
en el directorio C:\. Se configura la variable de entorno llamada CATALINA_HOME la
cual debe direccionar al directorio anterior, según la plataforma de trabajo la configuración
de esta variable es la siguiente:
En plataformas como Windows 95/98 se añade la línea siguiente al fichero
autoexec.bat: SET CATALINA_HOME=c:\jakarta-tomcat-4.0.1
En Windows NT/2000 la configuración se hace a través del panel de control, sistema,
propiedades del sistema y luego clic en la sección avanzado.
Antes de lanzar el servidor Tomcat se debe configurar también una variable de entorno
llamada JAVA_HOME que direccione al directorio raíz de la instalación de su JVM, y que
además el directorio JAVA_HOME\bin debe estar incluido en la variable de entorno
PATH.
Se arranca el servidor Tomcat haciendo uso del script:
c:\jakarta-tomcat-4.0.1\bin\startup.bat
Se para el servidor Tomcat haciendo uso del script:
c:\jakarta-tomcat-4.0.1\bin\shutdown.bat
Si se ha instalado Tomcat desde el fichero ejecutable, se puede ejecutar seleccionando la
ruta inicio/archivos de programa/Apache tomcat 4.0 y haciendo clic en start Tomcat o en
stop Tomcat cuando se quiera detener el servidor.
Anexo C. Encuesta
Anexo C. Encuesta
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
HERRAMIENTA DE SOFTWARE PARA ENTRENAR Y SIMULAR REDES
NEURONALES ARTIFICIALES
ENCUESTA
Objetivo: Evaluar el desempeño de la herramienta “Itelligent Spider” en cada una de las
diferentes fases que conforman la taxonomía de las redes neuronales artificiales.
1. Como considera el papel que puede desempeñar la herramienta “Intelligent Spider”
en la construcción de aplicaciones de sistemas expertos, sistemas basados en
conocimiento o sistemas de toma de decisiones.
___ Excelente ___ Bueno
___ Regular
___ Malo
2. Considera usted que el sistema de ayuda integrado en la herramienta proporciona la
información necesaria para introducirse en el área de redes neuronales artificiales en
un grado:
___ Muy alto
___ Alto
___ Medio
___ Bajo
___ Muy Bajo
3. En que grado, considera usted, que la herramienta proporciona una interfaz
amigable al usuario:
___ Muy alto
___ Alto
___ Medio
___ Bajo
___ Muy Bajo
4. La información presentada por la herramienta esta dada en forma clara y concisa:
___ Siempre
___ Casi siempre
___ Algunas veces
___ Nunca
5. En el rango [0 – 100], como califica usted la facilidad de uso de la herramienta:
_____________%.
6. Al evaluar la herramienta, en que porcentaje [0 - 100] califica usted la eficacia de
los resultados obtenidos:
_____________%.
7. Considera usted que en la herramienta están incluidos los algoritmos más
importantes. Si su respuesta en no, especifique cuales harían falta.
___ Si ___ No
___________________________________________________________________
8. Como es el comportamiento
entrenados(generalización).
___ Excelente
___ Bueno
de
___ Regular
la
herramienta
con
patrones
no
___ Malo
9. La flexibilidad que ofrece la herramienta para la utilización de diferentes algoritmos
la considera:
___ Excelente
___ Bueno
___ Regular
___ Malo
10. La flexibilidad que ofrece la herramienta para la configuración interna de cada uno
de los diferentes algoritmos la considera:
___ Excelente
___ Bueno
___ Regular
___ Malo
11. La herramienta permite seleccionar el algoritmo más optimo
resultados obtenidos. Considera usted que esto de da:
___ Siempre
___ Casi Siempre
___ Algunas veces
a partir de los
___ Nunca
12. Los entrenadores comerciales utilizan una sola ventana para todos los algoritmos. E
hecho de que esta herramienta proporcione ventanas independientes para cada
algoritmo(sistema multicamino) permite al usuario la comparación de los resultados
entre algoritmos; esta característica la considera:
___ Ventajosa
___ No afecta
___ Desventajosa
13. Que tan útil ve usted la generación de código realizada por la herramienta para la
recuperación de la información:
___ Muy útil
___ Útil
___ Irrelevante
14. Que sugerencias u observaciones puede dar usted sobre la herramienta:
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
“GRACIAS POR SU APORTE Y COLABORACIÓN EN ESTA INVESTIGACION”
Descargar