You are on page 1of 14

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA


UNIDAD DE PSOGRADO

Red Neuronal Perceptron Multicapa

1. Objetivos
1. Comprender e implementar el algoritmo backpropagation.

2. Su estudio comprende:

a) Modo batch versus aprendizaje on-line


b) Importancia de las diferencias de las funciones de activación.
c) Métodos de convergencia de velocidad
d ) Criterio stopping
e) Mı́nimo local y generalización

3. Listar aplicaciones potenciales del algoritmo

2. Introducción
Las redes Perceptron y ADALINE demostraron ser máquinas de aprendizaje poderosas pero hay cierto
mapeo que hace imposible el uso de estas redes. Los mapeos que realizan estas redes se caracterizan
por ser linealmente separables. Ahora es posible mostrar los mapeos linealmente no separables que
pueden ser modelados por una red multicapa tipo perceptron: Esta red se hizo conocida en los
años sesenta pero lo que no era conocido era que una regla le permitirı́a conectar a una red para
aprender el mapeo. Tal regla ha sido descubierta independientemente en diferentes tiempos [Werbos,
1974; Parker, 1985] pero ha estado espectacularmente popularizado por el PDP (Parallel Distributed
Processing) bajo el nombre de Backpropagation. Un ejemplo es una red multicapa perceptron (Multi–
Layer–Perceptrons, MLP) se muestra en Figura 1.

w11
X1 1 v11
w12
w10 Y
3
v12
w21
X2 2 v10
w22
w20
+1 +1

Figura 1: Red neuronal MLP.

La actividad en la red se propaga adelante vı́a los pesos de la capa de la entrada a la capa oculta
dónde alguna función de la activación neta es calculada.

1
Entonces la activación se propaga por los pesos a las neuronas de las salidas. Ahora dos conjuntos de
pesos deben ser actualizados - aquéllos entre la capa oculta y las capas de salida y aquéllos entre la
entrada y las capas ocultas. El error debido al primer conjunto de pesos es claramente calculable por
la regla LMS previamente descrita; sin embargo, ahora se exige propagar esa parte del error al revés
debido a los errores que existen en el segundo conjunto de pesos y asignan al error proporcionalmente
a los pesos que lo causan.

Al analizar una red MLP debemos enfrentarnos al “problema de asignación de crédito” es decir, se
debe decidir cuánto efecto tiene cada peso en la primera capa de pesos que tienen la salida final de
la red. Esta asignación es el resultado central del método Backpropagation.

Se puede tener cualquier número de capas ocultas, las que nosotros deseamos desde que el método es
bastante general; sin embargo, el factor limitante es normalmente el entrenamiento en el tiempo que
puede ser excesivo para muchas redes multicapa. Además, se ha mostrado que las redes con una sola
capa oculta son suficientes para aproximar cualquier función continua (o de hecho cualquier función
con un número finito de discontinuidades) con tal de que usemos una función de activación no lineal
(diferenciable) en la capa oculta.

3. Red Neuronal Multicapa


Una red neuronal multicapa (MLP), es una estructura paralela que procesa información en forma
distribuida por elementos de procesamiento llamados neuronas, que están interconectados con canales
unidireccionales. Cada elemento de procesamiento tiene una conexión de salida, la misma que se
ramifica en tantas conexiones colaterales como se requiera (cada una lleva la misma señal a la salida
del procesador). La Figura 2 muestra una red MLP de estructura (n-N-m).

+1

W10
+1

C10
h1
W11

O1
x1

xn
Om

W LN hN CML C1m

+1
W N0

+1

Figura 2: Red neuronal MLP de estructura (n-N-m).

Hay n nodos de entrada, N neuronas ocultas y m neuronas de salida. Los nodos de entrada reciben
los valores a procesar x j ( j = 1, 2, . . ., n), las neuronas ocultas reciben las entradas x j ponderadas por
los pesos wi j y producen las salidas hi (i = 1, 2, . . ., N), finalmente los nodos de salida hacen la suma

2
ponderada de las salidas de las neuronas ocultas. Analizando la red de la Figura 2 la salida de las
neuronas ocultas está dada por:

n
∑ wi j x j + wi0
 
hi = σ (si ) = σ i = 1, 2..., N (1)
j=1

