Está en la página 1de 87

UNIVERSIDAD DEL QUINDIO

Facultad de Ingenierías

Programa de Ingeniería Electrónica

“H ERRAMIENTA PARA REDES NEURONALES EN


TIEMPO REAL”

T ESIS PROFESIONAL PRESENTADA POR

J HON J AMES Q UINTERO O SORIO

COMO REQUISITO PARCIAL

PARA OBTENER EL TÍTULO DE I NGENÍERO

EN E LECTRÓNICA

Avenida Bolívar Calle 12 Norte, Armenia. Junio de 2004


II
UNIVERSIDAD DEL QUINDIO

Facultad de Ingenierías

Programa de Ingeniería Electrónica

“H ERRAMIENTA PARA REDES NEURONALES EN


TIEMPO REAL”

T ESIS PROFESIONAL PRESENTADA POR

J HON J AMES Q UINTERO O SORIO

COMO REQUISITO PARCIAL

PARA OBTENER EL TÍTULO DE I NGENÍERO

EN E LECTRÓNICA

R AMIRO A RANGO

D IRECTOR

F RANCISCO I BARGUEN

A SESOR

Avenida Bolívar Calle 12 Norte, Armenia. Junio de 2004


II
Índice general

1. Redes Neuronales Artificiales 3

1.1. Nociones Generales . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2. Redes Neuronales Biológicas . . . . . . . . . . . . . . . . . . . 4

1.2.1. El Potencial de Acción . . . . . . . . . . . . . . . . . . . 4

1.2.2. Propagación del Potencial de Acción . . . . . . . . . . . 5

1.3. Redes Neuronales Artificiales (RNA’s) . . . . . . . . . . . . . . 7

1.3.1. Clasificación de las RNA’s . . . . . . . . . . . . . . . . . 10

1.3.2. Entrenamiento de las RNA’s . . . . . . . . . . . . . . . 13

2. Antecedentes 15

2.1. Notación gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.2. El objeto network . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2.1. Propiedades básicas . . . . . . . . . . . . . . . . . . . . 20

2.2.2. Las líneas de retardo . . . . . . . . . . . . . . . . . . . . 22

2.3. Funciones útiles . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.4. Un ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

III
IV ÍNDICE GENERAL

3. La librería 29

3.1. Lineamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.1.1. Estructuras basadas en arreglos . . . . . . . . . . . . . . 31

3.1.2. Estructuras basadas en listas enlazadas . . . . . . . . . 32

3.2. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3. Estructura de directorios . . . . . . . . . . . . . . . . . . . . . . 35

3.4. Trabajando con la librería . . . . . . . . . . . . . . . . . . . . . 36

3.4.1. Archivos de texto plano . . . . . . . . . . . . . . . . . . 36

3.4.2. Creando redes con matlab . . . . . . . . . . . . . . . . . 38

3.5. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.5.1. Red creada manualmente . . . . . . . . . . . . . . . . . 40

3.5.2. Red de archivo . . . . . . . . . . . . . . . . . . . . . . . 43

3.6. Capacidades y limitaciones . . . . . . . . . . . . . . . . . . . . 47

A. Enlaces de interes 49
Índice de figuras

1.1. Modelo simplificado de una neurona [San01] . . . . . . . . . . 4

1.2. Potencial de acción para un estímulo ligero. . . . . . . . . . . . 5

1.3. Potencial de acción para un estímulo grande. . . . . . . . . . . 6

1.4. Membrana del axón. . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5. Estructura de un PE. . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6. Red organizada por capas. . . . . . . . . . . . . . . . . . . . . . 11

1.7. Red recurrente. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.8. Red recurrente a la misma capa (autorrecurrente). . . . . . . . 12

1.9. Red recurrente a una capa anterior. . . . . . . . . . . . . . . . . 12

2.1. Neurona típica [Bea02]. . . . . . . . . . . . . . . . . . . . . . . 16

2.2. Notación abreviada para una neurona en Matlab. . . . . . . . 17

2.3. Una capa de neuronas. . . . . . . . . . . . . . . . . . . . . . . . 17

2.4. Notación abreviada para una capa de neuronas. . . . . . . . . 18

2.5. Una red multicapa en notación abreviada. . . . . . . . . . . . . 19

2.6. Una red de base radial en Matlab. . . . . . . . . . . . . . . . . . 19

V
VI ÍNDICE DE FIGURAS

2.7. Una línea de retardo. . . . . . . . . . . . . . . . . . . . . . . . . 23

2.8. Red de elman. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.9. Un ejemplo de red neuranal personalizada. . . . . . . . . . . . 25

3.1. Dos arreglos en memoria. . . . . . . . . . . . . . . . . . . . . . 32

3.2. Estructura de la librería. . . . . . . . . . . . . . . . . . . . . . . 34

3.3. Tratamiento de entradas mediante de matrices de conexión. . 34

3.4. Forma de trabajar con la jannl . . . . . . . . . . . . . . . . . . . 37

3.5. Ejemplo de red de elman. . . . . . . . . . . . . . . . . . . . . . 44

3.6. Salida de una red de elman en lenguaje C. . . . . . . . . . . . . 46

3.7. Red de elman en C++. . . . . . . . . . . . . . . . . . . . . . . . 46


Introducción

P
OR QUÉ redes neuronales y por qué en tiempo real?
Las redes neuronales son herramientas útiles en problemas en los
cuales los métodos analíticos son de difícil aplicación, siendo tam-
bién interesantes para experimentar con las posibilidades que ofrecen los
métodos numéricos. Si además, para una cierta aplicación se tiene la necesi-
dad de que responda en un íntervalo de tiempo específico, ante eventos
externos, se habla de tiempo real, característica ésta bastante necesaria en sis-
temas de control y comunicaciones. La combinación de estos dos elementos
da como resultado redes neuronales para sistemas en tiempo real, las cuales
pueden ser implementadas haciendo uso de hardware específico para redes
neuronales, o bien, utilizando hardware de propósito general junto con un
software optimizado que cumpla con los requerimientos temporales.

En este trabajo se hace uso de la segunda opción, es decir, se utiliza hard-


ware de propósito general (PC’s, DSP’s) para la implementación de redes
neuronales. La principal motivación por la cual se hizo esta elección es que,
además de ser de fácil acceso para la mayoría de las personas interesadas,
la enorme flexibilidad que brinda la implementación por software de las
redes neuronales hace que esta opción sea bastante atrayente para fines de
experimentación. Para hacer la elección del modo de implementación de las
redes neuronales, se debe tener en cuenta que existe un compromiso entre
flexibilidad y velocidad, la ganancia en flexibilidad en los sistemas basados
en software como el que aquí se presenta se hace a costa de una pérdida
en velocidad, paralelismo y robustez que son características básicas de las
redes neuronales ideales, entendiéndose como ideal una red donde cada
elemento de procesamiento está implementado de manera completamente

1
2

independiente de los demás.

En el primer capítulo se hace una breve descripción de los elementos


básicos que tienen que ver con las redes neuronales artificiales dando así
un punto de partida para establecer las pautas a seguir al momento de es-
cribir un simulador de las mismas, en el segundo se introduce la notacion
usada por Matlab° c para representar las redes neuronales que se pueden
trabajar con él y se describen los objetos y las funciones más usadas en este
entorno, en el capítulo número tres se describe la librería que se escribió
para trabajar con redes neuronales, describiendo la forma de usarla, como
está relacionada con Matlab° c y algunos ejemplos.
Capítulo 1

Redes Neuronales Artificiales

1.1. Nociones Generales

Las redes
neuronales son

L
AS redes neuronales artificiales son construcciones, de hardware y/o procesadores no
software, que toman información en la entrada y la transforman en lineales de datos.
una de salida aplicando generalmente una operación no lineal. Su
base conceptual es la organización de las neuronas biológicas que compo-
nen el cerebro, pues en él se transporta la información mucho más lenta-
mente que en los circuitos electrónicos que componen las computadoras
actuales, y aun así puede realizar de manera muy eficiente operaciones
tan complejas como son el reconocimiento de imágenes, reconocimiento de
hablantes, reconstrucción de información a partir de datos difusos y cálculo
aproximado, entre otras. Una explicación parcial de tan extraordinario com-
portamiento, se atribuye al hecho de que las tareas no están centralizadas
en un único elemento si no que por el contrario estan distribuidos en un
grupo de ellos; a su vez, estos elementos cuentan con una gran cantidad
de conexiones y trabajan de manera concurrente, dando como resultado un
procesador altamente eficiente y robusto. La figura 1.1 muestra un modelo
simplificado del elemento de procesamiento fundamental que compone nuestro
cerebro, donde la comunicación entre todas las neuronas es de tipo electro-
químico y tiene como base el fenómeno del potencial de acción. La creación
de máquinas inteligentes que tengan por lo menos alguna de estas carac-
terísticas, es el objetivo de múltiples invesigaciones en el entorno científico

3
4 1.2. Redes Neuronales Biológicas

y tecnológico. De hecho, muchas de las máquinas que vemos diariamente


a nuestro alrededor son inteligentes en cierto sentido, como por ejemplo
los frenos antibloqueo y el control de temperatura de una habitación, pero
existe un gran interés en crear máquinas que sean inteligentes en un senti-
do más amplio, que puedan aprender de ejemplos, máquinas a las que no se
les tenga que ordenar lo que deben hacer, sino que se les enseñe. Las redes
neuronales artificiales son una de las formas más usadas para acercarnos a
este logro, pues permiten la creación de sistemas donde la información de
entrada es de difícil tratamiento por métodos algorítmicos tradicionales. Al-
gunas de las aplicaciones más interesantes realizadas con redes neuronales
artificiales son la pronunciación de texto escrito, la comprensión de carac-
teres manuscritos y la identificación de sistemas dinámicos.

Figura 1.1: Modelo simplificado de una neurona [San01]

1.2. Redes Neuronales Biológicas

1.2.1. El Potencial de Acción

Todas las células tienen en su membrana una diferencia de potencial en-


tre la pared interior y exterior, pero algunas, entre las que se encuentran las
células nerviosas y musculares, tienen una membrana con la propiedad de
ser excitable. Cuando la membrana de una célula de este tipo es estimula-
da mediante una descarga eléctrica o por medios mecánicos o químicos y
1. Redes Neuronales Artificiales 5

el estímulo tiene una intensidad menor que un cierto valor, el potencial de


la membrana se modifica proporcionalmente al estímulo y luego vuelve a
su estado inicial. La figura 1.2 representa el comportamiento del potencial
de la membrana para una célula nerviosa sometida a un estímulo pequeño,
tomando como referencia el potencial del medio extracelular.

Potencial de
la membrana (mV)

−40

−80
2 Tiempo(mS)

Figura 1.2: Potencial de acción para un estímulo ligero.

El potencial de
acción es una señal
Ahora bien, si el estímulo es lo suficientemente grande como para con- bioeléctrica con una
seguir despolarizar la membrana hasta un cierto valor umbral Em de poten- amplitud y una
cial, se desencadena una especie de disparo y el potencial de polarización frecuencia
crece hasta valores incluso positivos y después de aproximadamente un determinada.
milisegundo decrece, como se muestra en la figura 1.3.

1.2.2. Propagación del Potencial de Acción

Las membranas biológicas están compuestas por una doble capa de lípi-
dos y proteínas que forman canales de iones, éstos últimos tienen sensores
que brindan información del medio externo. Las diferencias de potencial
eléctrico entre el interior y exterior de las membranas celulares se debe a
diferencias de concentración de los iones de sodio (N a+ ) y potasio (K + ) y
otros iones en menor grado, diferencias generadas por el movimiento de
estos iones, obedeciendo a las fuerzas de difusión y a las fuerzas eléctricas.
6 1.2. Redes Neuronales Biológicas

Potencial de
la membrana(mV)

0
Em

−80
2 Tiempo(mS)

Figura 1.3: Potencial de acción para un estímulo grande.

En reposo, el potencial entre los dos lados de la membrana es negativo con


respecto al exterior. Cuando se genera un estímulo como se había dicho, se
desata un potencial de acción que despolariza una zona de la membrana por
unos dos milisegundos. Este potencial es generado por el aumento de per-
meabilidad de la membrana a los iones de sodio, y un poco después ocurre
un aumento de la permeabilidad a los iones de potasio que se encarga de
repolarizar la membrana. Este potencial continua viajando por el axón sin
atenuarse pues cuando en una zona ocurre una despolarización en una zona
un poco más adelante en la membrana se genera un aumento de la perme-
abilidad a los iones de sodio y potasio, lo que da lugar una despolarización
en esta nueva zona y así sucesivamente. En este procedimiento la velocidad
de propagación del potencial es más bien baja, lo que constituriá un prob-
lema para los vertebrados de gran tamaño, la solución está en los nervios
mielínicos, donde los axones están cubiertos por unas células llamadas de
Schwann, que se enrollan para formar una capa aislante alrededor de la
membrana, como se muestra en la figura 1.4.

Debido a que sólo existen cargas que mover en los nodos de Renvier,
el potencial de acción se mueve más rápido que si la membrana estuviera
desnuda.
1. Redes Neuronales Artificiales 7

Nodo de Renvier

              



 

 

 

 



               
 

Axon
              

Celulas de Shwann

Figura 1.4: Membrana del axón.

1.3. Redes Neuronales Artificiales (RNA’s)

Las redes
neuronales aquí
Son organizaciones de elementos de procesamiento generalmente sencil- tratadas no
los y ampliamente interconectados, donde a cada elemento de procesamien- pretenden emular
to (PE) se le suele dar el nombre de neurona o nodo, que es estimulado por el funcionamiento
n señales de entrada, x1 ...xn que pueden ser organizadas en un vector así: del cerebro.
x = [x1 , ..., xn ]t ∈ Rn
y que generan un escalar de salida y ∈ R. Es de notar que los modelos
neuronales usados aquí para construir las RNA’s no pretenden emular el
comportamiento exacto de las neuronas reales ni del cerebro, si no servir
como sistemas procesadores de señales inspirados en ellas.

La figura 1.5 muestra la composición general de una neurona artificial o


elemento de procesamiento, en particular el j-ésimo PE, donde la cantidad
N etj es resultado de una operación entre los datos de entrada al PE y los
pesos asociados a ellos. Una de las expresiones más usadas para calcular
N etj es:

X
N etj = wji xi (1.1)
i
sin embargo, en algunos casos la definición de N etj puede diferir de la dada
por la ecuación 1.1, y podría ser:
Q
N etj = wji xi , la productoria de las entradas moduladas.
8 1.3. Redes Neuronales Artificiales (RNA’s)

Figura 1.5: Estructura de un PE.

