El presente artículo técnico tiene la siguiente estructura: estado del arte, resultados y conclusiones.
El estado del arte se define en las 5 primeras secciones:
Sección 1: Neurona biológica y artificial, describe la estructura neuronal.
Sección 2: Funciones de activación o trasnferencia, se realiza una comparación de las funciones de activación más utilizadas.
Sección 3: Funciones satlin y satlins, describe la aplicación de estas funciones.
Sección4: Redes neuronales de hopfield, describe la arquitectura de una red de hopfield.
Sección5: Diseño de una red de Hopfield, describe el diseño de la red de hopfield.
Resultados del ejercicio práctico:
Sección 7: Reconocimiento de Dígitos impares con Hopfield, se presenta la solución en matlab y resultados obtenidos.
Sección 8: Conclusiones.
1. Funciones de Transferencia Satlin y Satlins Aplicadas para
Reconocimiento de D´ıgitos a Trav´es de Matlab
Sairy Chamba1, Juan Pinz´on2, Tutor: Henry Paz3
1Carrera de Ingenier´ıa en Sistemas, Universidad Nacional de Loja, Loja, Ecuador
fsfchambaj, jgpinzong, hpaz@unlg@unl.edu.ec
Abstract: In this paper is explained the Satlin and
Satlins Transfer functions, through the aplication
of this in matlab. It also gives a brief explanation
on Hopfield neural networks which use the transfer
function satlins default, as well as an example of
recognition of digits in matlab will be done using the
same.
Key words: Neural Network, Satlin, Satlins, Hop-field
Network.
Resumen: En este documento se explica, las fun-ciones
de transferencia: satlin y satlins, a trav´es de
la aplicaci´on de las mismas en matlab. Tambi´en se
da una breve explicaci´on sobre las redes neuronales
de hopfield las cuales usan la funcion de transferencia
satlins de manera predeterminada, asi como tambien
se har´a un ejemplo de reconocimiento de digitos en
matlab usando las mismas.
Palabras Clave: Red Neuronal, Satlin, Satlins, Red
de Hopfield.
1 INTRODUCCIO´ N
El presente art´ıculo t´ecnico tiene la siguiente estruc-tura:
estado del arte, resultados y conclusiones.
El estado del arte se define en las 5 primeras sec-ciones:
Secci´on1: Neurona biol´ogica y artificial, describe
la estructura neuronal.
Secci´on2: Funciones de activaci´on o trasnferen-cia,
se realiza una comparaci´on de las funciones
de activaci´on m´as utilizadas.
Secci´on3: Funciones satlin y satlins, describe la
aplicaci´on de estas funciones.
Secci´on4: Redes neuronales de hopfield, describe
la arquitectura de una red de hopfield.
Secci´on5: Dise˜no de una red de Hopfield, de-scribe
el dise˜no de la red de hopfield.
Resultados del ejercicio pr´actico:
Secci´on 7: Reconocimiento de D´ıgitos impares
con Hopfield, se presenta la soluci´on en matlab
y resultados obtenidos.
Secci´on 8: Conclusiones.
2 NEURONA BIOLO´ GICA Y
ARTIFICIAL
Desde el punto de vista estructural, la mayor parte de
las neuronas consisten en un cuerpo celular, que pre-senta
una serie de ramificaciones denominadas den-dritas
y una ramificaci´on m´as larga que se denomina
ax´on (Figura 1). El ax´on transporta la se˜nal de sal-ida
de la neurona hacia otras neuronas. Por otro lado,
las entradas le llegan a trav´es de las dendritas, proce-dentes
de los axones de otras c´elulas. Las conexiones
existentes entre el ax´on de una neurona y la dendrita
de otra se denominan sinapsis (M. Galipienso and Or-tega,
2003).
Figure 1: Similitud entre neuronas biol´ogicas y artificiales
(M. Galipienso and Ortega, 2003)
En En 1943 McCulloch and Pitts presentaron un mod-elo
abstracto y simple de una neurona artificial. El
modelo est´a compuesto por un vector de pesos w =
(w1; :::;wd) equivalente a las conexiones sin´apticas en
una neurona real, w0 es el umbral de acci´on o acti-vaci
´on, el vector x es la entrada, y el escalar y la sal-
2. ida de la unidad. La actividad consiste en generar una
´unica salida y a partir de la aplicaci´on de la funci´on
de activaci´on f a la suma ponderada entre el vec-tor
de entrada x = (x1; :::;xm) y el vector de pesos
w = (w1; ::;wd), m´as un sesgo w0, obteni´endose la
siguiente expresi´on (McCulloch and Pitts, 1943) :
y = f (
må
i=1
wixi+w0)
La funci´on de activaci´on f debe elegirse tomando
en cuenta el problema que la neurona deber´a resolver.
3 FUNCIONES DE ACTIVACIO´ N
O TRANSFERENCIA
Una neurona artificial tiene diferentes estados de ac-tivaci
´on, que pueden ir desde 2 estados (al igual que
una neurona biol´ogica) hasta varios estados compren-didos
en un rango determinado. La funci´on de acti-vaci
´on calcula el estado de actividad de una neurona,
transformando la entrada global (a excepci´on del um-bral)
en un valor de activaci´on, cuyo rango general-mente
va de 0 a 1 , o de -1 a 1. Estos valores indican
que una neurona puede estar totalmente inactiva (0 o
1), o activa (1) (Matich, 2001).
Existen diversos tipos de funciones de transferencia,
entre estos tenemos (Buitrago and Mu˜noz, 2000):
Funci´on de Tranferencia Escal´on
Funci´on de Tranferencia Lineal
Funci´on de Tranferencia No lineal
Funci´on de Tranferencia de Saturaci´on
Funci´on de Tranferencia Competitiva
4 FUNCIONES SATLIN Y
SATLINS
Son funciones de transferencia de Satruraci´on, y
se caracterizan porque saturan cualquier valor por
encima o debajo de los l´ımites. El l´ımite de saturaci´on
para Satlin es 0,1 y para Satlins es o -1,1 (ESCOM,
2009).
4.1 SATLIN
Se caracteriza porque la entrada a la funci´on de trans-ferencia
es del tipo real, y la salida es real y lin-eal
pero limitada al intervalo de 0 a 1. Es decir,
se satura cualquier valor por encima o debajo de los
l´ımites(ESCOM, 2009).
Figure 2: Funcion SATLIN (ESCOM, 2009)
En matlab la sintaxis de la funcion satlin es la sigu-iente:
A = satlin(N,FP)
Donde
N es una matriz de dimensiones SxQ de entradas de
red.
FP Parametros de funcion que pueden ser opcionales
o ignorados
4.1.1 Ejemplo
El c´odigo para crear un plot de la funci´on satlin en
matlab es:
n = -5:0.1:5;
a = satlin(n);
plot(n,a)
El Algoritmo que sigue la funcion satlin es el
siguiente:
a = satlin(n) = 0; i f n = 0 (1)
n; i f 0 = n = 1 (2)
1; i f 1 = n (3)
4.2 SATLINS
SATLINS Es una Funci´on de Trasferencia Lineal
de Saturaci´on Sim´etrica que excita a la red, la cual
regresa los valores de entrada reales para entradas
que existen entre –1 y +1. M´as all´a de estas regiones
los valores de entrada se saturan a sus m´ınimos y
m´aximos valores (-1 y +1) (ESCOM, 2009). Como
se puede observar en la siguiente gr´afica.
a = satlins (n)
a = satlins (w*p+b)
Donde: n es el vector de entrada.
w son los pesos.
b es el bias.
a es el vector de salida.
2
3. Figure 3: Funcion SATLINS (ESCOM, 2009)
En matlab la sintaxis de la funcion SATLINS es
la siguiente:
A = satlins(N,FP)
Donde:
N es la matriz S x Q de entradas de la red
FP Parametro de funcion (opcionales, pueden ser
ignorados)
y devuelve A, una matriz S x Q de elementos de N
entre [-1, 1].
4.2.1 Ejemplo
El codigo para crear un plot de la funci´on de transfer-encia
satlins en matlab es:
n = -5:0.1:5;
a = satlins(n);
plot(n,a)
El algoritmo que sigue la funci´on satlins es el
siguiente:
satlins(n) = 1; i f n = 1 (4)
n; i f 1 = n = 1 (5)
1; i f 1 = n (6)
Se puede crear una red estandar que use satlins uti-lizando
el comando newhop que crea una red neuronal
de hopfield.
5 REDES NEURONALES DE
HOPFIELD
La red de hopfield es de tipo recurrente y completa-mente
iterconectada, pues la salida de dicha red es
din´amica, lo que indica que despu´es de aplicar una
nueva entrada, la salida es calculada y realimentada
para modificar la entrada. Esta recurrencia asegura
la estabilidad haciendo que sucesivas iteraciones,
produzcan cambios de salida cada vez m´as peque˜nas,
hasta lograr que las salidas sean constantes (Bonifa-cio,
2007).
La red de Hopfield utiliza la funci´on de transferencia
lineal de saturaci´on sim´etrica (Satlins). Para las
entradas menores a -1 satlins produce -1. Para las
entradas en el rango de -1 a +1 simplemente devuelve
el valor de entrada. Para entradas superiores a 1
produce 1. A continuaci´on se presenta la arquitectura
de la red (Demuth and Hagan, 2008):
Figure 4: Arquitectura de una red Hopfield (Demuth and
Hagan, 2008)
El dise˜no de una red Hopfield en matlab se ejecuta de
la siguiente manera:
net=newhop(T); donde T es una matriz de vectores
que representa un conjunto de puntos de equilibrio.
A continuaci´on, se asegura de que la red est´e dise˜nada
en los puntos de equilibrio. Debido a que las redes de
Hopfield no tienen entradas el segundo argumento de
la red es una matriz de celdas vac´ıas, cuyas columnas
indican el n´umero de pasos de tiempo.
Ai = fTg;
[Y,Pf,Af] = net(cell(1,2),fg,Ai);
Yf2g
3
4. 6 DISEN˜ O DE UNA RED DE
HOPFIELD
El objetivo aqu´ı es el dise˜no de una red que almacena
un conjunto espec´ıfico de puntos de equilibrio de tal
manera que, cuando se proporciona una condici´on ini-cial,
la red con el tiempo se detiene en un punto del
dise˜no. La red es recursiva en el sentido que la sal-ida
realimenta a la entrada, una vez que la red est´a
en funcionamiento. Con suerte, la salida de la red se
instalar´a en uno de los puntos de dise˜no originales.
El m´etodo de dise˜no presentado no es perfecto porque
la red dise˜nada puede tener puntos de equilibrio falsos
no deseados adem´as de los deseados. Sin embargo,
el n´umero de estos puntos no deseados se hace tan
peque˜no como sea posible por el m´etodo de dise˜no.
Adem´as, el dominio de atracci´on de los puntos de
equilibrio dise˜nados es tan grande como sea posible.
El m´etodo de dise˜no se basa en un sistema de primer
orden de ecuaciones diferenciales ordinarias lineales
que se definen en un hipercubo cerrado del espacio de
estado. Las soluciones existen en el l´ımite del hiper-cubo.
Estos sistemas tienen la estructura b´asica del
modelo de Hopfield, pero son m´as f´aciles de enten-der
y dise˜nar que el modelo de Hopfield(Demuth and
Hagan, 2008).
6.1 Dise˜no(Newhop)
Dado un conjunto de puntos de equilibrio destino rep-resentados
como una matriz T de vectores, newhop
devuelve pesos y umbrales para una red recursiva. La
red est´a garantizada para tener puntos de equilibrio
estable en los vectores objetivo, pero podr´ıa contener
otros puntos de equilibrio falsos tambi´en. El n´umero
de estos puntos no deseados se hace tan peque˜no
como sea posible por el m´etodo de dise˜no(Demuth
and Hagan, 2008).
Se considera el siguiente ejemplo de dise˜no.
Suponga que desea dise˜nar una red con dos puntos
estables en un espacio tridimensional.
T = [-1 -1 1; 1 -1 1]’
T =
-1 1
-1 -1
1 1
Se puede ejecutar el dise˜no con:
net = newhop (T);
A continuaci´on, debemos asegurarnos de que la
red dise˜nada esta en esos dos puntos, de la siguiente
manera. Debido a que las redes de Hopfield no
tienen entradas, el segundo argumento de la red es
un arreglo de celdas vac´ıo cuyas columnas indican el
n´umero de incrementos de tiempo.
Ai = fTg;
[Y,Pf,Af] = net(cell(1,2),fg,Ai);
Yf2g
Esto da como resultado
-1 1
-1 -1
1 1
As´ı, la red de hecho ha sido dise˜nada para ser
estable en sus puntos de dise˜no. A continuaci´on,
puede intentar otra condici´on de entrada que no es un
punto de dise˜no, tal como:
Ai = [-0,9; -0.8; 0,7];
Los puntos estan razonablemente cerca del primer
punto de dise˜no, por lo que se podr´ıa anticipar que la
red ser´ıa convergente a ese primer punto.
Para ver si esto ocurre, ejecute el siguiente c´odigo.
[Y, Pf, Af] = net (celda (1,5), fg, Ai);
Y fendg
esto da como resultado
-1
-1
1
Por lo tanto, una condici´on original cerca de un
punto de dise˜no hizo converger a ese punto.
Esto es, por supuesto, el deseo para todas esas
entradas. Desafortunadamente, incluso los dise˜nos
m´as conocidos de Hopfield ocasionalmente incluyen
puntos estables falso no deseados que atraen la
soluci´on.
7 RECONOCIMIENTO DE
D´IGITOS IMPARES CON
HOPFIELD
Problema: Se necesita identificar los primeros cinco
d´ıgitos impares (1,3,5,7). Para respresentar cada
d´ıgito es necesario establecerlos dentro de un arreglo
de tama˜no 10*7.
Se dar´a el valor -1 para las celdas de color negro , y
4
5. Figure 5: Primeros cinco d´ıgitos impares
Arreglos de 10*7
el valor 1 para las celdas de color blanco. Cada ar-reglo
de 10*7 deber´a luego transformarse a un vector
de 70*1. Los vectores de nuevas dimensiones se de-nominar
´an como: DI1, DI2, DI3, DI4, DI5, respecti-vamente.
7.1 RESULTADOS
Soluci´on en Matlab: Para el reconocimiento de
los cinco vectores se aplicar´a una red Hopfield.
Primeramente obtenemos los arreglos iniciales de
dimensiones 10*7, los cuales est´an denominados
como: D1, D2, D3, D4 y D5. La representaci´on del
primer arreglo se muestra a continuaci´on:
D1=
[1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1]
Transformamos los arreglos de 10*7 a vectores de
70*1:
DI1=reshape(D1’,70,1);
DI2=reshape(D2’,70,1);
DI3=reshape(D3’,70,1);
DI4=reshape(D4’,70,1);
DI5=reshape(D5’,70,1);
D = [ DI1 DI2 DI3 DI4 DI5 ];
net = newhop( D );
net.lw
A continuaci´on verificamos el reconocimiento de
los vectores DI2 y DI4.
nVect = 1; %verificando el segundo d´ıgito
D2r = sim( net , nVect , [] , DI2 ) ;
any( DI2 - D2r ) % vectores iguales
nVeces = 100;
Alteramos el cuarto d´ıgito para simular la presencia
de ruido:
D4ruido=
[1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1
1 1 1 1 1 1 1]
DI4ruido=reshape(D4ruido’,70,1);
DI4ruido = DI4ruido ;
Para corregir el vector ruidoso hacemos uso de la
red hopfield:
Y = sim( net , f nVect nVeces g , f g , DI4ruido ) ;
Y 100 % muestra la ´ultima simulaci´on
any( DI4 - Y )
Se reconoce correctamente el segundo d´ıgito impar, y
esto se verifica con el comando any(DI2D2r), este
devuelve un valor 0, que indica que se ha alcando el
punto de quilibrio deseado.
ans= 0
El vector ruidoso es entrenado hasta alcanzar el punto
de equilibrio con respecto al cuarto d´ıgito impar.Los
valores son arrojados en forma de un vector 70*1.
ans= (vector 70*1)
El codigo del ejemplo realizado se encuentra
alojado en un repositorio github la direccion del
mismo es: https://github.com/pinzon1992/
SATLINSMATLAB, y para clonarlo en git el en-lace
es: https://github.com/pinzon1992/
SATLINSMATLAB.git
8 CONCLUSIONES
La sintaxis newhop(T) en matlab, utiliza la
funci´on de transferencia satlins y devuelve una
nueva red neuronal recurrente Hopfield con pun-tos
estables en el vector T.
En el ejemplo de reconocimiento de d´ıgitos im-pares,
una vez que finaliza la etapa de aprendizaje,
5
6. la red proporciona una salida correcta para cada
patr´on de entrada dado, incluso si el vector es rui-doso.
La red de Hopfield utiliza por defecto la funci´on
de transferencia Satlins ya que esta necesita sat-urarse
para obtener los puntos de equilibrio de la
misma y llegar al estado deseado.
REFERENCIAS
Bonifacio, M. (2007). Redes neuronales y Sistemas Bor-rosos.
Alfa y Omega., 2da edici´on edition.
Buitrago, M. and Mu˜noz, C. (2000). Tutorial sobre re-des
neuronales aplicadas en ingenier´ıa el´ectrica y su
implementaci´on en un sitio web. Universidad Tec-nol
´ogica de Pereira.
Demuth, H. and Hagan, M. (2008). Neural network
toolboxTM 6. User’s guide.
ESCOM (2009). Funciones de matlab en redes hopfield.
escuela superior de c´omputo. mexico.
M. Galipienso, M. Q. and Ortega, M. (2003). Inteligen-cia
artificial: modelos, t´ecnicas y ´areas de aplicaci´on.
Editorial Paraninfo.
Matich, D. (2001). Redes Neuronales: Conceptos B´asicos
y Aplicaciones. C´atedra de Inform´atica Aplicada a la
Ingenier´ıa de Procesos–Orientaci´on I.
McCulloch, W. and Pitts, W. (1943). A logical calculus of
ideas immanent in nervous activity.bulletin of mathe-matical
biophysics.
BIOGRAF´IA
Sairy Chamba profes-sional
training for Engineering degree in
Systems Engineering from Universidad
Nacional de Loja, Loja, Ecuador in 2014.
Juan Pinz´on professional
training for Engineering degree in Sys-tems
Engineering from Universidad Na-cional
de Loja, Loja, Ecuador in 2014.
6