Documentos de Académico
Documentos de Profesional
Documentos de Cultura
June 8, 2018
Abstract
Using the method of the gradient descent it was posible to build a multilayer perceptron
that was able to aproximate a function in a given interval, minimizing the error between the
given data and the output of the perceptron. In order to complete the task it was used the
software OCTAVE.
Resumen
Se realizó un perceptrón multicapa, dónde a través del método del descenso del gradiente
estocástico se lograra, minimizar el error entre un conjunto de datos proporcionados a la red
y los datos de salida. De tal forma que se lograra aproximar una función a dichos datos. Para
realizar la tarea se utilizó el programa OCTAVE.
1 Introducción
Uno de los problemas más antiguos de la ciencia experimental consiste en encontrar funciones que
ajusten, o expliquen, datos que se observan de fenómenos naturales. La principal ventaja de la
existencia de tales funciones es la posibilidad de predecir el comportamiento del sistema natural
en el futuro y controlar sus salidas mediante la aplicación de las entradas adecuadas. La dificultad
estriba en que los datos observados tienden a ir acompañados de ruido y los mecanismos exactos
que los generan normalmente son desconocidos [1].
En ocasiones será posible encontrar un modelo matemático exacto que explique el proceso del
que provienen los datos que observamos. Muchas veces, sin embargo, no podremos dar detalles de
ese proceso[3]. El objetivo será estimar el modelo subyacente que genere a los datos observados.
En estos casos, las técnicas de aprendizaje automático nos permiten establecer estos modelos
utilizando datos de ejemplos o experiencias pasadas. Dentro de estas técnicas, que podríamos
llamar de estimación semiparamétrica, se encuentran las Redes de Neuronas Artificiales.
Una red neuronal artificial es un modelo matemático formado por una red interconectada
de unidades simples, denominadas neuronas. Estas neuronas reciben unos datos de entrada, los
analizan, y deciden que hacer con ellos mediante la experiencia adquirida. Esto es, pasarlos a otras
neuronas a través de las conexiones o directamente como salida aplicando algún tipo de función
[2]. Es un paradigma de procesamiento de información inicialmente inspirado en el modo en el que
lo hace el cerebro. El elemento clave de este paradigma es la estructura [1].
1
2 Marco Teórico
2.1 Redes Neuronales Artificiales
Las redes neuronales actuales se basan en el modelo matemático de neurona propuesto por McCu-
lloch y Pitts en 1943. En dicho modelo cada neurona recibe un conjunto de entradas {x1 , x2 , ..., xd }
y devuelve una única salida y. Además, dentro de una Red Neuronal Artificial (en adelante, RNA)
existen numerosas conexiones entre las distintas neuronas que la forman. Estas conexiones simulan
las conexiones interneuronales del cerebro y, al igual que estas, pueden establecerse con menor o
mayor intensidad [1].
En el caso de las RNA esta intensidad la determinan los pesos sinápticos (o simplemente pesos).
De este modo, cada entrada xi de una neurona se encuentra afectada por un peso wi .
Con la finalidad de que la RNA modifique los pesos y con ello, aprenda, es necesario introducir
una función de activación o de transferencia g(a). Las más comunes son:
• Función escalón
• Función Lineal
• Función Sigmoidea
• Función Tangente Hiperbólica (tanh)
• Función Gaussiana
2
Figura 2: Funciones de activación más utilizadas
En este caso, en el conjunto de entrenamiento los datos de entrada x no vienen acompañados de una
salida deseada y el objetivo no es encontrar un mapeo entrada-salida, sino encontrar patrones que
definan regularidades subyacentes en x además, estos patrones ocurren con distintas frecuencias y
la red deberá encontrar lo que ocurre con más generalidad [1].
Donde φ es el vector formado por las funciones de activación φ0 , ..., φM y g es la función escalón
definida para los valores {−1, 1}.
La principal aportación del perceptrón es que la adaptación de sus pesos se realiza teniendo en
cuenta el error entre la salida que obtiene la red y la salida que se desearía obtener. Es, por tanto,
el primero método de aprendizaje supervisado.
3
2.4 El Perceptrón Multicapa
Las limitaciones de las redes de una sola capa, hicieron que se plantease la necesidad de implementar
redes en las que se aumentase el número de capas introduciendo capas intermedias entre la capa
de entrada y la de salida, de manera que se pudiese implementar cualquier función con el grado
de precisión deseada[1]. La función que cumple dicha capa intermedia es tratar de realizar una
proyección en la que resulten separables linealmente los patrones de entrada de manera que la
unidad de salida pueda realizar una clasificación correcta [3].
La arquitectura de la red se divide en la entrada, las capas ocultas y la salida. En primer lugar
tenemos la entrada de la red que son los datos que recibe la red para procesar y se conectan a las
primeras neuronas de la primera capa oculta. Las capas ocultas son el conjunto de neuronas que
no están conectadas directamente con la entrada. Estas neuronas están organizadas por capas y
cada neurona de una capa, normalmente conecta con todas las neuronas de la capa siguiente sin
formar ningún tipo de bucle. Esto se conoce como conectividad total [2].
Se considerará un perceptrón con una sola capa oculta. Consta de D entradas, M neuronas en
su capa oculta y C unidades de salidas. El nivel de activación aj de la neurona j de la capa oculta
se calcula como una combinación lineal de las D entradas xi que recibe sobre la que, tras aplicar
una función de transferencia g se obtiene la salida zj de dicha neurona:
D
X
zj = g(aj ) = g( wji xi ); k = 1, 2, ..., M (3)
i=0
4
donde wji es el peso asociado a la neurona j y la entrada xi . De manera similar, cada salida de la
red se obtiene como la suma ponderada de las salidas de las unidades de la capa oculta, sobre la
que se aplica una función de transferencia, es decir, la salida de la neurona k viene dada por:
M
X M
X D
X
yk = g 0 ( ) = g 0 ( )wkg g( )wji xi (4)
j=o j=0 i=0
Es importante destacar que las funciones de transferencia g y g’ no tienen que ser iguales, por ello
la notación que se emplea es diferente.
Al igual que el perceptrón simple, el MLP basa el aprendizaje de sus pesos en una regla de ajuste
del error, esto es, trata de determinar los pesos y las conexiones sinápticas de manera que las salidas
de la red coincidan con las salidas deseadas, o por lo menos, sean las más próximas posibles[4].
El algoritmo de aprendizaje del MLP utiliza el método de descenso del gradiente para ajustar los
pesos de la red. Dicho ajuste se realiza comenzando por la capa de salida, según el error cometido,
y propagando este error a las capas anteriores, hasta llegar a a capa de las unidades de entrada, de
ahí que se denomine algoritmo de retropropagación del error. Consiste en dos fases que se repiten
hasta conseguir minimizar el error: En la primera fase se aplica un patrón a las entradas de la red y
su efecto se propaga a través de la misma, capa a capa. Finalmente la red presenta un conjunto de
salidas como respuesta a dicho patrón de entrada. Este paso consiste en el cálculo de la ecuación
(4) para un conjunto de pesos dado[3]. En la siguiente fase, los pesos de la red se recalculan de
acuerdo con una regla de ajuste del error. Así, para cada patrón xn se tiene la siguiente función
de error:
C
1X n 2
En = (ek ) (5)
2
k=0
1
El factor no afecta el resultado de la función y solamente se introduce para facilitar cálculos
2
posteriores. Así mismo, se define al error enk como:
5
Figura 4: Representación del descenso del gradiente para el caso simple con dos pesos sinápticos
∂E ∂zj ∂E ∂g(aj )
δj = − =− (11)
∂zj ∂aj ∂zj ∂aj
6
Una vez más, aplicando la regla de la cadena para calcular la primera derivada parcial:
∂g(aj ) X
δj = δk wkj (13)
∂aj
k
El ajuste del peso sináptico está dado de una manera similar al de la ecuación (10):
Con expresiones análogas para los pesos de la segunda capa. Una de las ventajas de este algoritmo
es su eficiencia computacional .
7
Figura 5: Error Cuadrático Medio
es de que forma debe ser la función para la neurona de salida. En la mayoría de las funciones de
activación
Finalmente, el problema se resume en permitir al algoritmo que realice cuantas iteraciones sean
necesarias para que el error cometido sea menor a un dado o cuando los errores ponderados
de tres iteraciones seguidas sean prácticamente iguales. Se pretende también que la computadora
grafique la serie de datos y la función aproximada.
4 Resultados
Por las limitaciones del tiempo, solamente fue posible correr el programa con una serie de datos. La
respuesta fue aceptable, en las imágenes 5 y 6 se observa como va descendiendo el Error Cuadrático
Medio con cada iteración. En la imagen 7 se encuentra la aproximación de la red a los datos.
5 Conclusión
A través de los resultados obtenidos, se puede ver que las redes neuronales son una herramienta
bastante útil para interpolar una función a través de datos experimentales, que pueden ser derivados
de experimentos físicos o de cualquier otra índole.
6 Referencias
1. José, T. P; Roque, M. M: Inteligencia Articial: Métodos, técnicas y aplicaciones. España,2008.
8
Figura 6: Zoom a la gráfica del Error Cuadrático Medio
9
2. Miguel, A.l: Aproximación de funciones con redes neuronales.2016.
3. Almeida, L. B.: Langlois, T.; Amaral, J. D. y Plakhov:«Parameter adaptation in stochas-
tic optimization» En: D. Saad (Ed.), On-line Learning in Neural Networks, capítulo 6, pp.
111–134. Cambridge University Press, 1999.
4. Bishop, C. M.: Neural Networks for Pattern Recognition. Oxford University Press, Inc., New
York, USA, 1995.
5. Castillo, E.; Fontenla-Romero, O.; Betanzos, A. Alonso y GuijarroBerdiñas, B.: «A Global
Optimum Approach for One-Layer Neural Networks». Neural Computación, 2002, 14(6), pp.
1429–1449.
7 Apéndice 1: Código
l o a d ( ’ d a t o s . mat ’ )
Q=s i z e (P , 2 ) ;
# Valores i n i c i a l e s
n1 = 3 0 ;
n2 = 4 0 ;
ep =1;
W1 = 2∗ ep ∗ rand ( n1 , 1 ) −ep ;
b1 = 2∗ ep ∗ rand ( n1 , 1 ) − ep ;
W2 = 2∗ ep ∗ rand ( n2 , n1 ) − ep ;
b2 = 2∗ ep ∗ rand ( n2 , 1 ) − ep ;
W3 = 2∗ ep ∗ rand ( 1 , n2 ) − ep ;
b3 = 2∗ ep ∗ rand − ep ;
a l f a =0.1;
f o r Epocas =1:2000
sum=0;
f o r q=1:Q
#q=r a n d i (Q) ;
#Pr op a ga ci on de l a e n t r a d a h a c i a l a s a l i d a
a1=s i g m o i d (W1∗P( q)+b1 ) ;
a2 = s i g m o i d (W2∗ a1 + b2 ) ;
a3 = W3∗ a2 + b3 ;
#R e t r o p r o p a g a c i o n de l a s e n s i b i l i d a d e s
e = T( q)−a3 ;
s 3 = −2∗1∗ e ;
s 2 = d i a g ((1 − a2 ) . ∗ a2 ) ∗W3’ ∗ s 3 ;
s 1 = d i a g ((1 − a1 ) . ∗ a1 ) ∗W2’ ∗ s 2 ;
#A c t u a l i z a c i o n de p e s o s s i n a p t i c o s y p o l a r i z a c i o n e s
W3 = W3 − a l f a ∗ s 3 ∗ a2 ’ ;
b3 = b3 − a l f a ∗ s 3 ;
W2 = W2 − a l f a ∗ s 2 ∗ a1 ’ ;
b2 = b2 − a l f a ∗ s 2 ;
10
W1 = W1 − a l f a ∗ s 1 ∗P( q ) ’ ;
b1 = b1 − a l f a ∗ s 1 ;
# Sumando e l e r r o r c u a d r a t i c o
sum = e ^2 + sum ;
endfor
#ECM
emedio ( Epocas)=sum/Q;
endfor
f i g u r e , p l o t ( emedio )
#V e r i f i c a c i o n G r a f i c a
p = −0:0.01:6;
for q = 1: length (p)
a1 = s i g m o i d (W1∗p ( q ) + b1 ) ;
a2 = s i g m o i d (W2∗ a1 + b2 ) ;
a3 ( q ) = W3∗ a2 + b3 ;
endfor
f i g u r e , p l o t ( p , a3 , P , T , " r ∗ " )
# C a l c u l o d e l e r r o r c u a d r a t i c o medio para l o s p a t r o n e s de e j e m p l o
ec = 0 ;
f o r q = 1 :Q
a1 = s i g m o i d (W1∗P( q ) + b1 ) ;
a2 = s i g m o i d (W2∗ a1 + b2 ) ;
a = W3∗ a2 + b3 ;
e c = e c + (T( q ) − a ) ^ 2 ;
endfor
e c /Q
ACLARACIÓN:
• datos.mat fueron unos datos extraídos desde internet correspondientes a una función sigmoi-
dal con ruido gaussiano
11