analisis te perceptron con matlab, y aplicacion en tiempo real con software

19
INFORME N° 01 “EL PERCEPTRON” 1. OBJETIVOS Conocer el funcionamiento del preceptron simple Identificar los parámetros que intervinieren en este Conocer las funciones propias del MATLAB para el entrenamiento de la neuronas 2. MATERIALES o Software MATLAB o Guía de Laboratorio 3. FUNDAMENTO TEORICO 3.1. CONCEPTO Sistema capaz de realizar tareas de clasificación de forma automática. A partir de un número de ejemplos etiquetados, el sistema determina la ecuación del hiperplano discriminante 3.2. ARQUITECTURA Red monocapa con una o más neuronas de salida conectadas a todas las entradas {

description

invertigacion realizado el percempron con matlab desde un sistema implementado,en el tiemp real.y su aplicacion en tiempo real,con software

Transcript of analisis te perceptron con matlab, y aplicacion en tiempo real con software

Page 1: analisis te perceptron con matlab, y aplicacion en tiempo real con software

INFORME N° 01

“EL PERCEPTRON”

1. OBJETIVOS

Conocer el funcionamiento del preceptron simple

Identificar los parámetros que intervinieren en este

Conocer las funciones propias del MATLAB para el entrenamiento de la neuronas

2. MATERIALES

o Software MATLAB

o Guía de Laboratorio

3. FUNDAMENTO TEORICO

3.1. CONCEPTO

Sistema capaz de realizar tareas de clasificación de forma automática. A partir de un número

de ejemplos etiquetados, el sistema determina la ecuación del hiperplano discriminante

3.2. ARQUITECTURA

Red monocapa con una o más neuronas de salida conectadas a todas las entradas

{

Page 2: analisis te perceptron con matlab, y aplicacion en tiempo real con software

3.3. RNA de una capa

Una neurona aislada dispone de poca potencia de cálculo. Los nodos se conectan mediante la

sinapsis, las neuronas se agrupan formando una estructura llamada capa.

Los pesos pasan a ser matrices W (n x m), la salida de la red es un vector: Y=(y1, y2, ... , yn)T

Y=F(W·X+b)

3.4. RNA Multicapa

Capas en cascada se encuentra de capas: Entrada, Salida, Oculta, para esta red neuronal no

hay realimentación => red feedforward. La Salida depende de entradas y pesos. Si hay

realimentación => red recurrente

a1

a2

an

y1

y2

yn

Page 3: analisis te perceptron con matlab, y aplicacion en tiempo real con software

4. DESARROLLO

El programa que se desarrolló en el software es el siguiente

%EJEMPLO PERCEPTRON.CLASIFICACION MULTINEURONA.

% Se entrena 1 capa De 2-entradas con 2 neuronas con función de

activación % escalón % con la regla del perceptrón para una clasificación

adecuada % 10 vectores de entrada en 4 regiones. help per2 clf reset pausa = 1; % DEFINICIÓN DEL PROBLEMA % Definición da diez vectores de 2-elementos de entrada. P = [+0.1 +0.7 +0.8 +0.8 +1.0 +0.3 +0.0 -0.3 -0.5 -1.5;... +1.2 +1.8 +1.6 +0.6 +0.8 +0.5 +0.2 +0.8 -1.5 -1.3]; % Definición de las diez salidas deseadas de 2-elementos. T = [1 1 1 0 0 1 1 1 0 0; 0 0 0 0 0 1 1 1 1 1]; % GRÁFICA DE LOE VECTORES A ENTRENAR disp('¡Presione cuaquier tecla para ver los vectores de entrada!') pause, disp('') V = [-2 2 -2 2] ; % los valores mínimos y máximos de cada generada son. PR = [-2 2 ; -2 2];

plotpv(P,T,V); grid on; figura=gcf ; axis('equal') title('Gráfica de los vectores de entrada') xlabel('Entrada 1') ylabel ('Entrada 2') pause % INICIALIZACION DE LA ARQUITECTURA DE LA RED % Encuentra el tamaño del vector de entrada R, el tamaño de la capa S, % el tamaño del lote Q. [R,Q] = size(P); [S,Q] = size(T);%dimencion de la matriz red=newp(PR,S); %crea el perceptron %inicializacion de pesos y umbral. Z = menu('Inicíalizar Pesos y Umbral A', ... 'Condiciones Iniciales en la guia del estudiante', ... 'Valores Aleatorios'); disp('') if Z == 1 red.IW{1,1} = [-0.6926 0.6048; 0.1433 -0.9339]; red.b{1} = [ 0.0689; -0.0030]; else red.inputweights{1,1}.initFcn = 'rands'; red.biases{1}.initFcn = 'rands'; red=init(red);

Page 4: analisis te perceptron con matlab, y aplicacion en tiempo real con software

end % GRÁFICA DE LA CLASIFICACIÓN INICIAL %======== = ===== = === = =, = ==:==== = = ===== = hold on linea=plotpc(red.IW{1,1},red.b{1}); %grafica la linea de clasificacio

de la neurona % ENTRENAMIENTO DE LA RED %ENTRENAMIENTO DE LOS PARÁMETROS disp_freq = 1; max_epoch = 100; %el entrenamieto puede reemplazarse por %red.Trainparam.epochs = max_epoch; %red=train(red,P,T); %W=red.IW{1,1}; %B=red.b{1};

W = red.IW{1,1}; B = red.b{1}; pesos1 = [W(1,1)]; pesos2 = [W(1,2)]; umbrales = [B]; % FASE DE PRESENTACIÓN: A = sim(red,P); e = T - A; for epoch=1 : max_epoch % FASE DE REVISIÓN: if all(e == 0), epoch = epoch - 1; break, end % FASE DE APRENDIZAJE: dW = learnp(W,P,[],[],[],[],e,[],[],[]);

dB = learnp(B,ones(1,Q),[],[],[],[],e,[],[],[]); W = W + dW; B = B + dB; red.IW{1,1}=W; red.b{1} = [B]; % FASE DE PRESENTACIÓN: A = sim(red,P); e = T-A; % PRESENTACIÓN EN PROGRESO if rem(epoch,disp_freq) == 0 pause(pausa),disp('') linea=plotpc(W,B,linea); drawnow end pesos1 = [pesos1 W(1,1)]; pesos2 = [pesos2 W(1,2)]; umbrales = [umbrales B]; end

% GRÁFICA DE CLASIFICACIÓN FINAL

figure(figura) plotpc(W,B,linea); drawnow pause clf reset % GRÁFICA DE PESOS Y UMBRALES VS. EPOCH

Page 5: analisis te perceptron con matlab, y aplicacion en tiempo real con software

%======—=============.==============-=== plot(0:epoch,pesos1,'-',0:epoch,pesos2,'--',0:epoch,umbrales,':'); axis square title('Parámetros vs. Iteraciones'); xlabel('Iteraciones '); ylabel('Wl __ W2 _ _ B ...'); pause % RESUMEN DE RESULTADOS fprintf ('\nVALORES FINALES DE LA RED:\n') W; B; fprintf ('Entrenada en %.0f iteraciones.\n',epoch) fprintf('Red clasificada: '); if all (sim(red,P) == T) disp('Correctamente.') else disp ('Incorrectamente.') set(gcf, 'nextplot','replace') end

5. RESULTADOS

Los resultados que obtienen de la simulación del programa son los siguientes:

Page 6: analisis te perceptron con matlab, y aplicacion en tiempo real con software

Los datos son separados linealmente mediante rectas, la cantidad de iteraciones que se

desarrolló fueron 20.

6. CONCLUSIONES

La clasificación de datos se realiza linealmente, estos dependen de los valores de

entrada

Los pesos que se ingresan al inicio son los que determinan la eficiencia de la red

Si se aumenta la cantidad de iteraciones se pueden conseguir mejores resultados

7. RECOMENDACIONES

Probar con distintos valores para comprobar la separación lineal

Modificar los pesos iniciales de la entrada y comparar con los datos obtenidos

anteriormente

Ingresar datos que no sean linealmente separables para comprobar la eficiencia de la

función

Page 7: analisis te perceptron con matlab, y aplicacion en tiempo real con software

INFORME N° 02

“ADELINE”

1. OBJETIVOS

Conocer el funcionamiento de la red ADELINE

Identificar los parámetros que intervinieren en este

Conocer las funciones propias del MATLAB para el entrenamiento de la neuronas

2. MATERIALES

o Software MATLAB

o Guía de Laboratorio

3. FUNDAMENTO TEORICO

3.1. CONCEPTO

Estructura prácticamente idéntica al perceptron, pero es un mecanismo físico capaz de realizar

aprendizaje. Elemento combinador adaptativo lineal, que recibe todas las entradas, las suma

ponderadamente, y produce una salida

El perceptrón realiza tareas de clasificación salida binaria. Si las salidas fueran números reales,

estaríamos ante un problema de regresión

Aproximar una función cualquiera F(x) definida por un conjunto de datos de entrada y su

salida real correspondiente, los ejemplos de entrenamiento son conjuntos de valores: (vector

de entrada, salida real)

Habrá que buscar la función

Page 8: analisis te perceptron con matlab, y aplicacion en tiempo real con software

4. DESARROLLO

El programa que se desarrolló en el software es el siguiente

%EJEMPLO ADALI1ME1: ASOCIACIÓN DE PATRONES %Parte I de la guia del estudiante Redes Neuronales %Una red, que consiste de i entradas alimentadas a una sola neurona

lineal, se entrena con la regla de aprendizaje de %Windrow-Hoff para obtener el vector deseado correcto para cada uno de

los dos vectores de entrada. La red aprende %al ajustar los pesos y umbrales %en proporción a sus efectos sobre el error de la red hasta que se %encuentra un punto de mínimo error. help adaline1 clf reset tiempopausa = 0.01; % DEFINICIÓN DEL PROBLEMA %======================== % Definición de los dos vectores de entrada de 1 elemento. P = [+1.0 -1.2]; % Definición de los dos vectores deseados de 1 elemento. T = [+0.5 +1.0]; % GRÁFICA DE MALLA DEL ERROR disp('Calculado la superficie de error, por favor

espere...'),disp('') Wrango = -1:.1:1; Brango = -1:.1:1; SE = errsurf(P,T,Wrango,Brango,'purelin'); % Calculo de la Superficie

de error disp('Presione cualquier tecla para ver la superficie de error. '),

disp (''),pause plotes(Wrango,Brango,SE); % plotea la superficie de error figura=gcf; %devuelve el valor de la cifra actual

Page 9: analisis te perceptron con matlab, y aplicacion en tiempo real con software

subplot(1,2,1) title('Gráfica de la Superficie de Error') xlabel('Peso W'); ylabel('-Umbral B'); zlabel('Error Cuadrado Medio'); subplot(1,2,2) title('Gráfico de Contorno del Error') xlabel('Peso W'); ylabel('umbral B'); pause

% INICIALCIZACIÓN DE LA ARQUITECTURA DE LA RED %============================================== % Encuentra el tamaño del vector de entrada R, el tamaño de la capa S,

el tamaño del lote Q. [R,Q] = size(P); [S,Q] = size(T); %dimension de la matriz % DISEÑO DE LA RED PR=[-2 2]; %rango del elemento de entrada. ID=[0]; %Vector de Retraso de Entrada. max_razon_aprendizaje = 0.4*maxlinlr(P,'bias'); red=newlin(PR,S,ID,max_razon_aprendizaje); % Inicialización de pesos y umbral. z = menu('Inicializar Pesos y Umbral a:', ... 'Condiciones Iniciales en la guia del estudiante', ... 'Marcar Valores con el Ratón/Teclas de Desplazamiento sobre el

graf. de contorno', ... 'Valores Aleatorios'); disp(''); if z == 1 red.IW{1,1} = [-0.9309]; red.b{1} = [-0.8931]; elseif z == 3 red.inputweights{1,1}.initFcn = 'rands'; red.biases{1}.initFcn = 'rands'; red=init(red); end % GRAFICA DE CONTORNO DE ERROR, CONDICIONES INICIALES SOLUCION

DISEÑADA. figure(figura) subplot(1,2,2) axis('equal')

if z == 2 title('SELECIONE W y B AQUÍ') [red.IW{1,1},red.b{1}] = ginput(1); title('Gráfico de Contorno del Error') end % FASE.DE PRESENTACIÓN: A=sim(red,P); E=T-A; SSE=sumsqr(E); punto=plotep(red.IW{1,1},red.b{1},SSE); pause2(tiempopausa); % ENTRENAMIENTO DE LA RED % ENTRENAMIENTO DE LOS PARÁMETROS presenta_frec = 1; max_iteracion = 200; meta_error = 0.000000000000000000000000000000000000000000000000000001;

Page 10: analisis te perceptron con matlab, y aplicacion en tiempo real con software

red.trainParam.goal = meta_error; LP.lr=max_razon_aprendizaje; % NOTA: El resto del código de entrenamiento puede reemplazarse

por: %[red, tr]=train(red,P,T); %iteracion = length(tr.epoch)-1; %SSE = tr.perf(length(tr.perf)); % PARÁMETROS DE LA RED W = red.IW{1,1}; B = red.b{1}; % REGISTRO DEL ENTRENAMIENTO errores = [SSE]; for iteracion=1:max_iteracion % FASE DE REVISIÓN: if SSE < meta_error, iteracion=iteracion-1; break, end

LW = W; LB = B; % FASE DE APRENDIZAJE: dW = learnwh(W,P,[],[],[],[],E,[],[],[],LP,[]); dB = learnwh(B,ones(1,Q),[],[],[],[],E,[],[],[],LP,[]); W = W + dW; B = B + dB; red.IW{1,1}=W; red.b{1}=B; % FASE DE PRESENTACIÓN A=sim(red,P); E=T-A; SSE = sumsqr(E); % REGISTRO DEL ENTRENAMIENTO errores = [errores SSE];

% PRESENTACIÓN DEL PROGRESO if rem(iteracion,presenta_frec) == 0 punto=plotep(W,B,SSE,punto); pause2(tiempopausa); drawnow end end red.IW{1,1} = W; red.b{1} = B; % GRÁFICA DE CLASIFICACIÓN FINAL punto=plotep(W,B,SSE,punto); pause set(gcf,'NextPlot','replace') % GRÁFICA DE LA CURVA DE ERROR semilogy(0:iteracion,errores,0:iteracion,meta_error*ones(1,iteracion+1

)); title ('Error de la Red') xlabel('iteraciones') ylabel('error cuadrado medio') pause; % GRÁFICA DE LOS ERRORES ASOCIADOS A CADA VECTOR DE

SALIDA %====================^========================„=„======= bar(T-A); title('Error de cada vector de salida')

Page 11: analisis te perceptron con matlab, y aplicacion en tiempo real con software

xlabel('Salida') ylabel('error de cada salida') pause % RESUMEN DE RESULTADOS fprintf('\nVALORES DE LA RED ENTRENADA:\n') W; B; fprintf('Entrenada en %.0f iteraciones.\n' ,iteracion) fprintf('La meta del error cuadratico medio fue %g.\n',meta_error); fprintf('Error cuadratico medio final de %g.\n',SSE); fprintf('La red entrenada opera: '); if SSE < meta_error disp('Adecuadamente. ') else disp('Inadecuadamente. ') end

5. RESULTADOS

Los resultados que obtienen de la simulación del programa son los siguientes:

Page 12: analisis te perceptron con matlab, y aplicacion en tiempo real con software

El calculo del error en la superficie misma es la que se muestra en la siguiente figura

El grafico discreto de error respecto a la salida deseada se muestra acontinuacion

Page 13: analisis te perceptron con matlab, y aplicacion en tiempo real con software

6. CONCLUSIONES

La clasificación de datos se estima mediante el error que se muestra a la salida del

sistema y de acuerdo a este se va acondicionando el error

Los pesos que se ingresan al inicio son los que determinan la eficiencia de la red

Si se aumenta la cantidad de iteraciones se pueden conseguir mejores resultados

7. RECOMENDACIONES

Probar con distintos valores de tolerancia muy bajos.

Modificar los pesos iniciales de la entrada y comparar con los datos obtenidos

anteriormente.

Page 14: analisis te perceptron con matlab, y aplicacion en tiempo real con software

INFORME N° 03

“BACKPROPAGATION”

8. OBJETIVOS

Conocer el funcionamiento de la red BACKPROPAGATION

Identificar los parámetros que intervinieren en este sisitema

Conocer las funciones propias del MATLAB para el entrenamiento de la neuronas

9. MATERIALES

o Software MATLAB

o Guía de Laboratorio

10. FUNDAMENTO TEORICO

3.1. CONCEPTO

Es la generalización del algoritmo de Widrow-Hoff para redes multicapa con funciones de

transferencia no-lineales y diferenciable. Una red neuronal con una capa de sigmoides es

capaz de aproximar cualquier función con un número finito de discontinuidades, propiedad de

la generalización. La función de transferencia es no-lineal, la superficie de error tiene varios

mínimos locales.

3.2. ALGORITMO BACKPROPAGATION

Descripción:

Tras inicializar los pesos de forma aleatoria y con valores pequeños, seleccionamos el

primer par de entrenamiento.

Calculamos la salida de la red

Calculamos la diferencia entre la salida real de la red y la salida deseada, con lo que

obtenemos el vector de error

Ajustamos los pesos de la red de forma que se minimice el error

f

f

f

n

n

n

Wb

b W

a

a

a

a

a

a

a

a

a

W

P RC

a

p

C

a

p

Page 15: analisis te perceptron con matlab, y aplicacion en tiempo real con software

Repetimos los tres pasos anteriores para cada par de entrenamiento hasta que el error

para todos los conjuntos de entrenamiento sea aceptable.

Descenso por la superficie del error

Cálculo de derivadas del error respecto de los pesos y de las bias.

4. DESARROLLO

El programa que se desarrolló en el software es el siguiente

% EJEMPLO BCKPROl: RED CON SUPERFICIE DE ERROR NO LINEAL % una re consistente de una entrada alimentada a una sola % neurona sigmoidal-logaritmica, se entrena con backpropagation

'-" para resolver un problema de dos patrones. % La red sigue el gradiente descendente sobre

.la superficie de error % cuando la neurona ajusta sus pesos de entrada y umbral % para hallar un error mínimo. help bckpro1 clf reset tiempopausa = 0.2; % DEFINICIÓN DEL PROBLEMA % Define dos vectores de entrada de 1-elemento. P = [-3.0 +2.0]; % Define los des vectores deseados de 1-elemento. T = [+0.4 +0.3]; % GRÁFICO DE ALAMBRE DEL ERROR %„================= fprintf('Calculando la superficie de error, por favor

espere...\n\n'); Wrango = -4:.4:4; Brango = -4:.4:4; SE = errsurf(P,T,Wrango,Brango,'logsig'); disp('Presione cualquier tecla para ver la superficie de error. '), disp

(''),pause plotes(Wrango,Brango,SE); figura=gcf; subplot(1,2,1) title('Gráfica de la Superficie de Error') xlabel('Peso W'); ylabel('-Umbral B'); zlabel('Error Cuadrado Medio'); subplot(1,2,2) title('Gráfico de Contorno del Error') xlabel('Peso W'); ylabel('umbral B'); pause % INICIALIZACIÓN DE LA ARQUITECTURA DE LA RED %======================„==============„=„= % Encuentra el tamaño del vector de entrada R, tamaño de la capa S,

tamaño del lote Q. [R,Q1] = size(P); [S,Q] = size(T); red = newff(minmax(P),S,{'logsig'}); % Inicíalización de pesos y umbral.

Page 16: analisis te perceptron con matlab, y aplicacion en tiempo real con software

z = menu( 'Inicializar Pesos y Umbral a: ', ... 'Condiciones en la Guia del Estudiante', ... 'Colocar valores con el Ratón/Teclas de desplazamiento', ... 'Valores Aleatorios'); disp ('') if z == 1 red.IW{1,1} = [-2.1617]; red.b{1} = [-1.7862]; elseif z == 3 red.inputweights{1,1}.initFcn = 'rands'; red.biases{1}.initFcn = 'rands'; red=init(red); end % GRÁFICA DE CONTORNO DEL ERROR, CONDICIONES INICIALES, SOLUCIÓN

DISEÑADA figure(figura) subplot(1,2,2) axis ('equal') if z == 2 title ( 'SELECIONE W y B AQUÍ') [red.IW{1,1},red.b{1}] = ginput(1); title('Gráfico de Contorno del Error') end %FASE DE PRESENTACIÓN: A=sim(red,P); E=T-A; SSE=sumsqr(E); punto=plotep(red.IW{1,1},red.b{1},SSE); pause2(tiempopausa); % entrenamiento de la red % parametros de entrenamiento presenta_frec = 1; max_iteracion = 100; meta_error = 0.001; razon_aprendiz = 1; red.trainParam.show = presenta_frec; red.trainParam.goal = meta_error; red.trainParam.epochs = max_iteracion; red.trainParam.Ir = razon_aprendiz; lr = razon_aprendiz; % NOTA: El resto del código de entrenamiento puede reemplazarse % por: % [red, trl=train(red,P,T); % PARÁMETROS DE LA RED W = red.IW{1,1}; B = red.b{1}; % REGISTRO DEL ENTRENAMIENTO errores = [SSE]; for iteracion=1 :max_iteracion % FASE DE REVISIÓN if SSE < meta_error, iteracion=iteracion-1; break, end % FASE DE APRENDIZAJE D = A.*(1-A).*E; dW = D*P'*lr; dB = D*ones(Q,1)*lr; W = W + dW; B = B + dB; red.IW{1,1}=W; red.b{1}=B;

Page 17: analisis te perceptron con matlab, y aplicacion en tiempo real con software

% FASE DE PRESENTACIÓN A = sim(red,P); E = T-A; SSE = sumsqr(E); % REGISTRO DEL ENTRENAMIENTO errores = [errores SSE]; % PRESENTACIÓN DEL PROGRESO if rem(iteracion,presenta_frec)== 0 punto=plotep(W,B,SSE,punto); pause2(tiempopausa); drawnow end end red.IW{1,1} = W; red.b{1} = B; % GRÁFICA DE CLASIFICACIÓN FINAL punto=plotep(W,B,SSE,punto); pause set(gcf,'NextPlot','replace') % GRÁFICA DE LA CURVA DE ERROR semilogy(0:iteracion,errores,0:iteracion,meta_error*ones(1,iteracion+1)); title('Error de la Red') xlabel('iteraciones') ylabel('error cuadrado medio') pause; % GRÁFICA DE LOS ERRORES ASOCIADOS A CADA VECTOR DE SALIDA bar(T-A); title('Error de cada vector de salida') xlabel('Salida') ylabel('error de cada salida') pause % RESUMEN DE RESULTADOS fprintf('\nVALORES DE LA RED ENTRENADA:\n') W; B; fprintf('Entrenada en %.0f iteraciones.\n',iteracion) fprintf('La meta del error cuadrático medio fue %g.\n',meta_error); fprintf('Error cuadratico medio final de %g.\n',SSE); fprintf('La red entrenada opera: '); if SSE < meta_error disp('Adecuadamente.') else disp('Inadecuadamente') end

5. RESULTADOS

Los resultados que obtienen de la simulación del programa son los siguientes:

Page 18: analisis te perceptron con matlab, y aplicacion en tiempo real con software

El calculo del error en la superficie misma es la que se muestra en la siguiente figura

El grafico de la aproximaxion al error deseado en la funcion se muestra en la figura anterior

Page 19: analisis te perceptron con matlab, y aplicacion en tiempo real con software

6. CONCLUSIONES

La clasificación de datos se estima mediante el error que se muestra a la salida del

sistema y de acuerdo a este se va acondicionando el error

Los pesos que se ingresan al inicio son los que determinan la eficiencia de la red

Si se aumenta la cantidad de iteraciones se pueden conseguir mejores resultados

7. RECOMENDACIONES

Probar con distintos valores de tolerancia muy bajos.

Modificar los pesos iniciales de la entrada y comparar con los datos obtenidos

anteriormente.