Professional Documents
Culture Documents
ETSI Telecomunicacin
Universidad Politcnica de Madrid
En estas prcticas se profundizan las tcnicas del aprendizaje automtico, lo cual es una cosa muy
importante en el campo de los Sistemas Inteligentes. La capacidad de aprender es una forma de
definir la inteligencia.
Para este informe se eligi la aprendizaje con redes neuronales. Hay muchos algoritmos para la
aprendizaje en redes neuronales entre los cuales el algoritmo de aprendizaje de retropropagacin
(Backpropagation Neural Networks, BPN) es el ms importante. Por eso usamos este algoritmo. El
algoritmo BPN pertenece al grupo de las redes feedforward (feedforward networks). Estas redes
tienen una arquitectura parecida, pero se diferencian en el modo de aprendizaje. Su fuerte es
clasificar patrones, y estn sometido a un aprendizaje supervisado.
Primero se estudi el funcionamiento de este algoritmo. En la segunda parte se aplic el algoritmo a
diferentes ejemplos entrenando las redes redes y evaluando los resultados del aprendizaje.
El primer objetivo de estas prcticas fue aprender con ms detalle un algoritmo de aprendizaje.
Vamos a echar un vistazo a una neurona en una red feedforward. En este ejemplo tenemos una red
de perceptrn, con su funcin tpica de salida. El esquema de una red de retropropagacin es el
mismo, pero con otra funcin de salida.
Imagen1: Neurona
La activacin a es la suma de las entradas multiplicadas con sus correspondientes pesos. La salida y
es dado por la funcin de escalera.
n
1 si a0
a= w ix i , y=
i=1
0 si a0
En este caso, las salidas solamente usan valores binarios (0 y 1). Pero deseamos usar nmeros reales
para las entradas y salidas. Adems, la funcin de escalera no se puede diferenciar en el cero. Luego
queremos diferenciar esta funcin.
Por lo tanto usamos otra funcin de salida. Un gran rasgo del algoritmo de retropropagacin
consiste en esta funcin, y tambin es la mayor diferencia a los algoritmos de Perceptrn y
ADALINE. Debe ser continua, diferenciable y asimptotica para valores infinitamente grandes, tanto
positivos como negativos. Estos requisitos son cumplidos por la funcin sigmoide, la cual se usa en
el algoritmo BPN. La formula y el diagrama son:
1
y a=sgma= a/
1e
Como miembro del grupo del las redes feedforward, una red de retropropagacin tiene una
arquitectura de capas y solamente conexiones feedforward entre las neuronas, es decir no hay
conexiones laterales, hacia la misma neurona o hacia atrs.
La red de retropropagacin consta de al menos tres capas de nodos (distinto al perceptrn o al
ADALINE). Las capas se denominan tpicamente input (entrada), hidden (capa oculta) y
output (salida). La arquitectura est indicado en la figura x. La capa oculta, es decir los nodos
ocultos son muy importante para extraer caractersticas y para generalizar.
Adems, normalmente hay solamente conexiones entre capas vecinas, y habitualmente las redes de
retropropagacin estn conectadas completamente.
En la figura 3 vemos un ejemplo de tal red de retropropagacin. (Faltan algunos pesos, pero en
realidad cada flecha tiene su peso.)
El ejemplo presentado todava no es interesante, porque todava no ha sido entrenado. Para poder
solver algn problema especfico hay que entrenar la red neuronal como el cerebro de un nio.
Vamos a entrenar esa red neuronal como enseamos a un nio. Le presentamos alguna letra o cifra,
despus le decimos el valor asignado. Por ejemplo presentamos a un nio un imagen de un A y
pronunciamos un A lo mejor posible. Por lo tanto proveemos la red neuronal de un conjunto de
nmeros y la red devuelve un resultado en la capa de salida. Como la red no est entrenada al
principio y las conexiones tienen pesos arbitrarios, no estaremos contentos con los resultados.
Entonces alteraremos algunos pesos para obtener un resultado mejor. Los alteraremos hasta que
obtengamos el resultado deseado para esta entrada. A continuacin lo haremos con otros ejemplos
hasta que obtengamos el resultado deseado para todos los ejemplos.
El conjunto entero debe ser presentado a la red neuronal varias veces para obtener un resultado
satisfactorio.
Capa de entrada Capa oculta Capa de salida
w h [2,1]
Entrada 2 w h [2,2] Salida 2
f ... f ...
Entrada 3 Salida 3
f ... f ...
Ahora podemos calcular las salidas dadas las entradas. Esto permite calcular el error entre la salida
real y la salida deseada para este ejemplo de entrenamiento. Buscamos el error mnimo de la funcin
de error. Denominamos las salidas deseadas D1, D2, ... Dp. El error es entonces:
p p n m
2
E= D k O k 2= D k sgm sgm I iw h [i , j ]w o [ j , k ]
k =1 k =1 j=1 i=1
Esto es una funcin de los pesos de la red neuronal. Para encontrar el valor ms pequeo hace falta
calcular el gradiente respecto a cada peso. Vamos a mover cada peso en la direccin contraria del
gradiente.
El gradiente es un vector de las derivaciones parciales respecto a cada variable de la funcin. Como
el error es una funcin de las salidas de la red, debemos calcular las derivaciones de cada nodo de
salida respecto a cada peso.
n n n
Ol
= sgm H iw o [i , l ]=1sgm H iw o [i , l ]sgm H iw o [i , l ]H k
wo[ k , l ] wo [ k , l ] i=1 i=1 i=1
Con eso podemos calcular el gradiente de la funcin del error. El componente k del gradiente en la
neurona l es:
n n
E
=2 D l O l 1sgm H iw o [i , l ]sgm H iw o [i , l ]H k =o [l ]H k
wo[ k , l ] i=1 i=1
Denominamos a 0[l] factor de error de la neurona l (de la capa de salida). Para calcular los nuevos
pesos fijamos una taza de aprendizaje K (learning rate). Con esto y con el valor negativo del
gradiente obtenemos el nuevo valor del peso aadiendo el vector resultante al vector original de
pesos de la capa corriente.
w o [1, l ] H1
w o [2, l ] =K [l ] H2
o
... ...
w o [n , l ] Hn
Pero antes de ejecutar la asignacin de los nuevos valores calculamos los valores anlogos para la
capa oculta. El procedimiento es similar y la formula final la siguiente:
m m p
E
=1sgm I iw h [i , l ]sgm I iw h [i , l ] o [ n]w o [l , j ]I k
wh[ k , l ] i=1 i=1 j=1
Vemos parmetros correspondientes a la capa anterior en la formula de esta capa. Estos son la razon
por la cual el algoritmo se llama retropropagacin.
Ahora podemos actualizar los valores de todos los pesos. Esto es un ciclo completo para una pieza
de datos de entrenamiento.
Repetimos este ciclo hasta que el error baje a un valor determinado. Ahora la red neuronal tiene un
resultado satisfactorio para este ejemplo, y vamos a los ejemplos siguientes eligiendo uno de ellos
arbitrariamente. Seguimos entrenando hasta que hayamos usado cada uno de los ejemplos muchas
veces. La frecuencia oscila entre unos 20 y unos 10.000 dependiendo de la aplicacin y de la
complejidad.
La mayora de los libros sobre el aprendizaje en redes neuronales demuestran la aplicacin mediante
el ejemplo de una funcin XOR y dicen que est bien para empezar. Por lo tanto vamos a empezar
tambin con este ejemplo.
Imagen4: Topologa
Por supuesto esta red neuronal tiene dos entradas y una salida. Empezamos con una capa oculta de
dos nodos.
Creamos los siguientes conjuntos de patrones para el entrenamiento. El primer es la funcin XOR,
el segundo lo mismo con poco ruido introducido.
XOR_1
entrada_1 0 1 0 1
entrada_2 0 0 1 1
salida 0 1 1 0
XOR_2
entrada_1 0,1 0,2 0,1 0 1 1
entrada_2 0,1 0 0,2 0,9 1 0
salida 0 0 0 1 0 1
El primer experimento se ejecuta con XOR_2 como training set y con XOR_1 como validation set.
El resultado sorprendiente es que no siempre hay un aprendizaje bueno, pero a veces s. Los dos
diagramas han dado por resultado con los mismos patrones de entrenamiento:
Imagen5 Imagen6
Parece que depende mucho de los valores iniciales. Si el algoritmo no converge, se queda atascado
en un mnimo local. En este caso deberamos empezar otra vez con el aprendizaje. En el caso de
xito necesitamos unos 3.000-4.000 ciclos (con =0.2 y dmax=0,1). Pero es evidente que en el caso,
donde hay valores ruidosos, el aprendizaje no tarda ms tiempo.
Vamos a usar los dos conjuntos de datos en lo sucesivo, pero con parmetros alterados:
Ciclos: Usamos para esta red siempre 10.000 ciclos. Con menos podra ser que el aprendizaje no
est competo. Despus de 5.000-10.000 ciclos no se ve ningn cambio.
Diferencia mxima dmax: Con la alteracin no se puede lograr mucho, ni con un valor bajo (0.0) ni
con un valor alto (0.4-0.5). Con un valor alto(prximo a 0.5, ya que un valor mayor que 0.5 no tiene
sentido) se puede conseguir que el aprendizaje converja un poco ms temprano, pero solamente
poco. No influye realmente en el aprendizaje, sino en la tolerancia en el error. En lo sucesivo la
dejamos con el valor estndar (0.1).
Taza de aprendizaje : Cuanto ms bajamos esta taza, tanto ms tiempo tarda el aprendizaje. Por
ejemplo con el primer conjunto de datos y con un =0.02 necesitamos unos 50.000 ciclos para el
aprendizaje. Pero no obtenemos resultados mejores. Con valores demasiado altos (p.e. =20) es
ms probable que el aprendizaje fracase, es decir el error converja en un valor superior a cero.
Con el segundo conjunto es diferente: tambin con una taza muy alta obtenemos resultados buenos.
Se puede deducir que con ms datos de entrenamiento podemos subir la taza de aprendizaje.
Pesos iniciales: A travs de los parmetros en Inicializing podemos ajustar el campo de valores
de los pesos. Ya hemos visto que los valores iniciales de los pesos influye en el resultado del
aprendizaje. Ajustamos ahora todos los pesos a 0.0, y veremos que el error siempre se queda por
encima de 0.5. Luego ajustamos el campo de valores entre -10 y 10. Entonces hace falta subir la
taza de aprendizaje. Pero parece que los resultados son peores que antes.
Funcin de aprendizaje: Se elige ahora otra funcin de aprendizaje: Retropropagacin con
Momentum (Backpropagation-Momentum). Con esta se pretende evitar quedarse atascado en los
mnimos locales. Y verdaderamente la probabilidad de un fracaso es palpablemente ms baja. Pero
no es cero.
Ahora vamos a probar otra topologa para la misma funcin. La sola diferencia sea que hay tres
nodos en la capa oculta.
Con los parmetros estndares se obtiene la misma velocidad como antes: El aprendizaje tarda unos
3.000-4.000 ciclos. La gran diferencia es que el aprendizaje siempre tiene xito, tambin cuando
usamos tazas de aprendizaje altas.
Vemos la nueva topologa en la imagen7 y el diagrama de error en la imagen8.
Imagen7: Topologa
Imagen8: Diagrama del error
La consecuencia es que para la funcin XOR es mucho mejor usar la topologa con una capa oculta
de tres nodos. Pero no se puede generalizar que para cada problema es mejor usar ms nodos.
Con el algoritmo de retropropagacin (Backpropagation) obtenemos resultados buenos con una taza
de aprendizaje =2,0: Despus de 150 ciclos converge el algoritmo y el error desaparece. Podemos
bajar la taza, sin que empeore el aprendizaje (claro, es un poco ms lento). Si subimos la taza,
veremos que el algoritmo ya no es capaz de converger y obtendremos resultados malos.
Podemos concluir que en este ejemplo es ms preciso tener los parmetros ideales que en ejemplo
de XOR. A lo mejor depende de la complejidad de la red neuronal.
Bibliografa
Kevin Gurnay: Computers and Symbols versus Nets and Neurons
Philippe Crochat, Daniel Franklin: Back-Propagation Neural Network Tutorial
Igor Fischer, Fabian Hennecke, Christian Bannes, Andreas Zell: JavaNNS User Manual
Jiri Sima: Introduction to Neural Networks
Andreas Zell, Gnter Mamier, Michael Vogt, Niels Mache, Ralf Hbner, Sven Dring, Kai-Uwe
Herrmann, Tobias Soyez, Michael Schmalzl, Tilman Sommer, Artemis Hatzigeorgiou, Dietmar
Posselt, Tobias Schreiner, Bernward Kett, Gianfranco Clemente, Jens Wieland, Jrgen Gatter:
SNNS User Manual
Alianna J. Maren: Handbook of Neural Computing Applications