Práctica 2: Perceptron de una capa
Descripción de la práctica
Se revisa una publicación (html) de la práctica. En este caso inicie indicando el nombre de la práctica y sus datos personales, equipos de 3 a 5 personas (Portada). Posteriormente, el índice, desspúes los objetivos, que son los sigueintes:
- Implementar la regla de aprendizaje perceptrón par entradas en

- Implementar visulización en
y 
Para la introducción revisa el siguiente articulo:
F. Rosenblatt, “The perceptron: A probabilistic model for information storage and organization in the brain,” Psycho- logical Review, Vol. 65, pp. 386–408, 1958.
Y elabora un resumen del contenido de forma que se indique:
- Cual es el tema abordado
- El planteamiento y solución del problema expuesto
- Una breve conclusión de las similitudes y diferencias respecto a lo que ahora sabes sobre el perceptrón
Problemas
Para el desarrollo se tienen que resolver cada uno de los siguientes problemas comenzando una nueva sección en cada uno de ellos.
Problema 1
Elabore una función que entrene un perceptron de 1 capa y S neuronas. Para ello considere lo siguiente:
- La función recibe de argumentos el conjunto de entradas P de dimensión R, y los objetivos correspondientes t de dimención n.
- La función recibe el numero de epocas de entrenamiento
- La función recibe como parametro opcional una tolerancia (numero real positivo, que se piensa pequeño) como un criterio de paro adicional.
- La función regresa los pesos y la desviación resultante, con un mensaje de exito o fracaso, indicando bajo que circunstancias se reportan los resultados.
El numeró de neuronas debe de elegirse de acuerdo a la dimensión t (¿por qué?)
Puede iniciaizar los parámetros con numeros aleatorios pequeños incluso pueden ser cero.
El programa debe deternerse de acuerdo a diferentes criterios:
- Se logro el entrenamiento antes del numero de epocas indicado, se indica que esto ocurre
- Se alcanzo el número de epocas ingresado, se debe indicar si con esta selección se logro o no el entrenamiento
- Se logro la tolerancia indicada (en caso de ser ingresada). Es decir, si
donde la resta es entre los parametros estimados en la epoca i e
, con la norma usual (aunque algunos algortimos utilizan la norma infinito, puedes implementar esta en lugar de la norma 2, si así lo deseas). Se despliega un menaje para indicar que esto ocurrio Se entrega el programa, utiizando la herramienta insert >> Code Example
Problema 2
Elabore una función para clasificar vectores en
con las siguientes características - La función recibe el numero de clases, las entradas y objetivos correspondientes
- El entrenamiento se lleva acabo mediante la regla de perceptrón (la suposición es que el problema es linealmente separable, por lo que el algoritmo tendrá que terminar de entrenarse), aquí puedes utilizar la función del problema 1, si asi lo deseas.
- La función despliega una gráfica donde se muestren elementos gráficos para indicar los vectores asociados a cada clase, los hiperplanos correspondientes de separación. los vectores ortogonales a cada plano y etiquetas de descripción (ejemplos clase)
- La función imprime los parametrós calculados, el número de epocas de entreanmiento con lo qeu esto se logro y las ecuaciones de los hiperplanos separadores.
- La función imprime en una misma figura el movimiento de los pesos en cada iteración de forma independiente. Por ejemplo, si se tienen 2 neuronas la figura tendrá que mostrar 4 graficas (la sucesión de cada peso, esto ilustra la convergencia). Para el bias se tendrá qeu contruir una segunda figura que muestre las sucesión de las desviaciones, en el ejemplo de dos neuronas, la figura tendría que tener la gráfica de dos sucesiones.
Proponga un problema de clasificación con 8 clases, que sea linealmente separable, donde cada clase tenga dos vectores asociados para el entrenamiento.
Prube su función con este problema.
Se entrega el resultado, y el enlace a un video (o se inserta el video) para ver la aplicación.
Problema 3
Resuelva el problema 2 para clasificar vectores en
. En el cápitulo 3 de Hagan hay un ejemplo de aplicación, páginas 3-1 a 3-6. Con esta idea, aplica la solución de ente probelma para clasificar naranjas y manzanas. Considera que los vectores de manzanas, están en el I octante, y los de naranjas en el III octante. Propon 2 entradas para cada clase.
Se entrega el resultado, y el enlace a un video (o se inserta el video) para ver la aplicación.
La GUI del problema de naranjas y manzanas
Problema 4
Se muestran los siguiente códigos en MATLAB
Clasificación, dos clases en
Creamos datos de entrenamiento de forma artificial
close all, clear all, clc, format compact
% numero de puntos para cada clase
% definición aritficial de entradas y salidas
offset = 5; % separación para las clases
x = [randn(2,N) randn(2,N)+offset]; % entradas
y = [zeros(1,N) ones(1,N)]; % salidas
% Gráfica de entradas con PLOTPV (gráfica vectores para perceptron entradas/salidas)
Definición de la red y entrenamiento
net = perceptron(); % perceptron vacio
view(net) % esquema de topologia de red, tipo Hagan
net.trainParam.showWindow = 0; % no muestra el cuadro de dialogo del entrenamiento
net_trained = train(net,x,y); % entreanmos la red y guardamos la red entrenada
view(net_trained) % esquema de topologia de red entrenada, tipo Hagan
Gráfica de frontera de desición
plotpc(net_trained.IW{1},net_trained.b{1}); % función para impeme
Clasificación, cuatro clases en
close all, clear all, clc, format compact
% numero de muestras en cada clase
% definición de las clases
q = .6; % separación de la clases
A = [rand(1,K)-q; rand(1,K)+q];
B = [rand(1,K)+q; rand(1,K)+q];
C = [rand(1,K)+q; rand(1,K)-q];
D = [rand(1,K)-q; rand(1,K)-q];
figure(1); % no queremos repetir este codigo
figure(2); % creamso dos figura para copiar en contenido
figure(1) % activamos la figura 1
plot(A(1,:),A(2,:),'bs');
text(.5-q,.5+2*q,'Clase A')
text(.5+q,.5+2*q,'Clase B')
text(.5+q,.5-2*q,'Clase C')
text(.5-q,.5-2*q,'Clase D')
% se definenen las salidas para las clases
% % ¿por qué estas salidas no funcionan?
% % ¿por qué estas salidas no funcionan?
CloneFig(1,2) % copiamos la figura 1 a la figura 2
Entradas y salidas
% definen las entradas (combinación para las cuatro clases)
T = [repmat(a,1,length(A)) repmat(b,1,length(B)) ...
repmat(c,1,length(C)) repmat(d,1,length(D)) ];
% aquí sería bueno imprimir P y T para menos estradas, para apreciar como
% se deben concatenar los valores
Se crea el perceptron y se entrena
net.trainParam.showWindow = 0;
net_trained = train(net,P,T);
Gráficamos la frontera de desición
figure(1) % activamos la figura 1
plotpc(net_trained.IW{1},net_trained.b{1});
Se resuleve nuevamente el problema epoca por epoca
figure(2) % activamoos la figira dos que tiene solo la gráfica de los datos
net.adaptParam.passes = 1; % epocas de adaptación
ax2 = plotpc(net.IW{1},net.b{1});
[net,Y,E] = adapt(net,P,T); % regresla la red entrenada, el valor de las salidas, los errores
ax2 = plotpc(net.IW{1},net.b{1},ax2);
drawnow; % efecto de simulación
Se entrega el desarrollo del ejemplo del problema 2 y el desarroolo del ejemplo de de problema 3 con las herramientas antes descritas.
No es necesario incluir conclusiones, no olvides anotar tus referencias
Referencias
Libro de Matin Hagan et. al. enlace Implemenatción de perceptron con MATLAB, enlace Función para clonar figuras enlace
Funciones utilizadas
function CloneFig(inFigNum,OutFigNum)
% this program copies a figure to another figure
% example: CloneFig(1,4) would copy Fig. 1 to Fig. 4
% pretty much taken from Matlab Technical solutions:
% http://www.mathworks.com/support/solutions/en/data/1-1UTBOL/?solution=1-1UTBOL
function compCopy(op, np)
%COMPCOPY copies a figure object represented by "op" and its % descendants to another figure "np" preserving the same hierarchy.
ch = get(op, 'children');