Está en la página 1de 30

I.

REDES NEURONALES
MULTICAPA CON
CONEXIONES
FEEDFORWARD
PERCEPTRON MULTICAPA
Es una red neuronal multicapa con 3 o más capas, con conexiones hacia
adelante.
TOPOLOGÍA:
La capa de entrada tiene N neuronas, con función de transferencia identidad.
1 o más capas ocultas con función de transferencia sigmoidal o tangente
hiperbólica.
La capa de salida tiene M neuronas, con función de transferencia sigmoidal o
tangente hiperbólica o identidad.
Algoritmo Backpropagation
1.Leer los parámetros de aprendizaje:
N = número de variables de entrada
M = número de variables de salida
L = número de neuronas de la capa oculta
npe = número de parámetros de entrada
alfa, emax=error máximo, itmax=No. máximo de iteraciones
2. Leer los patrones de entrada y la salida deseada
Xp=(X1p, X2p, … , Xnp) , dp, con 1<= p <= npe
3.Inicializar los pesos en 0 o en valores aleatorios próximos a 0
Wji=0 (capa oculta), Wkj= 0 (capa de salida)
4. t= 1 # iteración 1
5. sw = 0
5. while t<=itmax and sw==0 do
6. p= 1 # patrón de entrada 1
7. while p<=npe do
8. # calcular la salida
# CAPA OCULTA
NETj= X0PWj0+X1pWj1+…+XNPWjN # Entrada neta
Algoritmo Backpropagation
# CAPA DE SALIDA
NETK= Y0PWK0+YKpWK1+…+YLPWKL # Entrada neta
yK = F(NETK ), para 1<= k <= M
9. # Calcular el error
# CAPA DE SALIDA
k = (dk – yk) F’(NETk) para 1<= k <= m
# CAPA OCULTA
J = F’(NETj)  (wkj * J) , con 1 <= j <= L
10. # Regla de aprendizaje (ACTUALIZAR PESOS)
# CAPA OCULTA
wJI = wJI +  (J ) X0P
# CAPA DE SALIDA
wKJ = wKJ +  (K )YJP
11. p= p + 1
12. # CALCULAR EL ERROR PROMEDIO
13. Ep = (1/M)*  (k)^2, con 1<= k <= M
14. end-while
Algoritmo Backpropagation

15. if Ep <emax para p=1,2,…,npe then sw=1


14. t = t + 1
15. end-while
16. if sw==1 then return W # retorna el vector de pesos
else return “no aprendió”
17. end
EJEMPLO: FUNCION XOR
X1 X2 Y
0 0 0 B
0 1 1A
1 0 1A
1 1 0B

x2
(0,1) (1,1)
A B
A

B
B A x1
(0,0) A (1,0)

El perceptron multicapa con 4 capas aprende la función XOR:


PERCEPTRON MULTICAPA EN MATLAB
function multicapa % PROBLEMA DE CLASIFICACIÓN: XOR
rng('default')
% DEFINICIÓN DE LOS VECTORES DE ENTRADA-SALIDA
P= [0 0 1 1; 0 1 0 1];
T = [0 1 1 0] ;
% CONSTRUCCIÓN DE LA RED NEURONAL
% 4 NEURONAS EN LA CAPA OCULTA
net = feedforwardnet(4);
% APRENDIZAJE
% DAR VALORES A LOS PARÁMETROS
% 80% DE LOS EJEMPLOS PARA TRAIN
net.divideParam.trainRatio=0.8;
% 10% DE LOS EJEMPLOS PARA TEST
net.divideParam.testRatio=0.1;
% 10% DE LOS EJEMPLOS PARA VALIDATION
net.divideParam.valRatio=0.1;
% NÚMERO MÁXIMO DE ITERACIONES
net.trainParam.epochs = 2000;
PERCEPTRON MULTICAPA EN MATLAB
% ERRORES MÁXIMOS:
net.trainParam.min_grad= 1e-20;
net.trainParam.goal = 1e-30;
net.trainParam.lr = 0.01;
net = train(net,P,T);
% MOSTRAR LA RED
view(net)
% CONSULTA
Q= P;
Y=sim(net,Q)
% ERROR
e= T – Y;
MSE = mse(e)
end
EJECUCIÓN
EJECUCIÓN
EJECUCIÓN
EJECUCIÓN (PERFORMANCE)
EJECUCIÓN (REGRESIÓN)
APRENDIZAJE SUPERVISADO POR ENSAYO Y ERROR

TOPOLOGIA

EJEMPLOS DE TRAIN TRAIN

SI
PESOS Etrain<emax

NO
EJEMPLOS DE
TEST
TEST

SI
Etest<emax

NO

QUERY (SIMULATION)
ENTRADA SALIDA
TIPOS DE INFORMACIÓN DE
ENTRADA Y SALIDA
Como se vio antes, se tienen los tipos de información siguientes:

1) INFORMACIÓN DISCRETA
Se usa una neurona para representarla.
a) Binaria
0 y 1 ó -1 y 1

b) No binaria
0 , 0.5, 1
-1, -0.5, 0, 0.5, 1
 
2) INFORMACIÓN CONTINUA
Se usa una neurona para representarla
[ -∞ , ∞ ]
[ -1 , 1 ]
[0,1]
C. TIPOS DE INFORMACIÓN DE
ENTRADA Y SALIDA
3) INFORMACIÓN SIMBÓLICA
 Si son símbolos ordenables se usa una neurona para
