Você está na página 1de 9

PONTIFICIAUNIVERSIDADCATLICADELECUADOR

FACULTADDEINGENIERA

ApuntesdeInteligencia Artificial
Laboratorio: PerceptrnSimple
JORGEAGUILARJARAMILLO

LABORATORIO 1: NEURONA Y PERCEPTRON SIMPPLE Objetivos. BreverevisindelaherramientaMatlab Reforzar el conocimiento adquirido sobre la neurona artificial y el perceptrn de Rosemblatt Implementar el algoritmo visto en clase del perceptrn, pero para neuronas lineales , que aceptencualquiervalor RevisarlasfuncionesqueimplementaMatlabparaestecaso: o newpysim 3.1 LA NEURONA.

1. ReviselosdosdemosquetraeMatlab1sobrelaneuronayobservecomoelvalordelos pesosinfluyeenlapendiente,yelvalordebensuubicacinenelejedelasy. 2. Pruebelasdiferentesfunciones 3. Observeenelsegundodemocomovaralasalidadelaneuronaenfuncindelosvalores depesosWyb. 3.2 EL PERCEPTRON

Elperceptrnesunaneuronaconunafuncindetransferenciaescalnyunmecanismodeajuste depesos(aprendizaje)quecomparalasalidareal,ydconlarespuestadesalida delared, y, para cualquierentradaoestmulodado. LosPerceptronessonbiendefinidosparareconocimiento/clasificacindepatrones Elmecanismodeajustedepesossellamaregladeaprendizajedelperceptrn.

Para ir a los demos, una vez abierto Matlab, en la ventana de comandos, escriba demo. Se abrir una nueva ventana en la que debe ir al Neural Network que se encuentra en el toolbox. Aqu encontrar los demos de la neurona (neurons) y del perceptron. 51 JorgeAguilarJ.


Ilustracin1.Esquemadeunperceptrnsimple(matlab,2006)

Matlabtrae6demosparaestetipode redes: 1. Fronterasdedecisin(Decision Boundaries) 2. Perceptrnlearningrule 3. Classificationwitha2input perceptrn 4. Outlierinputvectors 5. Normalizedperceptrnrule 6. Linearlynonseparablevector En el primer ejemplo, (Decision Boundaries), se observa como la definicin del vector de pesos y el valor de b (umbral) define la fronteradeseparacinentrelasdosclases. En el segundo ejemplo, se aplica la regladel perceptrn, en el que se tiene lasopciones de aplicar onounbias(umbral): Laopcinlearnaplicalareglaaunsoloejemplo.

52 JorgeAguilarJ.

La opcin Train aplica el algoritmo hasta 5 datos, por esta razn normalmente se necesita corrermsdeunavezestaopcinparaencontrarunasolucin. Losdemosdel3al6,muestranelaprendizajedeestaredparaalgunoscasosparticulares 3.3 Consideremosunejemplodeclasificacinde2clases:
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -0.4 -0.2 0 0.2 0.4 0.6 0.8

EJEMPLO DE CLASIFICACIN

Consideremoslos5ejemplosdelafigura: x1 0.6 0.2 0.3 0.1 0.5 x2 0.2 0.9 0.4 0.1 0.6 yd(clase) 1(azul) 1(azul) 0(rojo) 0(rojo) 0(rojo)

ResolvamosesteproblemaenMatlab,aplicandounalgoritmocomoelrevisadoenclase,para luegoresolverloconlasfuncionesqueimplementaMatlabparaelperceptrn.

% Ejemplo de entrenamiento del PS. % Declaramos el vector de entrada P (tomando la convencin de Matlab) % y el vector de salida T e inicializamos los pesos, W y el bias (b) P=[0.6 -0.2 -0.3 0.1 0.5; 0.2 0.9 0.4 0.1 -0.6]; T=[1 1 0 0 0]; W=[-2 2]; b=-1; % Graficamos estos datos de entrada y clase (0 y 1) juntamente con la frontera de separacin: los valores iniciales. plotpv(P,T); % funcin para graficar los datos

53 JorgeAguilarJ.

plotpc(W,b);

% funcin para graficar la recta

% Definimos un contador para el nmero de pocas que se refiere al % conjunto de todos los datos nepoc=0 % calculamos la salida del perceptrn, para estos datos. Y=hardlim(W*P+b); % Introducimos un lazo que ajuste los pesos mientas no se % cumpla la condicin de tener la salida del sistema igual a la salida % deseada. while any(Y~=T) Y=hardlim(W*P+b); % Salida de la red E=T-Y; [dW,db]= learnp(P,E); W=W+dW; b=b+db; nepoc=nepoc+1; disp('epochs='),disp(nepoc), disp(W), disp(b); plotpv(P,T); plotpc(W,b); pause(1); end % Error