N etj = M ax(wji xi ), sólo se toma en cuenta el valor de la entrada mo-


dulada más fuerte.

La función de activación Fj determina el nuevo estado de la neurona


aj (n), tomando en cuenta la entrada total N etj y el aj (n − 1) que es el es-
tado anterior, pero en muchos modelos (y en todos los usados aquí) dicha
función es igual a la identidad y no toma en cuenta el estado anterior de la
neurona. Esto es:

aj (n) = Fj (aj (n), N etj ) = N etj (n) (1.2)

Una red neuronal es un conjunto de PE’s altamente interconectados, donde


el vector de estados de la red es el conjunto de los estados de todas las neu-
ronas que la componen:

a(n) = [a1 (n), a2 (n), ..., aN (n)]t (1.3)


y el vector de salida es:

y(n) = [y1 (n), y2 (n), ..., yM (n)]t (1.4)


donde cada yj (n) se obtiene de aplicar una función fj de salida al estado
aj , que normalmente es de tipo sigmoidal y suele ser la misma para todos
los elementos de una capa. Los tipos de funciones de salida más usados se
muestran a continuación :
1. Redes Neuronales Artificiales 9

hardlim Función limitador fuerte, se basa en el hecho de ver a la neu-


rona como un elemento todo o nada. De esta forma cuando la entrada
total supera cierto valor umbral, la salida es uno, en caso contrario su
salida es cero; utilizada para que la neurona clasifique su entrada en
dos categorías.
y

½
1

1 si x ≥ 0
y= (1.5)
0 si x < 0 x

hardlims Limitador fuerte simétrico, similar a la función anterior, pero


la salida está entre menos uno y uno.
y

½ 1

1 si x ≥ 0 x

y= (1.6) −1

−1 si x < 0

purelin La salida es igual al valor de entrada.


y

y=x (1.7) x

logsig Función de salida sigmoidal, toma valores de entrada en el ran-


go de menos infinito a infinito y su salida está entre cero y uno. Es una
función diferenciable, lo que es útil en algoritmos de entrenamiento
basados en derivadas.
y

1
1

y= (1.8)
1 + ex x
10 1.3. Redes Neuronales Artificiales (RNA’s)

tansig Función tangente sigmoidal hiperbólica, también derivable, pero


con los límites de salida entre menos uno y uno.
y

x
ex − e−x
y= (1.9)
ex + e−x
−1

radbas Función de transferencia usada en las redes de base radial.


y

2
0
−2 0 2 x
y = e−x (1.10)

Resumiendo, se tiene que:

X
yj (n) = fj (N etj (n)) = fj ( wji xi ) (1.11)
i

Una de las cosas que debe tenerse en cuenta, es que las funciones de
activación normalmente no están centradas en el origen, existiendo un des-
plazamiento denominado umbral o tendencia. Este valor se puede modelar
como si en el PE existiera una entrada adicional con un valor constante de
1, que es modulada por el peso wj0 el cual puede ser tratado como un peso
igual a los otros del PE.

1.3.1. Clasificación de las RNA’s

Existen distintos tipos de redes neuronales los cuales se diferencian por


la forma en que los PE están organizados, por las formas en las que se entre-
nan, por la manera en la que asocia la información de entrada y de salida y
por la forma en la que dicha información es representada. Entre las formas
más comunes de organización de las RNA’s están las redes organizadas por
capas, tal y como se muestra en la figura 1.6 donde una capa es una colec-
ción de neuronas. Existen, como se señala en la figura 1.6, tres diferentes
tipos de capas, una capa de entrada, que es la que toma el estímulo prove-
niente del exterior, una o varias capas ocultas y una capa de salida que co-
munica el resultado al exterior. Además, todas las salidas de los PE’s están
1. Redes Neuronales Artificiales 11

as

s
Entrad

Salida
Capa
de
Capa
Salida
de Capa
Entrada Oculta

Figura 1.6: Red organizada por capas.

conectadas con los PE’s de la capa siguiente, es decir, existe interconexión


total. También, el flujo de información es de la capa de entrada hacia la capa
de salida, lo que se conoce como red feedforward. Sin embargo también ex-
isten redes con conexiones de realimentación, como se muestra en la figura
1.7 donde pueden observarse conexiones de una neurona consigo misma,
as

s
Salida
Entrad

Figura 1.7: Red recurrente.

con una de la misma capa o con una neurona anterior de la red, entendién-
dose como anterior, una neurona más cercana a la entrada en el camino del
flujo de la información. En la figura 1.8 se muestra una realimentación de
todas las neuronas de una capa con ellas mismas, lo que se denomina red
con conexiones autorrecurrente y en la figura 1.9 conexiones recurrentes a
capas anteriores; este tipo de redes son llamadas redes recurrentes y son
12 1.3. Redes Neuronales Artificiales (RNA’s)

s a

s
Salida
Entrad

Capa
de
Salida
Capa
de
Entrada Capa
Oculta

Figura 1.8: Red recurrente a la misma capa (autorrecurrente).


as

s
Entrad

Salida

Capa
de
Salida
Capa
de
Entrada Capa
Oculta

Figura 1.9: Red recurrente a una capa anterior.


1. Redes Neuronales Artificiales 13

especialmente útiles en el tratamiento de sistemas dinámicos no lineales.

En resumen, las redes neuronales más usadas actualmente se pueden


clasificar, según [Mar95], así:

Topología: feedforward, feedback, conexiones laterales y conexiones re-


currentes.

Mecanismos de apredizaje:

• Supervisado: Requiere de un agente externo.


• No supervisado.
• on-line: No se diferencia del estado de operación y de entrenamien-
to
• off-line.

Tipo de asociación entre la información de entrada y de salida: het-


eroasociativas o autoasociativas.

Representación de la infomación: binarias o continuas.

1.3.2. Entrenamiento de las RNA’s

La parte más compleja del trabajo con redes neuronales es el entrenamien-


to. De acuerdo a lo presentado anteriormente, puede verse que las salidas
de una red neuronal están en función de los datos de entrada y de unos
ciertos parámetros θ. Es decir:

y(n) = G(x(n), θ) = G(x(n), W ) (1.12)


donde los parámetros θ son los pesos que conectan las distintas neuronas
de la red, siendo generalmente G una función no lineal y por lo tanto, no
es trivial hallar a partir de ella unos pesos que relacionen unas entradas
con unas salidas deseadas. Además hay que tener en cuenta que en una red
pueden existir cientos de conexiones entre neuronas y considerando la ex-
istencia de lazos de realimentación, el número de pesos de la red aumenta
significativamente, lo que conlleva a la realización de una gran cantidad de
cálculos, especialmente en la etapa de entrenamiento.
Con el fin de ajustar los pesos de las redes neuronales se han desarrollado
14 1.3. Redes Neuronales Artificiales (RNA’s)

diferentes algoritmos y el más conocido es el backpropagation siendo un


algoritmo clásico para entrenar redes neuronales que se explica detallada-
mente en [Ska93]. Aunque este algoritmo es ampliamente utilizado, no es
el único que puede usarse; paquetes como Matlab°, c tienen implementados
algunos otros algoritmos, entre los cuales están quasi-Newton, gradiente
conjugado y Levenberg-Marquard. Es útil hacer énfasis en que el problema
de calcular los pesos de una red neuronal puede ser visto como un proble-
ma de optimización, y la forma en la que los pesos son actualizados durante
el proceso de entrenamiento de la red dependerá entonces de la función ob-
jetivo, de la función de transferencia de las neuronas y del algoritmo de
minimización usado.
Capítulo 2

Antecedentes

E
N el mercado existen varios paquetes de software que permiten la
simulación de redes neuronales artificiales, uno de los más usados
en el entorno académico es el SNNS, el cual viene incluido en algu-
nas distribuciones de GNU/Linux. Otra opción bastante utilizada es el Neu-
ral Network Toolbox de Matlab°, c que soporta una gran variedad de redes,
además de poder exportar la red para trabajar en Simulink°. c En este tra-
bajo se utilizó el toolbox para crear y entrenar las redes que posteriormente
pueden ser usadas en un programa independiente desarrollado en lenguaje
C mediante el uso de unos TAD’s que la librería proporciona.

En este capítulo se describen algunas de las características del Neural Net-


work Toolbox, mostrando la notación gráfica que se utiliza y posteriormente
las principales propiedades de las redes neuronales creadas con él.

2.1. Notación gráfica

Debido a que la librería desarollada, es un puente entre Matlab y lengua-


je C, fueron tomadas algunas ideas de Matlab en la forma de representar
las redes neuronales; como se había comentado, las redes aquí tratadas es-
tán completamente interconectadas y son redes organizadas por capas. Es-
to hace posible crear un tipo de notación gráfica abreviada, que es la que
usa el Neural Network Toolbox, en la cúal no se muestran explicitamente las
neuronas sino más bien capas de las mismas como elementos constitutivos

15
16 2.1. Notación gráfica

primarios, a continuación se realiza un breve recorrido por la formulación


de la notación del toolbox Para mayor información sobre la notación usada
en Matlab ver [Bea02].

Figura 2.1: Neurona típica [Bea02].

La forma típica que aparece en la mayoría de los textos de una neurona


es mostrada en la figura 2.1, en donde cada pi es un elemento del vector
de entrada a la neurona y w1i es el peso asociado a dicho elemento; b es el
llamado bias o desplazamiento, que en el caso de esta neurona puede ser visto
como un peso más, debido a que la operación que hay en en el recuadro
es una sumatoria. No es este el caso de una red de base radial, como se verá
más adelante. La notación abreviada para la neurona de la figura 2.1 se pre-
senta en la figura 2.2. Siguiendo con la notación usada, puede verse que
sólo aparece una función, pues no se hace diferencia entre la función de ac-
tivación y la de salida, por ello es posible llamarla función de transferencia
de la neurona, f en la figura. La notación abreviada para la misma aparece
en la figura 2.2.

Para el caso de una capa de neuronas, la notación habitual puede verse


en la figura 2.3, puede observarse que debido a la la conexión total de las
señales de entrada con las neuronas el número de pesos de cada neurona
es igual, por la tanto es posible agrupar dichos pesos de todas esa neuronas
en una matriz como se muestra en la figura 2.4, aunque es de notar que si
una entrada no esta conectada con una determinada neurona la notación
matricial aun es posible con la salvedad que el peso correspondiente de
dicha conexión es igual a cero, además en la mayoria de los casos la función
2. Antecedentes 17

Figura 2.2: Notación abreviada para una neurona en Matlab.

Figura 2.3: Una capa de neuronas.


18 2.1. Notación gráfica

de transferencia es igual para todas las neuronas de una capa peden unirse
en una única funcón vectorial.

Figura 2.4: Notación abreviada para una capa de neuronas.

En Matlab, se se hace amplio uso de la representación de las capas de


neuronas como matrices. Los pesos de una neurona se pueden ver como un
vector fila y los pesos de toda una capa se pueden ver entonces como una
matriz, donde cada fila corresponde a los pesos de una sola neurona, así:

 
w11 w12 ... w1R
 w21 w22 ... w2R 
 
W= .. .. .. .. 
 . . . . 
wS1 wS2 ... wSR
donde S es el número de neuronas de una capa y R el número de entradas
(escalares) a la misma.

En la documentación de Matlab se extiende la notación para hacer la dis-


tinción entre matrices de pesos de las conexiones de entrada y las de las
conexiones entre capas, así también como para indicar la fuente y el destino
de dicha conexión, usando superíndices. Por ejemplo, IW1;2 es la matriz de
pesos de la segunda entrada de una red, que está conectada a la primera
capa y LW2;1 es la matriz que conecta la salida de la primera capa a una
2. Antecedentes 19

entrada de la segunda. Un ejemplo del uso de esta notación puede verse en


la figura 2.5.

Figura 2.5: Una red multicapa en notación abreviada.

Figura 2.6: Una red de base radial en Matlab.

Ahora bien, las redes de base radial poseen básicamente los mismos ele-
mentos que poseen las redes hasta antes vistas, pero difieren en la forma en
20 2.2. El objeto network

la que se relacionan. La figura 2.6, muestra un ejemplo; en la capa de base


radial, la salida de la operación entre los pesos IW y los datos de entrada P,
es la distancia euclidiana entre estos dos, Esta operación es llamada en Mat-
lab net.inputWeights{i,j}.weightFcn si es una matriz de entrada
y net.layersWeights{i,j}.weightFcn si es una matriz de conexión
entre capas . Este resultado es operado a su vez con el vector b, haciendo un
producto componente a componente. Esta última operación se denomina
en Matlab (para la capa i) net.layers{i}.netInputFcn, y los valores i
y j son los que indican el destino y la fuente respectivamente.

2.2. El objeto network

En matlab las redes neuronales son objetos tipo network, los cuales se
declaran de la siguiente manera:

mi_red=network

Con el anterior comando se obtiene una red que está lista para que sus
propiedades sean ajustadas a gusto del programador para generar una red
personalizada modificando para ello algunas de las propiedades que se ci-
tan a continuación:

El objeto network
contiene las
características que
definen las redes 2.2.1. Propiedades básicas
neuronales en
Matlab.
numInputs. El número de entradas vectoriales de la red.

numLayers. La cantidad de capas de la red.

biasConnect. Es un vector columna, con tantas filas cómo capas tenga


la red. Contiene valores booleanos (uno o cero) indicando que capas
tienen bias.

inputConnect. Es una matriz de L ∗ I 1 booleana, que indica entre que


1
L, número de capas. I, número de entradas
2. Antecedentes 21

entradas y que capas existe una conexión, es decir a que capas esta
conectada una entrada en particular.

layerConnect. Es idéntica a la matriz anterior pero ésta define las conex-


iones entre las capas, por ello es de L ∗ L.

outputConnect. Vector fila booleano de tamaño 1∗L, que indica cuales


de las capas arrojan su salida al exterior de red.

targetConnect. Igual al ítem anterior, pero indica las salidas de que


capas seran tenidas en cuenta al momento de calcular la función de
desempeño de la red, la cual es generalmente una función que mide
de alguna manera el error que comete la red. Éstas salidas son com-
paradas con unos valores de salidas deseadas para producir un valor
(error) que es minimizado por el entrenamiento.

trainFcn. Esta es la función de entrenamiento que se utilizará cuando


se llame a la función train.

perfomFcn. Aquí se indica la función de desempeño con la que se


calculará el error de en el momento del entrenamiento de la red, la
que por ejemplo en el backpropagation es el error cuadrático medio.

initFcn. La forma en que se inicializaran los pesos de la red al llamar


la función init.

Subobjetos. Son objetos dentro del objeto network que determinan las
características de las entradas, las capas, etcétera.

