Download El Perceptrón simple: neuronas binarias
Document related concepts
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. ________________________________________________________________________________