PROGRAMA PROFESIONAL DE INGENIERA MECNICA, MECNICA ELCTRICA Y MECATRNICA
PROCESOS INTELIGENTES
EL PERCEPTRON BASICO
ALUMNO:
VARGAS CRUZ JULIUS ANDREOTI
2014
I. OBJETIVO GENERAL
Utilizar Matlab para modelar una neurona artificial y la arquitectura de una red neuronal artificial.
Manejar Matlab y la caja de herramientas de redes neuronales artificiales para resolver un problema de ingeniera desde esta perspectiva.
Comprender slidamente el funcionamiento de las redes que utilizan el perceptrn.
Ser capaz de programar con xito simulaciones de estas redes
II. MATERIALES Y EQUIPOS
Computador. Sistema Operativo Windows XP MatLab.
III. PROCEDIMIENTO
Cree un archivo m con el nombre per1.m que simule una compuerta or de dos entradas usando el perceptron. Los pesos iniciales de las entradas 1 y 2 son 0.5 y 1.5 respectivamente, el peso de la entrada del umbral es 1.5
%%INICIALIZACION DE LA ARQUITECTURA DE LA RED [R,Q]=size(P); [S,Q]=size(T); red=newp(PR,S); z=menu('Inicializar pesos y umbral A','condiciones iniciales en la guia del estudiante','valores aleatorios'); disp('') if z == 1 red.IW{1,1}=[0.5 1.5]; red.b{1}=[1.5]; else red.inputweights{1,1}.initFcn='rands'; red.biases{1}.initFcn='rands'; red=init(red); end
%%GRAFICA DE LA CLASIFICACION INICIAL hold on linea=plotpc(red.IW{1,1},red.b{1}); %ENTRENAMIENTO DE LA RED %ENTRENAMIENTO DE LOS PARAMETROS disp_freq=1; max_epoch=20; W=red.IW{1,1}; B=red.b{1}; pesos1=[W(1,1)]; pesos2=[W(1,2)]; umbrales=[B]; % FASE DE PRESENTACION A=sim(red,P); e=T-A; for epoch=1:max_epoch if all(e==0), epoch=epoch-1; break, end 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]; A=sim(red,P); e=T-A; 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
fprintf('\nValores finales de la red:\n') W B fprintf('Entrenada en %.of iteraciones. \n',epoch) fprintf('Red clasificada'); if all(sim(red,P)==T) disp('Correctamente') else disp('Incorrectamente') end
2. Cules son los valores finales del peso y el umbral?
3. Cambie el comportamiento de la red para que se comporte como una AND de dos entradas
clc clear all clf reset pausa=2; P=[0 1 0 1; RESULTADOS Valores finales de la red:
W =
0.3152 0.9412
B =
-0.0702
Entrenada en 3f iteraciones. Red clasificada Correctamente 0 0 1 1]; T=[0 0 0 1]; disp('presione') pause, disp('') V=[-2 2 -2 2]; PR=[-2 2;-2 2]; plotpv(P,T,V); figura=gcf; axis('equal') title('Grafica de los vec de entrada') xlabel('Entrada1') ylabel('Entrada2') pause
%%INICIALIZACION DE LA ARQUITECTURA DE LA RED [R,Q]=size(P); [S,Q]=size(T); red=newp(PR,S); z=menu('Inicializar pesos y umbral A','condiciones iniciales en la guia del estudiante','valores aleatorios'); disp('') if z == 1 red.IW{1,1}=[0.5 1.5]; red.b{1}=[1.5]; else red.inputweights{1,1}.initFcn='rands'; red.biases{1}.initFcn='rands'; red=init(red); end
%%GRAFICA DE LA CLASIFICACION INICIAL hold on linea=plotpc(red.IW{1,1},red.b{1}); %ENTRENAMIENTO DE LA RED %ENTRENAMIENTO DE LOS PARAMETROS disp_freq=1; max_epoch=20; W=red.IW{1,1}; B=red.b{1}; pesos1=[W(1,1)]; pesos2=[W(1,2)]; umbrales=[B]; % FASE DE PRESENTACION A=sim(red,P); e=T-A; for epoch=1:max_epoch if all(e==0), epoch=epoch-1; break, end 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]; A=sim(red,P); e=T-A; 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
fprintf('\nValores finales de la red:\n') W B fprintf('Entrenada en %.of iteraciones. \n',epoch) fprintf('Red clasificada'); if all(sim(red,P)==T) disp('Correctamente') else disp('Incorrectamente') end
3.Cuales son los valores finales de peso y umbral Creen un archivo m con el nombre per2 que clasifique 10 puntos de entrada dentro de cuatro regiones usando una capa de dos entradas con dos neuronas W0=-0.6926 0.6048; 0.1433 -0.9339 B0= 0.0689; -0.0030
[R,Q]=size(P); [S,Q]=size(T); red=newp(PR,S); z=menu('Inicializar pesos y umbral A','condiciones iniciales en la guia del estudiante','valores aleatorios'); disp('')
if z == 1 red.IW{1,1}=[-0.629 0.6048; 0.1433 -0.9339]; red.b{1}=[0.0689; -0.0030]; RESULTADOS AND Valores finales de la red:
W =
1.9708 1.6006
B =
-2.0857
Entrenada en 11f iteraciones. Red clasificadaCorrectamente else red.inputweights{1,1}.initFcn='rands'; red.biases{1}.initFcn='rands'; red=init(red); end
hold on linea=plotpc(red.IW{1,1},red.b{1}); %ENTRENAMIENTO DE LA RED %ENTRENAMIENTO DE LOS PARAMETROS disp_freq=1; max_epoch=20; W=red.IW{1,1}; B=red.b{1}; pesos1=[W(1,1)]; pesos2=[W(1,2)]; umbrales=[B]; % FASE DE PRESENTACION A=sim(red,P); e=T-A;
for epoch=1:max_epoch if all(e==0), epoch=epoch-1; break, end 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]; A=sim(red,P); e=T-A; 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
fprintf('\nValores finales de la red:\n') W B fprintf('Entrenada en %.of iteraciones. \n',epoch) fprintf('Red clasificada'); if all(sim(red,P)==T) disp('Correctamente') else disp('Incorrectamente') end
RESULTADOS Valores finales de la red:
W =
-3.2685 4.4190 -4.8156 -4.3885
B =
-0.7162 4.8435
Entrenada en 5f iteraciones. Red clasificadaCorrectamente OR de 5 ENTRADAS
PESOS Y BIAS FINALES
W =
1 1 1 1 1
B =
-1
CONCLUSIONES Y RECOMENDACIONES
1. El nmero de iteraciones, el Bias y los pesos luego de cada entrenamiento no son los mismos
2. Una sola capa puede realizar perfectamente aproximaciones a funciones lineales o asociacin de patrones
3. Hay Compuertas que no pueden clasificarse con solo una capa