wi j son los pesos que unen la neurona i con la entrada j, mientras que wi0 son los pesos asociados a
la entrada umbral x0 = 1. Las salidas de la red son.

N
∑ clihi + cl0
 
fl = σ
i=1

cli son los pesos que unen la salida l con la neurona i.

Nota: Si la red no tiene entradas umbral ni pesos umbral en las salidas cuando se trata de nodos. Sin
embargo es posible que las neuronas en la capa de salida tengan función de activación lineal, si fuera
el caso la salida de las neuronas es dado por:

N
fl = ∑ cli hi l = 1, 2..., m (2)
i=1

3.1. Entrenamiento del Algoritmo Backpropagation


Supongamos una MLP de estructura (3-3-2), para realizar el entrenamiento utilizaremos la ley general
de aprendizaje basada en gradiente estudiada anteriormente.

wk+1 = wk + α (−∇k ) (3)

La red tiene entradas x1 , x2 y x3 (umbral de x0 ). Las salidas deseadas son d1 y d2 . El patrón de


entrada/salida deseada será la data Q = {(x, d)}. Las salidas de la red son y1 y y2 , por lo tanto
los errores entre las salidas deseadas y las salidas actuales es e1 = d1 − y1 y e2 = d2 − y2 . Durante
la presentación de un patrón, la señal de error cuadrático a la salida de la neurona l en el n-ésimo
entrenamiento está definido por.

e2l = (dl − yl )2 , l = 1, 2 (4)

Se busca minimizar el error cuadrático medio de la red.

1 2 2
Ek = ∑ el
2 l=1
(5)

Salidas de la red, y1 = c10 + c11 h1 + c12 h2 + c13 h3 y y2 = c20 + c21 h1 + c22 h2 + c23 h3 .

3
Generalizando la salida de la red, asumiendo que tiene una función de activación lineal.

yl = cli hi (6)

donde, l = 1, 2, i = 1, 2, 3.

Calculamos el gradiente (∇) respecto a los pesos cli de la salida de la red neuronal, reemplazando
(6) en (3).

e2l = (dl − cli hi )2 (7)

Calculando el gradiente del error cuadrático respecto de los pesos de salida.

∂ Ek
= (dl − cli hi )(−hi ) = −el hi (8)
∂ cli
Entonces la regla para actualizar los pesos de la salida es.

li = cli + α el hi
ck+1 k
(9)

donde, l = 1, ..., m, i = 1, ..., N.

Generalizamos las salidas de las neuronas ocultas.

hi = σ (si ) = σ (wi j x j ) (10)

donde, i = 1, 2, 3, j = 0, 1, 2, 3.

Calculando el gradiente del error cuadrático respecto de los pesos de la neurona oculta, reemplazando
(10) en (7).

e2l = (dl − cli σ (wi j x j ))2 (11)

Derivando (11) respecto de los pesos wi j .

∂ Ek
= −(dl − cli σ (wi j x j ))cli σ ′ (wi j x j )x j (12)
∂ wi j
Además el = (dl − cli σ (wi j x j )), siendo el error de la regla delta δi = cli el . Para actualizar los pesos
de la entrada, reemplazamos en (2).

i j = wi j + αδi σ (si )x j

wk+1 k
(13)

4
3.2. Algortimo Descriptivo Backpropagation
Es importante describir el algoritmo backpropagation completo, es decir la propagación feedforward,
actualización de los pesos con la regla delta, y encontrar un simple camino para el cuando la red es
sometida a un entrenamiento.

1. Inicializar los pesos con un número aleatorio pequeño.

2. Escoger los patrones de entrada, x, y aplicarlo a la capa de entrada.

3. Propagar la activación forward a través de los pesos hasta que la activación alcance a las
neuronas de salida.

4. Calcular la δs para la capa de salida:

δ jk = (Dkj − ykj ) f ′ (net kj )


usando los valores de la salida deseada para la selección de los patrones de entrada

5. Calcular la δs para la capa oculta usando:

N
δik = ∑ δ jk w ji f ′ (netik)
j=1

6. Actualizar los pesos de acuerdo a:

∆k wim = ηδik ykm

7. Repetir los pasos del 2 al 6 para todos los patrones.

