Prácticas en MATLAB de Redes Neuronales
PERCEPTRON hardlim; hardlims; initp; learnp; plotc; plotpv; simup; trainp; trainpn
hardlim: Función de transferencia Escalón Esta función de transferencia proporciona el valor de la salida de una neurona igual a 1 si la entrada supera un valor umbral, y si no lo supera la salida toma el valor 0.
hardlim (N): Obtiene una matriz de vectores de salida para una capa de neuronas con una matriz de N entradas con umbral 0.
hardlim (N, ): Obtiene una matriz de vectores de salida para una capa de neuronas con una matriz de N entradas con umbral -θ. Esta función en la versión 5.3 de Matlab produce un Warning para evitarlo puede ser utilizada la operación: hardlim(netsum(n, θ)). Para evitar que los WARNINGS aparezcan en pantalla se puede poner: nntwarn off EJEMPLO: N = [-1.0 -0.5 0.0; 1.0 2.0 3.0]; b=[ -0.15; -1.15]; hardlim (N) ==== 0 0 1
hardlim (N,b) === 0 0 1
111
011
hardlim(netsum(N,b))
hardlims: Función de transferencia Hard limit Simétrica Esta función de transferencia proporciona el valor de la salida de una neurona igual a 1 si la entrada supera un valor umbral, y si no lo supera la salida toma el valor -1.
hardlims (N): Obtiene una matriz de vectores de salida para una capa de neuronas con una matriz de N entradas con umbral 0.
hardlims (N, ): Obtiene una matriz de vectores de salida para una capa de neuronas con una matriz de N entradas con umbral θ. Esta función en la versión 5.3 de Matlab produce un Warning para evitarlo puede ser utilizada la operación: hardlims(netsum(n, θ)) EJEMPLO: N = [-1.0 -0.5 0.0;
Perceptron
1
Prácticas en MATLAB de Redes Neuronales 1.0 2.0 3.0]; b=[ -0.15; -1.15]; hardlims (N) ==== -1 -1 1
(hardlims(netsum(n,b)) hardlims (N,b) === -1 -1 1
111
-1 1 1
initp: La utilizaremos para inicializar una capa de Percepton.
[W,b]= initp (R,S): Utiliza el número de entradas R y el número de neuronas S y obtiene los pesos y umbrales para un perceptron de una capa con S neuronas.
[W,b]= initp (P,T): Alternativamente bien R o S pueden ser reemplazados por una matriz de vectores de entrada P y una matriz de vectores destino T respectivamente. El número de entradas y salidas será el número de filas de P y T. EJEMPLO: p = [-2.2; 0.5]; [W, b] = initp (p,3) W = 0.5678 -0.5322
b= 0.4567
0.3432 0.2321
-0.2234
-0.5462 -0.8382
0.6756
learnp: Regla de aprendizaje del perceptron . La regla de aprendizaje del perceptron ajusta los pesos y umbrales de unas capa para obtener una clasificación correcta de los vectores de entrada.
learnp (P,E): Proporciona la matriz de cambio de pesos para una capa dada una matriz de vectores de entrada P y un vector de error E.
[dW,db] = learnp (P,E) devuelve la matriz de cambio de pesos y el vector de cambio de umbral.
La aplicación estandar de la regla de aprendizaje del Perceptron en problemas donde los vectores de entrada tienen valores muy diferentes puede ser demasiado lenta . En estos casos es conveniente la normalización de vectores y para ello se trabaja con la denominada regla de aprendizaje del percetron normalizada, cuya descripción es learnpn (P,E).
Perceptron
2
Prácticas en MATLAB de Redes Neuronales
plotpc: Dibuja la línea de clasificación dada por el perceptron. Las neuronas hard limit realizan la clasificación dividiendo el espacio de entradas en dos regiones con una línea (si la neurona tiene dos entradas) un plano (si tiene tres entradas) y un hiperplano (para más de tres entradas).
plotpc(W,b): Dibuja la línea de clasificación para una capa de 2 o 3 entradas de neuronas hard-limit con matriz de pesos W y vector umbral b. Esta función devuelve el handle a la línea de clasificación para que pueda ser usado en llamadas sucesivas.
plotc(W,b,h): toma el h obtenido en aplicaciones previas de plotpc y borra la línea vieja obteniendo la nueva línea de clasificación.
plotpv: Dibuja vectores de entrada con salidas 0/1. A menudo es conveniente dibujar los vectores de entrada para el adiestramiento de una capa de neuronas asi como la clasificicación en un momento dado hecha por la red.
plotpv(P,T): dibuja vectores de entrada de 2 o tres elementos de la matriz P con símbolos correspondientes a la salida deseada dentro de la matriz T. Si T contiene vectores de un solo elemento entonces las salidas deseadas 0 se dibujan como o’s y las salidas 1 como +’s. Si T contiene vectores de dos elementos las entradas son mapeadas como: [0,0]es mapeado como o, [0,1] como +, [1,0]como*, y [1,1]como x.
plotpv(P,T,v): difiere solamente en que la escala de los ejes viene dada por un vector columna de cuatro valores v : [x_min, x_max, y_min, y_max]. Esta función solamente es válida para capas de tres o menos neuronas con tres o menos entradas.
simup: Simula una capa de perceptrones. Una capa de perceptrones consta de un conjunto de neuronas hard-limit. Las capas de perceptrones pueden ser entrenadas rápidamente, siendo útilies para tareas simples de clasificación.
simup(P,W,b): toma una matriz de vectores de entrada P la matriz de pesos W y el vector umbral b de una capa de perceptron, y pr oporciona las salidas de la capa.
EJEMPLO:
Perceptron
3
Prácticas en MATLAB de Redes Neuronales [W,b] = initp ([0 1;-5 5],3) crea una capa de perceptron con tres neuronas cuyas salidas están en los intervalos [0 1] y [-5 5] respectivamente.
La respuesta de la capa a una entrada de [2;-3] puede ser calculada como: a = simup ([2;3], W, b) La respuesta es: a= 0 0 1
trainp y trainpn: Adiestra una capa de perceptron con la regla delta Una capa de neuronas es entrenada para producir vectores destino booleanos cuando se le presentan los correspondientes vectores de entrada.
[W, b, te] = trainp (W, b, P, T, tp) Proporciona una nueva matriz de pesos y un nuevo vector umbral después del entrenamiento con la matriz de pesos, el umbral inicial y el vector de salida deseada utilizando el parámetro de entrenamiento tp. Los parámetros opcionales tp son:
tp(1) iteraciones entre los pasos de adaptación (por defecto toma el valor 1). tp(2) máximo número de iteraciones para el entrenamiento (por defecto 100) [W, b, te] = trainpn (W, b, P, T, tp) se diferencia de la anterior en que se utiliza la regla del perceptron normalizada. EJEMPLO: P=[-0.5 -0.5 0.3 0.0;
T = [1 1 0 0];
-0.5 0.5 -0.5 1.0]; [W,b]= initp(P,T); [W,b, iteraciones]= trainp(W,b,P,T,[1,20]); A = simup(P,W,b);
Perceptron
4
Prácticas en MATLAB de Redes Neuronales
Ejecrcios de la práctica n.1 1.
Utilizando la función learnp , simular un perceptron con dos neuronas de entrada y
una neurona binaria de salida, y entrenarlo para clasificar 7 vectores de entrada en dos posibles clases. a) Utilizar como patrones de entrenamiento: 1
1
x = (-0.3,0.3)
d =0
2
d =1
3
d =1
4
d =0
5
d =0
6
d =0
7
d =1
x = (0.1,0.3) x = (0.2,0.5) x = (-0.1, 0.4) x = (0.5, -0.5) x = (0.1, 0.1) x = (0.7, 0.5)
2 3 4 5 6 7
En el diseño se ha de dibujar la frontera de decisión obtenida para cada modificación de pesos. b) En el programa obtenido en el apartado anterior cambiar el patrón 7
7
x = (0.7, 0.5) por x = (40,16) y comprobar que ocurre.
2. Efectuar el mismo diseño del apartado anterior pero utilizando la función trainp.
3. Comprobar, en ambos casos, el funcionamiento para todos los patrones de entrada y determinar la salida que proporciona la red diseñada para los patrones: p1 = (-0.3, -0.8) 2
p = (0.9, 0.3) 3
p = (0.24, 0.15) 4
p = (-0.1, -0.9)
4. Diseñar un Perceptron con 3 neuronas de entrada y una neurona de salida que permita clasificar 12 vectores en dos categorías, utilizando como patrones de entrenamiento 8 vectores con valores bipolares.
Perceptron
5