• inputs. Aquí se definen las características de las entradas de la


red, como por ejemplo, el tamaño de la entrada input{i}.size,
que es el número de elementos que posee la entrada i. input{i}.range,
valor usado por algunas funciones de inicialización con el fin de
hallar los valores iniciales de los pesos.
• layers. Define las propiedades de cada capa de la red, como son:
◦ La función de inicialización initFcn.
◦ La función de entrada layers{i}.netInputFcn, que es la
que se usa para calcular el valor que será pasado a la función
de transferencia de la capa.
◦ El número de neuronas en la capa layers{i}.size.
22 2.2. El objeto network

◦ La función de transferencia de las neuronas de la capa


layers{i}.transferFcn, que puede ser cualquiera de las
vistas en el primer capítulo.
• biases. Define las características de los vectores de bias.
• inputWeigths y layerWeigths. En éste subobjeto se definen las
propiedades de las matrices de pesos, como la función de ini-
cilización, se indica si una determinada matriz debe o no partici-
par en en el proceso de entrenamiento (learn), se indica también
la función de pesos y si la conexión tiene retardos, entre otras
cosas.
• trainParam. Los campos de este objeto dependen de la función
de entrenamiento usada, en él se definen los parámetros de en-
trenamiento de la red, generalmente el número de epocas, el val-
or de error máximo permitido y el valor mínimo del gradiente al
que se puede llegar.

Muchas propiedades quedan fuera de esta breve descripción, más ade-


lante se muestra un pequeño ejemplo con el uso de algunas de las propiedades
y funciones aquí descritas, que aclaran las mismas.

2.2.2. Las líneas de retardo

Son construcciones que le dan memoria a las redes. Toman como entra-
da un vector en un tiempo n y dan como salida un grupo de vectores que
son valores anteriores del mismo (aunque puede incluir el valor actual), la
figura 2.7 muestra un ejemplo de una línea de retardo.

Las líneas de retardo (TDL’s) pueden ir en medio de conexiones de entra-


da a una capa, de conexiones entre capas y de conexiones de realimentación
como en el caso de la red de elman, la cual se muestra en la figura 2.8.

En los objetos network, las TDL’s se definen mediante las propiedadades


net.inputWeights{i,j}.delays para el caso de las entradas y
para las conexiones entre capas, por net.layerWeigths{i,j}.delays,
estas dos propiedades son vectores fila con valores enteros mayores o iguales
a cero y en orden ascendente, indicando los retardos que existirán. Por ejem-
plo, sea una conexión que envía un vector de dos elementos a una capa
y el valor de la propiedad que define los retardos tiene el siguiente valor
2. Antecedentes 23

p(n) p(n)

D p(n−1)

D p(n−2)

D p(n−2)

D p(n−k)

Figura 2.7: Una línea de retardo.

Figura 2.8: Red de elman.


24 2.3. Funciones útiles

[0 1 2 3], con ello se indica que la entrada a esa capa tendrá realmente
cuatro vectores concatenados en uno, por esta razón, la matriz de pesos de
esa conexión XW2 tendrá el número de columnas determinado por la mul-
tiplicación entre el número de elementos del vector de entrada y la longitud
de la propiedad que defiene los retardos; en este caso el número de colum-
nas será ocho y tendrá tantas filas cómo número de neuronas tenga la capa.

2.3. Funciones útiles

El toolbox también cuenta con muchas funciones que permiten la creación,


entrenamiento y simulación de redes neuronales, algunas de las más usadas
son:

newlin. Permite la creación de una red, con una sola neurona y fun-
ción de transferencia lineal, generalmente usada para filtros.

newff. Función para la creación de redes tipo feedforward.

newrbe y newrb. Funciones para crear redes de base radial.

newel. Permite crear una red de elman, ver figura 2.8.

train. Función usada para entrenar redes neuronales.

sim. Función para simular redes.

2.4. Un ejemplo

Todas esas propiedades del objeto network, no tienen que alterarse para
contruir una red, en el siguiente ejemplo se muestra como crear una red
personalizada, la que corresponde a la figura 2.9 en la cual cada capa es una
estructura como la en la figura 2.4 y cada D es una línea de retardos. En los
comentarios que aparecen en el código se explica lo que se hace con cada
comando.

2
X puede ser I o L
2. Antecedentes 25

