reporte de actividades irp

17
Materia: Introducción al Reconocimiento de Patrones Profesora: Alba Maribel Sánchez Gálvez Alumno: Alejandro Hernández Catrip REPORTE DE ACTIVIDADES Práctica 1 Objetivo: Diseñar, entrenar y simular una RNA que reconozca los puntos de grupos linealmente separables en MATLAB. Usando los puntos de la función AND Graficar en el plano los puntos X1, X2, X3, X4 de R 2 con el cual se entrenará la RNA en este caso Plano con los puntos (0,0), (0,1), (1,0), (1,1) para entrenar la RNA (función AND) La clase cero tiene 3 elementos {(0,0), (0,1), (1,0)} y la clase uno tiene 1 elemento {(1,1)}, diseñar, entrenar y simular la RNA. DISEÑO DE LA RNA % Se establece la RNA con los valores máximo y mínimo para los puntos >> pr1_ej1 = newp([0,1;0,1],[0,1]); % Se emplearán 10 épocas para el entrenamiento >> pr1_ej1.trainParam.epochs = 10; >> P=[0 0 1 1; 0 1 0 1] P = 0 0 1 1 0 1 0 1 >> T=[0 0 0 1] T = 0 0 0 1

Upload: alktrip

Post on 25-Jul-2015

40 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

Práctica 1Objetivo: Diseñar, entrenar y simular una RNA que reconozca los puntos de grupos linealmente separables en MATLAB.

Usando los puntos de la función AND

• Graficar en el plano los puntos X1, X2, X3, X4 de R2 con el cual se entrenará la RNA en este caso

Plano con los puntos (0,0), (0,1), (1,0), (1,1) para entrenar la RNA (función AND)

La clase cero tiene 3 elementos {(0,0), (0,1), (1,0)} y la clase uno tiene 1 elemento {(1,1)}, diseñar, entrenar y simular la RNA.

DISEÑO DE LA RNA

% Se establece la RNA con los valores máximo y mínimo para los puntos>> pr1_ej1 = newp([0,1;0,1],[0,1]);

% Se emplearán 10 épocas para el entrenamiento>> pr1_ej1.trainParam.epochs = 10;

>> P=[0 0 1 1; 0 1 0 1]

P = 0 0 1 1 0 1 0 1

>> T=[0 0 0 1]

T = 0 0 0 1

Page 2: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

ENTRENAMIENTO DE LA RNA

>> pr1_ej1 = train(pr1_ej1,P,T);

Entrenamiento de la Red

SIMULAR LA RNA>> valores = sim(pr1_ej1,P)

valores =

0 0 0 1

En este caso, se simula la RNA empleando los valores para los pesos y el bias de forma aleatoria (es decir, valores asignados de manera aleatoria por MATLAB).

>> pesos = pr1_ej1.iw{1,1}

pesos =

2 1

>> bias = pr1_ej1.b{1}

bias =

-3

Page 3: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

El punto (-1,5) en ¿cuál clase está ubicado?

De acuerdo con la RNA entrenada, el punto (-1,5) es clasificado en la clase 1:

% Se simula la red pr1_ej1 (RNA para la función AND) clasificando el punto (-1,5)>> valores = sim(pr1_ej1,[-1;5])

valores =

1

El punto (4,-10) en ¿cuál clase está ubicado?

De acuerdo con la RNA entrenada, el punto (4,-10) es clasificado en la clase 0:

% Se simula la red pr1_ej1 (RNA para la función AND) clasificando el punto (4,-10)>> valores = sim(pr1_ej1,[4;-10])

valores =

0

Realizar lo mismo con los puntos de la función OR

• Graficar en el plano los puntos X1, X2, X3, X4 de R2 con el cual se entrenará la RNA en este caso

Plano con los puntos (0,0), (0,1), (1,0), (1,1) para entrenar la RNA (función OR)

La clase cero tiene 1 elementos {(0,0)} y la clase uno tiene 3 elementos {(0,1), (1,0), (1,1)}, diseñar, entrenar y simular la RNA.