% Aprendizaje % Modificacin de pesos % Modificacin del valor de b

Copie este cdigo en un archivo .m en Matlab (ejemplo, lab01.m) en alguna carpeta definida (por ejemplo(C:\Matlab701\Work\LabIA\) DefinaestacarpetaenelambientedeMatlab: 1. VayaelmenFileenMatlabalaopcinSetPath; 2. EnlanuevaventanaquesedespliegahagaclicenAddFolderyvayaalacarpetaenlaque grablosarchivos. 3. SeleccinelayhagaclicenAceptar 4. LanuevacarpetaleaparecerenlaventanaMatlabsearchpath

54 JorgeAguilarJ.

5. EjecutelosbotonesdecontrolSaveyClose Ahora si puede ejecutar el programa, tecleando su nombre del archivo en el Command Window deMatlab
Vectors to be Classified 1.5

Vectors to be Classified 1.5

0.5 P(2)

0.5 P(2)
-0.6 -0.4 -0.2 0 0.2 P(1) 0.4 0.6 0.8 1

-0.5

-0.5
-1

-1

-0.6

-0.4

-0.2

0.2 P(1)

0.4

0.6

0.8

Lospesosdefinidosnosonunasolucinal problema

Luegode11iteracioneslaredhaencontrado unasolucinaesteproblema

RESOLUCIN DEL MISMO EJEMPLO DE CLASIFICACIN USANDO LAS FUNCIONES DE MATLAB: NEWP Matlab usa la funcin newp para crear una red perceptrn. Esta funcin tiene cuatro parmetros deentradayelresultado(salidadelafuncin)eslaredperceptrn. red=newp(pr,s,tf,lf) Donde: pr matriz de los valores mximos y mnimos de los datos de entrada (Nx2), donde N es elnmerodevariablesdeentrada sNmerodeneuronas. tffuncindetransferencia,pordefecto='hardlim'.

55 JorgeAguilarJ.

lffuncindeaprendizaje,pordefecto='learnp'. redlaredperceptrn Porloque,elmismoejemploqueacabamosdever,usandolafuncionquetraeMatlabpara definirlaredperceptrnsetiene: % Declaramos el vector de entrada P y El vector de salida T. P=[0.60.20.30.10.5;0.20.90.40.10.6]; T=[11000]; % Graficamos plotpv(P,T); % Creamos el objeto red y le asignamos a la variable net: net = newp([-0.3 0.6; -0.6 0.9],1); % definimos el nmero de pases a 11 (como en el caso anterior) entrenamos la red y graficamos los resultados net.adaptParam.passes=11; net=adapt(net,P,T); plotpc(net.IW{1},net.b{1}); Normalmenteseentrenaunaredparaqueunavezqueaprende,estasirvaparaejemplosnuevos, deloscualesnoconocemoslasalidayqueremosconocerlasalidadelared. Matlabtraeotrafuncinparaclasificarejemplosnuevosconlosquenohasidoentrenadalared: lafuncinsim.Esdecirsimdalasalidadelared,ely,dndolelosdatosdeentradayobviamente elobjetonet,definidoanteriormente: y = sim(net,p); Veamoslaaplicacindeestafuncin.Sidefinimosundatodeentrada,lareddebeclasificarlo correctamente.Consideremoselejemplo. p=[0.56;0.1]; % calculamos la salida de la red. y=sim(net,p); plotpv(p,y); point=findobj(gca,'type','line'); set(point,'Color','red');

56 JorgeAguilarJ.

holdon; plotpv(P,T); plotpc(net.IW{1},net.b{1}); holdoff; Comoseobservaenlafiguralaredclasificaenformacorrectaelnuevodato(graficadodecolor rojo).


Vectors to be Classified 1.5

0.5 P(2)

-0.5

-1

-0.6

-0.4

-0.2

0.2 P(1)

0.4

0.6

0.8

PREGUNTAS A RESOLVER. Pruebedosclasesquenoseanlinealmenteseparables.Quseobserva?Porquocurre esto? Resuelve el caso de dos clases en las que se tenga los datos separados, como se muestra en la figura. Existe alguna diferencia en el entrenamiento con los ejemplos vistos. Cul es?

57 JorgeAguilarJ.

2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2

-1.5

-1

-0.5

0.5

1.5

58 JorgeAguilarJ.

Você também pode gostar