Download El Perceptrón simple: neuronas binarias

Document related concepts

Propagación hacia atrás wikipedia , lookup

Perceptrón wikipedia , lookup

Perceptrón multicapa wikipedia , lookup

Red neuronal prealimentada wikipedia , lookup

Adaline wikipedia , lookup

Transcript
PRÁCTICAS DE LABORATORIO
El Perceptrón simple: neuronas binarias
22-04-2008
________________________________________________________________________
PRÁCTICA 1
Construcción de una neurona binaria
Se va a construir una red neuronal con una única neurona que tiene una función paso (escalón), como
función de transferencia, y dos sensores de entrada. Sus entradas van a ser números reales del intervalo
[5,5]:
net=newp([-5 5;-5 5],1,’hardlim’)
% ([Matriz de valores mínimos y máximos de las entradas], Número de neuronas, Función de
x
transferencia)
Su matriz de pesos sinápticos va ser W=[2 -1] y el umbral b=1.5:
net.IW{1,1}=[2 -1];
net.b{1}=1.5;
x
Valores de salida de la neurona lineal para cada una de las entradas del conjunto
­° ª1 º ª 2 º ª3 º ª 1º ½°
C ®« » , « » « » « » ¾ :
°¯ ¬3¼ ¬ 2 ¼ ¬ 4 ¼ ¬ 3¼ °¿
P=[1 -2 3 -1; 3 2 -4 -3];
S=sim(net,P);
SOLUCIÓN:
________________________________________________________________________________
Función que define la neurona binaria:
y
­1
®
¯0
si 2 x1 x2 t 1.5
si 2 x1 x2 1.5
Salidas de la red para cada uno de las entradas del conjunto C:
ª1 º
ª 2 º
ª3 º
ª 1 º
«3» o 1; « 2 » o 0; « 4 » o 1 « 3» o 1
¬ ¼
¬ ¼
¬ ¼
¬ ¼
________________________________________________________________________________
PRÁCTICAS DE LABORATORIO
PRÁCTICA 2
Construcción de una neurona bipolar
Se va a construir una red neuronal con una única neurona que tiene la función signo, como función de
transferencia, y dos sensores de entrada. Sus entradas van a ser números reales del intervalo [5,5]:
net=newp([-5 5;-5 5],1,’hardlims’)
% ([Matriz de valores mínimos y máximos de las entradas], Número de neuronas, Función de
x
transferencia)
Su matriz de pesos sinápticos va ser W=[2 -1] y el umbral b=1.5:
net.IW{1,1}=[2 -1];
net.b{1}=1.5;
x
Valores de salida de la neurona lineal para cada una de las entradas del conjunto
­° ª1 º ª 2 º ª3 º ª 1º ½°
C ®« » , « » « » « » ¾ :
¯° ¬3¼ ¬ 2 ¼ ¬ 4 ¼ ¬ 3¼ ¿°
P=[1 -2 3 -1; 3 2 -4 -3];
S=sim(net,P)
SOLUCIÓN:
________________________________________________________________________________
si 2 x1 x2 t 1.5
­1
®
si 2 x1 x2 1.5
¯1
Salidas de la red para cada uno de las entradas del conjunto C:
Función que define la neurona bipolar:
y
ª1 º
ª 2 º
ª3 º
ª 1 º
«3» o 1; « 2 » o 1; « 4 » o 1 « 3» o 1
¬ ¼
¬ ¼
¬ ¼
¬ ¼
________________________________________________________________________________
PRÁCTICAS DE LABORATORIO
PRÁCTICA 3
Aprendizaje con el Perceptrón: Implementación de la Función lógica OR
Se va diseña un perceptrón simple que implemente la función lógica “OR” con dos entradas y una única
neurona de salida.
El conjunto de los 4 patrones de entrada (bidimensionales) viene dado la matriz
ª1 1 0 0 º
P «
» y sus correspondientes salidas deseadas vienen dadas por el vector
¬1 0 1 0 ¼
T
>1
1 1 0 @.
x
Construcción de la red inicial como un objeto estructurado:
net = newp([0,1;0 1], 1,’hardlim’,’learnp’); % No es necesario especificar
%'hardlim','learnp', las toma por defecto
% newp([matriz de valores mínimos y máximos de las entradas], Número de neuronas, ‘Función
%de Transferencia’, ‘Regla de Aprendizaje)
x
Valores iniciales aleatorios de los pesos y del umbral de la red
net.IW{1,1}=[rands(1) rands(1)];
net.b{1}=rands(1);
x
% También puede ser net=init(net);
Entrenamiento de la red:
net.trainParam.epochs = 20;
net.trainParam.goal = 0;
% Número máximo de épocas
% Error admisible
[net, tr, Y, E]= train(net, P, T)
x
Salidas Y de la red para las entradas P y el error E cometido :
S= sim(net, P)
x
Presentación de los parámetros de la red
net.IW{1}
net.b{1}
mae(S-T)
% se presentan los pesos sinápticos de la red
% se presenta el sesgo de la red
% se presenta el error absoluto medio. ‘mse’ nos da el error cuadrático medio
SOLUCIÓN:
________________________________________________________________________________
y
x1
­1
®
¯0
si 1.35 x1 0.81x2 t 0.52
si
1.35x1 0.81x2 0.52
1.35
y
x2
0.81
- 0.52
Figura 8. Patrones y recta de separación
Figura 9. Función implementada (OR)
________________________________________________________________________________
PRÁCTICAS DE LABORATORIO
PRÁCTICA 4 Aprendizaje con el Perceptrón: Clasificación con datos de huracanes
Se dispone de un conjunto de datos correspondientes a la longitud y latitud de 37 puntos geográficos, junto
con el tipo de huracán que han padecido (baroclínico o tropical del Atlántico Norte). Se va a diseñar un
perceptrón con dos entradas y una neurona de salida para predecir el tipo de huracán según la longitud y
latitud de un punto geográfico.
x Conjunto de patrones de entrenamiento
load huracanes
x
Creación del Perceptrón de dos sensores de entrada y una neurona de salida.
net = newp(minmax(P),1,'hardlim','learnp');
%minmax(P) nos da el valor mínimo y el valor máximo de cada fila de P
net = init(net); % Valores aleatorios iniciales de los parámetros
x
Entrenamiento de la red
net.trainParam.epochs = 20;
net.trainParam.show = 5;
net.trainParam.goal = 0.1;
net.trainFcn='trainc';
% Número máximo de épocas de entrenamiento
% Se muestra resultado cada 5 épocas
% Error admisible
% Entrenamiento on line. También puede ser en lotes: 'trainb'
net = train(net,P,T);
x
Salidas de la
entrenamiento
red
cuando
las
entradas
corresponde
al
conjunto
de
S= sim(net,P)
x
Valores después del entrenamiento de los pesos sinápticos, del umbral y
del error absoluto medio por neurona
net.IW{1}
net.b{1}
mae(S-T)
% se presentan los pesos sinápticos de la red
% se presenta el sesgo de la red
% se presenta el error absoluto medio. ‘mse’ nos da el error cuadrático medio
SOLUCIÓN:
________________________________________________________________________________
y
x1
­1
®
¯0
si
36x1 32 x2 t 1
si
36x1 32 x2 1
36
y
x2
Fig. 10 Evolución del error (mse)
Fig. 11. Recta de separación
-32
Figura 12. Clasificador neuronal
Error absoluto medio = 0.4865 (inaceptable). Los datos no son linealmente separables.
________________________________________________________________________________
PRÁCTICAS DE LABORATORIO
PRÁCTICA 5 Aprendizaje con el Perceptrón: Predicción de la diabetes (datos Pima)
Se trata de decidir si una persona tiene diabetes a partir de 7 datos personales. Para ello se dispone de las
siguientes características de 200 mujeres indias mayores de 21 años que vivían cerca de Phoenix (Arizona)
con el fin de estudiar la diabetes de acuerdo a los criterios de la Organización Mundial de la Salud: Nº de
embarazos, concentración de glucosa en plasma, presión sanguínea diastólica, insulina, índice de masa
corporal, función de antecedentes familiares diabéticos, edad y tipo (diabética o no). Se va a diseñar un
Perceptrón simple con el fin de diagnosticar, según estas características, si una mujer es, o no, diabética.
x Cargas los datos
load pima
x Creación del perceptrón con siete sensores de entrada y una salida:
net = newp([minmax(P)], 1,'hardlim','learnp')
x Inicializar la red:
net=init(net);
x Especificación de parámetros de entrenamiento:
net.trainFcn='trainc';
% Entrenamiento en línea. También puede poner
% por lotes: 'trainb’
net.trainParam.epochs=50; % Número total de épocas de entrenamiento
net.trainParam.goal=0.10; % Error máximo que se pretende alcanzar
net.trainParam.show=10;
% Frecuencia de presentación de los gráficos
x Entrenamiento de la red:
[net, tr,Y,E]= train(net, P, T);
x Salidas Y de la red para las entradas P y error E cometido:
Y= sim(net, P);
train_error=mae(Y-T);
x El mejor tiempo para parar de entrenar:
[mim_perf,min_epoch]=min(tr.perf)
x Presentación de los parámetros de la red
net.IW{1}
net.b{1}
mae(Y-T)
SOLUCIÓN:
________________________________________________________________________________
y
­1
®
¯0
si
842x1 78 x2 467 x3 434 x4 201.4 x5 187 x6 211x7 t 182
si
842x1 78 x2 467 x3 434 x4 201.4 x5 187 x6 211x7 182
Clasificador Neuronal
Fig. 13. Evolución del error (eam)
Fig. 14. Datos Proyectados
Error absoluto medio = 0.30 (inaceptable). Lo datos no son separables linealmente.
________________________________________________________________________________