Page 4: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

DISEÑO DE LA RNA

% Se establece la RNA con los valores máximo y mínimo para los puntos>> pr1_ej1 = newp([0,1;0,1],[0,1]);

% Se emplearán 10 épocas para el entrenamiento>> pr1_ej1.trainParam.epochs = 10;

>> P=[0 0 1 1; 0 1 0 1]

P = 0 0 1 1 0 1 0 1

>> T=[0 1 1 1]

T = 0 1 1 1

ENTRENAMIENTO DE LA RNA

>> pr1_ej1 = train(pr1_ej1,P,T);

Entrenamiento de la Red

Page 5: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

SIMULAR LA RNA>> valores = sim(pr1_ej1,P)

valores =

0 1 1 1

En este caso, se simula la RNA empleando los valores para los pesos y el bias de forma aleatoria (es decir, valores asignados de manera aleatoria por MATLAB).

>> pesos = pr1_ej1.iw{1,1}

pesos =

2 2

>> bias = pr1_ej1.b{1}

bias =

-2

El punto (-1,5) en ¿cuál clase está ubicado?

De acuerdo con la RNA entrenada, el punto (-1,5) es clasificado en la clase 1:

% Se simula la red pr1_ej1 (RNA para la función OR) clasificando el punto (-1,5)>> valores = sim(pr1_ej1,[-1;5])

valores =

1

El punto (4,-10) en ¿cuál clase está ubicado?

De acuerdo con la RNA entrenada, el punto (4,-10) es clasificado en la clase 0:

% Se simula la red pr1_ej1 (RNA para la función OR) clasificando el punto (4,-10)>> valores = sim(pr1_ej1,[4;-10])

valores =

0

Page 6: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

PARTE II

Usando los siguientes puntos P1=(-2,3), P2=(-3,-7), P3=(-2,-4), P4=(-2,5), P5=(5,0), donde P1 y P5 están en una clase y los otros en otra:

• Graficar los puntos en el plano y encontrar la ecuación de la recta que los separa y graficarla

Puntos en el plano y ecuación de la recta que los separa en 2 clases

Para hallar la ecuación de la recta, se tomaron en cuenta los puntos A(4,0) y B(0,4), por lo tanto, la pendiente tomará valor -1:

m=y− y1x− x1

=4−00−4

=−44

=−1

y la ecuación de la recta queda de la siguiente forma, considerando al punto A(4,0):y− y1=m( x−x1)y−0=(−1)(x−4)y=−x+4

y+x−4=0De la ecuación anterior (y + x – 4 = 0) se sigue que los valores de los pesos y el bias para emplear en el perceptrón son:

Page 7: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

w1=1 w2=1 b=−4

Quedando el perceptrón de la siguiente manera:

X1

Y

X2

Asignar los puntos según corresponda clase cero o bien clase uno

De acuerdo con los requerimientos, la clasificación queda de la siguiente manera:

Clase UNO(1) = {(2,3), (5,0)}

Clase CERO(0) = {(-3,-7), (2,-4), (-2,5)}

Diseñar, entrenar y simular la RNA en MATLAB

Se muestra a continuación el diseño y entrenamiento de la RNA en MATLAB

% DISEÑO DE LA RNA>> pr1_ej2 = newp([-10 10; -10 10], [0,1]);>> pr1_ej2.trainParam.epochs = 10;>> P=[2 -3 2 -2 5; 3 -7 -4 5 0]

P =

2 -3 2 -2 5 3 -7 -4 5 0

>> T=[1 0 0 0 1]

T =

1 0 0 0 1

% ENTRENAMIENTO DE LA RNA

>> pr1_ej2 = train(pr1_ej2,P,T);

w1=1

w2=1

b=−4

Page 8: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

Simulando la red (primero se utilizan valores aleatorios para los pesos y el bias)

>> pesos = pr1_ej2.iw{1,1}

pesos =

7 2