6 o
(k

6f of
(3

Mnbje)e
o 6 off _f
(o ceseo cesek cese3 ceseq

Figura 2.9: Un ejemplo de red neuranal personalizada.

%red2.m
%Ejemplo de red con varias realimentaciones

clc;

net=network; % Se crea un objeto tipo red


net.numinputs=1; % Una sola entrada vectorial
net.numlayers=4; % Cuatro capas

% De las cuatro capas solo la primera


% esta conectada al vector de entrada

net.inputconnect=[1; 0; 0; 0];

% Se indica que la salida de la capa cuatro


% se conecta a la entrada de la primera capa.
% Que la salida de la primera capa se conecta
% a la segunda.
% La salida de la tercera también a la segunda.
% La salida de la segunda a la tercera.
% La salida de la tercera a la cuarta.

net.layerconnect=[ 0 0 0 1;...
1 0 1 0;...
0 1 0 0;...
0 0 1 0];
26 2.4. Un ejemplo

% La salida total de la red es la de la cuarta


% capa.
net.outputconnect=[0 0 0 1];

% Salida que se tendra en cuenta


% en el entrenamiento de la red, de las cuatro sólo la última.

net.targetconnect=[0 0 0 1];

% Se define que capas tienen bias


% (se ponen las tres a uno para que funcione bien gensim
% (matlab 5.2))

net.biasconnect=[1;1;1;1];

% Configuración de la primera capa

% El número de neuronas en la capa uno.


net.layers{1}.size=100;

%La función de transferencia en la capa uno.


net.layers{1}.transferFcn=’logsig’;

% Segunda capa
net.layers{2}.size=50;
net.layers{2}.transferFcn=’logsig’;

% Tercera capa
net.layers{3}.size=10;
net.layers{3}.transferFcn=’logsig’;

% Cuarta capa
net.layers{4}.size=1;

% La función de inicialización de pesos de entrada.


net.inputweights{1,1}.initFcn=’rands’

% Los retardos de la conexión de la entrada


2. Antecedentes 27

% Significa que la entrda estará compuesta por la


% entrada actual y las entradas cinco tiempos
% de muestreo hacia atras (claro!)
net.inputweights{1,1}.delays=[0 1 2 3 4 5];

% La función de inicialización de los pesos que conectan la


% salida de la capa cuatro con la entrada de la primera.

net.layerweights{1,4}.initFcn=’rands’;

% Los retardos de la conexión entre la capa cuatro y la uno.


net.layerweights{1,4}.delays=[1 2 3 4 5 6];

% Igual pero con las otras capas


net.layerweights{2,1}.initFcn=’rands’;
net.layerweights{2,1}.delays=0;
net.layerweights{2,3}.initFcn=’rands’;
net.layerweights{2,3}.delays=[1 2 3 4 5 6];
net.layerweights{3,2}.initFcn=’rands’;
net.layerweights{3,2}.delays=0;
net.layerweights{4,3}.initFcn=’rands’;
net.layerweights{4,3}.delays=0;

net.initfcn=’initlay’;%inicializacion por capas

% La función que se debe minimizar


% durante el proceso de entrenamiento.
net.performfcn=’mse’; %error cuadratico medio

% La función de entrenamiento de la red


%Levenberg-Marquardt backpropagation
net.trainfcn=’trainlm’;

% Después de haber definido las características


% de la red puede usarse.

net=init(net); %inicializar los pesos de la red


28 2.4. Un ejemplo

% Función provista por la librería desarrollada


% que permite generar un archivo de texto
% plano con la información de los
% pesos, conexiones y lineas de retardo de la red,
% para ser usada en una
% aplicación en lenguaje C.
wred(’red2.wgh’,net); %generar archivo de texto con la red

% Función también de la librería que genera código en C.


% Nota:
% Si la red es demasiado grande consumirá gran
%parte de la zona de memoria donde
% se almacene el código.

net2c(’red2’,net); %generar codigo en C

% Se generan los bloques simulink


gensim(net);

% Simulacion de la red

% Vector de entradas
p=1:10

% Como la red es una red dinámica es necesario convertir


% el vector a su equivalente secuencial.
pseq=con2seq(p)

% Se simula la red (en este ejemplo no se entrena la red)


% obteniendo un vector de salida
salseq=sim(net,pseq);

% Se convierte el vector de una cell array (ver manual de Matlab)


% a un vector concurrente.
s=seq2con(salseq);

s{1}
Capítulo 3

La librería

L
A experimentación con redes neuronales artificiales es de amplio in-
terés para el entorno académico. Sin embargo, escribir un simulador
desde cero es bastante tedioso, más aun si se desea que soporte va-
rios tipos de redes, pues requiere una buena cantidad código, incluso para
los ejemplos más simples que aparecen en los textos. Una opción más via-
ble para experimentar, es usar paquetes de software con capacidad para
simulación de redes neuronales. Considerando que estos paquetes no per-
miten usar dichas redes en sistemas independientes de la herramienta y en
caso de permitirlo, no son herramientas libres, la librería que se presenta
en este capítulo es precisamente un puente entre uno de los sistemas de
software más utilizado en el entorno académico como es Matlab° c y un
lenguaje de nivel medio como es el lenguaje C, el cual es en la actualidad
ampliamente utilizado en sistemas de tiempo real. El término tiempo real
está muy relacionado con la concurrencia que proporciona un determinado
lenguaje y la forman en la que aprovechan los recursos del sistema atraves
del api del sistema operativo; lenguajes de este tipo son por ejemplo Ada,
Modula, Occam e incluso, un lenguaje de tan alto nivel como Java soporta
concurrecia aunque es mucho más lento que loa anteriores. Sin embargo,
aunque el lenguaje C no fue diseñado originalmente para ello, existen op-
timizadores de código que generan programas casi tan eficientes como los
escritos en lenguaje ensamblador, así como librerías que permiten la pro-
gramación y comunicación relativamente fácil entre procesos concurrentes.
Estas cualidades hacen del lenguaje C una opción bastante atrayente para
la escritura de aplicaciones que tenga características de tiempo real. A pe-
sar de que ningún lenguaje es más rápido que el lenguaje ensamblador, hay

29
30 3.1. Lineamientos

que tener en cuenta que el ensamblador no es portable y en caso de tener un


programa extenso, mantener su eficiencia temporal es casi imposible. Es de-
cir, una función escrita en ensamblador puede ser mucho más eficiente que
en otro lenguaje, pero un programa que conste de dos mil líneas de ensam-
blador, no necesariamente es más rápido que el mismo programa escrito en
otro lenguaje. Esta fue una de las razones por las cuales se eligió lenguaje C,
además de que la mayoria de módulos o sistemas embebidos, cuentan con
compiladores optimizados para lenguaje C. De allí que escribir una librería
basada en ANSI-C permita que los desarrollos sean fácilmente portados a
otros sistemas.

En este capítulo se hará una descripción de la librería desarrollada, em-


pezando por los lineamientos que se siguieron a la hora de escribir el código
y luego, mostrando la estructura general de la misma y la manera en la que
se trabaja con ella.

3.1. Lineamientos

A la hora de planear la forma en que se representarían las redes neu-


ronales en la librería a la cual se llamó jannl, se tomaron ciertas decisiones,
que sin duda influirían al momento de escribir el código. Las más impor-
tantes fueron:

Velocidad de propagación: Se necesitaba que las estructuras para rep-


resentar tanto los valores de entrada como los pesos fueran rápida-
mente recorridas, debido a la velocidad requerida, es decir que en los
procesos de propación de la señal no se tubiese que entrar en grandes
estructuras de desición que consumieran mucho tiempo, que en lo
posible fueran operaciones de multiplicación acumulación .

Flexibilidad: Se hacia necesario que con la librería se pudieran imple-


mentar algunos de los tipos de redes neuronales más usados como
son Adaline, Perceptron, Elman y Base radial, sin incurrir en muchos
cambios en la estructura de la red para uno u otro caso. Por ello se
requeriá un modelo lo suficientemente general, para implementar con
él este tipo de redes.
3. La librería 31

Para lograr estos objetivos, se plantearon los siguientes interrogantes,


cual seria el elemento fundamental que compondría las redes neuronales y
si se trabajariá con estructuras basadas en vectores o con estructuras básadas
en listas enlazadas, aunque por cuestiones de genericidad surge como pilar
fundamental el elemento neurona y la implementación con listas, en este tra-
bajo se decidió usar como elemento base la capa y trabajar con arreglos, pues
la mayoria de las redes neuronales más utilizadas son redes organizadas
por capas. También se impuso la condición que en las redes implementadas
con la librería exista interconexión total entre las neuronas de las capas que
estan conectadas (aunque una ausencia de conexión puede ser vista como
un peso igual a cero). Esta última concideración facilita el recorrido de los
vectores de entrada y de pesos en la red.

3.1.1. Estructuras basadas en arreglos

Los procesadores digitales de señales y los microprocesadores actuales


con la inclusión de instrucciones para manejo multimedia están optimiza-
dos para realizar cierto tipo de operaciones, una de ellas es la operación
MAC que es una operación de multiplicación acumulación, con la cual ge-
neralmente se hace uso de los modos de direccionamiento, dando como re-
sultado una manera muy eficiente realizar multiplicaciones vectoriales, por
ejemplo para realizar la multiplicaión de los vectores de la figura 3.1 en
lenguaje C basta con:

....
acc=0.0;
for(i=0;i<6;i++)
acc+=*pesos_ptr++ * *entradas_ptr++;

Lo que el compilador traduce en muy pocas instrucciones de código


máquina. Existen un inconveniente en este tipo de aproximación, si las re-
des que se van a tratar son redes dispersamente conectadas habrá muchas
multiplicaciones por cero dando lugar así a un gran desperdicio de tiempo
de CPU y de memoria.
32 3.1. Lineamientos

cesosq3eqk(qMnb3(3qb jn)f(3(sq(qk(qMnb3(3qb

wbó hó
wb4 h4
wb5 h5
wb6 h6
wb7 h7
wb. h.

6esos_6)f en)f(3(s_6)f

Figura 3.1: Dos arreglos en memoria.

3.1.2. Estructuras basadas en listas enlazadas

Debido a la flexibilidad que brindan las estructuras de datos dínamicas


al momento de programar, las listas enlazadas son muy usadas para es-
cribir aplicaciones, en un simulador de redes neuronales basado en listas
enlazadas, las neuronas y las conexiones de las mismas podrian ser nodos
de listas, y para realizar el procceso de propagación de la red, una neurona
calcula su entrada neta recorriendo toda su lista de conexiones y luego se
pasaria a la neurona siguiente de la lista hasta el final y sin importar si la red
es una red completamente interconectada o parcialmente interconectada el
proceso es igual. La flexibilidad antes mencianada tiene su contrapartida el
hecho que los procesos para llegar a los datos (pesos) ya no se limitan a sim-
plemente incrementar un puntero, sino, al movimiento en una lista, lo cual
en redes neuronales de gran tamaño puede significar una gran cantidad de
tiempo.

Resumiendo los lineamientos que se siguieron fueron los siguientes (ver


[Ska93]):

Las unidades de las redes son capas de neuronas que poseen carac-
terísticas similares. aunque a veces exitan capas con un único elemen-
to.
3. La librería 33

El procesamiento de la información de la red es por capas.


El número de capas soportado está únicamente limitado por la canti-
dad de memoria disponible.
El procesamiento en cada capa dependerá unicamente de las entradas
a la misma.

3.2. Descripción

En las redes
implementadas con
La jannl es una liviana librería en forma de archivos .h y .m (funciones en la librería existe
Matlab), que permite exportar fácilmente redes neuronales creadas con el interconexión total
Neural Network Toolbox de Matlab. Fue escrita respetado el ANSI-C, con el entre las neuronas
fin de que pudiera ser usada con diferentes compiladores. En la figura 3.2 se de las capas que
muestra el modelo UML de la librería, donde todas las clases que aparecen estan conectadas.
allí no necesariamente aparecen en el código implementadas como TAD’s,
sino que son parte del análisis solamente, como es el caso de la clase vector
que se implementó como un arreglo de números reales.

A continuación, se hace una descripción de cómo funciona en forma gen-


eral, la libreria.

Cada CAPA tiene conexiones de entrada (posiblemente vectoriales), las


cuales son tratadas por CONEXMATRIZ, que tiene una MATRIZ de pesos
asociada a la entrada. Dicha entrada puede ser una entrada del exterior,
salida de una capa (incluso ella misma) o la salida de una línea de retar-
do TDLV, la que a su vez tiene asociada una entrada. De esta última es de
donde se toman los datos, cuando se ejecuta la operación actualizar de
las TDLV’s. Las capas también poseen en su interior un vector que represen-
ta su salida. Es decir, las líneas de retardo y las capas tienen, como miem-
bros propios, los vectores de salida. También tienen asociaciones (punteros)
a sus entradas através de las matrices de conexión, en el caso de las capas y
de vectores, en el caso de las líneas de retardo. Para conectar dos elementos
cualquiera, se coloca el puntero de entrada del elemento destino a apuntar
al vector de salida del elemento fuente. Esto puede verse en forma gráfica,
para el caso de entradas a una capa, en la figura 3.3.

Las redes como se había mencionado anteriormente, se implementan en


UML, seido y Editio Comm for U
y E d ition Po , C o mmunit o n fo r UML, io n P oseidon
ommu n it UM L e id Ed it omm
UML, C P o s e idon for it y E d it ion Pos , C o m munity o n fo r UML, C
n n L id
y Editio Commu oseidon
for UM n Pose
L , C o mmunit id o n fo r UML, it io n P m m u n it y Editio r UML, C
omm
r UM P o s e it y E d , C o o n fo
Edition ommun for UML Edition
Poseid
, C o m munity o n fo r UML, C io n P o seidon m u n it y U ML, Co
mm
o r U M L P o s e id it y E d it , C o m o n fo r
Edition ommun for UML Edition
Poseid
munity r UML, C o seidon y Com
or UML
, C o m 34
n P o seid o n fo
u n it y Edit io n P
M L , Comm 3.2. Descripciónseidon for UML,
u n it
io m U ion Po
nity Edit for UML
, Com Poseido
n for
nity Edit , Com
U M L , Commu o s e id o n y E d it io n C o m m u n for UML
for n P u n it M L , e id o
ity Editio , Comm Poseido
n for U ion Pos
M L , C ommun e id o n for UML E d it io n o m m u nity Edit for UML
, Com
n for U n P o s u n it y M L , C e id o n
ity Editio , Comm n for U n Pos
M L , C ommun e id o n for UML d it io n Poseido m m u n ity Editio r UML,
Co
fo r U n P o s u n it y E L , C o id o n fo
n y Editio Comm RED for UM n Pose
, C o mmunit o n fo r UML, n P oseidon u n it y Editio ML, C
on for U
M L
d it io n Pose id
m m u n ity E d it io TDLV
r U M L , Co m m
P o s e id on for U
unity E ML, Co eidon fo Edition
r U M L , Comm P o s e id on for U it y E d it ion P*os , C o m munity o n for UM
L, C
on fo it io n m u n r U M L o s e id
unity Ed L, Com idon fo ition P
U M L , Comm o s e id o n for UM E d it io n Pose C o m m unity Ed n for UM
L, C
don fo r it io n P m u n it y U M L , o s e id o
nity Ed L, Com idon for ition P
M L , Commu e id o n for UM d it io n Pose m m unity Ed r UML,
don for
U
E d it io n P o s *
C o m m unit y E
n fo
+ salida + fuenter U ML, C o
n P o s eidon fo
y r UML, eido
ML, Co
mmunit
eidon fo ion PosVECTOR ity Editio r UML
n fo r U n P o s CAPA u n it y E d+itsalida M L , C ommun s eidon fo
eido y E d it io C o m m n fo r U n P o
r UML,
+ bias
mmunit oseido ity Editio
fo r U ML, Co n P o s eidon fo u n it y E dition P M L , C ommun e idon for
UML
eido n E d it io CONEXMATRIZ guarda o m m fo r U n P o s
munity la información de lasfor UML
,C seidon y Editio
U M L, Com idode
deedatos
s n una + entrada
E d ition Po C o mmunit for UM
fo r P o n it y L , oseidon
fuentes
seidon n it y E d itioncapa. L , C o mmu id o n fo r UM it io n P
Commu for UM n Pose unity E d
r UML, oseidon y Editio , Comm
El valor de los pesos
for UM
se id o n fo
it y E d it io n P
L ,
* + conexiones
C o m m u n it
o n fo r U M L
it io n P oseidon
n id
Commu oseidon
for UM CONEXMATRIZ n PoseMATRIZ unity Ed for UM
id o n fo r UML, it io n P m m u n it y Editio r U M L , Comm o seidon
o se it y E d L , C o o n fo io n P
ommun for UM Edition
Poseid nity Edit
o n fo r UML, C io n P oseidon m u n it y U M L , Commu o seidon
for U
Poseid it y E d it , C o m o n fo r io n P
ommun for UML Edition
Poseid nity Edit
o n fo r UML, C io n P o seidon m u n it y U M L , Commu o s eidon fo
rU
o se id y E d it , C o m n fo r n P
P mmunit r UML3.2:
Figura Estructuraditde oseido
ionlaPlibrería. ity Editio
r U ML, Co o s eidon fo y E , C ommun n for
Poseido
n fo
u n it y Editio n P
M L , C omm u n it
e id o n for U M L
d it io n Poseido
, Comm n for U ion Po s E
Poseido munity
e id o n for UML E d it io n o m m u nity Edit fo r U M L, Com Poseido
n for
Po s u n it y M L , C e id o n E d it io n
, Comm n for U n Pos munity
e id o n for UML d it io n Poseido m m u n ity Editio r U M L, Com P oseidon
fo
Pos u n it y E L , C o id o n fo d it io n
, Comm n for UM n Pose unity E
n for UML n Poseido u n ity Editio M L , Comm eidon fo
Pos e id o
m m u n ity E d it io
r U M L ,cesoqe3k(M
Co m m
P o s e id on fo r U
it y E d it ion Pos
L, Co idon fo nbjk)n Edition ommun
n for UM n Pose
mso3gsMgko munity UML, C eidon f
Poseido m u n it y E d it io
U M L , C o m
o s e id o n fo r
E d it ion Pos
L, Co m nbjk)n eidon fo
r
Edition
P
ommun
it y
n for UM ion Pos munity UML, C n Pose
idon
Poseido m u n it y E d it
r U M L , C o m CONEXMATRIZ
o s e id o n fo r
y E d it io
L, Com idon fo ition P mmunit
o s e id o n for UM E d it io n Pose C o m m unity Ed +k;)(sgsn for UML, Co n Pose
idon
P m u n it y U M L , o s e id o y E d it io
L, Com idon for ition P mmunit
id o n for UM it io n Pose m m unity Ed r U ML, Co oseido
P o s e
C o m m unity E d
fo r U ML, C o
n P o s eido n fo
u n it y E dition P
L, n
n for UM Poseido ity Editio , Comm
Poseido u n it y Edition M L , C ommun e id o n for UML
, Comm n for U n Pos
e id o n for UML d it io n Poseido m m u n ity Editio
Pos E o
munity UML, C
fo r U M L, Com P o s e idon for
n n
Poseido mmunit
y Editio
L , C o
n for UM
Poseido
Figura 3.3: Tratamiento de entradas mediante de matrices de conexión.
3. La librería 35

esta librería como un conjunto de capas y de líneas de retardo asociadas a


las entradas de las mismas. Cuando se decidió implementar las redes con
estructuras basadas en arreglos y no en en nodos enlazados, se presentó
el siguiente problema: la entrada a un nodo (capa) puede depender de las
salidas de otros y su salida puede ser una entrada de otro más, por ello,
es necesario asegurar que cuando se va a calcular la entrada neta N etj de
los elementos de una capa, ya se hayan calculado las salidas de las capas
que le proveen datos de entrada. Para solucionarlo de haber optado por la
implementación basada en nodos enlazados, hubiese sido necesario difer-
enciar las capas que son de entrada, de las que son ocultas y de la que son
de salida, usando un dato adicional en cada nodo. También hubiera sido
necesario tener referencias a todas las capas fuente y/o destino de un nodo
para poder recorrer la red.

El orden en que se
agregan las capas y
Toda esta información extra facilita la programación y provee mucha fle- la líneas de retardo
xibilidad, aunque los tipos de datos sean más complejos, pero disminuye influye en el
el rendimiento, teniendo que usar muchas instrucciones de decisión en el momento de
momento de propagar la información por la red. En cambio, en la libr- propagar la
ería que se presenta, se supune que el programador es el responsable de información por la
saber cómo están relacionadas las capas; de esta forma, al agregar una capa red.
a una red, las primeras capas agregadas con add_capa_red(....), son
las primeras a las que se les calcula su salida, de igual manera el orden en
el que se agreguen las líneas de retardo a la red add_tdlv_red(....),
será el mismo en el que se actualicen al momento de llamar la operación
propagar_red(....).

3.3. Estructura de directorios

La librería se distribuye en forma de fuentes, con el directorio jannl


como base ye en él la siguiente estructura de directorios:

App: Los ejecutables, archivos de proyectos, archivos objeto, etc. Aquí


se pueden encontrar archivos de proyecto para C++ Builder y uno
para Dev-C++.
data: Aparecen archivos de texto con redes y matrices, creados man-
ualmente.
36 3.4. Trabajando con la librería

docs: Documtación de la librería.

examples: Código de ejemplos.

include: La librería (archivos.h).

matlab: Los archivos de matlab, este directorio generalmente se debe


copiar el directorio work de la instalacón de matlab en la que se va a
trabajar.

3.4. Trabajando con la librería

Existen básicamente tres fomas de trabajar con la librería:

Archivo de texto plano.

Con Matlab.

En leguaje C.

En la figura 3.4, se muestra de forma gráfica la forma de usar la librería.

3.4.1. Archivos de texto plano

Como se dijo antes es posible cargar una red por medio de la función
finit_red(RED* red,FILE* fp,jreal* vectores_entrada), los
archivos que se cargan con ella contienen la información de la red, definida
mediante un pseudolengueje el cual tiene unas marcas específicas (en los
ejemplos dichos archivos tienen extención wgh pero es indiferente).

Las marcas usadas por los archivos son (las dos primeras instrucciones
deben ir de primeras en el archivo también y en ese orden):

NUM_CAPAS{#} Define cuantas capas va a tener la red.

NUM_ENTRADAS{#} El número de entradas vectoriales de la red.


3. La librería 37

cesoq3k
(Mnsbnj)

f6c_wóc
f6c_wóc o3e5
ces4_
3e56
ec ;3qg3nmn6ec
3e56ec se+sq 7
7
(.h)
;6e5e6
_n3gn3

>w3ve6;n3n
_3en3

Figura 3.4: Forma de trabajar con la jannl

ADD_CAPA{nombre_capa}{numero_neuronas}
{funcion_transferencia}{bias}{funcion_base} Instrucción
que agrega una capa a la red con las siguientes características:

• nombre_capa: El nombre de la capa.


• numero_neuronas: El número de neuronas de la capa nombre_capa.
• funcion_transferencia: La función de transferencia de la
capa. Los valores de este párametro son los indicados en el primer
capítulo.
• bias: Indica si la capa tiene o no bias. Valores : BIAS o NO_BIAS
• funcion_base: Indica que función base tiene la capa. Valores :
NETSUM o NETPROD.

ADD_ENTRADA{nombre_capa}{dimension} Agrega una entrada a


la capa de la dimensión especificada. Cuando la función finit_red(...)
encuentra esta instrucción le asigna la matriz de pesos que aparece
acontinuación en el archivo al vector de entrada actual y avanza hacia
el próximo.
38 3.4. Trabajando con la librería

ADD_ENTRADA_TDL{nombre_capa}{dimesion}{cuantos}{desde}
Muy parecida a la anterior pero antes de conectar el vector de entrada
a la matriz de pesos coloca una línea de retardo entra las dos. cuantos
dice cuantos retardos tendra esa entrada y desde indica apartir de
que retardo se toma la salida la lñea de retardos.
CONECTAR{destino}{fuente} permite conectar dos elementos ya
sean capas o líneas de retardos, sin embargo hay que tener en cuenta
que:
• Si el destino es una capa, el origen puede ser otra capa o una línea
de retardos.
• Si el objeto destino es una lñea de retardos el origen unicamente
puede ser una capa.
DIM[filas][cols] Define el tamaño de una matriz, es usada para
comprabar la coherencia de los datos en el archivo.

3.4.2. Creando redes con matlab

El método para crear redes con Matlab y usarlas en lenguaje C, solamente


difiere del anterior en que el archivo wgh es generado por Matlab.

1. Se crea un objeto tipo network, ya sea con las funciones para crear re-
des específicas como newff, newlin, newelm, newrbe o newrb o
creando una red a gusto propio mediante la función network y mod-
ificando las propiedades necesarias hasta tener el modelo necesitado.
2. Se utiliza alguna de las funciones que compone la librería en Mat-
lab net2c(nombre,network) para generar código en lenguaje C o
también wred(network,archivo) para generar un archivo de tex-
to con la información de de pesos y de conexiones (archivo que tendrá
la estructura descrita arriba).
3. Se puede usar el código generado en lenguaje C para construir un pro-
grama ejecutable con una sentencia #include "nombre.h" o si el
sistema donde se trabaja tiene acceso a disco, cargar la red del archi-
vo texto en tiempo de ejecución mediante una llamada a la función
finit_red(...) (ver manual), que inicializa la red apartir de un
archivo de texto.
3. La librería 39

Generar código en C

Con una llamada a la función net2c(nombre,network), se genera un


archivo .h con la información de la red, por ejemplo, suponiendo que en
Matlab se tiene una red llamada mi_red y de desea crear el .h para ella
con el mismo nombre, se escribirá net2c(’mi_red’,mi_red), después
de ésto se creará un archivo con el nombre mi_red.h y en él la definición
de una función con el nombre

RED *gen_mi_red(jreal* entradas[]);

que generará un objeto tipo RED.

La creación directa de redes en lenguaje C es más compicada que las


otras dos debido a que se tienen que manipular directamente los TAD’s
que componen la librer’ra, este acercamiento es útil si se desean escribir
algoritmos de entrenamiento por ejemplo.

3.5. Ejemplos

En el momento de empezar a escribir la librería se pensó que debía cumplir


con cierto con dos aspectos básicos:

Debería ser lo suficientemente rápida y liviana para poder usarla en


sistemas donde la velocidad fuera un factor crítico.

Que fuera fácil de usar, que las personas que se estubieran inciando en
el estudio de las redes neuronales pudieran usar una herramienta de
alto nivel para la simulaciones y pruebas de sus redes y no necesitara
escribir todo un programa para cada red.

Como se mencionó antes se trataron de usar estructuras de datos efi-


cientes tanto en tiempo de ejecución como en consumo de memoria y que
sin embargo la redes implementadas con ellas reproducieran fielmente los
resultados que las mismas redes creadas en matlab.
40 3.5. Ejemplos

3.5.1. Red creada manualmente

Un perceptrón para el problema de la operación lógica XOR, éste código


aparece en el directorio data de los fuentes, allí también pueden encon-
trarse otros ejemplos de archivos planos con redes.

% Perceptron para una operacion xor


% Ejemplo extraido del libro Redes Neuronales Artificiales
% Jose R. Hilera. Pag 111.

NUM_CAPAS{2}
NUM_ENTRADAS{1}

ADD_CAPA{lacapa}{2}{hardlim}{BIAS}{netsum}

ADD_ENTRADA{lacapa}{2}
DIM[2][2]
1.0
1.0
1.0
1.0

SET_BIAS{lacapa}
DIM[2][1]
-0.5
-1.5

ADD_CAPA{otracapa}{1}{hardlim}{BIAS}{netsum}
%La salida de lacapa se conecta a otracapa
CONECTAR{otracapa}{lacapa}
DIM[1][2]
1.0
-1.5

SET_BIAS{otracapa}
DIM[1][1]
-0.5

Ahora para usar el anterior perceptrón en un programa en lenguaje C, se


podría escribir algo como:
3. La librería 41

/*#define NDEBUG*/
#include <assert.h>

#define MAX_ENTRADAS 2
#define SAT_EXP /** se indica que se saturen las exponenciales */

#include <jannl.h>

/**
Un ejemplo de uso de una red tipo perceptron para realizar una
operacion operaciones con dos entradas escalares
(un vector de dos elementos)
*/

int main(int nargs,char* args[])


{

ST st=ok;
FILE* fp=null;
RED* red=null;

jreal* arr_ent[1]={null}; /* Una entrada vectorial */


jreal ent1[2],i,sal;

if(nargs!=2)
{
printf("El argumento debe ser el nombre del Archivo");
exit(1);
}

arr_ent[0]=ent1; /* Se asocia la unica entrada a ent1 */

red=crear_red();/*un disfraz para malloc */

fp=fopen(args[1],"rt");
if (fp==null)
{
42 3.5. Ejemplos

printf("Error al abrir el archivo");


exit(1);
}

// Se inicializa la red del archivo que la define


st=finit_red(red,fp,arr_ent);
if(st!=ok)
{
printf("Error inicializando la red !!!!");
exit(1);
}
fclose(fp);
printf("Red dinamica de archivo .wgh\n");

ent1[0]=0;
ent1[1]=0;
propagar_red(red,&sal);
printf("\%f \%f --> \%f\n",ent1[0],ent1[1],sal);

ent1[0]=0;
ent1[1]=1;
propagar_red(red,&sal);
printf("\%f \%f --> \%f\n",ent1[0],ent1[1],sal);

ent1[0]=1;
ent1[1]=0;
propagar_red(red,&sal);
printf("\%f \%f --> \%f\n",ent1[0],ent1[1],sal);

ent1[0]=1;
ent1[1]=1;
propagar_red(red,&sal);
printf("\%f \%f --> \%f\n",ent1[0],ent1[1],sal);
final_red(red);
/** destr_red revisa si el puntero es diferente de null */
destr_red(red);
getchar();
return 1;
}
3. La librería 43

En el anterior código se carga la red que se pasa como argumento al pro-


grama, es interesante ver que la red que se carga solo debe cumplir con las
condiciones de entrada salida, es decir, tener una entrada de dos elemen-
tos y una salida de uno, sin importar el número de capas o de neuronas
por capa en el interior de la misma, el código anterior puede se usado tan-
to para cargar las redes definidas en el archico orperc.wgh o el archivo
xorperc.wgh solo cambiando el argumento que se pasa al main.

Debido a que se supone que las redes pueden tener varias entradas vec-
toriales lo que se le pasa a la función finit_red... como entrada es un
arreglo de punteros, asi cada puntero representa un vector de entrada.

La saida de ese programa cargando el archivo orperc.wgh puede ob-


servarse en la figura falta.

3.5.2. Red de archivo

Se describirá la creación de la red de la página 9-3 del manual del toolbox


y luego será usado en un pequeño programa en lenguaje C.

Lo primero que hay que hacer es cargar en Matlab el archivo elman.mat,


para tener en el entorno una red tipo elman llamada elman (ver figura 3.5),
luego se hace una llamada a la función wred que crea en este caso un archi-
vo con nombre elman.wgh.
Después se puede escribir un programa como el siguiente para usar la
red de elman:

/* Si se define la siguiente constante


las aserciones se deshabilitan
*/
/*#define NDEBUG*/
#include <assert.h>

/* Entradas vectoriales por capa */


#define MAX_ENTRADAS 2

/* se indica que se saturen las exponenciales


para evitar over-flow */
44 3.5. Ejemplos

Figura 3.5: Ejemplo de red de elman.


3. La librería 45

/*#define SAT_EXP */

#include <jannl.h>

void main()
{
int i,j;
ST st=ok;
FILE* fp=null;
RED* red=null;

jreal salida;
/* Los valors de entradas con los que se probar le red */
jreal valores_entrada[]={0,1,0,1,1,0,0,0};
/* La variable que la red revisa cuando se va a propagar */
jreal entrada;
/* La anterior variable es una entrada */
jreal* vector_entradas[1];
vector_entradas[0]=&entrada;

red=crear_red();

/* se abre el archivo en la ruta especificada */

fp=fopen("..la_ruta..\\elman.wgh","rt");

st=finit_red(red,fp,vector_entradas);
if(st!=ok)
{
printf("Error inicializando la red del archivo !");
exit(1);
}

printf("\nRed de Elman: \n
pag 9-3 Manual de Neural Networks Matlab\n");

for(i=0;i<8;i++)
{
entrada=valores_entrada[i];
propagar_red(red,&salida);
46 3.5. Ejemplos

printf("entrada \%f salida \%f\n",entrada,salida);


}

}/*fin main*/

La salida del programa puede verse en la figura 3.6.

Figura 3.6: Salida de una red de elman en lenguaje C.

El ejemplo anterior fue también comparado con los resultados arrojados


por la librería del profesor Julian Esteban Gutierrez, con el proposito de
comparar los tiempos de propagación de la jannl, la salida de la red antes
citada implementada con la librerá del profesor se muestra en la figura
3.7 El código del programa en C++, se puede encontrar en el directorio

Figura 3.7: Red de elman en C++.

examples de los fuentes, claro está necesita de la librería mencionada para


poder compilarlo
3. La librería 47

Para ver más profundamente el uso de las funciones, ver los archivos de
ejemplos del manual de jannl y ver el directorio examples de los fuentes.

3.6. Capacidades y limitaciones

La librería puede hacer la expotación de los siguientes tipos de redes


creadas con el Neural Network Toolbox:

Adaline.

Perceptron.

Base radial.

Elman.

Redes personalizadas con las siguientes características:

• Pueden tener lazos de ralimentación.


• Se soportan diez funciones de transferencia, ver en el manual la
referencia al archivo jfunc.h.
• No pueden tener lineas de retardo en conexiones hacia adelante,
a excepción de las lineas de retardo de las entradas a la red.

La velocidad de propagación de la librería resulta ser en la mayoría de


los casos diez veces mayor que la de C++ con la que se comparó.
48 3.6. Capacidades y limitaciones
Apéndice A

Enlaces de interes

N
O exite duda que las implementaciones más rapidas de procesos son
aquellas hechas directamente en hardware, pues ni el más rápido
procesador disponible en el mercado puede dar una verdadera re-
spuesta en tiempo real con redes muy grandes y con muchas conexiones, por
ello, varios centros de investigaciones se han dedicado a crear hardware es-
pecífico que aproveche las características inherentes de las redes neuronales.

A continuación se citan algunos enlaces donde se pueden encontrar in-


teresantes artículos, cometarios, etc, sobre redes neuronales incluyendo im-
plementación por hardware.

http://electronica.com.mx/neural/ Aunque no ha sido actualizada con


últimamente contiene artículos muy interesantes sobre implementa-
ciones por hardware de las redes neuronales y una sección donde se
pueden descargar simuladores de RNAś.

http://www.ilustrados.com/publicaciones/EpZpVVFkFVKDXfMAYJ.php
Un artículo sobre la implementación por hardware de las redes neu-
ronales además tiene una presentación en que hicieron los alumnos
con fotografias de tarjetas desarrolladas.

http://www.particle.kth.se/ lindsey/HardwareNNWCourse/home.html
Es un sitio con un curso informativo sobre implementación de redes
neuronales por hardware, además tiene links muy interesantes a insti-
tuciones que investigan sobre desarrollos en este tipo de hardware.

49
50

http://www.accurate-automation.com/products/prod.html Una empre-


sa que desarrolló hardware para procesamiento avanzado con redes
neuronales para sistemas de tiemp real.

http://www.viplab.is.tsukuba.ac.jp/ hirai/PDM/ Un simulador de re-


des neuronles implementado por hardware en la Universidad de Tsuku-
ba.
Bibliografía

[Bea02] Howard Demuth. Mark Beale. Neural Networs Toolbox, User’s Guide.
The Mathworks, www.mathworks.com, 2002.

[Mar95] José R. Hilera Víctor J. Martínez. Redes Neuronales Artificiales, Fun-


damentos, Modelos y Aplicaciones. 1995.

[San01] Carlos Enrique Vivaracho Pascual Quiliano Isaac Moro Sanchoi.


Redes neuronales artificiales. Technical report, www.infor.uva.es,
Abril 2001.

[Ska93] James A. Freeman David M. Skapura. Redes Neuronales, Algoritmos,


aplicaciones y técnicas de programación. Addison-Wesley Iberoamer-
icana, S.A. y Ediciones Díaz de Santos, S.A., 1993.

51
52 BIBLIOGRAFÍA
Apéndice D. REDES NEURONALES ARTICIALES

D.1. Algunas definiciones básicas


Inteligencia computacional (Soft computing). Es un enfoque emergente de la computación
que tiene un paralelo notable a la capacidad de la mente humana de razonar y de
aprender en un ambiente de incertidumbre e imprecisión (Zadeh, 1992). Los
componentes principales de la soft computing son la lógica difusa, la computación
neuronal y los algoritmos genéticos. Según Jang, Sun y Mizutani (1997), las
principales características del procesamiento neuro-fuzzy y del soft computing son:
que utilizan la experticia humana, son modelos computacionales inspirados en la
biología, aplican nuevas técnicas de optimización, implican cálculo numérico,
tienen nuevos campos de aplicación, tienen un modelo de aprendizaje libre,
significan procesos de cálculo intenso, son tolerantes a fallos, sus características
pueden ser enfocadas hacia un objetivo y tienen aplicaciones en el mundo real.
Neurona artificial. Dispositivo simple de cálculo que, a partir de un vector de
entrada procedente del exterior o de otras neuronas, proporciona una única
respuesta o salida.
Redes neuronales. Son sistemas que hacen uso los principios conocidos de la
organización del cerebro humano. Consisten en un número de procesadores
independientes y simples: las neuronas. Estas neuronas se comunican con otras por
medio de conexiones ponderadas, los pesos sinápticos (Nauck, Klawonn y Kruse,
1997).
Sistema neuro-difuso. Es una combinación entre redes neuronales artificiales y
sistemas difusos de tal forma que las redes neuronales o sus algoritmos de
aprendizaje, son usados para determinas los parámetros del sistema difuso (Nauck
et al. 1997).

Mediante las redes neuronales artificiales se intenta imitar el proceso de


aprendizaje del cerebro humano. El cerebro esta formado por miles de millones de
230 Apéndice D

neuronas conectadas entre sí. Utilizan información que es percibida, trasmitida


hasta las neuronas, y allí procesada por ellas para dar una respuesta a cada uno de
los diferentes estímulos. Cada neurona tiene tres partes: un cuerpo celular, una
estructura de entrada (Dendrita) y una de salida (Axon). La mayoría de las
terminales de los axones se conectan con las dendritas de otras neuronas
(Sinápsis). El comportamiento de una neurona es el siguiente: recibe una señal de
entrada con una fuerza determinada, dependiendo de ellas la neurona emite una
señal de respuesta, las sinápsis pueden variar en fuerza, algunas pueden dar una
señal débil y otras una fuerte. A una neurona pueden llegar miles de señales de
entrada, cada una con una fuerza o peso diferente. Matemáticamente el
comportamiento de la neurona puede representarse por una lista de sus señales de
entrada que son multiplicadas por sus pesos respectivos y posteriormente
sumados, el resultado es llamado nivel de activación de la neurona del cual
depende la señal de salida que es enviada a cada una de las neuronas a las que esta
conectada a ella.
Una red neuronal artificial (RNA) es un sistema compuesto de muchos
elementos procesadores simples, neuronas, conectados en paralelo, cuya función es
determinada por la estructura de la red, la fuerza en las conexiones y el
procesamiento realizado por los elementos en los nodos (Jang et al. 1997). Las
RNA, igual que las personas, aprenden de la experiencia. Las neuronas están
conectadas por medio de sinopsis, estas conexiones son direccionadas, es decir, la
información sólo puede propagarse en un sentido. Las neuronas pueden agruparse
en unidades estructurales denominadas capas y el conjunto de una o más capas
constituye la red neuronal (Martín del Brío y Sanz 2001). Las conexiones pueden
ser excitatorias o inhibitorias, según sea el peso sináptico positivo o negativo,
respectivamente. Las conexiones también pueden ser intra-capa o inter.-capa,
según se conecten neuronas de una misma capa o de capas diferentes. Según el
flujo de datos, las redes pueden ser unidireccionales (feedforward) o recurrentes
(feedback).
Uno de los primeros modelos de redes neuronales fue el Perceptron
diseñado por Rosenbalatt, el cual contaba con tres tipos de neuronas: sensoriales,
asociativas y de respuesta (Rutkowska 2002). Las sensoriales tomaban entradas de
fuera de la red, las unidades de respuesta llevaban señales fuera de la red al mundo
externo y las asociativas eran exclusivamente internas. Estos tipos ahora son
llamados unidades de entrada, de salida y ocultas. Rosenbalatt desarrolló métodos
para que la red alterara los niveles sinápticos de forma que la red aprendiera a
reconocer niveles de entrada.
Después de los años 80 la inteligencia artificial se hizo más popular y
aumento su campo de aplicación. Se han desarrollado algoritmos para modelar
procesos mentales de alto nivel como la asociación de conceptos, deducción,
inducción y razonamiento.
En 1986 Rumelhart y McClelland demostraron que algunos problemas
imposibles para los Perceptrons simples pueden ser resueltos por redes multi-nivel
con funciones de activación no lineales, utilizando procesos simples de
entrenamiento (algoritmos Back-propagation).
Apéndice D 231

D.2. Características generales


Pesos: Las redes neuronales pueden tener factores de peso adaptable o fijo. Las que
tienen pesos adaptables emplean leyes de aprendizaje para ajustar el valor de la
fuerza de interconexión con otras neuronas. Si se utilizan pesos fijos, su tarea debe
estar previamente definida. Los pesos son determinados a partir de una descripción
completa del problema a tratar. Los pesos adaptables son muy importantes, ya que
no se conoce de antemano su valor correcto.
Aprendizaje: Se utilizan dos tipos de aprendizaje: supervisado y no supervisado. En
el primero se le proporciona a la red tanto la salida como la entrada correcta, y la
red ajusta sus pesos para disminuir el error en la salida que ella calcula. Este tipo es
utilizado principalmente en el conocimiento de patrones. En el aprendizaje no
supervisado a la red se le proporcionan únicamente los estímulos, y la red ajusta
los pesos de sus interconexiones utilizando solamente los estímulos y la salida
calculada por la red. El aprendizaje no supervisado puede describirse como la
estimación de la función de densidad de probabilidad p(x) que describe la
distribución de patrones x pertenecientes a un espacio de entrada Rn. La forma de
aprendizaje que se utiliza depende del tipo de problema que se intenta resolver.
Fases de operación: Se presentan dos fases en la operación de una red neuronal
artificial: entrenamiento y recuperación de lo aprendido. En la primera fase se le
proporcionan estímulos de entrada y salida (según el caso), para que la red ajuste
sus pesos de interconexión y minimice el error en la salida que calcula. En la
segunda fase la red solamente calcula la respectiva salida.
No son algorítmicas: Las redes neuronales artificiales no se programan sólo para
seguir una secuencia de instrucciones, sino que ellas mismas pueden generar sus
propias reglas para aprender de su propia experiencia.
Necesitan un patrón: Las redes neuronales no son capaces de reconocer nada que no
tenga algún tipo de patrón. Son muy buenas resolviendo problemas de asociación,
evaluación y reconocimiento de patrones.

D.3. Tipologías
Dependiendo de la estructura de la red neuronal existen varias tipologías, algunas
de estas son: el Perceptrón, Backpropagation, Hopfield, y Kohonen.

D.3.1 Perceptrón
En 1943 se desarrolló el primer modelo de neurona artificial por McCulloch y
Pitts. El perceptrón intenta modelar el comportamiento de la neurona biológica,
derivado del modelo hecho por McCulloch y Pitts (Looney 1997). Es la base de la
arquitectura de las redes neuronales artificiales. El perceptrón trabaja con
funciones de activación. En la Figura D.1 se observa el modelo de un perceptrón
para reconocimiento de patrones. El cuerpo de la neurona es representado como
232 Apéndice D

un sumador lineal de estímulos zj, seguida por una función no lineal f(zj) que es la
función de activación, esta utiliza la suma de estímulos para determinar la salida de
la neurona. En el perceptrón cada entrada es multiplicada por un factor de peso W
correspondiente, los resultados son sumados y luego evaluados contra el valor de
umbral θ, si el valor es mayor al máximo el perceptrón se activa.

Entrada
g1 X1
W1 θ
g2 X2
W2
Salida
Σ XiWi f(z)
g3 X3 W3 Axon

W4 Cuerpo
g4 X4

Axones Sinápsis Dendritas

Figura D.1. Modelo de un Perceptrón

La primera capa actúa como un grupo de sensores que detectan una señal
específica con la importancia correspondiente. La segunda capa toma las salidas de
los detectores y clasifica el patrón de entrada dado. El aprendizaje empieza
ajustando la fuerza en las conexiones (pesos wi) y el valor de umbral θ. La función
gi es fija y está predeterminada.
El entrenamiento de un perceptrón se hace utilizando una función de
aprendizaje. Si la respuesta dada por el perceptrón es incorrecta, se modifican
todos los pesos de las conexiones de acuerdo a la siguiente función:

∆ wi = η t i xi (D.1)
donde η es la rata de aprendizaje, ti en la salida deseada, y x es la entrada del
perceptrón.
La función anterior puede ser utilizada también para la actualización del
valor de umbral θ . El valor de η puede ser constante a lo largo del entrenamiento,
o puede variar en forma proporcional al error. Un η proporcional al error lleva a
una convergencia rápida, pero causa un aprendizaje variable.
El perceptrón es capaz tan sólo de resolver funciones definidas por un
hiperplano (objeto de dimensión N-1 contenida en un espacio de dimensión N),
que corte un espacio de dimensión N. Es decir sólo puede resolver una función, si
Apéndice D 233

todos los posibles resultados del problema pueden separarse de forma que no se
combinen entre si.
Existen varios tipos de perceptrones dependiendo del número de capas que
tenga. Un perceptrón simple o de dos capas, corresponde a una capa de entrada
con neuronas lineales y una de salida con función de activación tipo escalón. Este
sólo puede establecer dos regiones separadas por una frontera lineal en el espacio
de patrones de entrada.
Un perceptrón de tres capas puede formar cualquier región convexa en este
espacio. Cada elemento se comporta como un perceptrón simple. Un perceptrón
de cuatro capas puede generar regiones de decisión arbitrariamente complejas.
Puede resolver una gran variedad de problemas cuyas entradas sean analógicas; la
salida sea digital y sea linealmente separable. El rango de tareas que el perceptrón
puede realizar es más amplio que simples decisiones y reconocimiento de patrones.
El perceptrón multicapa puede ser usado para la predicción de una serie de datos
en el tiempo, como cambios financieros. Más detalles sobre las caracteristicas y
limitaciones del perceptron son explicadas por Bishop (1995).

D.3.2 Backpropagation
Cuando se combinan varios perceptrones en una capa y los estímulos de entrada
después son sumados, se tiene ya una red neuronal.
La falta de métodos de entrenamiento apropiados para los perceptrones
multicapa (MLP) hizo que declinara el interés en las redes neuronales en los años
60 y 70. Esto no cambió hasta la reformulación del método de entrenamiento para
MLPs Backpropagation a mediados de los años 80 por Rumelhart (1986).
En esta red, se interconectan varias unidades de procesamiento en capas, las
neuronas de cada capa se conectan entre sí. Cada neurona de una capa proporciona
una entrada a cada una de las neuronas de la siguiente capa. En la Figura D.2 se
observa la arquitectura de este tipo de red.

4
X1
7 X7

5
X2
8 X8
6
X3

Capa de Capa Capa de


Entrada Oculta Salida

Figura D.2. Modelo de una red tipo Backpropagation


234 Apéndice D

El término backpropagation se refiere al método para calcular el gradiente de


error en una red feed-forward (de aprendizaje supervisado), que es una aplicación de
la regla de la cadena de cálculo elemental (Jang et al. 1997). Indica la propagación
hacia atrás de una señal de error a través de la red (Nauck et al. 1997). Básicamente
el entrenamiento de este tipo de red consiste en lo siguiente:
- Pasada hacia delante (foward pass): las salidas son calculadas y el error en
las unidades de salida es calculado.
- Pasada hacia atrás (backward pass): el error de las salidas es utilizado para
alterar los pesos de las unidades de salida. Luego el error en las
neuronas de las capas ocultas es calculado mediante propagación hacia
atrás del error en las unidades de salida, y los pesos en las capas ocultas
son alterados usando esos valores.

D.3.3 Modelo Hopfield


Son redes de adaptación probabilística y recurrente. Funcionalmente entrarían en la
categoría de las memorias autoasociativas, es decir que aprenden a reconstruir los
patrones de entrada que memorizan durante el entrenamiento. Son monocapa con
interconexión total y en la que el valor de salida de cada unidad es binario (sólo
puede tomar los valores 0 o 1) y siguen una regla de aprendizaje no supervisado.
Están formadas por N neuronas interconectadas que actualizan sus valores
de activación en forma independiente, todas son a la vez de entrada y salida. Es
buena para resolver problemas de optimización. Tiene siempre una restricción por
simetría en cada conexión (Wjk=Wkj). Cuando una neurona mantiene su valor de
activación se dice que es estable. Se llega a un estado estable cuando todas las
neuronas son estables (Looney 1997).
Ante la presentación de un estimulo nuevo se obtiene una configuración
inicial más o menos parecida a la de alguno de los estímulos almacenados, el
sistema hace iteraciones hasta quedar en una configuración estable. En la Figura
D.3 se observa la arquitectura del modelo de Hopfield. Una característica
importante de este modelo es que una neurona nunca se realimenta a sí misma.
Apéndice D 235

Y1

I1
Y2

I2

Entradas de YN
Realimentacion
IN Salidas

XN X2 X1
Entradas
Iniciales

Figura D.3. Modelo de Hopfield

D.3.4 Modelo Kohonen


Esta red esta basada en la capacidad que tiene el cerebro de formar mapas
característicos de la información recibida del exterior. El objetivo de Kohonen era
demostrar que un estímulo externo, suponiendo una estructura propia y una
descripción funcional del comportamiento de la red, era suficiente para forzar la
formación de mapas.
La red neuronal Kohonen, como se ilustra en la Figura D.4, contiene
solamente una capa de neuronas y una capa de entrada, que se ramifica para todos
los nodos. Pertenece a la categoría de redes competitivas o mapas de auto
organización, es decir tiene un aprendizaje no supervisado. Tiene también
funciones de activación lineales y flujo de información unidireccional (red en
cascada). La red cuenta con N neuronas de entrada y M de salida, cada una de las
neuronas de entrada esta conectada a todas las de salida. Las unidades de entrada
reciben datos continuos normalizados. La red clasifica los patrones de entrada en
grupos de características similares, de tal manera que cada grupo activa siempre las
mismas salidas.
236 Apéndice D

X1 V11
Y1

X2
Y2

XN YM
VNM

Figura D.4. Modelo de red neuronal Kohonen

Puede decirse que entre las neuronas de la capa de salida existen conexiones
laterales de inhibición implícitas aunque no estén conectadas. La influencia que una
neurona tiene sobre las demás es función de la distancia entre ellas, se hace muy
pequeña cuando están muy alejadas.
Cada una de las M neuronas tiene un vector de pesos V(m) de dimensión N,
que es la misma dimensión del vector de entradas X(q). Al principio los vectores de
pesos son inicializados aleatoriamente. Se calculan las distancias cuadradas entre
X(q) y cada V(m), m=1, ..., M así:

Dqm = Dqm ( X ( q ) ,V ( m ) ) = ∑( n=1, N ) ( xn


(q) ( m) 2
− vn ) (D.2)

La distancia mínima Dqm* determina la neurona m* que es ganadora sobre las


demás neuronas. Desde este punto es posible tomar diferentes estrategias, una de
ellas es actualizar el vector de peso paramétrico de la neurona ganadora utilizando:

* * *
V (m ) = V (m ) + η ( X (q) − V (m ) ) (D.3)
donde η es la rata de aprendizaje, y las demás neuronas mantienen los valores
anteriores. Otra estrategia que puede se utilizada es actualizar positivamente
(recompensar) todas las neuronas que son cercanas a la neurona ganadora, y
actualizar negativamente (castigar) las neuronas que están a mayor distancia
(Looney 1997).
Esta red una vez entrenada puede ser utilizada para clasificar patrones de
entrada similares en el espacio N-dimensional.
Apéndice D 237

D.4. Aplicaciones
Las redes neuronales pueden ser de diferentes modelos de aprendizaje y tipologías
dependiendo del uso que se espere darle a cada una. Pueden ser aplicadas a
diferentes campos tales como: Control de eficiencia de máquinas, reconocimiento
de firmas, reconocimiento de blancos mediante sonares, predicciones en el tiempo,
decisiones, análisis de inversiones, monitoreo, mercadotecnia, planeación
estratégica, diagnostico, diseño, optimización y en aplicaciones (recientemente) de
ingeniería civil como la valoración de efectos sísmicos, solución de problemas de
gerencia de construcción, control activo estructural y diagnósticos de daño
(Paolucci 2000).
Una aplicación reciente ha sido en el pronóstico de caudales diarios y en el
cálculo del nivel de agua en ciertos sitios en la época de crecida del río Iguazú.
En el sector industrial las redes neuronales son ampliamente utilizadas
empleando modelos de ingeniería que incluyen conocimiento científico y
tecnológico en la industria, cervecera, química, aérea, alimentaria, del acero, vidrio,
cemento y telecomunicaciones.
En ingeniería civil, Lagaros, Papadrakakis, Fragiadakis, Stefanou y
Tsompanakis (2005) propusieron la aplicación de las redes neuronales artificiales
para el análisis probabilista de seguridad de sistemas estructurales sometidos a
cargas sísmicas. Otro trabajo relacionado con el comportamiento estructural es el
desarrollado por Hurtado (2001), quien aplica las redes neuronales en la mecánica
estocástica.
Otras herramientas de inteligencia computacional han sido aplicadas en el
campo de la evaluación de daños, como es el caso de Chou and Ghaboussi (2001),
quienes estudiaron la aplicación de algoritmos genéticos a la detección de daños,
usando medidas de los desplazamientos para identificar cambios en las propiedades
de los elementos estructurales, como la sección trasversal y el módulo de Young.

D.5. Referencias
Bishop C. M. (1995). Neural Networks for Pattern Recognition. Clarendon press Oxford.
Chou J-H, y Ghaboussi J. (2001). Genetic algorithm in structural damage detection.
Computers & Structures 79, pp. 1335-1353.
Hurtado J.E. (2001). Neural networks in stochastic mechanics. Archives of computational
methods in engineering, State of the art reviews, 8 (3), p.p. 303-342.
Jang J.-S.R., Sun C. –T., & Mizutani E. (1997). Neuro-Fuzzy and soft computing. A
computational approach to learning and machine intelligence. London, UK: Prentice-Hall.
Looney C.G. (1997). Pattern Recognition using Neural Networks. Theory and Algorithms for
Engineers and Scientists.
Lagaros N.D., Papadrakakis M., Fragiadakis M., Stefanou G. y Tsompanakis Y. (2005).
Recent developments in neural network aided stochastic computations and
earthquake engineering. International Symposium on Neural Networks and Soft Computing
in Structural Engineering NNSC-2005. Cracow, Poland, June 30 - July 2, 2005.
238 Apéndice D

Martín del Brío B. y Sanz A. (2001). Redes neuronales y sistemas borrosos. Ra-Ma Editorial,
Madrid, España.
Nauck D., Klawonn F., & Kruse R. (1997). Foundations of neuro-fuzzy systems. Chichester,
England: John Wiley & Sons.
Paolucci, Roberto, Colli, P., y Giacinto, G.. Assessment of Seismic Site Effects in 2-D
Alluvial Valleys Using Neural Networks. Earthquake Spectra, Volume16, Number 3.
August 2000.
Rumelhart D. E. Hinton G. E. y Williams R.J. (1986). Learning representations by
backpropagating errors. Nature, 323, 533-6.
Rutkowska D. (2002). Neuro-fuzzy architectures and hybrid learning, Physica Verlag,
Heidelberg, Germany.
Zadeh L. A. (1992). Fuzzy logic, neural networks and soft computing. One-page course
announcement of CS 294-4, Spring 1993, the University of California at Berkeley.
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

Aplicaciones de las redes neuronales. El caso de la Bibliometría


Sotolongo, G.*; Guzmán, Maria Victoria*
Centro de Investigación-Producción de Vacunas y Sueros. Ave. 27 No. 19805, La Lisa, A.P. 16017
Cod. 11600. La Habana, Cuba. Telf: 53 (7) 33 62 12
e-mail: mvguzman@finlay.edu.cu, gsotolongo@finlay.edu.cu

RESUMEN

Las redes neuronales artificiales (RNA) son aplicadas en diversos ámbitos de la actividad
humana. Una de sus aplicaciones es como herramienta de análisis de información,
específicamente dentro de la Bibliometría. En este trabajo se hace una introducción sobre
las particularidades de las RNA, específicamente las basadas en el modelo Kohonen (Mapas
auto-organizativos). Se exponen los elementos que la integran y se vincula su principio de
funcionamiento con la Bibliometría. Se utiliza y caracteriza un software llamado Viscovery
SOMine que retoma, para su funcionamiento, el concepto y los algoritmos de los mapas
auto-organizativos. Se ejemplifica la utilidad de las RNA, dentro de la Bibliometría, a través
de casos prácticos.

ABSTRACT

The artificial neuronal networks (ANN) are applied in a wide range of the humankind
activities. One of them is as a tool for the data analysis, specially within Bibliometrics. In this
paper an introduction to some special features of the ANN is made, mainly those based on
the Kohonen model(Self-organizing maps). The different elements that form these networks
are presented and their working principle is linked to the Bibliometrics. A software called
Viscovery SOMine that takes, for its own running, the concepts and algorisms from the Self-
organizing maps is used and characterized. Finally, the use of the ANN in the Bibliometrics is
shown through different case of studies.

1
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

Introducción
Las técnicas computacionales, desde sus inicios, marcaron un paradigma en la creación. Sus
aplicaciones, hoy día, van desde la industria de los juegos hasta las cadenas de producción
de varias empresas. Para ello se han desarrollado múltiples técnicas como las relacionadas
con la inteligencia artificial. Las más conocidas son la lógica difusa (aprendizaje inductivo),
algoritmos genéticos y redes neuronales.

En la década de los 50, existían grandes aspiraciones respecto a las investigaciones


relacionadas con la inteligencia artificial, sobre todo con aquellas que tenían como objeto
principal las redes neuronales artificiales (RNA). Los trabajos Principles of neurodynamic y
The perceptron: A probabilistic model for information storage and organization in the brain,
desarrollados por Rosenblatt1, abren nuevas perspectivas sobre la temática. Sin embargo,
las teorías desarrolladas durante este período son arruinadas por Minsky y Papert2, pues
ambos publican una obra titulada Perceptrons donde se hace una crítica al modelo neural y
se trata de plasmar lo estériles que eran las investigaciones en esta línea [10].

Unos veinte años después, en la década de los 70, resurgen estas teorías y se despierta el
interés en sus aplicaciones. Actualmente las redes neuronales se emplean en diferentes
campos, estos se agrupan según varios criterios. Uno de ellos es el propuesto por Deboeck
[3], quien los agrupa en:

• Modelación financiera y económica.


• Perfiles de mercado y clientes.
• Aplicaciones médicas.
• Gerencia del conocimiento y “descubrimiento de datos”.
• Optimización de procesos industriales y control de calidad.
• Investigación científica.

1
Rosenblatt, F. The perceptron: A probabilistic model for information storage and organization in the
brain. Psychol. Rev. 65(3):386-408.
2
Minsky, M.; Papert, S. Perceptrons. Massachusetts: Cambridge University; 1969; 226 p.
2
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

El objetivo del presente trabajo es utilizar la base teórica de las redes neuronales artificiales
como una herramienta práctica que permita realizar análisis exploratorios de datos o minería
de datos vinculados con los indicadores bibliométricos. Para el logro de este objetivo se
utiliza y caracteriza un software llamado Viscovery SOMine [4] que retoma, para su
funcionamiento, el concepto y los algoritmos de los mapas auto-organizativos.

1. Redes neuronales artificiales.

Una red neuronal, según Freman y Skapura [5], es un sistema de procesadores paralelos
conectados entre sí en forma de grafo dirigido. Esquemáticamente cada elemento de
procesamiento (neuronas) de la red se representa como un nodo. Estas conexiones
establecen una estructura jerárquica que tratando de emular la fisiología del cerebro busca
nuevos modelos de procesamiento para solucionar problemas concretos del mundo real. Lo
importante en el desarrollo de la técnica de las RNA es su útil comportamiento al aprender,
reconocer y aplicar relaciones entre objetos y tramas de objetos propios del mundo real. En
este sentido, se uilizan las RNA como una herramientas que podrá utilizarse para resolver
problemas difíciles.

La posibilidad de resolver problemas difíciles es dable gracias a los principios de las redes
neuronales, los cinco más importantes son citados por Hilera y Martínez [6]. Estos son
enunciados a continuación:

Aprendizaje adaptativo: Esta es quizás la característica más importante de las redes


neuronales, pueden comportarse en función de un entrenamiento con una serie de ejemplos
ilustrativos. De esta forma, no es necesario elaborar un modelo a priori, ni establecer
funciones probabilísticas. Una red neuronal artificial es adaptativa porque puede modificarse
constantemente con el fin de adaptarse a nuevas condiciones de trabajo.

Autoorganización: Mientras que el aprendizaje es un proceso donde se modifica la


información interna de la red neuronal artificial, la autoorganización consiste en la
modificación de la red completa con el fin de llevar a cabo un objetivo específico.

3
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

Autoorganización significa generalización, de esta forma una red puede responder a datos o
situaciones que no ha experimentado antes, pero que puede inferir sobre la base de su
entrenamiento. Esta característica es muy útil sobre todo cuando la información de entrada
es poco clara o se encuentra incompleta.

Tolerancia a fallos: En la computación tradicional la pérdida de un fragmento pequeño de


información puede acarrear comúnmente la inutilización del sistema. Las redes neuronales
artificiales poseen una alta capacidad de tolerancia a fallos. Se entiende por ello que las
redes pueden reconocer patrones de información con ruido, distorsión o incompletos, pero
que, además, pueden seguir trabajando aunque se destruya parte de la red (con cierta
degradación). La explicación de este fenómeno se encuentra en que mientras la computación
tradicional almacena la información en espacios únicos, localizados y direccionables, las
redes neuronales lo hacen de forma distribuida y con un alto grado de redundancia.

Operación en tiempo real: Las redes neuronales artificiales, de todos los métodos existentes,
son las más indicadas para el reconocimiento de patrones en tiempo real, debido a que
trabajan en paralelo actualizando todas sus instancias simultáneamente. Es importante
destacar que esta característica solo se aprecia cuando se implementan redes con hardware
especialmente diseñados para el procesamiento paralelo.

Fácil inserción en la tecnología existente: Es relativamente sencillo obtener chips


especializados para redes neuronales que mejoran su capacidad en ciertas tareas. Ello
facilita la integración modular en los sistemas existentes.

Al profundizar en los principios de las RNA y observar continuamente el término neurona no


es de extrañar que se piense por analogía en el cerebro humano, este hecho quizás se deba
a que las RNA están basadas en la inspiración biológica. El hombre posee cerca de
10 000 000 000 de neuronas masivamente interconectadas, la neurona es una célula
especializada que puede propagar una señal electroquímica. Las neuronas tienen una
estructura ramificada de entrada (las dendritas) y una estructura ramificada de salida (los
axones). Los axones de una célula se conectan con las dendritas de otra, por vía de la

4
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

sinapsis la neurona se activa y excita una señal electroquímica a lo largo del axón. Esta
señal transfiere la sinapsis a otras neuronas, las que a su vez pueden excitase. Las neuronas
se excitan sólo sí la señal total recibida en el cuerpo de las células, por conducto de las
dendritas, es superior a cierto nivel (umbral de excitación) [11].

Las redes neuronales artificiales tratan de imitar este principio de funcionamiento cerebral.

1.2. Estrutura de una red neuronal artificial.

Las redes neuronales artificiales están formadas por una gran cantidad de neuronas, estas
no suelen denominarse neuronas artificiales sino nodos o unidades de salida. Un nodo o
neurona cuenta con una cantidad variable de entradas que provienen del exterior
(X1, X2, ......, Xm). A su vez dispone de una sola salida (Xj) que transmitirá la información al
exterior o hacia otras neuronas. Cada Xj o señal de salida tiene asociada una magnitud
llamada peso este se calculará en función de las entradas, por lo cual cada una de ellas es
afectada por un determinado peso (Wjo...Wjq+m) (13). Los pesos corresponden a la
intensidad de los enlaces sinápticos entre neuronas y varían libremente en función del tiempo
y en cada una de las neuronas que forman parte de la red. (Fig. 1).

X0
Wjo

X1 Wjq+1 Red Xj
F A

Wjq+m Función de activación: Determina el valor


Xm de salida final
Elementos de procesamiento

Función de combinación: Combinación


de las señales de entradas

Kornilov, A.R. Intelligent technologies new opportunities for modern industry. Information Technology. 1997; 3:1-14.
Fig 1. Esquema de una neurona.

5
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

El proceso de aprendizaje consiste en hallar los pesos que codifican los conocimientos. Una
regla de aprendizaje hace variar el valor de los pesos de una red hasta que estos adoptan un
valor constante, cuando esto ocurre se dice que la red ya "ha aprendido". [15]
Al conectar varias neuronas de un determinado modo, se consigue una red. Existen
variaciones de topologías, que se clasifican según tres criterios:
1) Número de niveles o capas.
2) Número de neuronas por nivel.
3) Formas de conexión.

El diseño de una u otra tipología depende del problema a solucionar por ejemplo para
elaborar un programa de filtro digital en una computadora, se debe emplear un algoritmo en
que todas las capas estén uniformemente interconectadas, o sea que todos lo nodos de una
capa esten conectados con los nodos de otra capa. En la Figura 2 se muestra la arquitectura
de una RNA clásica con variables de entrada, dos capas de neuronas intermedias y y una
capa de salida. Todas ellas conectadas entre sí.

Fig. 2. Esquema de una RNA de dos capas de neuronas intermedias.

Otro algoritmo de RNA es el que aparece en la Figura 3, en este ejemplo las neuronas se
organizan en una tipología de capas diferentes. Solo incluye una capa neuronal oculta, este
algoritmo es muy elemental y es muy utilizado a nivel académico para la construcción y
prueba de diferentes tipos de modelos de red.

6
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

Fig. 3. Esquema de una RNA del tipo alimentación directa (feed forward). Topología
con una capa de neuronas intermedias.

Existe una gran variedad de modelos de redes neuronales estos dependen del objetivo para
el cual fueron diseñados y del problema práctico que solucionan. Hoy en día, su éxito
depende en, gran medida, del valor comercial que logren alcanzar sus aplicaciones. En
dependencia de ello unos serán más populares que otros, entre los más conocidos están el
Adaline/Madaline (utilizado en el diseño y realización de filtros, para llevar a cabo la
eliminación del ruido en señales portadoras de información, modems, etc.), el back
propagation (utilizado en el proyecto de la máquina de escribir neural fonética) y el modelo de
los mapas auto-organizados (Self-Organizing Map, SOM). Este último es conocido como
modelo de Kohonen por ser este su creador, un análisis más detallado de este modelo
aparece en el acápite siguiente.

2. Modelo Kohonen

Este modelo surge ante la curiosidad de Teuvo Kohonen, quien interesado en comprender la
clasificación natural que hace el cerebro en cuanto a su funcionalidad, ideó el algoritmo
SOM. Una definición simplificada sobre los mapas topológicos podría ser que, en una
correspondencia que respecte la topología, las unidades que se encuentran físicamente
próximas entre sí van a responder a clase de vectores de entrada que, análogamente, se
encuentren cerca unos de otros. Los vectores de entrada de muchas dimensiones son

7
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

representados sobre el mapa bidimensional, de tal manera que se mantenga el orden natural
de los vectores de entrada. [3, 5, 9].

Estos mapas presentan la característica de organizar la información de entrada, de entre un


gran volumen de datos, clasificándola automáticamente, esto permitirá visualizar relaciones
importante entre datos. Este modelo es muy útil para establecer relaciones desconocidas
previamente

Este modelo de RNA es del tipo “aprendizaje autoorganizado” que como se explicó con
anterioridad es un proceso donde las neuronas aprenden mediante la autoorganización.
Durante el proceso de aprendizaje, al ingresar un dato solo una neurona que tenga una
actividad positiva dentro de la vecindad será activada en la capa de salida.

La arquitectura SOM se ha extendido a infinidad de aplicaciones, es por ello que este


algoritmo y sus modelos se han automatizado para dar vida a varios software como son el
Viscovery SOMine y el WEBSOM (7). Ambos son utilizados en el análisis y filtrado de
información, el Viscovery ha sido validado tanto en estudios de mercado como análisis
financiero o proyecciones urbanísticas. Actualmente está incursionando en el tratamiento de
la información usando herramientas diseñadas por la bibliometría. [13, 14].

2.1. Los mapas autoorganizados aplicados a la Bibliometría.

La Bibliometría es una disciplina que estudia los aspectos cuantitativos de la información


registrada, para ello se han creado una serie de modelos estadísticos que aportan datos
numéricos sobre el comportamiento de la actividad científica. También se han adaptado
modelos de otras disciplinas para facilitar los análisis y representar los resultados
desarrollados a partir de la Bibliometría. Los mapas auto-organizados (SOM) o modelo de
Kohonen (basado en las RNA) es una de estas herramientas.

En los estudios métricos la aplicación de las redes neuronales, y específicamente los SOM,
están asociados en lo fundamental con la clasificación de información, o sea, la formación de

8
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

cluster y su representación en mapas bidimensionales de conceptos y más específicamente


con el descubrimiento de información (data mining). Este último vinculado con la
recuperación de la información con "ruido" e incompleta o con el tratamiento de información
que incluye diferentes tipos de datos (números, texto, registros estructurados, etc.). Los SOM
facilitan que el conocimiento tácito se haga explícito, a partir de la extracción no-trivial (a
partir de los datos) de conocimientos implícitos potencialmente útiles desconocidos
previamente. Se podrán encontrar patrones o estructuras en el conocimiento tácito.

Las investigaciones bibliométricas, a través de la utilización de las redes neuronales,


incursionan en:

• la selección de variables,
• clasificación de información o formación de cluster,
• regresión,
• relaciones entre variables,
• cambios y desviaciones,
• representación de las variables.

Lo anterior se puede ejemplificar a partir de algunas aplicaciones prácticas relacionadas con


la evaluación de páginas web [8] y trabajos relacionados con la clasificación de revistas en
un determinado campo temático [9]. Se conocen, además, investigaciones relacionadas con
la minería de textos (text mining) sobre todo aplicado a la asociación de palabras o co-word.
En todos estos ejemplos se utiliza como variante de las RNA el modelo de los mapas auto-
organizativos (self-organizing map, SOM). En un análisis, realizado por los autores sobre el
tema, se examinaron cerca de 56 documentos sobre redes neuronales aplicadas al análisis
de información, con ello se constato que la mayoría utilizaban el modelo SOM como
herramienta de estudio. (2, 7, 8,12,16).

Un ejemplo de SOM podría ser.el estudio de una temática determinada, para este caso en un
mapa cada documento (artículo de revista, podría ser una patente, una tesis, etc.) va a
ocupar un lugar en el espacio, en función de su contenido temático. Cada área del mapa va a

9
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

reflejar un contenido específico y los tópicos van variando levemente a lo largo del mismo.
Las diferentes tonalidades indican la densidad de documentos, cuanto más oscura más
documentos se encuentran.

Este uso frecuente de los SOM quizás se deba a lo amigable de la interfaz de los mapas
para los usuarios finales y a la diversidad de sus utilidades prácticas, estas representaciones
son válidas para poder identificar, además de los desarrollos temáticos antes mencionados,
relaciones entres áreas temáticas y publicaciones, alianzas estratégicas y características de
la cooperación. Permite, también, visualizar los avances tecnológicos que tienen lugar en un
período, conocer la evolución de una tecnología a través del tiempo e identificar campos
emergentes.

En el acápite anterior se mencionó al Viscovery SOMine como un software que ha


automatizado el modelo SOM. Este sistema es utilizado por un equipo de trabajo del Instituto
Finlay para elaborar mapas científico-tecnológicos. La lógica de funcionamiento del Viscovery
SOMine se muestra en la Figura 4.

Pre-procesamiento
Datos
Datos
Pre-procesamiento
de
dedatos
datos
Flujo de información
Viscovery®SOMine
Algoritmo
AlgoritmoSOM
SOM++
Asociaciones
Asociaciones

Clusters
Clusters
Visualización

Mapa
Mapa Graficos Exploración
de características Graficos
de características
Evaluación
Valores
Valores
Modelado
Filtrado
Filtrado
Datos Recobrado
Datos Recobrado
Monitoreo
Monitoreo

Predicción Estadística Clasificación


Predicción Estadística Clasificación

Fig. 4. Funcionamiento del Viscovery SOMine.

10
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

El punto de partida, para el uso de esta herramienta, es la entrada de un conjunto de datos


numéricos (datos multivariables, variables, “nodos” ). Estos datos necesitan ser pre-
procesados con el objetivo de “organizarlos” en forma de matrices. Los datos son convertidos
hasta obtener una información visual en forma de mapa, para ello se aplica un número de
técnicas de evaluación como coeficientes de correlación entre variables o factores
discriminantes [4, 13, 14]. Los mapas serán amigables a la vista del usuario final, en ellos se
identificarán dependencias entre parametros, cluster y gráficos que facilitarán diferentes
predicciones o el proceso de monitoreo.

Aplicaciones

Se estima que a pesar de las limitaciones técnicas, las redes neuronales aplicadas a la
Bibliometría constituyen un campo de investigación muy prometedor. Un ejemplo es
presentado a continuación.

La disciplina muldidisciplinar de las redes neuronales es aplicada en esta sección, donde se


asume a la producción de los documentos de patentes como indicador de la capacidad de
desarrollo industrial. El objetivo es identificar posibles competidores, alianzas estratégicas,
dependencia tecnológica, etc.

Se escogió para el primer ejemplo la representación de la situación tecnológica de la


Neisseria meningitidis.3

Las diferentes instituciones en la primera hoja de sus patentes hacen referencias a otras
patentes, a partir de estos datos se puede inferir el impacto que produce una tecnología o

3
Entre las bacterias causantes de la meningitis cerebroespinal, la Neisseria meningitidis es el agente
causal más frecuentemente encontrado. La enfermedad se presenta en todo el mundo y se manifiesta
de forma endémica o epidémica).

11
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

institución en otra. Con el objetivo de determinar la dependencia tecnológica entre


instituciones, se realizó un análisis de citas, estas formaron los cluster que aparecen en la
figura 5.

Fig. 5. Posición tecnológica de las instituciones según las citaciones.

El mapa tecnológico presentado en la figura anterior representa a tres cluster: cluster 1


formado solamente por la Merck & Co., un cluster 2 formado únicamente por el National
Res. Council of Canada y el cluster 3 que incluye al resto de las instituciones. Este último
grupo está formado por una gran cantidad de instituciones que tienen igual estrategia de
citación, sobre todo las representadas con colores más claros y sin límites de separación. Se
presupone que estas firmas se basan para su desarrollo en su propia base tecnológica, pues

12
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

citan poco a otras instituciones. El cluster 2 evidencia un alto nivel de autocitación, cuando
esto sucede, algunos investigadores [1] en el tema señalan que probablemente esta
institución tenga un nicho de protección cerrada sobre un espacio tecnológico. Puede estar
ocurriendo que exista una patente importante, la cual se ha rodeado de invenciones
mejoradas. El cluster formado por la Merck & Co. indica un mayor nivel de citación, esto
presupone una estrategia balanceada: absorbe tecnología externa y produce tecnología
propia. La cercanía de los cluster también es una evidencia sobre las instituciones que tienen
estrategias parecidas a la de otras. La Rockefeller University hace frontera con el cluster que
incluye a North American Vaccine, y el National Res. Council de Canada; estas instituciones
forman un colegio tecnológico invisible que basa sus desarrollos en la misma innovación
tecnológica.

Otro ejemplo

Otra aplicación se presenta en un campo diferente del conocimiento: la agricultura. En este


ejemplo no solo se tomó como elemento de entrada la producción documental de
determinados países, también se consideraron otros tipos de variables como "gastos en I+D"
en cada uno de los países analizados, "personal dedicado a actividades de I+D", etc.

13
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

Fig. 6. Mapa de América Latina y el Caribe (países seleccionados) de acuerdo con la


actividad en ciencia agrícola.

En la figura 6 se presenta un mapa auto-organizado sobre la actividad en ciencia agrícola en


América Latina y el Caribe (se seleccionaron algunos países según los datos disponibles).
Con ello se pretende lograr una representación de la región, teniendo en cuenta los
indicadores de insumo y de resultados más significativos. En la figura aparecen, en dos
dimensiones, 22 países. La semejanza de los países, considerando de forma simultánea los
20 indicadores, se expresa mediante la cercanía de estos en el mapa.

Los 22 países se agrupan (autorganizan) en 3 clusters o grupos: El cluster C1, que aparece
en la esquina inferior izquierda, es seguido por una banda de 4 países correspondientes al
cluster C2 (Cuba, Colombia, Chile y Venezuela) y otro cluster (C3) con el resto de los países.
14
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

En el ámbito regional e internacional hay un grupo de países formado por Brasil, México y
Argentina que tienen una investigación en la temática con mayor solidez y con parecidos
niveles de desarrollo. Esto coincide con los países que presentan mayor nivel regional en el
desarrollo agrícola.

Consideraciones finales

Ante los ejemplos expuestos, se hace evidente que las redes neuronales artificiales,
específicamente las basadas en el modelo Kohonen, pueden ser aplicadas como una
herramienta de análisis con múltiples propósitos.

Existen experiencias prácticas sobre estudios de mercado, análisis financieros, líneas de


procesos industriales, control de la calidad y sistemas de vigilancia tecnológica. Existen
análisis macro-económicos, por ejemplo, para representar datos coleccionados durante un
período de 20 años sobre un país determinado, el Viscovery SOMine genera un mapa en el
cual se representan el conjunto de los datos. Los cluster representan, entre otros resultados,
las diferentes fases económicas durante ese período de tiempo.

El vínculo de la Bibliometría con las redes neuronales se muestra muy fructífero. Esta
herramienta de análisis debe ser estudiada no solo por la Bibliometría, sino también por
otras disciplinas, las cuales pueden potenciar con ella su propio desarrollo.

Referencias

1. Battelle Memorial Institute. Keeping abreast of science and technology: technical for
business. Ashton, B., Klavans, R.A. Ohio: Battelle Memorial Institute, 1997, 557 p.

2. Campanario, J.M. Using neural networks to study networks of scientific journals.


Scientometrics. 33(1):23-40, 1995.

15
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

3. Deboeck, Guido J. Pattern recognition and prediction with self-organizing maps and ork /
AIabtext.html supporting software review: visualization through viscovery [en línea]. <
http://www.gordiand-knot.com >>. Gordian Institute Electronic NewsLetter. [Consulta: 20
de febrero 2000.]

4. Eudaptics Software Gmbh. Viscovery® for CRM-applications (Viscovery White Paper) [en
línea]. <<http://www.eudatic.com>>. [Consulta: diciembre de 1999].

5. Freeman, J.A.; Skapura, DM. Redes Neuronales. Algoritmos, aplicaciones y técnicas de


propagación. México: Addison-Wesley. 1993; 306 p.

6. Hilera González, J.; Martínez Hernández, V. Redes neuronales artificiales: fundamentos,


modelos y aplicaciones. Madrid, RA-MA, 1995. 389 p.

7. Honkela, T. y otros. Newsgroup exploration with WEBSOM method and browsing


interface. Espoo. Helsinki, University of Technology, Laboratories of Computer and
Information Science. 1996. (Technical Report, A32).

8. Kaski, S. y otros. Creating an order in digital libraries with selft-organizing map. In:
Proceeding of World Congress on Neural Networks, WCNN'96. Mahwah, NJ, INNS Press,
1996. 1996, pp. 814-817.

9. Kohonen, T. Self-Organizing-Maps. Springer, Berlin, Second edition. 1997, 362 p.

10. Kornilov, A.R. Intelligent technologies new opportunities for modern industry. Information
Technology. 1997; 3(6):1-14.

11. Neurofisiología [CD-ROM], Enciclopedia Microsoft(R) Encarta(R) 99. (c) 1993-1998


Microsoft Corporation.

16
Sotolongo, G.; Guzmán, MV.
Aplicaciones de las redes neuronales. El caso de la bibliometría.
Ciencias de la Información. (preprint) 2001; 32(1):27-34.

12. Polanco, Xavier; Francois, C., Keim, JF. Artificial neural network technology for the
classification and cartography of scientific and technical information. In: Periz, B.,
Egghe, L. Procceding Sixth International Conference of the International Society for
Scientometrics and Informetrics; Jerusalem, Israel, 1997. Jerusalem, Universidad Hebrew
of Jerusalem, 1997, pp. 319-330.

13. Sotolongo, G; Suárez, CA.; Guzmán, MV. Modular Bibliometrics Information System with
Propietary Software (MOBIS-ProSoft): a versatile approach to bibliometric research tools.
Library and Information Science Electronic Journal (LIBRES). 2000; 10(2):
http://libres.curtin.edu.au/

14. Sotolongo, G; Suárez, CA.; Guzmán, MV. Modular Bibliometrics Information System with
Propietary Software: In: Macías-Chapula, C. (Ed.). In: Proceedings of the Seventh
International Society for Scientometrics and Informetrics. Universidad de Colima, México.
1999; 313-322.

15. StatSoft, Inc. Neural Networks. Statistica for Windows [Computer program manual]. Tulsa,
Oklahoma: StatSoft, Inc. <<http://www..statsoft.com>>. [Consulta: diciembre del 2000].

16. Swanson, D. R. y N. R. Smalheiser. An interactive system for finding complementary


literatures: a stimulus to scientific discovery. Artificial Intelligence. 91(3):183-203, 1997.
También disponible en <http://kiwi.uchicago.edu/web>>.

17

También podría gustarte