Un apunte final es el valor; la regla de actualización después de que los errores ha sido propagados es
local. Esto hace que la regla del Backpropagation sea un candidato para la implementación paralela.

3.3. El Problema XOR


Usaremos la red que se mostró en la Figura 1 para resolver el problema de la función lógica XOR de
acuerdo con el siguiente procedimiento:

♣ Inicialización

Inicializar los pesos W y pesos V con valores aleatorios pequeños.


Inicializar la razón de aprendizaje η para valores pequeños, por ejemplo 0.001.
Escoger la función de activación, por ejemplo tanh().

♣ Seleción de patrones
Se tiene 4 patrones para este problema. Note que los patrones escogidos no sólo determinan
las entradas también para los patrones deseados.

5
♣ Feedforward
A las unidades ocultas primero, se les etiqueta como 1 y 2.

net1 = w10 + w11 x1 + w12 x2


net2 = w20 + w21 x1 + w22 x2
y1 = tanh(net1 )
y2 = tanh(net2 )
Ahora a la unidad de salida feedforward se le etiqueta como 3.

net3 = v10 + v11 y1 + v12 y2


y3 = tanh(net3 )
♣ Error feedback
Calcula el error a la salida.

δ3 = (D − y3 ) f ′ (net3 ) = (D − y3 )(1 − y23 )


y el error feedback para las neuronas ocultas.

δ1 = δ3 v11 f ′ (net1 )
= δ3 v11 (1 − y21 )
δ2 = δ3 v12 f ′ (net2 )
= δ3 v12 (1 − y22 )

♣ Cambio de pesos

∆v11 = η · δ3 · y1
∆v12 = η · δ3 · y2
∆v10 = η · δ3 · 1
∆w11 = η · δ1 · x1
∆w12 = η · δ1 · x2
∆w10 = η · δ1 · 1
∆w21 = η · δ2 · x1
∆w22 = η · δ2 · x2
∆w20 = η · δ2 · 1

♣ Regresar a la selección de patrones

6
4. Problemas en el Backpropagation
Se dice que una red neuronal que ha sido entrenada, si las salidas calculadas por la red con nuevos
ejemplos están próximas a los valores deseados, hay generalización (Haykin, 1995).

Figura 3: Red neuronal feedforward.

De este modo, entendamos por generalización, la habilidad de una red neuronal de almacenar en sus
pesos sinápticos caracterı́sticas que le son comunes a todos los patrones de entrenamiento que fueron
usados durante la fase de entrenamiento.

Cuando una nueva entidad es almacenada, las fortalezas de las conexiones existentes representadas
por los pesos se modifican suavemente. Si estas modificaciones refuerzan los pesos previamente al-
macenados entonces ocurre generalización.

El número de casos utilizados para el entrenamiento deben ser suficientes y además


representativos del conjunto de casos que se desea generalizar

Si el problema es de clasificación, los ejemplos que formen parte del entrenamiento y ellas deben
representar todas las categorı́as. La red puede aprender mejor con una mayor cantidad de ejemplos
de todas las categorı́as. Si es de aproximación (vale para predicción), se deben incluir ejemplos de
valores continuos a través de todo el rango. Es decir, de la nube de ejemplos de entrenamiento, la
muestra debe contener ejemplos de los bordes y del centro para un mejor entrenamiento.

Estas dos caracterı́sticas principales vigiladas durante el entrenamiento resultan vitales para lograr una
buena generalización. Los patrones generalizados son la suma de todas las modificaciones separadas
que han ocurrido. Es decir, en la medida que un patrón de entrenamiento es presentado a la red, ellos
pueden generalizar debido al cambio ocurrido en sus pesos.

4.1. Modo Batch versus Aprendizaje On-Line


El algoritmo del Backpropagation tiene su potencial en el modo de entrenamiento batch, que es
empleado si todos los patrones se presentan a su vez a la red, entonces el error total calculado y la
actualización de los pesos son separados al final de cada época de entrenamiento. Los algoritmos de

7
optimización del Toolbox de Redes Neuronales (TRN) usan el modo batch en el entrenamiento de la
red.