representarla.
 Si son símbolos no ordenables se usa N neuronas para
representarla.
Edad Ordenable No Ordenable
Bebe -1 00001
Niño -0.5 00010
Joven 0 00100
Adulto 0.5 01000
Anciano 1 10000
NORMALIZACIÓN DE LA
INFORMACIÓN CONTINUA
En el caso de la información continua:
Si en la capa de salida se tiene la función de transferencia sigmoidal
(devuelve valores entre [ 0,1 ]) o tanh (devuelve valores entre [-1,1] )
entonces los datos de los ejemplos de aprendizaje, que toman valores
entre [-∞ , ∞] tienen que ser normalizados.
Es decir, si la salida deseada varía entre [10, 100], nunca va a
coincidir con la salida obtenida que varía entre [0,1] si la red tiene
función sigmoidal en la capa de salida y la red neuronal no va a
aprender. Para que coincida hay que normalizar los ejemplos de
aprendizaje.
Vemos el caso en que se normalizan los datos que varían entre [a,b]
al intervalo [0,1] (algo similar es cuando se normalizan a [-1,1])
NORMALIZACIÓN DE LA
INFORMACIÓN CONTINUA
NORMALIZADO

0.9

Y
ɸ
0.1

A X B SIN
NORMALIZAR

Los ejemplos de entrenamiento están en el intervalo [A, B]


Se hace A equivalente a 0.1 y no a 0, por si se presentaran datos
menores que A. B equivale a 0.9 y no a 1, por si se presentaron datos
mayores a B.
X es el dato sin normalizar, Y es el normalizado
tan ɸ = (Y – 0,1) / (X - A) = (0.9 – 0.1) / (B - A)
Y = 0.1 + (0.9 – 0.1) * (X - A)/ (B - A) PARA NORMALIZAR
X = A + (B – A)*(Y -0.1) / (0.9 – 0.1) PARA DESNORMALIZAR
EJEMPLOS
1. PREDICCIÓN:
AJUSTE DE CURVAS
Se da un conjunto de puntos (valores de X, Y) y la red
neuronal debe aprender los ejemplos de entrenamiento,
es decir, asociar los valores de X con los de Y, como si
se hiciera pasar una función por el conjunto de puntos.
En la consulta, se da un valor de X y la red neuronal
retorna el valor de Y, según lo que ha aprendido.
Como el aprendizaje puede ser complejo, se entrena a
la red neuronal con varias opciones de topología.
PRIMERA OPCION: red neuronal con 5 neuronas en la
única capa oculta:
PERCEPTRON MULTICAPA EN MATLAB
function multicapa6
% APROXIMACIÓN DE FUNCIONES CON RED MULTICAPA
% cosX = f(X, seno X)
clear all; close all;
% DEFINICIÓN DE LOS VECTORES DE ENTRADA-SALIDA
X=0:0.02:1;
P= [ X ; cos(X) ];
T = sin(X) ;
% DISEÑO DE LA RED
% [4 5] neuronas de las capas ocultas
% ALGORITMO DE APRENDIZAJE BACKPROPAGATION (trainlm)
net = feedforwardnet([4 5],'trainlm');
net = configure(net,P,T);
% ENTRENAMIENTO DE LA RED NEURONAL
% APRENDIZAJE
% DAR VALORES A LOS PARÁMETROS
% 80% DE LOS EJEMPLOS PARA TRAIN
net.divideParam.trainRatio=0.8;
% 10% DE LOS EJEMPLOS PARA TEST
net.divideParam.testRatio=0.1;
% 10% DE LOS EJEMPLOS PARA VALIDATION
net.divideParam.valRatio=0.1;
PERCEPTRON MULTICAPA EN MATLAB

% NÚMERO MÁXIMO DE ITERACIONES


net.trainParam.epochs = 2000;
net.trainParam.show = 10;
net.trainParam.goal = 0.001;
net.trainParam.lr = 0.01;
net = train(net,P,T);
% CONSULTA
X1=0.01: 0.02 :1.01;
Q=[ X1 ; cos(X1) ];
Y=sim(net,Q)
% ERROR
e= T – Y;
MSE = mse(e)
ERROR = abs( (T - Y ) ./ T )*100
plot(P,T,'+'); hold on;
plot(P,Y,'-r'); hold off;
title('Vectores de entrenamiento');
xlabel('Vector de entrada X');
ylabel('Vector Target T');
end
PERCEPTRON MULTICAPA EN MATLAB
RESULTADOS DEL APRENDIZAJE:
Se hicieron pruebas (ensayo y error) con distintas topologías:
Variando el número de neuronas y de capas ocultas.
El menor error se obtuvo con 8 neuronas en la capa oculta 1 y 4
en la capa oculta 2, como se ve en la siguiente tabla resumen:

Nº NEURONAS Nº NEURONAS ERROR (mse)


CAPA OCULTA 1 CAPA OCULTA 2
5 0 3.5351e-04
8 4 3.4362e-04
8 0 8.4408e-04
RESULTADO
TOPOLOGÍA DE LA RED
TRAINING
PERFORMANCE (ERROR MINIMO)
REGRESION
SI SE SUPERPONEN LAS 3 LÍNEAS, LA RN HA APRENDIDO
HISTOGRAMA DE ERROR
PROBLEMAS

RESOLVER LOS PROBLEMAS 1, 2, 3, 4 Y 5 QUE SE


ADJUNTAN EN WORD.
GRACIAS

También podría gustarte