WNEURORED: SIMULADOR
Y ANALIZADOR
DE REDES
NEURONALES ARTIFICIALES
INDICE
CAPITULOS
PÁGINA
CAPITULO I
i.iNTRODUCCi6N CAPíTULO I1
11.1 JUSTIFICACI~N 11.2 OBJETIVOS
11.3 REQUERIMIENTOS CAPITULO 111
WNEURORED: SIMULADOR Y ANALIZADOR DE REDES
NEURONALES ARTIFICIALES DE TIPO BIOLOGIC0
11.1 INSTALACIóN DEL PAQUETE
111.2 DESCRIPCIóN DEL PAQUETE
111.3
ANALISIS
DEL MÉTODODE PROGRAMACIóN
111.4
ANALISIS
DEL CóDIGO 111.4.1 FORMARED111.4.2 NEURURED 111.4.3 PUNTOS 111.4.4 MOSAICOS CAPITULO IV
FAANUAL DE USUARIO DE W NEURORED
;v.
1 NSTALACI6~
DELN.2.3 NEURORED IV.2.4 EDITOR IV.2.5 PUNTOS IV.2.6 MOSAICOS IV.2.7 EJEMPLOS CAPITULO V
CONCLUSIONES BIBLIOGRAFIA APENDICE A
31
32
33
36
38
56
57
58
CAPITULO I
Introducción
Cuando nos propusimos la tarea de elaborar este proyecto, pensamos en varios objetivos posibles. Ayudarnos a comprender
lo
que está sucediendo dentro de las nuevas tecnologías con que nos enfrentamos, no sólo en ia investigación sino en el mundo empresarial.Sabemos que muchas propiedades biológicas de tipo cognoscitivo se tomaron e incorporaron en
los
sistemas neuronales, porlo
que, primeramente estudiamosc6mo funciona el cerebro humano para entender los algoritmos que simulan el
proceso de aprendizaje entre neuronas.
El propósito de la computación neuronal es crear sistemas artificiales inteiigentes. Estos sistemas resuelven problemas del cómputo tradicional, como el procesamiento de imágenes y voz, predicción, control y optimización.
Las computadoras tradicionales se basan en la arquitectura de Von Neumman, es decir, procesan la información de manera secuencial, en contraste a una red neuronal. ÉSta no ejecuta instrucciones de manera serial sino que responde en paralelo.
El
conocimiento de una red neuronal no consiste en el almacenamiento de instrucciones, el poder de esta reside en su topología y enlos
valores de las conexiones antre neuronas. Para entrenar una red neuronal se le presentan de manera sistemática una serie de entradas con sus salidas respectivas con el fin de que aprendan y se auto-organicen.El cerebro humano es robusto y tolerante a fallas, diariamente mueren neuronas sin afsctar su desempeño, es flexible, se ajusta a nuevos ambientes por aprendizaje, es altamente paralelo y puede manejar información difusa, con ruido o inconsistente. Todas estas características son deseables en un sistema artificial. Las redes neuronales procesan información simultánea, utilizando el paralelismo masivo de procesadores elementales ilamados neuronas, asi, con &ta arquitectura, varias neuronas pueden fallar y la red sigue funcionando. En el área de robbtica hay una tendencia fuerte hacia el desarrollo de estos sistemas. Las redes neuronales son un complemento de
los
sistemas tradicionales, no su reemplazo.Actualmente existen en el mercado circuitos integrados con redes neuronales. iambi6n es posible simular en una computadora una red neuronal, escribiendo un programa que ejecuta secuencialmente simulando la dinámica paralela. Obviamente un programa es menos eficiente ya que la computadora soporta una arquitectura serial.
Se han desarrollado sistemas de este tipo debido a los trabajos de investigación en la anatomía de redes neuronales biológicas, demostrando así, que el tejido del cerebro
no
es una masa continua sino una red de unidades discretas, denominadas neuronas, formadas a su vez por el soma o cuerpo de la célula que contiene el núcleo y está encargado de las actividades metabólicas de toda la neurona, el soma puede recibir información de otras neuronas a través de la sinápsis en su superficie. Las dendritas son estructuras que parten del soma con ramificaciones, éstas se especializan en la recepción de señales de otras célulasnerviosas
por
medio de las conexiones sinápticas.El
axón permite enviar impulsos a otras células nerviosas. La sinápsis es una conexión entre dos células nerviosas. Esta conexión puede ser excitativa o inhibitorias según el neurotransmisor que se libere, cada neurona recibe de 1 O O00 a 1 O0 O00 sinápsis y su axón realiza una cantidad de sinápsis. La sinápsis se clasifica según su posición en su posición en la superficie de la neurona receptora, hay tres tipos: axo-somática, axo-dendrítica, axo-axónica. La sinápsis es química pero tiene efectos eléctricos laterales que se pueden medir. Cuando una neurona está en reposo, su membrana externa mantiene una diferencia de potencial de -70 mv (la superficie interior es negativa respecto de la superficie exterior). En reposo la tnembrana es más permeable a los iones de potasio que a los iones de sodio. Cuando se estimula la célula, la permeabilidad al sodio se incrementa, lo cual produce una entrada repentina de cargas de potencial de ia membrana. El impulso se inicia en la unión del cuerpo celular y el axón, y se propaga lejos del cuerpo celular. Cuando el impulso alcanza los terminales del axón de la neurona presináptica, este induce la liberación de moléculas neurotransmisoras. Los transmisores se difunden y alcanzan los receptores de ia membrana postsináptica. La frecuencia de los impulsos descargados por una neurona y la intensidad de la excitaci6n obedecen la siguiente funci6n:Excitación
\ 1 - -:
varlaci6n de ¡a frecuencia de descarga neuronal según la excitación.
Et aprendizaje en las neuronas ocurre por la actividad neuronal coincidente, esto se conoce como la ley de Hebb o aprendizaje Hebbiano, es decir, cuando el axón de una célula A excita la céitiia B y repetidamente torna lugar en su activación, ocurre algún proceso de crecimiento o cambio metabólico en una o ambas células ;ai q~ la eficacia de A,
como
una de las cjiuias que dispara a S, se incrementa. Según la regla de aprendizaje de Hebb, la actividad coincidente en las neuronas presiniptica y postsináptica es critica para fortaiecer la conexión entre ellas, esto se denomina mecanismo asociativo pre-post.Existen dos categorias de algoritmos de entrenamiento para una neurona o una
red neuronal. Los algoritmos supervisados requieren patrones de entrada-salida deseada, esto es, la red necesita un profesor que le muestre las respuestas correctas. La segunda categoría es la de los algoritmos no supervisados y la red neuronal establece su propia organización de
los
datos de entrada.Los algoritmos de aprendizaje supervisado se dividen en dos tipos: Correcci6n de error y gradiente.
Los algoritmos de corrección de error alteran los pesos (sinápsis) de la neurona despues de la presentación de un patrón para corregir el error de salida.
Los algoritmos de gradiente modifican los pesos de la neurona después de la presentacibn de un patrón para minimizar el error cuadrático medio sobre todos los patrones. Esto se logra modificando los pesos en dirección opuesta al gradiente de la funci3n de error.
Dentro de los algoritmos de corrección, se encuentra el de ia Regia del Perceptron.
La actualizaci6n del
vectcrr
de pesm se hace con la expresión siguiente: Wk+l=‘m
+ u ek Xk + p { “vic-
LV“,el último término adicional se denomina momentum, es una memoria o inercia y permite que los cambios en ei vector de pesos W sean suaves porque incluyen información sobre el cambio anterior.
i
&=+ 1+
n
error
i
e
/ +
I II
pesos
CAPITULO
II
11.1
JUSTIFICACI~N
La dinámica de desarrollo tanto en hardware como en software, va ligeramente rezagada con respecto a la aparición de nuevas ideas sobre como realizar las tareas.
Dentro del ambiente universitario mexicano, un común denominador es la falta de recursos para la estimulación de la investigación que proporcione ese aliciente para lograr un progreso tecnológico
más
acentuado.Es por eso que cuando se propone un proyecto de desarrollo de software en México para alimentar la falta de impulso en la investigación nacional, generalmente es bien acogido por los universitarios mexicanos.
Este es nuestro caso, y nuestro trabajo es el resultado de los esfuerzos conjuntados entre profesorado y estudiantado de la Universidad Nacional Autónoma de México y de la Universidad Autónoma Metropolitana; estos esfuerzos tenían por fin común no sólo el de actualizar, sino desarrollar nuevas metodologías de trabajo en relación con redes neuronales artificiales que se han enlazado naturalmente con otras técnicas de programación evolutiva, algoritmos genéticos, lógica difusa, etc.
Como parte de esta evolución se encuentra también el lenguaje de programación utilizado, para este caso Visual Basic, la decisión de utilizar este lenguaje se basó en las siguientes premisas:
Facilidad de uso
Alta curva de aprendizaje
Facilidad para implantar las técnicas seleccionadas Facilidad para lograr el ambiente gráfico requerido
11.2
OBJETIVOS
Integración del paquete neurored en una plataforma actual y extendida, amigable y con posibilidades de desarrollo.
Actualización de programas e implementación de algoritmos en neurored para que el paquete se use con fines didácticos en la ingeniería.
Instalación sencilla del paquete neurored con un uso eficiente de recursos. El paquete neurored se adapta a los recursos y capacidades de los sistemas computaciones personales actuales, con la ventaja del aprovechamiento de ellos para obtener una mejor resolución en el uso de tarjetas de video y mayor velocidad en los resultados obtenidos de neurored de cada aplicación.
Presentación profesional y confiable capaz de recuperarse de errores, flexible
a la variación de parámetros, para así, agilizar la investigación de las redes neuronales artificiales.
Construcción de redes neuronales de modo sencillo y generación de archivos que desplieguen la arquitectura de
la
red y los trenes de impulsos de neuronas o fibras, en un intervalo especificado11.3
REQUERIMIENTOS
Configuración mínima requerida
0 Procesador 486 en adelante
Windows 95
16 MBytes de RAM
Tarjeta de video compatible con Windows capaz de desplegar al menos 256
10 Mbytes libres en disco duro para la instalación
4 MBytes libres en disco duro para funcionamiento propio de WNeurored Se requiere una impresora compatible con Windows para el caso de que se deseen impresiones en papel.
El sistema realiza una gran cantidad de cálculos matemáticos, Io cual en una computadora con las características mencionadas, tendrá un tiempo de respuesta aceptable.
colores
CAPíTULO
111
WNeurored: Simulador y Analizador de Redes Neuronales Artificiales de Tipo Biológico
111.1
INSTALACIóN DEL PAQUETE
La instalación se realiza de forma muy sencilla gracias al programa de instalación y configuración, este es igual a todos los demás programas instaladores de
windows, así que en general no se tienen problemas. En el capitulo V se muestra paso a paso el proceso de instalación.
111.2
DESCRIPCION
DEL
PAQUETE
El paquete se compone en un principio de cuatro módulos:
FormaRed
NeuroRed
Puntos
Mosaicos
En conjunto es una herramienta que permite el análisis de la actividad sináptica de alguna red neuronal, con la elaboración gráfica de la RNA en FormaRed, la simulación de funcionamiento en NeuroRed y análisis con los módulo de Puntos y Mosaicos.
Mostramos a continuación un preambulo del proyecto completo.
h
WNeurored
Esta es la parte inicial del programa, sigue la estructura de la mayoría de los programas de Windows, para que la adaptación al paquete sea Io más rápido posible. De aquí podemos llamar a los demás módulos de Wneurored mediante la simple presión de los botones correspondientes con el apuntador en el menú principal. Gracias a esto podemos tener abiertas y en pantalla dos redes distintas, cada una en una ventana separada.
FormaRed
Este permite graficar las RNAs mediante las funciones integradas en su interface; cada RNA graficada construye un archivo con extensión .red para guardar la información de la red y un archivo con extesión .dat para uso exclusivo de NeuroRed, que puede ser modificado también por el editor integrado a Wneurored.
"I_.__"-____I_-__"-~ __- _I__
jg
Puntos
Despliega de manera gráfica la información del Neurored, en un intervalo de tiempo especificado.
r. R-
et __ 1 ' jLOlllOL ' k I o ( 1 i '
1
i
A" j*r
archivo .sal generado por
Mosaicos
Recorre el archivo .sal y muestra en la pantalla la actividad neuronal en cada milisegundo. Cada milisegundo desplegado significa una solución que quizás sea factible pero no óptima.
5-
1
Ií
!f
1AL*/
Mnr connguraclh j tenor ; ecslerlor
I
!rnDnrnlr Salir1
ii
NDO 3 ! "
En este orden se determina el proceso de elaboración y análisis de una red
111.3
ANALISIS
DEL MÉTODO
DE
PROGRAMACIóN
Como técnica de programación se utilizó la encapsulación de estructuras y funciones dentro de un Tipo de Dato Abstracto (TDA), lo que permite una mejor modularidad, y capacidad de desarrollo.
Para guardar la información de la red se utilizó la siguiente estructura:
Type GtRed
Identificador As String
Nombre As Integer
x0 As Long
YO As Long
X1 As Long
Y1 As Long
Intensidad As Double
End Type
Para hacer eficiente el uso de memoria se utilizó la idea de los "apuntadores", técnica computacional que permite el reservar y desechar porciones de memoria de acuerdo a los requerimientos del usuario. Como en Visual Basic no se permiten apuntadores, se utilizó una analogía que son los "arreglos dinámicos" y que quedan declarados a continuación:
Public MrP.ed (
Public GtAD ( )
Zublic S t C U ( )
Public GtCA ( )
?zDi iz G t N ( )
As GtRed As GtRed As GtRed As GtRed As GtRed
Y para complementar el TDA (Tipo de Dato Abstracto) se desarrollaron las siguientes funciones y procedimientos:
P!;bl-c 'unction rInicializaNodo ( 1 As GtEied
Z'ublic
31;s
Altaobjeto iByRef R e d 0 As GtRed, Id As String,Nombre As Integer, -
x As Long , Y As Long,
Optional XI AS Long, Optional YI AS Long,
Optional Intensidad As Double)
Public Sub Sajaobjeto (ByRef Red ( ) As GtRed, Posicion As Integer)
Public Function rConsultaObjeto !Red( As GtRed, -
Public Function sObtenIdentificacionObjeto(Nodo As GtRed) As String
Public Function iObtenNombreObjeto(Nodo As GtRed) As Integer
Public Function iGbtenIntensidadObjeto(N0do As GtRed) As Integer
Public Sub ModificaObjeto(ByRef R e d 0 As GtRed, iNumNodo As Integer, -
-
-
Posicion As Integer) As GtRed
Id As String,
Nombre As Integer, -
x As Long, Y As Long,
Optional XI AS Long, Optional YI AS Long, -
Cptianal Intensidad As Double!
Public: Function lRegresaXOCbjeto[Nodo As GtRed) As Long
? j ~ b l ; c 'uxstion lRegresaXlObjeto (Nodo As GtRed) AS Long
2cblie Function lRegresaYOObjeto!Nodo As GtRed) As Long
Pcblic ? a c t i o n 12.egresaYlCbjeto (Nodo As GtRed) As Long
Pubi;c F " ~ n c t l o n bTieneConexiones(Red() As GtRed, Nodo As GtRed)
h b l i c Function b3extroObjetoiNodo As GtF.ed, x As Single,
Public Function pObtenCentro (Red ( 1 As GtRed, sEsperado As String,
Public Function bValidaNombre (Red ( ) As GtRed,
Y As Single) As Boolean
x As Single, Y As Single) As POINTAPI
Nombre As Integer) As Boolean
-
-
-
111.4
ANALISIS
DEL CÓDIGO
111.4.1
FORMARED
Los siguientes extractos de código presentan de manera general el uso de estructuras dinámicas para hacer eficiente el uso de memoria. Las limitaciones del paquete no las impone el método de programación, sino los controles utilizados para desplegar la información en las funciones de impresión adaptadas al paquete, a pesar de esta limitante el número de neuronas y fibras que se pueden manejar satisface las necesidades del usuario.
2rivate S L b pic - XouseDown(1ndex As Integer, Button As Integer, Shift As
Integer, x As Single, Y As Single)
Din XlAux As POINTAPI
"irn X? As Long
3L i ;Y1 As Long ~
I f Button = 1 Then
I f XbNeuronas Then
'diSuj?rr.os una neurona en caso de no haber nada sobre la zona
'en que dibujaremos
I f Not bValidaConexiones (MrRedO I FIBRA, x, Y) L . d
Not bValidaConexiones (MrRed ( ) , NEURONA, x , Y)-Then
x1 = x
Y1 = Y
DibujaNeurona Me.pic(1) I Xl, Y1, 200, MiDesplszamiento
MbCambio = Trae
ReDim GvParametrcs(5)
GvParametros ( O ) = "frmFormaRed"
GvParametros ( 1) = "NombreNeurona"
GvParametros (2) = X1
GvParametros (3) = Y1
GvParametros (4) = 200
GvParametros (5) = O
Lcad frmPedir frmPedir.Show
Beep Else
zn3 ; f
_ . :.-seIf XbFibras
T h e n
c i ~ b u ; 3x0s )lna fibra
i _ T ' \ T - b'1alidaConexiones (MrRed ( ) , FIBRA, x, Y) And -
?:3t bValidaConexiones (MrRedO , NEURCNA, x, 'i! Then
,.1 = , x
y; = 7
DibujaFibra Me.pic ( I ! , XI, Y1
X X a m b i o = True
ReDim GvParametros(5)
ZvParametros ( O ) = "frmFormaRed"
GvParametros (1) = "NombreFibra"
GvParametros (2) = x - MiDesplazamiento
,GvParametros ( 3 ) = Y ' - MiDesplazamiento
GvParametros(4) = O 'X + MiOesplazamiento
GvParametrss(5) = O 'Y + MiDesplazamiento
Load frmPedir
fraPedir.Show Else
3eep 9nd If
'efectuamcs l a conexión de s a fibra hacia una neurona
' e n caso de que el primer objeto seleccionado no sea una fibra
'perrr.lre la conexicn; los n i s m ocurre cuando e1 segundo o b j e t o
' n o sea una necr3na
I f 5VaiIdaConexiones (NrEied ( ) , FIBRA, x, Y ) And MbPrimerClick
ElseIf XbFibraNegrona Then
no se
s z l e c c i Q c a d o
T !? e il
XbPrlnerClick = False
>l.lbCambm = True
:(VFiux = pCbtenCentro i".rrRed() , FIBRA, x, Y)
>Jr.I1X1 = XYAux.x
!,:.:1Y1 = XYAux .Y
ZlseIf bValidaConexiones (MrRedO , NEURONA, x, Y) And Not
?%L?::x~~C~:L:< Tken
:ibPrm.erClick = True
?.lbCanbio = True
X'iAux = pCbtenCentro (MrRed ( ) , NEYJRONA, x, Y )
I f ?doc bConexionRepetida iMrRed, Y . I : X l , M l Y l , XYAux. x, XYAux. Y )
DikujaConexion Ne.pic(l), MlX1, MiY1, XYAux.x, XYA1lx.Y
Reaim GvParametros ( 5 ,
SvParametros ( O ) = " f rmFormaRed"
GvParametros ( 1) = "Intensidad"
GvParametros (2) = 31x1
SvParametros (3) = MlYl
Gvparametros ( 4 ) = XYAux. x
GvParametros ( 5 ) = XYAux. Y
Load frmPedir
frrr.?edir. Show
Else Beep End If
Beep Zlse
End I f
'efectuamos la zcnexijn cie una neurona hacia m a neurona
'en caso de que el priaer objeto seleccionado zo sea ana
'pernite la ccnexión; l o s n i s m o ocurre cuando el segundo objeto
'no sea una neurona
If bValldaConexicnes(MrRed0, NEÜRONA, x, Y) And MbPrimerCllck
ElseIf MbNeuronaNeurQna Then
nexrona no s e
seleccionado
Then
NbPrLmerClick = False
MbCaniDic = True
XYAux = pObtenCentro (XrRedO , NEURONA, x , Y)
MlXl = XYAux.x
M l Y l = XYA0x.Y
ElseIf bValidaConexiones (MrRed ( 1 , NEURONA, x, Y) And Not
MbPrimerClick Then
MbPrimerClick = True
NbCambio = True
XYAux = FOStenCentro {MrRedi), NEURONA, x, Y)
I f Not bConexionRepetlda(MrRed, M1X1, M1Y1, XYAux.x, XYAux.Y)
Then
DibujaConexion Me.piciO), MlX1, M l Y l , XYAux.x, XYAux.Y
ReDim GvParametros(5)
GvParametros ( O ) = "frmFormaRed"
GvParametros (1 j = "Intensidad"
GvParametros (2) = MlXl
5-JParametros (3) = MlYl
GvParametros ( 4 ) = XYAux.x
GvParametros (5) = XYAux.Y
Load frrnPedir frmPedir.Show Else
Beep End If Else
Seep End If
3orrar x, Y ElseIf MbBaja Then
End If End If End Sub
Como un agregado a la idea original, se logró que la arquitectura neuronal construida y que se encuentra en memoria, sea impresa en su totalidad con el siguiente procedimiento.
Private Sub Imprimir() Dim iMouse As Integer Dim x As Integer, y As Integer
Dim iCopias As Integer Dim iorientacion As Integer Dim nombre As String
Const PIXEL = 3
On Error GoTo ErrorImprimir iblouse = Screen.MousePointer Screen.MousePointer = 1 1
cdb.CancelError = True
cdb.Flags = O
cdb.ShowPrinter Printer.Orientation = 2
Printer Font = ",.\rial" Printer.FontSize = 6
iCopias = cdb.Copies
iorientacion = Printer.0rientation
Printer.Scale (O, 0)-(pic( l).Width, pic( l).Height) If UBound(MrRed) = O Then Exit Sub
For j = 1 To ¡Copias
For i = UBound(MrRed) To O Step - 1
Select Case MrRed(i).Identificador Case NEURONA
nombre = Str(iObtenNombreObjeto(MrRed(i)))
k = O
x = IRegresaXOObjeto(MrRed(i))
y = IRegresaYOObjeto(MrRed(i)) Do
Printer.Circle (x, y), MiDesplazamiento - k
k = k + l
Loop While k <= MiDesplazamiento
Printer.CurrentX = x - htilhsplazamiento + 50 Printer.CurrentY = y - MiDesplazamiento + 80
Printer.Print nombre
nombre = Str(iObtenNombreObjeto(MrRed(i)))
Y = lRegresaXOObjeto(MrRed(i)) y = lRegresaYOObjeto(MrRed(i))
k = O
PSet (x, y) Do Case FIBRA
Printer.Line (x - k, y
-
k)-(x f k y - k) Printer.Line (x + k, y - k)-(x f k, y + k) Printer Line (x + k, y + k)-(x-
k, y +- k) Printer.Line (x - k, y + k)-(x-
k, y - k) k = k + lLoop While k <= MiDesplazamiento
Printer CurrentX = x - MiDesplazamiento + 50
Printer.CurrentY = y - MiDesplazamiento + 50
Printer.Print nombre
Printer.Line (lRegresaXOObjeto(MrRed(i)), IRegresaYOObjeto(MrRed(i)))- -
Printer.CurrentX = (lRegresaXOObjeto(MrRed(i)) + -
Case FIBNEU
(lRegresaXlObjeto(MrRed(i)), Regresay IObjeto(MrRed(i)))
lRegresaXlObjeto(MrRed(i))) -
Printer.CurrentY = (lRegresaYOObjeto(MrRed(i)) + -
IRegresaY 1 Objeto(MrRed(i))) -
/ 2 - MiDesplazamiento
Printer.Print Str(iObtenIntensidadObjeto(MrRed(i)))
Printer Line (IRegresaXOObjeto(MrRed(i)), lRegresaYOObjeto(MrRed(i)))- -
Printer.CurrentX = (lRegresaXOObjeto(MrRed(i)) + -
Case NEC'NEU
(lRegresaXlObjeto(MrRed(i)), lRegresaYlObjeto(MrRed(i)))
lRegresaXlObjeto(MrRed(i))) -
/ 2
-
MiDesplazamientolRegresaY lObjeto(MrRed(i))) -
/ 2
-
MiDesplazamientoPrinter.CurrentY = (lRegresaYOObjeto(MrRed(i)) + -
Printer.Print Str(iObtenIntensidadObjeto(MrRed(i))) End Select
Next i
Printer.EndDoc Next j
Screen.MousePointer = ¡Mouse Exit Sub
ErrorImprimir:
Screen.MousePointer = Mouse
Debug.Print Err.Number & " " & ErrDescription Exit Sub
End Sub
111.4.2
NEURORED
El simulador NEURORED es una versión simplificada del simulador SYSTEM!! de MacGregor. Además, es una adaptación para el sistema operativo DOS, y está por escrito en FORTRAN77. Fue desarrollado en la UNAM por el ingeniero Mauro Antonio Alcantara Galindo y el Doctor lsmael Espinosa Espinosa. Durante el desarrollo inicial de este programa las limitaciones estaban dadas no
sólo
por la computadora, sino también por el tipo de almacenamiento, y para hacerlo más grave, por los programas que hacían uso de él. Actualmente estas limitaciones no existen, es por eso que en estos momentos se puede utilizar Neurored en toda su potencia.El programa fue hecho pensando en DOS, pero actualmente, con las ventajas que se ofrece en
los
ambientes gráficos (Windows en particular) era necesario crear una interfaz gráfica para efectuar el llamado a Neurored, esta interfaz tiene la ventaja de ser más intuitiva y amigable para la ejecución de Neurored, así como desplegar todas los mensajes propios de Neurored.111.4.3
PUNTOS
En este módulo para desplegar los trenes de impulso de la RNA diseñada, se crea en el código una matriz dinámica para mostrar esta actividad sináptica como cuadros vacíos y cuadros rellenos que representan
O's
y 1's de la salidagenerada por Neurored. Esta información también puede ser dirigida a la impresora.
El siguiente extracto de código nos muestra la rutina utilizada para generar la matriz en memoria.
Private Sab SenerarPuntos ( )
'ver la opción de puntos en pantalla
9im iNumArch As Integer
3im sR.egistro As String
Cin sColumna As String
Dim iColumna As Integer
Dirn iColMax As Integer
3im iRenglon As Integer
Dim iRenMax As Integer
D i r n bPrimerRenglon As Boolean Cn Error GoTo Error Generar
' e l renglón del archivo corresponde a la columna de la matriz
'y de igual forma, la columna del.archivo corresponde al renglón de
'sn la matriz tomaremos (x, y) donde x-columna,y-renglón
'iRengion-Renglones del Archivo
'icolumna-Columnas del archivo Erase scuadrado
ReDim scuadrado ( O, O )
iColumna = O: iRenglon = 1
bPrinerRenglon = False
I f Not bPreguntaNorrbreArchivo(5) Then
Ezd If
pici?) .Cis
iXcx4rch = FreeFiln
'averiguamos cuantos milisegundos
Cpen MsNombreArchivo For Input As #iNumArch
Whlle N o t EOFiiNumArch)
la natriz
Exit Sub
Line Input #iNumArch, sRegistro
I f '/al(sCbtenCaracteres(sRegistro)) > iRenglon Then
izenglon = Val(sObtenCaracteres(sRegistro) )
End if
Wend
;?,?.rXax = iRenglon
:4L9englones = iRenMax
4Lcse f#iNulmArch
'gTJardamos la información en memoria
iX,mmArch = FreeFile
@en NsNombreArchivo For Input As #iNumArch
RnDim sCuadrado (iRenglon, iColumna)
iColumna = O
I f Not_ EOF (iNumArch) Then
n
'la primer línea ziempre trae un 1 al inicio LiRe Input #iNumArch, sRegistro
sRegistro = sObtenOls(sRegistro)
Do
iColumna = icolumna + 1
I f Not bPrimerRenglon Then
End If
ReDim Preserve sCuadradoiiRenglon, iColumna)
sCuadrado(iRenglon, iColumnai = sCbtenCaracteres(sRegistr9)
sRegistro = sCbtenOls(sRegistro)
Loop Nhile 'en(sRegistro) > 1
iCoiNax = FColamna
XiCalumnas = iC~:lMax
End :f
k S'ntii ZOF(iNum9rch)
Line Input #lNumArch, sxegistro
I f Val isObtenCaracteres (sRegistro) 1 < 2 Then DO
iCol1Jmna = 1Colu;rJla t 1
I f Not bPrimerRenglon Then
End I f
scuadrado (iRenglcn, i C o l m n a ) =
sfcegistro = sObtenOls(sRegistro)
If 1Columna > iColNax Then iColMax = iColumna
ReDlm Preserve sCuadrado(iRenglon, iColumna)
sObtenCaracteresisRegistro)
Loop While Len(sRegístro) > 1
bPrimerRenglon = True
sRegistro = sObten01s(sRegistro)
iRengion = iRenglon - 1
iColumna = O
Do Else
iCo1;mna = i C 3 1 m n a + 1
sCuadrado (iRenglon, iColunna) =
sRegistro = sGbtenOls(sRegistro)
sCbtenCaracteres(sReqistrc1
LOOP While Len(sRegistro) > 1
Znd if
Lozp
Clcse iiiNumArch
Exit Sub
XsgBox Err . N u d e r & I' 'I & Err.Description, vbOKOnly, "Error"
c x ~ t Sub
Errcr Generar: -
End Sub
111.4.4
MOSAICOS
Este módulo presenta el despliegue de impulsos neuronales de los archivos generados con extensión *.SAL para mostrarlas posteriormente en pantalla. Con MOSAICOS el investigador es apoyado en el análisis de las RNA's construyendo las gráficas de toda la actividad existente en forma de dos capas, en las cuales la primera corresponde a las neuronas y la segunda a las fibras seleccionadas. Una característica importante de este módulo es que maneja memoria dinámica para soportar cualquier diseño realizado en FORMARED.
Como en el caso de PUNTOS también se genera una matriz a partir del archivo
con
extensión *.SAL. Lo siguiente es a partir de esta matriz y con los datos del número de milisegundos a procesar y la información de bases y alturas para cada capa, se crea un arreglo dinámico que guarda toda la información de los mosaicos(en que lugar se van a dibujar y la actividad sináptica: O's y
1's
que se representan como cuadros vacíos y llenos respectivamente). Esta sección se apoya totalmente en el ambiente gráfico y también cuenta conla
opción de impresión.El siguiente extracto de código muestra la formación del arreglo
Public Sub CalculaDivisionesMosaicosO
'este procedimiento calcula los tamaños para hacer los dibujos Dim ITamañoX As Long
Dim ITamañoY As Long Dim iColumnas As Integer Dim iRenglones As Integer Dim iCuantosCuadros As Integer Dim iCuadroX As Integer Dim iCuadroY As Integer Dim ¡Cuadro As Integer Dim iVista As Integer Dim iIncremento As Integer Select Case GsPredefinido
iCuantosCuadros = 1
iColumnas = 1
iRenglones = 1
iCuantosCuadros = 2 iColumnas = 2
iRenglones = 1
iCuantosCuadros = 4
iColumnas = 2
iRenglones = 2
iCuantosCuadros = 6
¡Columnas = 3
¡Renglones = 2
iCuantosCuadros = 9
iColumnas = 3
iRenglones = 3 Case "div 1 'I
Case "div2"
Case "div4"
Case "div6"
Case "div9"
End Select
GiIieuronasPorVista = iCuantosCuadros * (GiBasePrimerCapa * GiAlturaPrimerCapa + -
'obtenemos cuanto mide el área de dibujo 'para dividirlos entre los cuadros
GiBaseSegundaCapa * GiAlturaSegundaCapa)
ITamañoX = LRegresaXlObjeto(GtAD( 1)) / iColumnas 1TamañoY = lRegresaY lObjeto(GtAD( 1)) / iRenglones
ReDim GtCV(0) iCuadro = O
ihcremento = 1 O0
For iCuadroY = I TO iRenglones
For iCuadroX = 1 To iColumnas
iCuadro = iCuadro + 1
Altaobjeto GtCU(), "CU", Cuadro, iIncremento + (ITamañoX
*
(iCuadroX - l)), -¡Incremento + (ITamañoY * (iCuadroY - l)), -
ITamañoX * (iCuadroX)
-
¡Incremento, ITamañoY * (iCuadroY) - ilncremento, Val(Str(iCuantosCuadros))Next iCuadroX Next iCuadroY
'obtenemos cuanto mide el área del cuadro 'para dibujar las neuronas
Dim iNeurona As Integer ReDim GtN(0)
iNeurona = O
ITamañoX = (lRegresaXlObjeto(GtCU(1))) \ (GiBasePrimerCapa + GiBaseSegundaCapa + 3 )
If GiAlturaPrimerCapa > GiAlturaSegundaCapa Then
Else
End If
ITamañoY = (Regresay IObjeto(GtCU( I))) \ (GiAlturaPrimerCapa + 2)
lTamaiioY = (1RegresaY lObjeto(GtCU( 1))) \ (GiAlturaSegundaCapa + 2 )
¡Incremento = 15
For ¡Vista = 1 To iObtenNombreObjeto(GtAD( 1))
For iCuadro = I To bBound(GtCU) 'primer capa
For iCuadroY = 1 To GiAlturaPrimerCapa For iCuadroX = 1 To GiBasePrimerCapa
¡Neurona = Neurona + 1
'If iCuadroX > 1 Then
' ihcremento = 40
'Else
' iIncremento = O
' End If
Altaobjeto GtN(), -
"CA", -
¡Cuadro, -
ilncremento + lRegresaXOObjeto(GtCU(iCuadro)) + (ITamañoX * (iCuadroX
-
1)) + iIncremento + lRegresaYOObjeto(GtCU(iCuadro)) + (ITamañoY*
(iCuadroY-
1)) +lTarnañoX
*
(iCuadroX + I )-
iIncremento + lRegresaXOObjeto(GtCU(iCuadro)), -1TamañoY * (iCuadroY + 1 )
-
¡Incremento + lRegresaYOObjeto(GtCU(iCuadro)) ITamañoX, -ITamañoY, -
Next iCuadroX Next iCuadroY 'segunda capa ¡Incremento = I 5
For iCuadroY = 1 To GiAlturaSegundaCapa
For iCuadroX = 1 To GiBaseSegundaCapa Neurona = iNeurona + 1
'If iCuadroX > 1 Then
' iIncremento = 40
'Else
' ilncremento = 100 'End I f
Altaobjeto &N(), -
"CA", -
¡Cuadro, -
¡Incremento + ((GBasePrimerCapa + 2) * ITamañoX) + -
lRegresaXOObjeto(GtCU(iCuadro)) + (ITamañoX * (iCuadroX
-
1)). -¡Incremento + IRegresaYOObjeto(GtCU(iCuadro)) + (ITamañoY * (iCuadroY
-
1)) + ((GiBasePrimerCapa + 2 ) * ITamañoX) + ITamañoX * (iCuadroX) + -lRegresaXOObjeto(GtCU(iCuadro)) - ¡Incremento, -
ITamañoY * (iCuadroY + 1) + lRegresaYOObjeto(GtCU(iCuadro)) - ¡Incremento ITamañoY, -
Next iCuadroX Next iCuadroY Next iCuadro Next ¡Vista End Sub
CAPITULO IV
MANUAL
DE
USUARIO
WNeurored
IV. 1
Instalación
de/ paquete WNeurored
Para familiarizarnos con el proceso de instalación a continuación se muestra el mismo paso a paso:
1. Ejecutar el programa de Instalación que se encuentra en el disco 1 (Diskl), buscamos el programa setup.exe y hacemos doble click sobre éI
To& las carpetas Contenido de
~~ . . .
+ '3 (C:) A
I
- .a (D:)I + L3 -mssetup.t
+ ,J accesorios
+ ;j adamemv3
+ 23 Documentos
+ neu
'3
Chat1
- 2 neurored 1 :' I
,l
docl i
1
1
I
.a
Disk3 -JI
I1 f j
;3 lmagenes
,d
Proyecto Originat -11
setup3 D i s k l
.a
Disk212 Disk4
3
Disk5!
+,
.c;1
pert+ Q Personal +
fa
ProyectosI
4t
.Recy.c!ed- - . . . . .~ ....-3
Nombre ~ A s y c F i l t . d l 1
j ~ _ ... " ... :
4 MSVBW50.dl-
3'
OleAut32.dl-3
OlePro32.dl- &Setup,a'
Setup.lst3
setup1 .ex-13
StSunst.ex-'3
StdOle2.tl-3VBSStKit.dI-
' 10 objeto(s) 1.38MB (Espacio libn en disco: 781MB)
~ . " . . . . . ". . . . .-
2. Aparecerá la pantalla de bienvenida a la instalación damos click en Ok
3. A continuación nos pedirá decidir en qué directorio deseamos instalar Wneurored, si no tenemos problema de espacio escogemos el default y al hacer click sobre el botón con la computadora emDezamos la instalacihn
4. Nos pregunta como deseamos encontrar la instalación en el menú de Inicio Podemos pedirle que la instale dentro del grupo indicado por default o
cambiarlo a algún otro
5. En este momento se empiezan a copiar los archivos necesarios para correr Wneurored
7.
." Por
-
últimonos
pedirá reiniciar el sistema. " ~ . ~ "" - .. .. " " ~ " " . . - -~ ." - . ._
-
"" . ."" "setrq , . . . 1 .. ..
." - " -
2
You must restart Wndows in order to complete setup
Do you want to restart Windows now? Windows andlor your application may not work properly until
Windows is restarted.
I v . 2
Uso del paquete
El paquete de Wneurored es muy fácil e intuitivo para usarse, gracias a su integración con la plataforma Windows, a continuación damos algunas referencias de su uso. Las imágenes faltantes las mostramos en el capitulo Ill cuando se indique.
IV. 2.1
WNeurored
(Ver la imagen inicial en el capitulo Ill).
El botón Formared lleva a la pantalla para crear, modificar, salvar e imprimir redes neuronales.
El boton Neurored ejecuta el programa de.redes neuronales de MacGregor
El
botón Editor nos lleva a una pantalla donde podemos ver los archivos con extensión *.SAL, *.DAT y *.RED, propios de este programa.El botón Puntos muestra una pantalla para observar trenes de impulsos asociados a una red que puede ser elegida.
El botón Mosaicos nos lleva a una pantalla para visualizar la actividad sináptica de neuronas y fibras que intervienen en una red.
1v.2.2
Formared
i;l tmagenes
:_)Proyecto OrlQmal
prueba2 red
i
I . ~~
i
I
Nombrar con un identificador a cada neurona Y fibra.
¡entes.
Poner la intensidad sináptica de cada conexión en el diagrama, la cual representa el peso de la conectividad.
I
!
gfRuored
.. ~. --
io! x1 ji
7 1I
I ~FormaRed
I
Editor j Puntos bJosatcos ! Salir1
5 . FormaRecl
-
- I_.__.
"" __I "-
- ! -A!
:
Nuevo
1
&brir-1
Salvar1
Neurona . j ,Guardar la red neuronal para poder generar
los
archivos *.RED necesarios para continuar el análisis de la misma.u
lrnagenesIj Proyecto Original prueba1 red 'Aprueba2.red 1
y *.DAT
I í
1i
i
".
1 '?-A---
IV. 2. 3
Neurored
- ~ " 2
I .
" L I
Nos permite ejecutar el algoritmo de McGregor sobre un archivo *.DAT indicado por la ruta dentro de Archivo Origen y ?btener como resultado un archivo con extensión *.SAL, el
cuál
queda guardadozn
la ruta indicada por Archivo Destino. .
!a--
Í ! i 1 I -.-
Nos permite abrir cualquiera de los archivos utilizados por
el
paquete ya sean estos de extensión *.RED, *.DAT, *.SAL.,%- . . . . . . a y
EonaRPd
j
Neurored1
EdltorI
i u n t mI
iosakos1
Saltr ji
- - -!
j c l ~ c de ~,*mx
~ __--
pusbal
i
. "
Una vez abiertos podemos modificarlos o imprimirlos manualmente.
...
IV. 2.5
Puntos
(Imagen inicial en el capítulo 111).
El botón de configuración
nos
permite seleccionar cuántos puertos (neuronas ofibras) serán las que sean despliegadas por pantalla.
-1 . " .. ". ... . . . ""...
a,
:nnln@Prl t&rlrf- :-it-r f rtls : yns#~eq ' Edil
"
. . . . . . " ~. ~ .
-
IC1 4El botón de Abrir
nos
permite abrir archivos para ser vistos en puntosabrir
f- Abrir como fÓ10 lectura
Con
los
botones de anterior y posterior podemos podemos navegar entre las pantallas de los trenes de impulsos.i 1
ebrir"Li;~nE?Ea?orl". ~ ~
1
_i
mpn?!Li"s!!i
1
,i
. . . j
...
iI
...
I
...
"..."...*...
...... ...
".-
... ...
... ...
...
..."
..."
......
...
? ,..."..."..."..."..."...".. .-. " ...
...
".-.
, f.....
...
..
. I . . . . " . ....
...
..
... .. .....
...
.
..."....
1 i ~l..."..."...
^..."...~,...~
. . .
.L4
. . .
...
"...
."..
...
...
... .. .. .. .."..
...
..
- . . I ...
..
...
..
.. ..
...
...-...-
".... 1 1...,.."."..".-...
.."."..I "......"...
I....."...
."...".
"..."...
...
L.."."......
..
...
".....
.".
"...".
..
...
.." '...
................I...
.....................t..".."...............................".L ....
l " 1...
.."...I"...
"...I......
..."... "..."."...".,....".
...
. *....."
...
...r..l.......
......".""."...~... ... ..."..."
."."..."~...."..."... "."..
.......
"..."...."..
~i
i 1
8
El botón imprimir permite dar una salida en la impresora de los trenes de impulsos mostrados en pantalla.
I ! r
. . -. . .
1 1
{ Configuraclon
i
1 !mpnmir 1...
...
I m p a d
PTqredaden I
...
2 "
..."...
"."...l... ...
...
.,... lwesuapedetwmadaiaca...".
"*.... ..
.....
...
...
E
.
...
...,
T p o HP ORda Pro 11 5X i
...
"."
...
..".-...
..._...
".-...
"..."
..."."."
C o m e d ,- l n p n m en u1 gdno 1
i
lrnpHnr ~ . . . .""C . . . " . . .
Lib- @TI:
.
...
.I
. . .
... ~. ~- ~. . .
I
.= 1. 1 ~ " - Jj-JJJJ !
."..
...
..
...,.*".. ..".."
.I !
...
..
...
..
..
...
.. ..
...;
...
....
..".^..."
* I I
' LC& Nlbnaadegpc.%
m
j. . .
1
1 I ...1..."."."..."... " h W . 3 1 C m e b t I j
...
I
r"
...
...
....
. S k w n
. . I
...
"I... 1....
..I ....I "...
..l.1 .... "I... 1 ...*I/
-
;.
... "
l___li_
IV.2.6
Mosaicos
(Imagen Inicial en el capitulo Ill).
El botón Abrir permite seleccionar un archivo existente de extensión *.SAL
i
.
El botón configuración nos muestra una pantalla donde podemos elegir una configuración de 1, 2, 4, 6 y 9 vistas para mostrarlas en pantalla.
Los botones anterior y posterior permiten navegar entre las diferentes vistas.
El botón imprimir permite dar una salida en la impresora de los mosaicos mostrados en pantalla.
IV.2.7
EJEMPLOS
IV.2.7.1
Red de Hamm
La construcción
m
-de
la
red es fácil, intuitiva y rápidaProporcionarle el archivo a Neurored es muy sencillo
I
!
. . ~ . . ~
Archivos con exteniánDAT Archivos con extensibn SAL
, .
rHarnrn.sal
optim.sal
I
osc"a.sa'l
~ .~ . . ." ... ~ ... "" " ___ "_ ... . ... ... ... ...-
Comandos para Neutored
[Opcionales):
f
. - . . . . " . . . . ...Observar los puntos se hace fácilmente
€3-
I i .. -.
.
...
2 ...
...
'..'..'...'...,
F...
.-.
"......
l... " *f... "...
L..."...*.."
...
..
...
..
...
...l...
........." "."...".f. "."...C..."...
I."..."...
41......".." ... " ... "..."."...*.".f,.."..."..."."...f..."...~..."
...
"...".f...^"."..."......
...
...
"..",....A...* ...
.
...
...~l."*..l......
.. ."."... .. ...
...
.....
... ~. . . I . . . "
...
I.....
" .....
... .. ... .. ... .. .....
...
...
"... ..
.... ,. . .
p ...
-
...
.. ..
...
I ..... ..
..
...
-
..
... ..-
... I ...- ...
I ... "...
..
-
....l b
I t
. . .
....l.l.f
...
. . I . . . I......
..".L...*".......".....
I . . . " .....
* I . . ....
. . . " . . . * . . I , . , . . . . 11......
..I
...
"...".-.I... ... ^."..."...f..."..."."...
.."."..."...".l..*"....
...,...
I...
_...l. .."...-...I."..."...
J!? I.- ..."...
.. ."
...-....
_."-...
. .". . ...."."......~.""...~."."...
"...
-1'
1..."... "
...
.."..."."..I "... ..
..."... f .".". I...
"..." ."."..."..".
".._"
-...
lV.2.7.2
Oscilador
Archivos con e x t e n t i DA1 Archivas con extensión S A L
Puntos
3 m
, ! I
pr..+.~ -:<o""~zEJ. L_.-~ l --.!.-mym j salir ~
. . . . . .
' ...
. . .
...
Fl . . .
. . . . . . . . . . . .
... ...
". " ..
lV.2.7.3
Optimización
Neurored
!" ... "" . - - . . .
Archivos c m e x t e n s i DAT
Hamm dai
jOscla.dat
Archivos con extensión SAL
Hamm sal
Oscila.sal
Puntos
a m
! I . .
r- . I /
I
!
l
. . . * I
. . . \
4
%
p a ,
I
BB
*:
. I
. /
. . . .
!
EDITOR
RED
GALLAGERN,0,1,435,600,200,0 N,0,2,1230,585,200,0 N,0,3,1950,600,200,0 N,0,4,2640,585,200,0 N,0,5,3300,585,200,0 N,0,6,3900,555,200,0N,0,7,4470,540,200,0 N,0,8,5250,540,200,0 N,0,9,6075,525,200,0N,0,10,6615,510,200,0 N,O, 11,7320,480,200,O N,0,12,7935,450,200,0 N,0,13,8595,435,200,0 N,0,14,9360,525.200,0
N,0,15,10080,465,200,0 N,0,16,1470,2610,200,0 N,0,17,8895,2475,200,0 N,0,18,3780,3555,200,0 N,0,19,6180,3480,200,O N,0,20,1545,4470,200,0 N,0,21,8055,3380,200,0 N,0,30,5085,5175,200,0
F,0,31,450,6315,0,0 F,0,32,9720,6345,0,0 NN,1,-2,1470,2610,6075,525 NN,1,-2,1470,2610,6615,510 NN.1,- 2,1470,2610,7320,480 NN,1,-2,1470,2610,7935,450 NN,1,-2,1470,2610,8595,435 NN,1,-2,1470,2610,9360,525 NN,1,-2,1470,2610,10080,465 N N , 1,-2,3780,3555,435,600 NN,1,-2,3780,3555,1230,585 NN,l,-
2,3780,3555,1950,600 NN,l,-2,3780,3555,2640,585 NN,I,-2,3780,3555,3300,585 NN,l,-2,3780,3555,3900,555 NN,1,-2,3780,3555,4470,540 NN,1,-2,5085,5175,5250,540 NN,1,-2,6180,3480,6075,525 N N , l , -
2,6180,3480,6615,510 NN,1,-2,6180,3480,7320,480 NN,1,-2,6180,3480,7935,450 NN,1,-2,6180,3480,8595,435 NN,1,-2,6180,3480,9360,52~ VN,1,-2,6180,3480,10080,465 NN,l,-2,8895,2475,435,600 NN,l,-
2,8895,2475,1230,585 NN,1,-2,8895,2475,1950,600 NN,1,-2,8895,2475,2640,585 NN,1,-2,8895,2475,3300,585 NN,1,-2,8895,2475,3900,555 NN,1,-2,8895,2475,4470,540 NN,1,-2,1545,4470,1470,2610 N N , 1,-
2,1545,4470,3780,3555 NN,1,-2,1545,4470,5085,5175 NN,1,-2,8055,4380,8895,2475 NN,l,- 2,8055,4380,6180,3480 NN,1,-2,8055,4380,5085,5175 NN,1,-2,1545,4470,8055,4380 NN,l,- 2,3780,3555,6180,3480NN,1,-2,5085,5175,3780,3555 NN,1,-2,x)85,5175,6180,348ONN,1,- 2,5085,5175,1470,2610 ~,1,-2,5085,5175,8895,2475 NN,1,-2,1470,2610,8895,2475 NN,l,-
2,3780,3555,1470,2610 NN,1,-2,6180,3480,8895,2475 FN,1,-1,4~0,6315,1470,2610 FN,1,-1,450,6315,1545,4470
1,9720,6345,6180,3480
FN,I,-1,450,6315,3780,3555 FN,1,-1,9720,6345,8895,2475 FN,1,-1,9720,6345,8055,4380 F N , 1 , -
Rtert
EDITOR
RED “ E T
~~~ ~
N,11011,1,1215,1095,200,0 N,11011,2,3945,1020,200,0 N,I 101 1,3,1245,3900,200,0 N,11011,4,4110,3840,200,0
NN,-1,-2,1215,1095,3945,1020 NN,-1,-2,3945,1020,1215,1095 NN,-1,-2,1215,1095,1245,3900 N N , - I , -
2,1245,3900,1215,1095 NN,-1,-2,3945,1020,4110,3840 NN.-1,-2,4110,3840,3945,1020 NW,-l,-
2,4110,3840,1245,3900 NN,-1,-2,1245.3900,4110.3840NN,1,-2,1215,1095,1215,1095 N N , I , -
2,3945,l020,3945,1020 NN, 1,-2,4110.3840,4110,3840 NN,1,-2,1245,3900,1245,3900 N N , - 1 , -
2,1245,3900,3945,1020 NN,-1,-2,3945,1020,1245,3900 NN,-1,-2,1215,1095,4110,3840NN,-1,- 2,4110,3840,1215,1095
IV.2.7.6 RED MAXNET CON FIBRAS
Esta red tiene cuatro fibras que activan a las cuatro neuronas y la intensidad de la conexión es de 1.
De esta manera por cada milisegundo de actividad , puede pasar que a)Todas las neuronas se inhiben y ninguna tiene actividad o
b) Todas las neuronas tienen actividad
.
MOSAICOS MAXNET
A
B
I I ! I t I
Ill
-- I I 1 ICAPITULO V
Conclusiones
Es importante saber que el simulador Wneurored, ademas de ofrecer importantes datos y gráficas sobre el comportamiento de las RNA’s para los estudiantes de Ciencias BAsicas e Ingenierías , es un programa hecho de forma modular en
Visual Basic, en donde cada procedimiento esta documentado y disefiado para cualquier modificación, actualización o extensidn en el código que sirva para enriquecer a WNeurored.
Este proyecto se realizó ,tal como mencionamos anteriormente, en Visual Basic. Tenemos varias razones por las cuales decidimos trabajar con este lenguaje. Una de ellas es el usuario de WNeurored , nuestro objetivo es que se familiarice con el paquete
lo
mAs pronto posible, y para esto se crearon interfaces conocidas, es decir, cuadros de dihlogo para imprimir, guardar y abrir, menús, botones,activacidn del mouse y otras propiedades útiles que ofrece el lenguaje. Y pensando en el programador y en los futuros programadores, es m4s sencillo el diseno y programación de grdficos , tablas o esquemas. Ademds, se adapta a los
recursos y capacidad de la mayoria de las computadoras personales.
Agradecemos la colaboración y el apoyo de nuestro asesor Joel Jiménez Cruz,
que nos proporcionó material adecuado y completo, sugerencias y diseños , al igual que áreas de trabajo y software para desarrollar el proyecto Wneurored.
Asesor de Proyecto Terminal
‘
d
BIBLIOGRAFIA
Tesis “Redes Neuronales Artificiales: Simulador
Neurored” Dr. lsmael Espinosa Espinosa.
“Inteligencia Artificial y Minirobots”, Cap.
I-IV.
“Learn to Program with Visual Basic 6”
IJohn Smiley
“Microsoft Visual Basic 5.0. Edicibn de Aprendizaje”,
McGraw Hill
“Aspectos bfrsicos de
Inteligencia’Artificial”,
J. Mira, A.
E.
Delgado, J. G. Boticario
y F. J. Diez
“Redes neuronales. Algoritmos, aplicaciones y tecnicas
de programación”. James A. Freeman y David M.
Skapura. Ed. Addison-Wesley/Diaz de Santos.
“Theory of the Propagation Neural Network”, Hetch-
Wielsen, R. 1989. Proc. Int. Joint Conf.
http://gozer.sunyit.edu/people/johng/GECCO99/gecco99
APENDICE A
SIMULADOR NEURONAL DE MACGREGOR
NEURORED
El simulador NEURORED es una versión simplificada del simulador SYSTEM!! De MacGregor. Además, es una adaptación para computadora personal compatible
con IBM, y esta por escrito en FORTRAN77.
NEURORED es un programa que simula el funcionamiento de un número
arbitrario de neuronas activadas por un número arbitrario de fibras o axones de entrada. Las neuronas pueden interconectarse de cualquier manera elegida por el usuario.
Las neuronas esthn conectadas entre sí por axones con terminales sinápticas que pueden ser excitatorias o inhibitorias. Una vez que los axones o fibras han activado a un grupo de neuronas, éste a su vez excita o inhibe a otra u otras neuronas con las cuales está conectada.
El programa NEURORED es general, es decir que, con sólo cambiar los parámetros y los datos, puede simularse cualquier red neuronal. Sin embargo, el programa presenta un problema de introducción de datos. Para redes neuronales muy pequefias es factible proporcionar los datos al momento de correr el programa y conforme éste los va necesitando; pero para redes más grandes, la cantidad de datos es enorme, por lo que es más conveniente proporcionarlos por medio de un archivo de datos redirigido, que se puede construir con el programa interactivo FORMARED.
NEURORED tiene dos subrutinas principales: una que esta encargada de hacer
llegar el mensaje de activación de las fibras a las neuronas y, la otra, de actualizar las variables de estado de cada neurona en cada instante de integración. También cuenta con una tercera subrutina que sirve para generar números aleatorios.
DIAGRAMA GENERAL
Como se observa en el diagrama, el archivo generado por FORMARED
(archivo.dat), es reconocido por NEURORED, con el cual al realizar la simulación genera otro archivo (archivo.sal), con los resultados de la actividad de la Red
Neuronal.
*Actuallzacldn de Variables de Estado *Respuesta
Archivos con extenoi6n .dat que allmentan al simulador
de McGregor
4
arch
Ivos.sal
Archivos con extsnrl6n .tal
que alimentan a lor m6dulos de anbliois como Puntos
OBJETIVO
Simular la actividad neuronal, representada por la Red y parámetros biol6gicos y generar los archivos que representan dicha actividad (archivo.sal).
METODO DE SIMULAC16N
El programa resuelve ecuaciones diferenciales discretizadas a partir de las
funciones de entrada que dependen del potencial de la membrana y así obtiene el estado y las funciones de salida. Las ecuaciones utilizadas son versiones similares a las de Hodkin-Huxley, aunque mas sencillas por estar linealizadas. En el libro de MacGregor se pueden ver los detalles acerca de esto, ya que no era parte de esta tesis el entrar al análisis numérico correspondiente, sino utilizar el paquete ya programado y generarle programas auxiliares.
LIMITACIONES DE NEURORED
NEURORED está limitado por la memoria de la computadora y el tipo de almacenamiento (disco flexible o disco duro). En disco flexible puede trabajarse hasta con 100 neuronas. Con disco duro pueden utilizarse 200 ó 300 neuronas, pero la simulacidn es muy lenta y los archivos de datos son muy largos. Así que, para resultados satisfactorios, es preferible trabajar con un número pequeiio de neuronas (alrededor de 60). Para las finalidades de este proyecto éste no es un factor de limitaci6n, pues precisamente ese es, aproximadamente, el número de neuronas que pueden registrarse simultáneamente con la tecnología actual
empleada en la neurofisiología.
FUNCIONAMIENTO DE NEURORED
Los pasos fundamentales para utilizar NEURORED son:
>
Disefiar la red neuronal deseada, es decir, topología y parámetros i Dibujar la red neuronal en la pantalla utilizando la variedad deopciones y ayudas que ofrece FORMARED y al finalizar se podrá
generar automAticamente el archivo de datos de entrada al simulador NEURORED.
>
Correr NEUROREDCon esto se iniciará la simulación de la red, generando un archivo con extensidn *.sal semejante al que se muestra a continuación:
El siguiente archivo muestra la Salida de la Red Neuronal, es decir, una serie de