Download redes neuronales

Document related concepts
no text concepts found
Transcript
Redes Competitivas
Facilitador:
Dr. Joel Suarez
Autor:
Ing. Henry P. Paz Arias
Redes Competitivas
Una red neuronal competitiva consiste en una capa de
neuronas en la que todas reciben la misma entrada.
La neurona que presenta la mejor salida (la máxima o la
mínima según el criterio) es declarada vencedora.
Este sistema se denomina a menudo winner-take-all (el
ganador lo consigue todo)
Arquitectura
Las redes competitivas son usualmente bi-capa.
La función de la primera capa es hacer de sensor, por ella
entran los patrones a la red y por tanto debe tener el
mismo tamaño que la longitud del patrón.
Ambas capas están interconectadas, esto es todas las
neuronas de la capa de sensores estarán
interconectadas con todas las neuronas capa de salida.
Arquitectura (cont…)
Algoritmo de Aprendizaje
 El algoritmo de aprendizaje comienza inicializando los pesos




(wij) con valores aleatorios bajos.
A continuación se presenta a la red una información de entrada
en forma de vector (x1, x2, ..., xn) que activará a una sola de las
neuronas de la capa de salida. A la neurona activada se le
denomina ganadora.
La neurona ganadora de la capa de salida es aquella cuyo vector
de pesos sea más parecido al patrón de entrada (x1, x2, ..., xn).
Se modifican los pesos de la neurona ganadora
Wnuevos = Wviejos + α(Xi-Wviejos)
donde α = Tasa de aprendizaje. [0 a 1]
El proceso se repite hasta que la variación de los pesos sea
insignificante.
x = (x1,x2) = (-1,0)
Ejemplo
The initial weight vectors:
w1 = (1,0), w2 = (0,1) and w3 = (-0.707,-0.707).
The outputs of the three neurons are calculated as follows: (w.x’)
s1 = 1 * (-1) + 0 * 0 = -1
s2 = 0 * (-1) + 1 * 0 = 0
s3 = (-0.707) * (-1) + (-0.707) * 0 = 0.707
The winner is S3
Assuming learning α =0.3, the weight vector is updated as follows:
w3 = (-0.707,-0.707) + 0.3 * [ (-1,0) - (-0.707,-0.707) ]
= (-0.707,-0.707) + 0.3 * [ (-0.293,0.707) ]
= (-0.795,-0.495)
In other to continue training of the network the weight vector has to be normalized:
c = 1.0 / sqrt( wg2 + wg2 ) = 1.0 / sqrt( (-0.795)2 + (-0.495)2 ) = 1.0 / 0.9365 = 1.0678
w'3 = c * w3 = ( 1.0678 * (-0.795), 1.0678 * (-0.495)) = (-0.849,-0.529)
MATLAB
function w = ncom(x,w,n)
tamx = size(x);
tamw = size(w);
for i = 1: tamx(1)
for j = 1:tamw(1)
s(j) = w(j,:)*x(i,:)';
end
[val winner] = max(s);
pes = w(winner,:)+n*(x(i,:)-w(winner,:));
nor = (1/sqrt(sum(pes.^2)))*pes;
w(winner,:) = nor;
end