Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pub 35 PDF
Pub 35 PDF
FACULTAD DE INGENIERÍA
Apuntes de Inteligencia
Artificial
Laboratorio:
Perceptrón Simple
JORGE AGUILAR JARAMILLO
LABORATORIO 1: NEURONA Y PERCEPTRON SIMPPLE
Objetivos.
Breve revisión de la herramienta Matlab
Reforzar el conocimiento adquirido sobre la neurona artificial y el perceptrón de
Rosemblatt
Implementar el algoritmo visto en clase del perceptrón, pero para neuronas lineales , que
acepten cualquier valor
Revisar las funciones que implementa Matlab para este caso:
o newp y sim
3.1 LA NEURONA.
1. Revise los dos demos que trae Matlab1 sobre la neurona y observe como el valor de los
pesos influye en la pendiente, y el valor de b en su ubicación en el eje de las y.
2. Pruebe las diferentes funciones
3. Observe en el segundo demo como varía la salida de la neurona en función de los valores
de pesos W y b.
3.2 EL PERCEPTRON
El perceptrón es una neurona con una función de transferencia escalón y un mecanismo de ajuste
de pesos (aprendizaje) que compara la salida real, yd con la respuesta de salida de la red, y, para
cualquier entrada o estímulo dado.
Los Perceptrones son bien definidos para reconocimiento/clasificación de patrones
El mecanismo de ajuste de pesos se llama regla de aprendizaje del perceptrón.
1
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 Jorge Aguilar J.
Ilustración 1.‐ Esquema de un perceptrón simple (matlab, 2006)
Matlab trae 6 demos para este tipo de
redes:
1. Fronteras de decisión (Decision
Boundaries)
2. Perceptrón learning rule
3. Classification with a 2‐input
perceptrón
4. Outlier input vectors
5. Normalized perceptrón rule
6. Linearly non‐separable vector
En el segundo ejemplo, se aplica la regla del perceptrón, en el que se tiene las opciones de aplicar
o no un bias (umbral):
La opción learn aplica la regla a un solo ejemplo.
52 Jorge Aguilar J.
La opción Train aplica el algoritmo hasta 5 datos, por esta razón normalmente se necesita
correr más de una vez esta opción para encontrar una solución.
Los demos del 3 al 6, muestran el aprendizaje de esta red para algunos casos particulares
3.3 EJEMPLO DE CLASIFICACIÓN
Consideremos un ejemplo de clasificación de 2 clases:
Consideremos los 5 ejemplos de la figura:
1
0.8
x1 x2 yd (clase)
0.6
0
‐0.2 0.9 1 (azul)
-0.2
‐0.3 0.4 0 (rojo)
-0.4
Resolvamos este problema en Matlab, aplicando un algoritmo como el revisado en clase, para
luego resolverlo con las funciones que implementa Matlab para el perceptrón.
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 separación: los valores iniciales.
plotpv(P,T); % función para graficar los datos
53 Jorge Aguilar J.
plotpc(W,b); % función para graficar la recta
Copie este código en un archivo .m en Matlab (ejemplo, lab01.m) en alguna carpeta definida (por
ejemplo (C:\Matlab701\Work\LabIA\)
Defina esta carpeta en el ambiente de Matlab:
1. Vaya el menú File en Matlab a la opción Set Path;
2. En la nueva ventana que se despliega haga clic en Add Folder y vaya a la carpeta en la que
grabó los archivos.
3. Selecciónela y haga clic en Aceptar
4. La nueva carpeta le aparecerá en la ventana Matlab search path
54 Jorge Aguilar J.
5. Ejecute los botones de control Save y Close
Ahora si puede ejecutar el programa, tecleando su nombre del archivo en el Command Window
de Matlab
1
1
0.5
0.5
P(2)
P(2)
0
0
-0.5
-0.5
-1
-1
-0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
P(1)
-0.6 -0.4 -0.2 0 0.2
P(1)
0.4 0.6 0.8 1
Los pesos definidos no son una solución al Luego de 11 iteraciones la red ha encontrado
problema una solución a este problema
RESOLUCIÓN DEL MISMO EJEMPLO DE CLASIFICACIÓN USANDO LAS FUNCIONES DE
MATLAB: NEWP
Matlab usa la función newp para crear una red perceptrón. Esta función tiene cuatro parámetros
de entrada y el resultado (salida de la función) es la red perceptrón.
red = newp(pr,s,tf,lf)
Donde:
pr – matriz de los valores máximos y mínimos de los datos de entrada (Nx2), donde N es
el número de variables de entrada
s ‐ Número de neuronas.
tf – función de transferencia, por defecto = 'hardlim'.
55 Jorge Aguilar J.
lf – función de aprendizaje, por defecto = 'learnp'.
red la red perceptrón
Por lo que, el mismo ejemplo que acabamos de ver, usando la funcion que trae Matlab para
definir la red perceptrón se tiene:
plotpv(P,T);
Matlab trae otra función para clasificar ejemplos nuevos con los que no ha sido entrenada la red:
la función sim. Es decir sim da la salida de la red, el y, dándole los datos de entrada y obviamente
el objeto net, definido anteriormente:
y = sim(net,p);
Veamos la aplicación de esta función. Si definimos un dato de entrada, la red debe clasificarlo
correctamente. Consideremos el ejemplo.
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 Jorge Aguilar J.
hold on;
plotpv(P,T);
plotpc(net.IW{1},net.b{1});
hold off;
Como se observa en la figura la red clasifica en forma correcta el nuevo dato (graficado de color
rojo).
Vectors to be Classified
1.5
0.5
P(2)
-0.5
-1
PREGUNTAS A RESOLVER.
Pruebe dos clases que no sean linealmente separables. ¿Qué se observa? ¿Por qué ocurre
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. Cuál
es?
57 Jorge Aguilar J.
2
1.5
0.5
-0.5
-1
-1.5
-2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
58 Jorge Aguilar J.