>> bias = pr1_ej2.b{1}

bias =

-7

>> valores = sim(pr1_ej2,P)

valores =

1 0 0 0 1

>> Se observa que MATLAB devuelve los valores 7, 2 para W1 y W2 respectivamente y un valor -7 para el bias, esto produce la salida deseada para los puntos empleados (recordando que los valores iniciales para los pesos fueron aleatorios).

Page 9: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

Empleando los pesos iniciales encontrados a partir de la ecuación de la recta (W1 = W2 = 1, bias = -4), se tiene la siguiente salida:

>> pr1_ej2.iw{1,1} = [1,1];>> pr1_ej2.b{1} = [-4];

>> pr1_ej2 = train(pr1_ej2,P,T);

>> valores = sim(pr1_ej2,P)

valores =

1 0 0 0 1

>> pesos = pr1_ej2.iw{1,1}

pesos =

1 1

>> bias = pr1_ej2.b{1}

bias =

-4

Comparar los pesos obtenidos y los pesos que entrega el entrenamiento de la RNA en MATLAB

De acuerdo con esta salida, se obtuvieron los mismos resultados que se deseaban inicialmente, por lo que, en comparación con los valores para los pesos entregados por MATLAB( 7, 2 ) y el bias = -7, se concluye que los valores para los pesos W1 y W2 de 1 para ambos y el bias = -4 son correctos, obtenidos a partir de la ecuación de la recta x + y – 4 = 0.

Hacer la simulación para encontrar en que clases están los siguientes puntos: (1,-1), (4,4)

Para el punto (1,-1) se obtuvo el siguiente resultado de clasificación:

>> valores = sim(pr1_ej2,[1;-1])

valores =

0

Esto concuerda con la información de la gráfica, por lo tanto, el punto (1,-1) pertenece a la clase CERO

Para el punto (4,4) se obtuvo el siguiente resultado de clasificación:

>> valores = sim(pr1_ej2,[4;4])

Page 10: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

valores =

1

Esto concuerda con la información de la gráfica, por lo tanto, el punto (4,4) pertenece a la clase UNO

III. DISEÑAR, ENTRENAR Y SIMULAR LA RNA QUE SEPARE LOS SIGUIENTES PUNTOS EN 4 CLASES

(-7,1) y (-1,-2) están en la clase I(-1,4) y (1,0) están en la clase II(1,-5) y (-8,-7) están en la clase III(10,-1) y (2,-2) están en la clase IV

a) Encontrar los pesos de la RNAb) Hacer la simulaciónc) El punto (1,-1) y el punto (0,-2) en ¿qué clase están?d) Diseñar, entrenar y simular la RNA en MATLABe) Comparar los pesos obtenidos y los pesos que entrega el entrenamiento en MATLAB

Page 11: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

Gráfica con los puntos a clasificar en el plano y las rectas que los separan (2x + y = 0, -6x +11y = -16)

La simulación, diseño y entrenamiento de la red es el siguiente:

>> pr1_ej3 = newp([-10, 10; -10 10], 2);>> pr1_ej3.trainParam.epochs = 15;>> P=[-7 -1 -1 1 1 -8 10 2; 1 -2 4 0 -5 -7 -1 -2]

P =

-7 -1 -1 1 1 -8 10 2 1 -2 4 0 -5 -7 -1 -2

>> T=[0 1 0 1; 1 1 0 0]

T =

0 1 0 1 1 1 0 0

Page 12: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

>> T=[0 0 1 1 0 0 1 1; 1 1 1 1 0 0 0 0]

T =

0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0

>> pr1_ej3 = train(pr1_ej3,P,T);>> pr1_ej3.trainParam.epochs = 30;>> pr1_ej3 = train(pr1_ej3,P,T);>> pr1_ej3 = train(pr1_ej3,P,T);>> pesos = pr1_ej3.iw{1,1}

pesos =

6 3 -6 11

>> bias = pr1_ej3.b{1}

bias =

0 16

