Redes neuronales con matlab

Solo disponible en BuenasTareas
  • Páginas : 12 (2842 palabras )
  • Descarga(s) : 0
  • Publicado : 5 de diciembre de 2010
Leer documento completo
Vista previa del texto
NEURAL NETWORK TOOLBOX

Ing. Oscar Luís Ruiz Bernal

PERCEPTRON

El perceptron utiliza una función de transferencia tipo hardlimit, es decir con dos salidas, esta función nos permite realizar una línea en el plano para separar los elementos a ser clasificados por le red neuronal.

[pic]
[pic]

[pic]

Arquitectura

La red perceptron consiste en una sola capa de neuronas conectadas aun determinado número de entradas, todas las entradas se conectan a cada neurona. Para el funcionamiento de esta red se utiliza una matriz de pesos de “n” neuromas por “p” pesos, y una para el llamado “bias” que es un pero que mantiene la neurona.

[pic]

El tener una sola capa no le permite resolver ciertas funciones.

Para crear la neurona se utiliza la función “newp”

net = newp(PR,S)

Donde los argumentos:
PR es R x 2 una matriz de valores máximos y mínimos de una R numero de elementos.
S es el número de neuronas.

Por defecto la función hardlim es la que se utiliza.

Creamos un perceptron de una sola neurona con un rango de entradas de [0 2]
net = newp([0 2],1);

La red creada se puede ver con la instrucción:
inputweights = net.inputweights{1,1}Que nos da como resultado

inputweights =
delays: 0
initFcn: 'initzero'
learn: 1
learnFcn: 'learnp'
learnParam: []
size: [1 1]
userdata: [1x1 struct]
weightFcn: 'dotprod'

De manera similar podemos utilizar
biases = net.biases{1}

gives biases =
initFcn: 'initzero'
learn: 1
learnFcn: 'learnp'learnParam: []
size: 1
userdata: [1x1 struct]

Simulación (sim)

Supongamos la siguiente red
net = newp([-2 2;-2 +2],1);

Por defecto los valores se inicializan en cero, para establecer los valores utilizamos:
net.IW{1,1}= [-1 1];
net.b{1} = [1];

Para verficar los parametros utilizamos
net.IW{1,1}

ans =
-1 1

net.b{1}
ans =
1

Ahora la redresponde a dos señales, una de cada lado del limite del perceptron.
p1 = [1;1];
a1 = sim(net,p1)
a1 = 1

Y

p2 = [1;-1]
a2 = sim(net,p2)
a2 = 0

Para las dos entradas:
p3 = {[1;1] [1;-1]};
a3 = sim(net,p3)
a3 = [1] [0]

Inicialización

Podemos utilizar la función aleatoria para asignar iniciales a los pesos y al bias:

net.inputweights{1,1}.initFcn = 'rands';net.biases{1}.initFcn = 'rands';
net = init(net);

Reglas de aprendizaje

Establecemos las reglas de aprendizaje para modificar los pesos y el bias. Este ajuste se lleva a cabo durante el entrenamiento, que puede ser supervisado o no supervisado.

En el entrenamiento supervisado se establecen reglas donde para cada entrada se establece un valor de salida. Mientras que en el entrenamiento no supervisado solose establecen los valores de entrada.

El perceptron es entrenado con ejemplos de comportamientos deseados establecidos en pares de entrada-salida. El objetivo es reducir el error o diferencia entre la salida de la neurona y la salida deseada, los cambios en los pesos y el bias están asociados a este error.

Existen 3 casos posibles
Caso 1: Si la salida de la neurona es correcta, eneste caso el peso no es alterado
Caso2: Si la salida de la neurona es 0 y se esperaba 1, por diferencia el error es igual a 1 por lo que se aumenta el peso para que en el próximo ciclo se acerque a 1.
Caso 3: Si la salida es 1 y se esperaba 0, por diferencia el error es -1, se reduce el peso para mejorar la aproximación.

Ejemplo
net = newp([-2 2;-2 +2],1); /* neurona de dosentradas */
net.b{1} = [0]; /*bias=0*/
w = [1 -0.8];
net.IW{1,1} = w; /*pesos 1 y -0.8*/
p = [1; 2]; /*par de entrada*/
t = [1]; /*Salida deseada*/
a = sim(net,p)
a =
0 /*Salida de la neurona con pesos actuales*/
e = t-a
e =
1 /*encontramos el error*/

dw = learnp(w,p,[],[],[],[],e,[],[],[]) /*Función para encontrar ajustes a los pesos*/
dw =
1 2
w =...
tracking img