Sin embargo, es más común usar la versión on-line (o pattern) dónde los pesos se actualizan después
de la presentación de cada patrón individual. Se ha encontrado empı́ricamente que esto lleva a la
convergencia más rápida a través de allı́ es una posibilidad teórica de entrar en un ciclo de cambios
repetidos. Ası́ en el modo on-line que usualmente asegura que los patrones son presentados a la red
aleatoriamente y de orden cambiante.

El algoritmo on-line tiene la ventaja que requiere menor espacio de almacenamiento que el método
batch. Por otro lado si usamos el modo batch es más exacto: el algoritmo on-line lleva en forma
zig-zag a la solución final. Puede mostrarse que el cambio esperado (donde la expectativa se toma
sobre todos los patrones) en los pesos usando el algoritmo on-line es igual al cambio de los pesos en
modo batch.

4.2. Funciones de Activación


Las más populares funciones de activación son la función sigmoide logı́stica y la función tanh(•).
Ambas funciones satisfacen el criterio básico de ser continuamente diferenciables. En suma, ambas
son monotónicas y tienen propiedades importantes, el cambio es más grande en su valor intermedio y
menor a los valores extremos. Esto lo hace posible saturar la salida de una neurona a otra de valores
extremos. El punto final es la facilidad con que sus derivadas pueden ser calculadas:

Si f (x) = tanh(bx), entonces:

f ′ (x) = b(1 − f (x) • f (x))

1
Si f (x) = , entonces:
1 + exp(−bx)

f ′ (x) = b f (x)(1 − f (x))

4.3. Inicialización de Pesos


Los valores iniciales de los pesos quieren en muchos casos determinar el valor de la convergencia de la
red. Considere una superficie de energı́a; entonces si nosotros usamos un método de entrenamiento
batch, los valores iniciales de los pesos constituyen el único elemento estocástico dentro del régimen
de entrenamiento. La red puede converger a un valor particular dependiendo cómo quedan los vectores
originales. Hay un peligro que consiste en tener valores iniciales de la red suficientemente grandes,
la red quedará en un valle pequeño de atracción y un mı́nimo local alto; esto parecerá al observador
como una red con todo los pesos en los puntos de saturación (tı́picamente 0 y 1 o +1 y -1). Es usual
por consiguiente empezar con los pesos pequeños uniformemente distribuidos dentro de un rango
pequeño. Haykin recomienda el rango:
 
W ⇒ − 2.4/Fi , +2.4/Fi

8
4.4. Momentum y Velocidad de Convergencia
El método Backpropagation básico descrito anteriormente no es conocido por su velocidad rápida de
convergencia. Note que aunque nosotros pudiéramos simplemente aumentar la razón de aprendizaje,
esto tiende a introducir la inestabilidad en la regla de aprendizaje que causa las oscilaciones en el
aprendizaje de los pesos. Es posible acelerar el método básico de varios maneras. El más simple es
agregar un término momemtum al cambio de pesos. La idea básica es hacer el nuevo cambio de
pesos grande si está en la dirección de los cambios de pesos anteriores mientras si está en diferente
dirección hacer el cambio más pequeño. Ası́ nosotros usamos:

∆wi j (t + 1) = (1 − µ )δ j oi + µ ∆wi j (t)


en esta ecuación, µ determina la influencia del momentum. Claramente el parámetro momentum µ
esta entre 0 y 1. El segundo término a veces es conocido como el “la anulación de la curva lisa”
entonces el momentum tiene una propiedad adicional que ayuda resbalar la regla de aprendizaje sobre
los mı́nimos locales.

4.5. Criterio Stopping


Nosotros debemos tener un criterio para decidir cuando nuestra red ha resuelto el problema, sin
embargo, es posible detenerla cuando:

1. La norma Euclideana del vector gradiente alcanza valores suficientemente pequeños entonces
nosotros conocemos el mı́nimo valor, la velocidad de cambio en la superficie de error con
respecto al vector de pesos es cero. Aquı́ se presenta dos desventajas con este método:

a) puede llevar mucho tiempo a excesivo tiempos de entrenamiento.


b) requiere calcular el vector gradiente de la superficie del error con respecto a los pesos.

2. El cambio de velocidad del error cuadrático medio es suficientemente pequeño.

Tı́picamente nosotros detendremos el aprendizaje antes que cada patrón haya aprendido perfecta-
mente, es decir, cuando las salidas son mayores que 0.9 o menores de 0.1.

