Funciones de activación Satlin y Satlins en Matlab
1. 1
Funciones de activaci´on Satlin y Satlins en Matlab
G. Rodr´ıguez, L. Japa,
Tutor: H. Paz.
Abstract—In the present article focuses on the topic of neural
networks, where information will be collected about their history
and operation, then develop an application in matlab, where the
activation functions satlins and Satlin used.
Index Terms—neural network, activation function, neuron.
I. INTRODUCCI ´ON
Las redes neuronales son un elemento importante dentro
de Inteligencia Artificial (IA), que es la rama de
la computaci´on que se encarga, entre otras cosas, de los
problemas de percepci´on, razonamiento y aprendizaje en
relaci´on con sistemas artificiales, y que tiene como ´areas de
investigaci´on a los sistemas expertos y de conocimiento, la
rob´otica, los lenguajes naturales y las redes neuronales. [1].
Las redes neuronales, tambi´en llamadas ”redes de neuronas
artificiales”, son modelos bastante simplificados de las redes
de neuronas que forman el cerebro. Y, al igual que este,
intentan ”aprender” a partir de los datos que se le suministran.
As´ı, las principales caracter´ısticas que diferencian a las redes
neuronales de otras tecnolog´ıas de IA son:
• Su capacidad de aprendizaje a partir de la experiencia
(entrenamiento), para realizar una determinada tarea,
Adem´as; las redes neuronales pueden volver a entrenarse
para ajustarse a nuevas necesidades de la tarea que
realizan, sin tenerse que reescribir o revisar el c´odigo.
• Su velocidad de respuesta una vez concluido el entre-
namiento, se comportan de manera similar a como lo
hace el cerebro: los seres humanos no necesitamos pensar
mucho para identificar un objeto, una palabra,... una vez
hemos aprendido a hacerlo.
• Su robustez, en el sentido de que el conocimiento
adquirido se encuentra repartido por toda la red, de
forma que si se lesiona una parte se contin´uan generando
cierto numero de respuestas correctas.[1]
II. REDES NEURONALES
A. Historia de las Redes Neuronales
En la d´ecada de los 40 y principios de los 50 , varios
investigadores entre los que destacan McCulloch y Pitts
(1943), Householder y Landahl (1945), Kleene (1956), Von
Neumann (1956) y Culbertson (1956) elaboraron modelos
matem´aticos de neuronas y Redes Neuronales. En la d´ecada de
G. Rodr´ıguez, UNL, Loja, Ecuador, E-mail: gmrodriguezp@unl.edu.ec
L. Japa, UNL, Loja, Ecuador, E-mail: lijapaa@unl.edu.ec
H. Paz, UNL, Loja, Ecuador, E-mail: hpaz@unl.edu.ec
los 50, varios investigadores, entre ellos Farley y Clark (1954)
y Rochester, Holland, Haibt y Duda (1956), combinaron
los resultados obtenidos por los matem´aticos, bi´ologos y
los psic´ologos y desarrollaron modelos de simulaci´on en
computadora de neuronas y Redes Neuronales, dando lugar
a la forma actualmente m´as generalizada de trabajar con
estos sistemas: su simulaci´on mediante software, en una
computadora digital com´un. [2]
Frank Rosenblatt desarroll´o el Perceptr´on (Rosenblatt
1958), que fue la primera red neuronal artificial especificada
con toda precisi´on y orientada computacionalmente. Como era
una m´aquina que pod´ıa aprender y demostrar comportamiento
adaptativo complejo, atrajo de inmediato la atenci´on de los
investigadores. Asimismo, Rosenblatt desech´o el enfoque
de te´oricos anteriores, y vi´o al cerebro como un asociador
y clasificador, cuya misi´on era asociar respuestas de
clasificaci´on a est´ımulos espec´ıficos. En 1962 Rosenblatt
public´o su libro Principles of Neurodynamics (Rosenblatt
1962) en el que present´o formalmente el Perceptr´on como
modelo para construir Redes Neuronales artificiales.[2]
Los perceptrones se aplicaron r´apidamente a resolver prob-
lemas tales como la predicci´on climatol´ogica, la interpretaci´on
de electrocardiogramas y otros. Tal parec´ıa que se hab´ıa hal-
lado la clave para comprender el funcionamiento cerebral, em-
ulando las Redes Neuronales naturales mediante redes comple-
jas de perceptrones. Sin embargo, pronto se comprob´o que las
redes con una capa de perceptrones eran incapaces de resolver
problemas tan simples como la simulaci´on de una compuerta
l´ogica de tipo O exclusivo y, tras una investigaci´on sobre las
limitaciones de los perceptrones, Minsky y Pappert publicaron
el libro Perceptrons (Minsky Pappert 1969)donde se hac´ıan
patentes estas limitaciones. Como Como consecuencia, los
fondos para nuevas investigaciones se congelaron y la mayor´ıa
de los investigadores reorientaron su objeto de estudio. S´olo
un par de investigadores aislados como Teuvo Kohonen en
Finlandia, Stephen Grossberg y James Anderson en Estados
Unidos, continuaron sus esfuerzos en este campo, dando lugar
lentamente a que, a trav´es de los a˜nos, (Kohonen 1972), (An-
derson 1972) y (Grossberg 1987), emergiera un nuevo cuerpo
te´orico alrededor de las Redes Neuronales multicapas, que
super´o las limitaciones encontradas por Minsky y dio nuevo
impulso al desarrollo de Redes Neuronales artificiales[3].
B. Aplicaciones de las redes neuronales
Tipos de problemas abordables:
• Asociaci´on
• Clasificaci´on de patrones
2. 2
• Predicci´on
• Control
• Optimizaci´on[4]
C. Neurona Biol´ogica
Desde que se empez´o a conocer la anatom´ıa y estructura
del tejido nervioso, a partir de los trabajos de Ram´on y
Cajal (1911) en Espa˜na, los investigadores trataron de conocer
la forma como este tejido y los ´organos que constituye,
especialmente el cerebro, procesan la informaci´on que reciben
de los ´organos receptores, para dar una respuesta adecuada
a sus est´ımulos. Aunque aun se est´a lejos de comprender el
funcionamiento y la estructura del sistema nervioso, se conoce
con cierto detalle la estructura de la neurona, como elemento
b´asico del tejido nervioso y la forma como se estructura la
corteza cerebral. La neurona, como toda c´elula, consta de una
membrana exterior M, que la limita y le sirve de ´organo de
intercambio con el medio exterior, de un citoplasma C, que es
el cuerpo principal de la c´elula donde radica el grueso de sus
funciones y de un n´ucleo N, que contiene el material gen´etico
de la c´elula[5].
Fig. 1. Esquema de una neurona biol´ogica
El citoplasma presenta unos alargamientos D, llamados
dendritas, que son ´organos de recepci´on. En las dendritas
termina un gran n´umero de fibras F que son conductores que
llevan la se˜nal o impulso nervioso de los receptores o de
otras neuronas hacia la neurona. Estas fibras terminan en un
peque˜no corp´usculo llamado sinapsis que sirve para transferir
la se˜nal de una neurona a otra. Existen dos clases de sinapsis:
actuadoras, que favorecen el disparo de la neurona receptora
e inhibidoras, que dificultan ´este.
Cuando se presenta un cierto desbalance entre las sinapsis
actuadoras y las inhibidoras activas, la neurona dispara un im-
pulso de salida, que constituye la respuesta de la neurona. Este
impulso nervioso de salida es conducido por una prolongaci´on
cil´ındrica alargada de la neurona, que se llama cilindro eje o
ax´on A, que en su extremo se divide en varias fibras para
comunicarse con otras neuronas o con ´organos efectores o
motores como gl´andulas o m´usculos[5].
D. Neurona Artificial
La neurona artificial es una unidad procesadora con cuatro
elementos funcionales:
• Elemento receptor: donde llegan una o varias se˜nales de
entrada xi, que generalmente provienen de otras neuronas
y que son atenuadas o amplificadas cada una de ellas
con arreglo a un factor de peso wi que constituye la
Fig. 2. Esquema de una neurona artificial
conectividad entre la neurona fuente de donde provienen
y la neurona de destino en cuesti´on.
• Elemento sumador: efect´ua la suma algebraica ponder-
ada de las se˜nales de entrada, ponder´andolas de acuerdo
con su peso.
• Elemento de funci´on activadora: aplica una funci´on a
la salida del sumador para decidir si la neurona se activa,
disparando una salida o no.
• Elemento de salida: produce la se˜nal de acuerdo con
el elemento anterior, que constituye la salida de la
neurona.[5]
E. Funciones de Activaci´on
Una neurona biol´ogica puede estar activa (excitada)
o inactiva (no excitada); es decir, que tiene un “estado de
activaci´on”. Las neuronas artificiales tambi´en tienen diferentes
estados de activaci´on; algunas de ellas solamente dos, al igual
que las biol´ogicas, pero otras pueden tomar cualquier valor
dentro de un conjunto determinado.
La funci´on activaci´on calcula el estado de actividad de
una neurona; transformando la entrada global (menos el
umbral, i) en un valor (estado) de activaci´on, cuyo rango
normalmente va de (0 a 1) o de (–1 a 1). Esto es as´ı, porque
una neurona puede estar totalmente inactiva (0 o –1) o activa
(1). En el siguiente gr´afico se muestran algunas funciones de
activaci´on[6].
Fig. 3. Funci´ones de activaci´on
Satlin y Satlins son funciones de transferencia. Las
funciones de transferencia calculan la salida de una capa a
partir de su entrada de red.
3. 3
1) Satlin o funci´on Lineal acotada: Satlin es una funci´on
de transferencia de los nervios. Las funciones de transferencia
calcular la salida de una capa a partir de su entrada de red[7].
Fig. 4. Funci´on Satlin
Sintaxis A = satlin(N)
Descripci´on
info = Satlin (’C´odigo’) devuelve informaci´on ´util para cada
cadena de c´odigo compatibles:
• Satlin (’nombre’) devuelve el nombre de esta funci´on.
• Satlin (’output’) devuelve el rango de salida [min max].
• Satlin (”activo”) devuelve el [min max] rango de entrada
activa.
• Satlin (’fullderiv’) devuelve 1 o 0.
• Satlin (’fpnames’) devuelve los nombres de los
par´ametros de la funci´on.
• Satlin (’fpdefaults’) devuelve los par´ametros de la
funci´on por defecto.
Ejemplo
C´odigo matlab para crear un gr´afico de la funci´on de
transferencia Satlin.
n = -5:0.1:5;
a = Satlin (N);
plot (n, a)
2) Satlins o funci´on Lineal acotada sim´etrica: Satlins es
una funci´on de transferencia de los nervios. Las funciones
de transferencia calcular la salida de una capa a partir de su
entrada de red[8].
Fig. 5. Funci´on Satlins
Sintaxis A = satlins(N)
Descripci´on
info = Satlins (’C´odigo’) devuelve informaci´on ´util para cada
cadena de c´odigo compatibles:
• Satlins (’nombre’) devuelve el nombre de esta funci´on.
• Satlins (’output’) devuelve el rango de salida [min max].
• Satlins (”activo”) devuelve el [min max] rango de en-
trada activa.
• Satlins (’fullderiv’) devuelve 1 o 0.
• Satlins (’fpnames’) devuelve los nombres de los
par´ametros de la funci´on.
• Satlins (’fpdefaults’) devuelve los par´ametros de la
funci´on por defecto.
Ejemplo
C´odigo matlab para crear un gr´afico de la funci´on de
transferencia Satlins.
n = -5:0.1:5;
a = Satlins (N);
plot (n, a)
III. PROGRAMA EN MATLAB
A. Matlab
MATLAB es un lenguaje de alto nivel y un entorno interac-
tivo para el c´alculo num´erico, visualizaci´on y programaci´on,
muy usado para prop´ositos de desarrollo e investigaci´on, fue
creado en la d´ecada de los setenta por Cleve Moler, recono-
ciendo el potencial comercial de este software se unieron con
Steve Bangert para fundar The MathWorks en 1984[9].
B. Interfaz gr´afica
Para realizar una interfaz en matlab existen 2 formas:
1) Se digita el comando guide [10]
Fig. 6. Crear nueva interfaz en matlab
2) Se ingresa al men´u New, luego en Graphical User
Interface[10]
Fig. 7. Crear nueva interfaz en matlab
Luego aparece la ventana para crear la interfaz arrastrando
los elementos. La ventana del presente ejemplo qued´o de la
siguiente manera:
4. 4
Fig. 8. Interfaz gr´afica para la red utilizando satlin y satlins
C. C´odigo en matlab
Al momento de codificar se utiliz´o los comandos del
toolbox de matlab para redes neuronales como:[11]
1) Funci´on para crear una Red y entrenamientos: El
comando newff crea una red de neuronas feedforward tipo
perceptr´on. Su sintaxis es:
net = newff(PR,[S1 S2...SNl],TF1 TF2...TFNl,BTF,BLF)
• PR Matriz con los valores m´ınimo y m´aximo de los
elementos de entrada.
• Si Tama˜no de la capa i.
• TFi Funci´on de transferencia de la capa i, por defecto es
’tansig’.
• BTF Funci´on de entrenamiento, por defecto ’trainlm’.
• BLF Funci´on de aprendizaje de los pesos/bias, por de-
fecto ’learngdm’.
2) C´odigo del bot´on agregar capas: El siguiente c´odigo
es para agregar n capas de una red neuronal
1%Executes on button press in pushbuttonagregar .
2 function p u s h b u t t o n a g r e g a r C a l l b a c k ( hObject ,
eventdata , handles )
3 numneuronas = [ ] ;
4 f u n c i o n e s ={};
5 prom={ ’ I n g r e s e # de capas ’ };
6 t i t u l o c a p a s = ’ Capas ’ ;
7 numerolineas =1;
8 p r e d e f i n i d o = { ’1 ’ };
9 pregunta = i n p u t d l g ( prom , t i t u l o c a p a s , numerolineas ,
p r e d e f i n i d o ) ; %para guardar e l valor ingresado
en un arreglo
10 n=str2num ( pregunta {1 ,1}) ;
11 for m=1: n
12 prompt = { ’ N m e r o de neuronas ’ , ’FA: s a t l i n s o
s a t l i n ’ };
13 d l g t i t l e = ’ Entradas ’ ;
14 num lines = 1;
15 def = { ’1 ’ , ’ s a t l i n ’ };
16 answer = i n p u t d l g ( prompt , d l g t i t l e , num lines , def ) ;
17 s t r 1 = answer {1 ,1};
18 numneuronas (m) =str2num ( s t r 1 ) ;
19 s t r 2 =answer {2 ,1};
20 f u n c i o n e s {m}= s t r 2 ;
21 end
22 %handles . pushbuttonagregar=numneuronas ;
23 s e t a p p d a t a ( handles . pushbuttonagregar , ’ numero ’ ,
numneuronas ) ;
24 s e t a p p d a t a ( handles . pushbuttonagregar , ’ f u n c i o n e s ’ ,
f u n c i o n e s ) ;
25
26 function numneurona Callback ( hObject , eventdata ,
handles )
27 %Executes during o b j e c t creation , a f t e r s e t t i n g a l l
p r o p e r t i e s .
28 function numneurona CreateFcn ( hObject , eventdata ,
handles )
29
30 i f i s p c && i s e q u a l ( get ( hObject , ’ BackgroundColor ’ ) ,
get (0 , ’ d e f au l t Ui c o nt r o lB a c kg r o u nd C o lo r ’ ) )
31 s e t ( hObject , ’ BackgroundColor ’ , ’ white ’ ) ;
32 end
33
34 function popupfuncion Callback ( hObject , eventdata ,
handles )
35 %Executes during o b j e c t creation , a f t e r s e t t i n g a l l
p r o p e r t i e s .
36 function popupfuncion CreateFcn ( hObject , eventdata ,
handles )
37
38 i f i s p c && i s e q u a l ( get ( hObject , ’ BackgroundColor ’ ) ,
get (0 , ’ d e f au l t Ui c o nt r o lB a c kg r o u nd C o lo r ’ ) )
39 s e t ( hObject , ’ BackgroundColor ’ , ’ white ’ ) ;
40 end
3) C´odigo del bot´on Clasificar: El siguiente c´odigo es
para clasificar la red neuronal, utilizando la funci´on de
activaci´on satlin o satlins
1 % −−− Executes on button press in
p u s h b u t t o n C l a s i f i c a r .
2 function p u s h b u t t o n C l a s i f i c a r C a l l b a c k ( hObject ,
eventdata , handles )
3 %se guada la cadena de entrada
4 cadena=get ( handles . entradax , ’ S t r i n g ’ ) ;
5 e n t r a d a = s t r c a t ( ’ [ ’ , cadena , ’ ] ’ ) ; % concatenamos
con l o s c o r c h e t e s
6 v e nt r a da = str2num ( e n t r a d a ) ; % transformamos e l
t e x t o en numero y se cra la matriz
7 minimomaximo=minmax ( ve n t r ad a ) ; %guardamos en
a e l v e c t o r con l o s v a l o r e s m n i m o s y maximo
de entrada
8 v e nt r a da
9
10 e n tr a d ay = get ( handles . s a l i d a d e s e a d a , ’ S t r i n g ’ ) ;
11 e n tr a d ay = s t r c a t ( ’ [ ’ , entraday , ’ ] ’ ) ; % concatenamos
con l o s c o r c h e t e s
12 ventraday = str2num ( e n t ra d a y ) ;
13 ventraday
14 a p r e n d i z a j e = get ( handles . popupmenuentrenamiento , ’
Value ’ ) ;
15 switch a p r e n d i z a j e
16 case 1
17 t a p r e n d i z a j e = ’ t r a i n r p ’ ;
18 case 2
19 t a p r e n d i z a j e = ’ t r a i n l m ’ ;
20 case 3
21 t a p r e n d i z a j e = ’ t r a i n r ’ ;
22 end
23
24 f u n c i o n e s = g e t a p p d a t a ( handles . pushbuttonagregar , ’
f u n c i o n e s ’ ) ;
25 f u n c i o n e s
26 numero= g e t a p p d a t a ( handles . pushbuttonagregar , ’ numero
’ ) ;
27 numero
28 minimomaximo
5. 5
29 numero
30 i f ( isempty ( v e n tr a d a ) | | isempty ( ventraday ) )
31 helpdlg ( ’Campos vacios ’ ) ;
32 end
33 i f ( isempty ( f u n c i o n e s ) | | isempty ( numero ) )
34 f u n c i o n e s ={ ’ s a t l i n ’ };
35 numero = [ 1 ] ;
36 end
37 net = newff ( minimomaximo , numero , funciones ,
t a p r e n d i z a j e ) ;
38 tamanio= s i z e ( v e n tr a d a ) ;
39 tamanio ( 1 )
40 net .IW{1 ,1}= rand ( numero ( 1 ) , tamanio ( 1 ) ) ;
41 net . b{1}=rand ( numero ( 1 ) ,1) ;
42 %ouput ’ pesos ’ ;
43 net .IW{1}
44 %ouput ’ umbral ’ ;
45 net . b{1}
46 output =sim ( net , v en t r ad a )
47 plotpv ( ventrada , ventraday ) ; %g r a f i c a
48 p l o t p c ( net .IW{1} , net . b {1}) ;
49 net = t r a i n ( net , ventrada , ventraday )
50 net .IW{1}
51 net . b{1}
52 output =sim ( net , v en t r ad a )
53 plotpv ( ventrada , ventraday ) ; %g r a f i c a
54 p l o t p c ( net .IW{1} , net . b {1}) ;
55
56 function pushbutton3 Callback ( hObject , eventdata ,
handles )
IV. CONCLUSIONES
Las Redes neuronales representan el siguiente escal´on
para la programaci´on, luego de la programaci´on orientada a
objetos (POO), d´andole de esta manera un valor agregado
al utilizar m´etodos de inteligencia artificial para resolver
problemas de clasificaci´on.
Primeramente se necesita un estudio de las redes neuronales
artificiales para posteriormente implementarlas en Matlab,
entendiendo desde el inicio su funcionamiento manual,luego
de esto se puede utilizar las funciones desarrolladas para
la simulaci´on de redes neuronales artificiales de matlab,
teniendo en cuenta principalmente que de otra manera no
sirve la herramienta si no se tiene claro el funcionamiento de
las redes neuronales, espec´ıficamente del perceptr´on.
En MATLAB, podemos definir, crear y visualizar una red
neuronal mediante las Herramientas de Control (toolbox) y
sus comandos.
Las funciones de activacion satlin y satlins se limitan a
resolver problemas de clasificacion linealmente separables.
REFERENCIAS
[1] R. C´ardenas., Inteligencia Artificial, UNAM. [En l´ınea] http://www.
ulpgc.es/hege/almacen/download/38/38584/practica ia 2.pdf ,consulta
realizada 08-May-14.
[2] O. Mart´ınez., Redes Neuronales Artificiales, [En l´ınea]
http://timerime.com/en/event/1499018/BERNARD+WIDROW+-+
MARCIAL+HOFF/ ,consulta realizada 08-May-14.
[3] L. Hern´andez y A. Hern´andez., Introducci´on a las Redes
Neuronales,Universidad Aut´onoma del estado de Hidalgo [En l´ınea]
http://www.uaeh.edu.mx/docencia/P Presentaciones/huejutla/sistemas/
redes neuronales/introduccion.pdf ,consulta realizada 08-May-14.
[4] P. Garc´ıa., Introducci´on a las Redes Neuronales y su aplicaci´on
a la investigaci´on Astrof´ısica,Universidad Aut´onoma del estado de
Hidalgo [En l´ınea] http://www.iac.es/sieinvens/SINFIN/Sie Courses
PDFs/NNets/confiac.pdf ,consulta realizada 08-May-14.
[5] F. L. Rosano., NEURONALES ARTIFICIALES, UNAM. [En l´ınea] http:
//conceptos.sociales.unam.mx/conceptos final/598trabajo.pdf ,consulta
realizada 08-May-14.
[6] J. Matich, Redes Neuronales: Conceptos B´asicos y Aplica-
ciones,Univ. Tecnol´ogica Nac. -Facultad Reg. Rosario. [En
l´ınea] http://www.frro.utn.edu.ar/repositorio/catedras/quimica/5 anio/
orientadora1/monograias/matich-redesneuronales.pdf ,consulta realizada
08-May-14.
[7] Mathworks., Satlin,[En l´ınea] http://www.mathworks.com/help/nnet/ref/
satlin.html ,consulta realizada 08-May-14.
[8] Mathworks., Satlins,[En l´ınea] http://www.mathworks.com/help/nnet/ref/
satlins.html ,consulta realizada 08-May-14.
[9] Mathworks., MATLAB,[En l´ınea] http://www.mathworks.com/products/
matlab/ ,consulta realizada 08-May-14.
[10] D. Barrag´an., Manual de Interfaz Gr´afica de Usuario en Matlab,ESPOL
[En l´ınea] http://www.dspace.espol.edu.ec/bitstream/123456789/10740/
11/MATLAB GUIDE.pdf ,consulta realizada 08-May-14.
[11] G. Meschino., Redes Neuronales en Matlab,[En l´ınea]
http://www3.fi.mdp.edu.ar/meschino/Presentaciones/GUSTAVO%
2007%20-%20REDES%20NEURONALES%20MATLAB.pdf ,consulta
realizada 08-May-14.
Gabriela Rodr´ıguez
Estudiante de la Carrera de Ingenier´ıa en Sistemas de la
Universidad Nacional de Loja, conocedora de Redes y Telecomuni-
caciones, Provincia de Loja, Ciudad Loja, Ecuador, 2014.
Lauro Japa
Estudiante de la Carrera de Ingenier´ıa en Sistemas de la
Universidad Nacional de Loja, Conocedor de Desarrollo de Software,
Provincia de Loja, Ciudad Loja, Ecuador, 2014.
Henry Paz Arias
Ing. Mgs. Especialista en Inteligencia Artificial, Provincia
de Loja, Ciudad Loja, Ecuador, 2014.