>> valores = sim(pr1_ej3,P)

valores =

0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0

Page 13: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

>> view(pr1_ej3)>> y = pr1_ej3(T); >> plotpv(P,T)>> plotpv(y,T)>> valores = sim(pr1_ej3,[1;-1])

valores =

1 0

>> valores = sim(pr1_ej3,[0;-2])

valores =

0 0

>> plotpv(P,T)>> plotpc(pesos,bias)>> figure;>> plotpv(P,T)>> plotpc(pesos,bias)>> valores = sim(pr1_ej3,[-1;-2])

valores =

0 1

>>

IV. SIMULAR UNA RNA PARA EL RECONOCIMIENTO DE DÍGITOS EN MATLAB

• Diseñar la RNA considerando que las entradas son la representación de los dígitos en un display de siete segmentos y la salida es la representación binaria de los dígitos

• Entrenar y simular la RNA• Simule la RNA para tres aproximaciones que usted proponga

Entradas:

>> P=[1 0 1 1 0 1 1 1 1 1; 1 1 1 1 1 0 0 1 1 1; 1 1 0 1 1 1 1 1 1 1; 1 0 1 1 0 1 1 0 1 0; 1 0 1 0 0 0 1 0 1 0; 1 0 0 0 1 1 1 0 1 1; 0 0 1 1 1 1 1 0 1 1]

Page 14: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

P =

1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1

Salidas:

>> T = [0 0 0 0 0 0 0 0 1 1; 0 0 0 0 1 1 1 1 0 0; 0 0 1 1 0 0 1 1 0 0; 0 1 0 1 0 1 0 1 0 1]

T =

0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1

Empleando el asistente Neural Network Start (nnstart):

El script resultante es el siguiente:

% Solve an Input-Output Fitting problem with a Neural Network

Page 15: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

% Script generated by NFTOOL% Created Tue Jun 19 07:26:02 CDT 2012%% This script assumes these variables are defined:%% P - input data.% T - target data. inputs = P;targets = T; % Create a Fitting NetworkhiddenLayerSize = 4;net = fitnet(hiddenLayerSize); % Setup Division of Data for Training, Validation, Testingnet.divideParam.trainRatio = 70/100;net.divideParam.valRatio = 15/100;net.divideParam.testRatio = 15/100; % Train the Network[net,tr] = train(net,inputs,targets); % Test the Networkoutputs = net(inputs);errors = gsubtract(targets,outputs);performance = perform(net,targets,outputs) % View the Networkview(net) % Plots% Uncomment these lines to enable various plots.%figure, plotperform(tr)%figure, plottrainstate(tr)%figure, plotfit(net,inputs,targets)%figure, plotregression(targets,outputs)%figure, ploterrhist(errors)

Page 16: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

Práctica 2

Entrenar una RNA con dos capas, la capa oculta con dos neuronas y la capa de salida para la función XOR

Código empleado en MATLAB:

>> P = [0 1 0 1; 0 1 1 0]; % Función XOR T = [0 0 1 1]

plotpv(P,T,[-1, 2, -1, 2]); % plot data

PR = [min(P(1,:)) max(P(1,:)); min(P(2,:)) max(P(2,:))];

S1 = 2;S2 = 1;

TF1 = 'tansig';TF2 = 'logsig';

PF = 'mse';

net = newff(PR,[S1 S2],{TF1 TF2});

net.trainParam.epochs = 100;net.trainParam.goal = 0.0001;

Page 17: Reporte de Actividades IRP

Materia: Introducción al Reconocimiento de PatronesProfesora: Alba Maribel Sánchez GálvezAlumno: Alejandro Hernández Catrip

REPORTE DE ACTIVIDADES

net = train(net,P,T);a = sim(net,P)

T =

0 0 1 1

Warning: NEWFF used in an obsolete way. > In obs_use at 18 In newff>create_network at 127 In newff at 102 See help for NEWFF to update calls to the new argument list.

a =

0.0000 0.0000 0.9994 0.0000