4.6. Mı́nimo Local


El descenso del error se relaciona con los mı́nimos locales. Podemos ver que un mı́nimo local es un
problema frecuente en el aprendizaje de la red cuando se trata de aproximar funciones no lineales,
los pesos de una red convergerán tı́picamente a las soluciones, aún cuando ellos no sean globalmente
óptimos. Hay todavı́a una evidencia analı́tica de apoyar esta creencia. Un heurı́stico a menudo cita
asegurar que los pesos iniciales (aleatorios) son tales que la entrada media a cada neurona es aproxi-
madamente la unidad (o simplemente √ debajo de él). Esto hace pensar en la aleatoriedad de los pesos
iniciales de neurona j alrededor de 1/ N dónde N en el número de peso en la neurona del j-ésima.
La segunda heurı́stica introduce una ruido pequeño aleatorio dentro en la red también en las entradas
o con respecto al cambio de pesos.

9
4.7. Peso Decae y Generaliza
Mientras nosotros deseamos ver la buena performance en el conjunto de entrenamiento, nosotros
estamos más interesados en la prueba de la performance de la red puesto que desde que esta es una
medida que generaliza a la red. Recuerde que el conjunto de entrenamiento está compuesto de casos
que nosotros ya no tenemos la respuesta. Nosotros deseamos que la red muestre los resultados exactos
de los datos para conocer la respuesta. Hay una atracción entre la exactitud del entrenamiento y la
exactitud en el conjunto de prueba.

También notamos una perfecta memoria de los patrones que se reúnen durante el entrenamiento es
esencialmente una tabla con datos discontinuos y que parecen corresponder a un resultado particular.
También la generalización no sólo es importante porque nosotros deseamos que una red encuentre
la performance de nuevos datos que no ha visto durante el entrenamiento, también porque nosotros
somos responsables de tener datos que son ruidosos o incompletos.
Progresion de la señal de entrenamiento
1
ynet
T
0.5

−0.5

−1
−4 −3 −2 −1 0 1 2 3 4

Figura 4: Capacidad de generalizar de la red.

El problema con la representación más explı́cita dada por la curva es que puede estar desencaminando
en la posición de otra manera directamente en la curva. Si una red neural tiene un número grande de
pesos (cada peso representa un grado de libertad) nosotros podemos estar en el peligro del overfitting
(sobre ajuste) de la red con los datos de entrenamiento que llevarán a una pobre performance en los
datos de prueba. Para evitar este peligro nosotros o podemos quitar las conexiones explı́citamente
o podemos hacer que cada peso tenga la tendencia de caer a cero. Es un método simple wnew ij =
(1 − ε )wold
i j después de cada actualización de pesos. Esto tiene una desventaja de desalentar el uso
de pesos grandes en que un solo peso grande puede deteriorarse más que muchos pesos pequeños.
Pueden encontrarse las rutinas de decaimiento más complejas qué alentará a los pesos pequeños a
desaparecer.

4.8. Número de Neuronas Ocultas


El número de nodos ocultos tiene un efecto particularmente grande en la capacidad del generalizar la
red: las redes con demasiados pesos (demasiados grados de libertad) tenderá a memorizar los datos;
las redes con pocos pesos son incapaces de realizar la tarea asignada. Por consiguiente se han derivado
muchos algoritmos para crear las redes neuronales con pocas neuronas ocultas.

Recortar pesos que son pequeños en magnitud. Los pesos sólo pueden clasificar ya que han estado
en el peligro de modelar los rasgos más finos de los datos de la entrada. Desarrollar las redes hasta
que su performance sea suficientemente bueno en el conjunto de prueba.

10
Ejercicio
Considere un problema de clasificación con dos clases de vector de la entrada dados por.
       o
n 0 0 2 2
Clase 1: p1 = , p2 = , p3 = , p4 =
0 0.5 0.5 1
 o        o
n 1 2 1 1 0
Clase 2: p5 = , p6 = , p7 = , p8 = , p9 =
0 0 0.5 1 1
La Figura 5 nos muestra la arquitectura de la red, con 2 nodos de entrada, una primera capa de 2
neuronas ocultas, y 1 neurona de salida que usaremos para el entrenamiento.

0.2618
p1
0.4733
0.7839 a
0.7085
0.9028
p2 0.9862

