Este documento describe la implementación de las funciones de transferencia satlin y satlins en una red neuronal feedforward utilizando Matlab. Se define la red neuronal, incluyendo neuronas, entradas, capas y funciones de transferencia. Luego, se entrena la red utilizando algoritmos como retropropagación y descenso de gradiente por lotes con momentun para minimizar el error. Finalmente, se simula la red neuronal para evaluar su desempeño.
1. Satlin y Satlins utilizando Matlab
Mej´ıa J1
, Bravo L2
, Paz H.3
I. Abstract
In this technical report, to introduce the imple-
mementation of practical use of transfer functions
like: Saturing Linear( satlin ) and Symmetric
Satuing Linear ( satlins ),used in feed forward
network ,will define neurons, inputs and layers,
to represent throught Graphical User Interface
with high level language: m and Neural Network
Toolbox of Matlab 2013b.
II. Resumen
En el presente informe t´ecnico se presenta la
implementaci´on pr´actica de las funciones de trans-
ferencia: Lineal Saturada satlin y Lineal Saturada
Sim´etrica satlins, empleadas para una red neuronal
con retropropagaci´on newff, para lo cual se definir´a
neuronas, a su vez entradas y capas las cuales
ser´an representadas mediante una interfaz gr´afica
de usuario utilizando el lenguaje de alto nivel
m y Herramientas de Redes Neuronales Neural
Network Toolbox de Matlab en su versi´on 2013b.
Palabras Clave: inteligencia artificial, redes
neuronales, red neuronal con retropropagaci´on,
funciones de transferencia: Lineal Saturada y Lin-
eal Saturada Sim´etrica, lenguaje m , Herramientas
de Redes Neuronales.
Keywords: artificial intelligence, neural net-
work, feed forward neural network, transfer
functions: Saturing Linear and Symmetric Satuing
Linear, language m, Neural Network Toolbox.
1
Mej´ıa Jorge Luis , Estudiante, Universidad Na-
cional de Loja , Carrera de Ingenier´ıa en Sistema, jlme-
jiam@unl.edu.ec
2
Bravo Luis, Estudiante Universidad Nacional de Loja,
Carrera de Ingenier´ıa en Sistemas, lfbravoe@unl.edu.ec
3
Paz Henry, MgSc, Universidad Nacional de Loja, Car-
rera de Ingenier´ıa en Sistemas, hpaz@unl.edu.ec
III. Introducci´on
Las Redes Neuronales Artificiales (RNA) son sis-
temas de computaci´on los cuales en base al fun-
cionamiento del cerebro humano compuesto de
neuronas que se conectan entre s´ı y operan de man-
era paralela, de esta manera las redes neuronales
son consideradas como una implementaci´on muy
sencilla del comportamiento encontrada en nuestros
cerebros. [Jos´e R. Hilera, Victor J. Mart´ınez,2000].
Una red neuronal artificial es un procesador dis-
tribuido en paralelo de forma masiva que tiene una
tendencia natural para almacenar conocimiento de
forma experimental y lo hace disponible para su
uso. [Aldaba E,2012]
Las redes neuronales se caracterizan por apren-
der de la experiencia, generalizar casos nuevos a
partir de casos anteriores, pueden procesar datos
incompletos o distorsionados, y capaces de seguir
funcionando a pesar de lesiones. [Castro, J. Simon
,2006]
Las neuronas artificiales est´an compuestas
de tres elementos principales que son: lazos
sin´apticos, un mezclador lineal y una funci´on
de trasferencia,est´a permitir´a proporcionar carac-
ter´ısticas lineales y no lineales al comportamiento
de la RNA. [Haykin Simon ,1994]
El presente trabajo se centra en la realizaci´on
de una aplicaci´on inform´atica que se utiliza para
representar las funciones de transferencia:satlin y
satlins de una red neuronal con retropropagaci´on y
su correspondiente simulaci´on utilizando para pa-
quete de herramientas Neural Tool Box de Mat-
lab,para cumplir este objetivo se ha codificado en
lenguaje de alto n´ıvel: ”m”.
IV. Materiales y M´etodos
A. Redes Feedforward
Una red Feedforward a menudo tiene una o m´as
capas ocultas de neuronas de tipo sigmoideas,
seguidas por una capa de salida lineal. Las capas
m´ultiples de neuronas con funciones de transferen-
cia no lineal permiten a la red aprender relaciones
lineales y no lineales entre la entrada y la salida. La
2. capa del de salida lineal permite a la red producir el
umbral fuera del rango entre -1 y +1.
Por otro lado, si se quiere reprimir las salidas de
una red (entre 0 y 1), entonces la capa de salida
debe usar una funci´on de transferencia sigmoidea
(como logsig). Para las redes de m´ultiples capas se
acostumbra que el n´umero de las capas determine
el exponente en la matriz de pesos.
Fig1. Red Feedforward
Esta red puede usarse como un aproximador de
una funci´on en general. Puede aproximar cualquier
funci´on con un n´umero finito de discontinuidade-
sarbitrariamente bien, con la cantidad adecuada de
neuronas en la capa oculta.
Creaci´on de una red newff
El primer paso de entrenamiento de una red feed-
forward es crear la red. La funci´on newff crea
una red feedforward. Esta funci´on requiere cua-
tro par´ametros de entrada. La primera es un R que
consta de una matriz del m´ınimo y m´aximo valor
para cada uno de los elementos de R en el vector
de entrada. La segunda entrada es un arreglo que
contiene los tama˜nos de cada capa (la cantidad de
neuronas por capa). La tercera entrada es un arreglo
que contiene los nombres de las funciones de entre-
namiento que ser´an usadas en cada capa. La ´ultima
contiene el nombre de la funci´on de entrenamiento
que se usara. Por ejemplo, lo siguiente crea una red
de la dos capas. Hay un vector de la entrada con
dos elementos. Los valores para el primer elemento
del vector de entrada son -1 y 2, los valores del se-
gundo elemento del vector de entrada son 0 y -1.
Hay tres neuronas en la primera capa y una neurona
en la segunda capa (capa de salida). La funci´on de
transferencia en la primera capa es satlin, y en la
capa de salida la funci´on de transferencia es lineal.
La funci´on de entrenamiento es traingd.
net=newff([-1 2; 0 5],[3,1],’satlin’,’traingd’);
Esta orden crea la red y tambi´en inicializa los pe-
sos y el umbral de la red; por consiguiente la red
est´a lista para ser entrenada.
Inicializando pesos (init). Antes de entrenar
una red feedforward, los pesos y el umbral debe
inicializarse. El m´etodo newff inicializar´a los pesos
autom´aticamente, pero si se quieren reinicializar,
esto puede hacerse con init. Esta funci´on toma
una red como entrada y reestablece todos los pesos
y el umbral e la red. As´ı es inicializa una red (o
reinicializada): net = init(net);
SIMULACI ´ON (sim)
La funci´on sim simula una red. sim toma la en-
trada de la red p, y la red como tal, y esta retorna
las salidas de la red. As´ı se puede simular la red
que se creo anteriormente para un solo vector de la
entrada:
• p = [1;2];
• a = sim(net,p)
• a = -0.1011
(Si prueba estos datos, su resultado puede ser difer-
ente, dependiendo del estado del generador de
n´umeros aleatorios que tenga cuando la red fue ini-
cializada.).
B. Funciones de Transferencia
La funci´on de transferencia se encarga de calcular
el nivel de activaci´on de la neurona en funci´on de la
entrada total, tambi´en denota la salida de la neu-
rona. Se pueden identificar tres tipos b´asicos de
funciones de transferencia: las funciones de um-
bral, en las cuales la salida es un valor discreto
que supera o no un determinado umbral, existen
tambi´en las funciones lineales o al menos en una
parte (picewise linear), y finalmente est´an las fun-
ciones no lineales en donde las “funciones sig-
moidales” son las m´as habituales.
Fig2.Modelo computacional de una neurona. .
La salida total ‘a’ de la neurona esta dada por el
resultado de la funci´on de transferencia aplicada a
la variable ‘n’, la cual es la suma ponderada de sus
entradas.
B´asicamente, las funciones de transferencia real-
izan dos tareas importantes: la primera, es que sir-
ven para limitar la salida de una neurona, y as´ı los
resultados no crezcan a valores demasiado grandes;
y la segunda, es que proporciona caracter´ısticas de
no linealidad, lo cual es muy importante en RNA.
En la tabla 1, se muestran los diez tipos de fun-
ciones de transferencia m´as usados y que adem´as,
son los que se implementan en este trabajo
3. Tabla1. Principales funciones de transferencia.
.
Funciones Satlin y Satlins
Satlins(Saturaci´on sim´etrica de la funci´on de trans-
ferencia lineal) y Satlin (Saturaci´on de la funci´on
de transferencia lineal). Sintax´ıs de la funci´on
• A = satlins (N)
• info = satlins (c´odigo)
• A = satlin (N)
• info = Satlin (c´odigo)
Descripci´on de la Funci´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.
Satlin (N) Toma una entrada.
N es una matriz de entrada S x Q netos (columna)
vectores y devuelve los valores de N truncados
en el intervalo [-1, 1]. Satlin (code) devuelve
informaci´on ´util para cada cadena de c´odigo:
• ’deriv’- Nombre de la funci´on derivada.
• ’name’- Nombre completo.
• ’output’- Rango de salida.
• ’active’- rango de entrada activa
Satlins es una funci´on de transferencia de los
nervios. Las funciones de transferencia calcula la
salida de una capa a partir de su entrada de red.
C´odigos empleados en Satlins
A = satlins (N, FP) se lleva a N y un argumento op-
cional.
N (S por Q) de la matriz de entrada netos (columna)
vectores.
FP Struct de par´ametros de la funci´on (opcional, ig-
norado)
y devuelve A , el S -por- Q matriz de N elementos
recorta a [-1, 1] .
Algortimo utilizado para Satlin
Fig3. Funci´on satlin
Algortimo utilizado para Satlins
Fig4. Funci´on satlin
4. C. Entrenamientos
Una vez se han inicializado los pesos de la red y
los el umbral, la red est´a lista para ser entrenada.
La red puede entrenarse para: la aproximaci´on de
una funci´on (regresi´on no lineal), la asociaci´on
del modelo, o la clasificaci´on del modelo. El
proceso de entrenamiento requiere de los patrones
de conducta apropiados para la red, las entradas
de la red p y las salidas en blanco t. Durante
el entrenamiento los pesos y el umbral de la red
son iterativamente ajustados para minimizar la
funci´on de desempe˜no de la red net.performFcn.
La funci´on de desempe˜no predefinida para las
redes feedforward es mse, el promedio cuadrado
del error entre los rendimientos de la red y los
rendimientos designados t.
Todos los algoritmos usan la funci´on de de-
sempe˜no para determinar c´omo ajustar los pesos y
minimizar performance.
Hay dos maneras diferentes en las que este
algoritmo de descenso de gradiente puede llevarse
a cabo: modo incremental y modo del lote. En el
modo de incremental, el gradiente se computa y los
pesos se actualizan despu´es de cada entrada que
se aplica a la red. En el modo del lote todas las
entradas se aplican a la red antes que los pesos se
actualicen.
Entrenamiento Incremental (traingd)
El entrenamiento de disminuci´on de gradiente o
por pasos se ejecuta con la funci´on traingd. En la
que se actualizan los pesos y el umbral en direcci´on
negativa del gradiente de la funci´on de desempe˜no
. Si se quiere entrenar una red que use incremental
por pasos de lote, se debe anteponer trainFcn al
traingd, y entonces llama al entrenamiento de la
funci´on.
Hay siete par´ametros de entrenamiento aso-
ciados con traingd: epochs, show, goal, time,
min grad, max fail, y lr. El lr da la proporci´on de
aprendizaje se obtiene multiplicando tiempos por
negativo de el gradiente para determinar los cam-
bios a los pesos y el umbral. Si la proporci´on de
aprendizaje se hace demasiado grande, el algoritmo
se vuelve inestable. Si la proporci´on de aprendizaje
se fija demasiado peque˜na, el algoritmo toma un
largo tiempo para converger.
El estado de entrenamiento se muestra para cada
iteraci´on. (Si show se inicializa NaN, entonces el
estado de entrenamiento nunca se muestra.) Los
otros par´ametros determinan cuando para el entre-
namiento. El entrenamiento se detiene si el n´umero
de iteraciones excede epochs, si los decrementos
de la funci´on de desempe˜no est´an por debajo de
goal, si la magnitud de el gradiente est´a en menos
del mingrad, o si el tiempo de entrenamiento es
m´as largo que time. Y max fail que es asociado
con la t´ecnica de detenci´on temprana.
D. Desenso de Gradiente de lotes por
momentun (traingdm
Adem´as del traingd, hay otro algoritmo de de-
scenso de gradiente de lotes para redes feedforward
que proporciona una convergencia m´as r´apida, el
traingdm, que incluye un descenso con velocidad
adquirida. el momentumn permite que la red no
s´olo responda a el gradiente local sino tambi´en a las
tendencias del error. Actuando como un filtro del
bajo-paso, el momentumn permite a la red ignorar
rasgos peque˜nos en el error. Sin el momentumn
una red puede estancarse en un m´ınimo local poco
profundo.
El momentumn puede agregarse al aprendizaje
del backpropagation haciendo cambios de peso
iguales a la suma de un fragmento del ´ultimo
cambio de peso y el nuevo cambio sugerido por
la regla del backpropagation. La magnitud del
efecto que el ´ultimo cambio de peso se permite
tener es mediada por una constante de velocidad
adquirida, mc que puede ser cualquier n´umero
entre 0 y 1. Cuando la constante de momentumn es
0, un el cambio de peso es solamente basado en el
gradiente. Cuando la constante de momentumn es
1, el nuevo cambio de peso se pone para igualar el
´ultimo cambio de peso y el gradiente simplemente
se ignora. El gradiente es computada sumando los
gradientes calculadas a cada dato de entrenamiento
y s´olo se actualizan los pesos y el umbral despu´es
de todos los datos del entrenamiento que se ha
presentado.
La forma de entrenamiento de descenso de
gradiente con momentumn se invoca con la funci´on
traingdm. Esta funci´on usa los mismos pasos
mostrados que el traingd s´olo que el mc, lr y
max perf inc aprenden todos par´ametros.
E. Desenso de Gradiente de lotes por
momentun (traingdx
Con el algoritmo de descenso normal, la pro-
porci´on de aprendizaje se mantiene constante a
lo largo del entrenamiento. La activaci´on del
algoritmo es muy sensible a la taza de aprendizaje.
Si la esta se fija demasiado alta, el algoritmo
5. puede oscilar y volverse inestable. Si la taza de
aprendizaje es demasiado peque˜na, el algoritmo
tardara en converger. No es pr´actico determinar
el valor ´optimo para la taza de aprendizaje antes
de entrenar. El rendimiento del algoritmo de
descenso puede mejorarse si se permite que la taza
de aprendizaje pueda cambiar durante el proceso
de entrenamiento.
Este procedimiento aumenta la taza de aprendizaje,
pero s´olo a la magnitud que la red puede aprender
sin aumentos grandes de error. As´ı, se obtiene
una taza de aprendizaje aproximada a la ´optima.
Cuando la taza de aprendizaje es muy alta el
aprendizaje es estable, la taza de aprendizaje se
aumenta. Para garantizar una disminuci´on en el
error.
El entrenamiento con taza de aprendizaje adapt-
able se ejecuta con la funci´on traingda, se invoca
como el traingd, salvo el max perf inc, lr dec, y
lr inc se deben incluir en los par´ametros.
V. Resultados
Empleamos un switch para seleccionar nuestra
funci´on de transferencia como nuestro tipo de en-
trenamiento:
Fig5. C´odigo de . Funciones y Entrenamientos.
En esta muestra del c´odigo agregamos las capas,
las neuronas y las entradas para nuestra red:
Fig6. Capas, Entradas y Neuronas.
Luego de Seleccionar la funci´on, el tipo de en-
trenamiento y agregar nuestros datos de entrada
procedemos a calcular la funci´on deseada sea esta
satlin o satlins ,dibujamos y simulamos la red:
Fig7. C´alculo de la Funci´on, Representaci´on y
Simulaci´on de la Red.
Esta es la interfaz gr´afica de nuestra aplicaci´on:
Fig7. C´alculo de la Funci´on, Representaci´on y
Simulaci´on de la Red.
VI. Conclusiones y Recomendaciones
• La aplicaci´on desarollada es una buena alter-
nativa para el aprendizaje de redes neuronales
y la mejor comprensi´on de las funciones de
transefrencia satlin y satlins.
6. • El algoritmo Backpropation con Momentun es
el ´unico capaz de converger a una salida de-
seada seg´un la aplicaci´on de red creada.
• El control en el momento de ingresar salidas
es muy importante pues no forzamos a la apli-
caci´on a producir resultados no deseados.
• La redes neuronales que hemos analizado son
f´aciles de implementar y cumplen su funci´on,
en nuestro ejemplo: la clasificaci´on lineal.
• Se debe tener especial cuidado en elegir el tipo
de entrenamiento pues todas los entrenamien-
tos para redes neuronales no pueden ser imple-
mentados en la funci´on satlin y satlins.
• El conocimiento del lenguaje m de matlab
desde ciclos iniciales en la carrera, permitir´ıa
una mejor aplicaci´on pr´actica de las mate-
rias relacionadas con las matem´aticas, f´ısica y
c´alculo.
VII. Bibliograf´ıa
References
Jos´e R. Hilera, Victor J. Mart´ınez (2000) Redes
Neuronales Artificiales, fundamentos, modelos y
aplicaciones AlfaOmega, Espa˜na
Aldaba E (2012) Introducci´on al reconocimiento
de patrones mediante redes neuronales UPC
Campus Terrassa, Barcelona.
Haykin Simon (1994) Neural Networks. A Compre-
hensive Foundation,Primera Edici´on Prentice-
Hall,UK
Castro, J. Simon (2006) Fundamentos para la im-
plementaci´on de red neuronal perceptr´on mult-
icapa mediante software Escuela de Ingenier´ıa
Mec´ancia y El´ectrica. Guatemala, Universidad
de San Carlos de Guatemala.