• No se han encontrado resultados

WNEURORED: SIMULADOR Y ANALIZADOR DE REDES NEURONALES ARTIFICIALES

N/A
N/A
Protected

Academic year: 2018

Share "WNEURORED: SIMULADOR Y ANALIZADOR DE REDES NEURONALES ARTIFICIALES"

Copied!
60
0
0

Texto completo

(1)

WNEURORED: SIMULADOR

Y ANALIZADOR

DE REDES

NEURONALES ARTIFICIALES

(2)

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ÉTODO

DE PROGRAMACIóN

111.4

ANALISIS

DEL CóDIGO 111.4.1 FORMARED

111.4.2 NEURURED 111.4.3 PUNTOS 111.4.4 MOSAICOS CAPITULO IV

FAANUAL DE USUARIO DE W NEURORED

;v.

1 NSTALACI

6~

DEL

(3)

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

(4)

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

lo

que, primeramente estudiamos

c6mo 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 en

los

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élulas

(5)

nerviosas

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.

(6)

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 I

I

pesos

(7)

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

(8)

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 especificado

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

(9)

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.

(10)

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.

(11)

"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

(12)

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

1

AL*/

Mnr connguraclh j tenor ; ecslerlor

I

!rnDnrnlr Salir

1

i

i

NDO 3 ! "

En este orden se determina el proceso de elaboración y análisis de una red

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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 + l

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

(18)

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

-

MiDesplazamiento

lRegresaY lObjeto(MrRed(i))) -

/ 2

-

MiDesplazamiento

Printer.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 salida

(19)

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

(20)

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

(21)

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

la

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

(22)

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

(23)

"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

(24)

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

Chat

1

- 2 neurored 1 :

' I

,l

doc

l i

1

1

I

.a

Disk3 -J

I

I1 f j

;3 lmagenes

,d

Proyecto Originat -

11

setup

3 D i s k l

.a

Disk2

12 Disk4

3

Disk5

!

+,

.c;1

pert

+ Q Personal +

fa

Proyectos

I

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

3

setup1 .ex-

13

StSunst.ex-

'3

StdOle2.tl-

3VBSStKit.dI-

' 10 objeto(s) 1.38MB (Espacio libn en disco: 781MB)

~ . " . . . . . ". . . . .-

(25)

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

(26)

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

(27)

5. En este momento se empiezan a copiar los archivos necesarios para correr Wneurored

(28)

7.

." Por

-

último

nos

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.

(29)

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

(30)

I . ~~

i

I

Nombrar con un identificador a cada neurona Y fibra.

¡entes.

(31)

Poner la intensidad sináptica de cada conexión en el diagrama, la cual representa el peso de la conectividad.

I

!

gfRuored

.. ~. -

-

io! x1 j

i

7 1

I

I ~

FormaRed

I

Editor j Puntos bJosatcos ! Salir

1

5 . FormaRecl

-

- I_.__.

"" __I "-

- ! -A!

:

Nuevo

1

&brir-

1

Salvar

1

Neurona . j ,

Guardar la red neuronal para poder generar

los

archivos *.RED necesarios para continuar el análisis de la misma.

u

lrnagenes

Ij Proyecto Original prueba1 red 'Aprueba2.red 1

y *.DAT

(32)

I í

1

i

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 guardado

zn

la ruta indicada por Archivo Destino

. .

!a--

Í ! i 1 I -.-

(33)

Nos permite abrir cualquiera de los archivos utilizados por

el

paquete ya sean estos de extensión *.RED, *.DAT, *.SAL.,

%- . . . . . . a y

EonaRPd

j

Neurored

1

Edltor

I

i u n t m

I

iosakos

1

Saltr j

i

- - -

!

j c l ~ c de ~,*mx

~ __--

pusbal

i

. "

Una vez abiertos podemos modificarlos o imprimirlos manualmente.

...

(34)

IV. 2.5

Puntos

(Imagen inicial en el capítulo 111).

El botón de configuración

nos

permite seleccionar cuántos puertos (neuronas o

fibras) serán las que sean despliegadas por pantalla.

-1 . " .. ". ... . . . ""...

a,

:nnln@Prl t&rlrf- :-it-r f rtls : yns#~eq ' Edil

"

. . . . . . " ~. ~ .

-

IC1 4

(35)

El botón de Abrir

nos

permite abrir archivos para ser vistos en puntos

abrir

f- Abrir como fÓ10 lectura

(36)

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

...

i

I

...

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_

(37)

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.

(38)

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.

(39)

IV.2.7

EJEMPLOS

IV.2.7.1

Red de Hamm

La construcción

m

-de

la

red es fácil, intuitiva y rápida

Proporcionarle el archivo a Neurored es muy sencillo

(40)

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

...

4

1......".." ... " ... "..."."...*.".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

...

"..." ."."..."..".

".._"

-...

(41)

lV.2.7.2

Oscilador

Archivos con e x t e n t i DA1 Archivas con extensión S A L

(42)

Puntos

3 m

, ! I

pr..+.~ -:<o""~zEJ. L_.-~ l --.!.-mym j salir ~

. . . . . .

' ...

. . .

...

Fl . . .

. . . . . . . . . . . .

... ...

". " ..

lV.2.7.3

Optimización

(43)

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

. /

. . . .

!

(44)
(45)
(46)
(47)

EDITOR

RED

GALLAGER

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

(48)
(49)

Rtert

(50)

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

(51)

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

.

(52)

MOSAICOS MAXNET

A

B

I I ! I t I

(53)
(54)

Ill

-- I I 1 I

(55)
(56)

CAPITULO 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

(57)

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”

I

John 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

(58)

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

(59)

*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 de

opciones y ayudas que ofrece FORMARED y al finalizar se podrá

(60)

generar automAticamente el archivo de datos de entrada al simulador NEURORED.

>

Correr NEURORED

Con 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

1’s

y O’s, que son resultado de la actividad en paralelo. El primer número es el tiempo, los 3 siguientes son las neuronas 1, 2 y 3, y el cuarto número es la fibra.

Referencias

Documento similar

El presente trabajo se encuentra dividido en 5 capítulos; el primero titulado Problemática Ambiental Asociada a los Contaminantes Conservativos aborda los

En este trabajo se emplea una de las técnicas no determinista de la inteligencia artificial, las redes neuronales artificiales, para definir el comportamiento de

Son adaptables debido a l a capacidad de autoajuste de los elementos procesales (neuronas) que componen el sistema.. dinámicos, pues son capaces de estar constantemente

Análisis histórico-lógico: Para conocer, con mayor profundidad, los antecedentes y las tendencias actuales referidas a las funciones de transferencia de modelos de

Como hipótesis general de esta investigación es que la implementación del sistema experto mejoró en el proceso de evaluación del personal que brinda servicios de delivery;

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

En este trabajo se propone un m´etodo para reconocer rostros de bajo costo computacional y robusto a cambios de iluminaci´on, postura y expresi´on facial. El m´etodo propuesto se