0.4511
0.8289

0.8045
+1 +1

Figura 5: Estructura de la red neuronal (2-2-1).

En la Figura 6 los cı́rculos en (+) representa a los vectores de la clase 1, mientras que los cı́rculos en
blanco (◦) representa a los vectores de la clase 2.

Espacio de patrones
1.5

1
P(2)

0.5

−0.5
−0.5 0 0.5 1 1.5 2 2.5
P(1)

Figura 6: Patrones de entrada/salida.

La red ha sido entrenada con el algoritmo BP, dando las siguientes matrices de pesos y bias.

11
 
1 0.2618 0.7839
lw2 =
 
iw = 0.4733 0.9028
0.7085 0.9862
 
0.4511
ib1 lb2 =
 
= 0.8289
0.8045

Empezamos haciendo el análisis del los lı́mites de decisión.

iw(1) 1
h1 = − · x1 − · ib(1)
iw(3) iw(3)
iw(2) 1
h2 = − · x2 − · ib(2)
iw(4) iw(4)
La Figura 7 nos da una idea de como los lı́mites de decisión que corresponden a las rectas que se van
posicionando inicialmente para dar lugar a la separación de las clases.
Vectores Clasificados
3

1
P(2)

−1

−2

−3
−2 −1 0 1 2 3 4
P(1)

Figura 7: Lı́mites de decisión iniciales.

Entrenando la Red
% DATA
P=[0 0.0 2.0 2 1 2 1.0 1 0
0 0.5 0.5 1 0 0 0.5 1 1];
T=[1 1 1 1 0 0 0 0 0];
% CREANDO LA RED FF
net = newff(minmax(P),[2 1],{’logsig’,’purelin’},’trainlm’);
% PESOS INICIALES ALEATORIOS
% net.iw{1,1}=rand(2,2);
% net.lw{2,1}=rand(1,2);

12
% net.b{1}=rand(2,1);
% net.b{2}=rand(1);
% W1=net.iw{1,1}
% W2=net.lw{2,1}
% b1=net.b{1}
% b2=net.b{2}
% PESOS INICIALES OPTIMOS
W1 = [0.2618 0.7839; 0.7085 0.9862];
W2 = [ 0.4733 0.9028];
b1 = [ 0.4511; 0.8045]
b2 = 0.8289;
net.iw{1,1}=W1;
net.lw{2,1}=W2;
net.b{1}=b1;
net.b{2}=b2;
% PARAMETROS DE ENTRENAMIENTO
net.trainParam.epochs=300;
net.trainParam.lr=0.05;
net.trainParam.goal=1e-5;
net.trainParam.show=50;
[net,tr]=train(net,P,T);
%TRAINLM-calcjx, Epoch 0/300, MSE 2.57024/1e-005, Gradient 4.6547/1e-010
%TRAINLM-calcjx, Epoch 21/300, MSE 1.73847e-006/1e-005,
% Gradient 0.000861833/1e-010
%TRAINLM, Performance goal met.
% SIMULANDO LA RED y ERROR
a=sim(net,P);
e=T-a;
% ACTUALIZA PESOS Y BIAS
iw=net.iw{1,1}
lw=net.lw{2,1}
ib=net.b{1}
lb=net.b{2}
% PLOTEO DE PERFORMANCE
figure
subplot(211)
plot(tr.epoch,tr.perf,’r’)
title(’Performance de la Red (E_{mse})’)
subplot(212)
plot(tr.epoch,tr.gradient,’k’)
title(’Evolucion del gradiente \nabla_x’)
% PLOTEO DE ESPACIO DE PATRONES
figure
subplot(211)
plotpv(P,T)

13
plotpc(iw,ib)
title(’Espacio de patrones’)

Vectores Clasificados
3

P(2) 1

−1

−2

−3
−2 −1 0 1 2 3 4
P(1)

Figura 8: Clasificación correcta.

Finalmente la red clasifica correctamente y el error converge a cero muy rápidamente como podemos
apreciar en la Figura 5.
Performance de la Red (Emse)
3

2.5

1.5

0.5

0
0 5 10 15 20 25

Evolucion del gradiente ∇x


5

0
0 5 10 15 20 25

Figura 9: Performance de la red.

14

You might also like