Documentos de Académico
Documentos de Profesional
Documentos de Cultura
w1
w2
wm
wm
El Perceptrn
x0
x1
x2
b
w1
w2
m j =1
v
m
y = (v )
xm
wm
t v = w j x j + b = wi xi = w x
i =0
con
t w = [b w1 w2 wm ] t x = [1 x1 x2 xm ]
t 1 w x>0 y= t 1 w x 0
El Perceptrn
El Perceptrn divide al hiperplano en dos clases siempre y cuando estas sean linealmente separables. En 2D: Si es separable No es separable
No es linealmente separable
El Perceptrn
Entrenamiento: Actualizar los pesos sinpticos para minimizar el error de clasificacin. Algoritmo Entrada: X(n)=[1, x1(n),x2(n),......,xm(n)]t W(n)=[b(n),w1(n),w2(n),......,wm(n)]t y(n), respuesta real d(n), respuesta deseada , constante positiva (tasa de aprendizaje) 1) Inicializar W(0)=0, n=1. 2) En el paso n, activamos le perceptrn con la entrada X(n) y la salida deseada d(n). y(n)=sgn[W t(n) * X(n) ]; 3) Actualizar los pesos segn la regla W(n+1)= W(n) + [d(n)-y(n)]X(n) 1 si X(n) pertenece a C1 d(n)= -1 si X(n) pertenece a C2 4) n= n+1, retornar a 2) hasta alcanzar la condicin de parada
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Definicin: Una poca es la presentacin del conjunto completo de datos. OBSERVACIONES 1. Definimos (n) = d(n) y(n). (n) es el error de la clasificacin en la iteracin n. 2. Cuando el error de clasificacin es 0, los pesos no se actualizan. 3. Condicin de parada: Realizar tantas pocas como hagan falta hasta lograr que todos los (n) de una poca sean 0. 4. La inicializacin de los pesos iniciales puede ser a cualquier valor. 5. Se puede demostrar que el algoritmo termina con (n)=0 para cualquier valor de positivo (OJO)
El Perceptrn
Interpretacin Geomtrica
Queremos encontrar pesos W tales que sgn(wt x ) = d
t El hiperplano w x =0
El Perceptrn
d=1 d=-1 P1
w 2p1
Wnuevo=Wviejo + (d - y) X
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Qu pasa si es muy grande? Tardaremos MUCHO en converger Qu pasa si P1es un punto atpico? Tardaremos MUCHO en converger Mejora es este caso: Wnuevo=Wviejo + (d - y) X / ||X||
El Perceptrn
Ejemplo:
x1 1 1 2 2
x2 1 2 1 2
d(X) -1 +1 +1 +1
El Perceptrn
TEOREMA DE CONVERGENCIA
zConsidere
la entrada: x1 , x2 , que representan Muestras de dos clases linealmente separables, C1 y C2 , asuma que existe un vector w tal que
t w t x > 0 w x0
si x C1 si x C2
.
Sea H1 el subconjunto de entrenamiento que pertenecen a la clase C1 Sea H2 el subconjunto de entrenamiento que pertenecen a la clase C2
El Perceptrn
Demostracin:
Queremos encontrar los pesos tales que se satisfaga:
(1)
(2)
( n)
El Perceptrn
Caso 1:
( n) = > 0
Supongamos que :
la constante es igual a 1. w(0)=0 t w ( n) x ( n) < 0 x(n) pertenece a H1 (est mal clasificado) para n=1,2,3,.. w(n+1)=x(1)+x(2)+ .+ x(n) Existe una solucin w0 para la cual Definimos (3) Utilizando la regla (2) e iterando
t w0 w(n + 1) n
(4)
El Perceptrn
Ahora,
wo
w ( n + 1)
w w ( n + 1)
t 0
n 2
(4)
w ( n + 1)
n 2 2 w0
2
Note que w(i+1) = w(i) + x(i) para x(i), una muestra de la clase C1 con i = 1, 2, 3, ,n Tomamos norma a ambos lados y obtenemos ||w(i+1)||2 = ||w(i)||2 + ||x(i)||2 + 2wT(i)x(i) Pero si el perceptrn clasifica incorrectamente (como asumimos al inicio), wT(i)x(i) < 0 Por lo tanto, ||w(i+1)||2 <= ||w(i)||2 + ||x(i)||2
El Perceptrn
||w(i+1)||2 - ||w(i)||2 <= ||x(i)||2 for i = 1, 2, 3, ,n ( ||w(1)||2 - ||w(0)||2 <= ||x(1)||2 ) + ( ||w(2)||2 - ||w(1)||2 <= ||x(2)||2 ) + ( ||w(3)||2 - ||w(2)||2 <= ||x(3)||2 ) + ( ||w(n+1)||2 - ||w(n)||2 <= ||x(t)||2 ) con w(0)=0,
w( n + 1)
2 i =1
2 x (i ) n con = max x (i )
2 x ( i ) enH 1
Tenemos que:
n 2 w0
2 2
w ( n + 1)
n
Qu pasa con n grandes?
El Perceptrn
Debe existir un n tal que ambas desigualdades se satisfagan con igualdad, nmax
nmax 2
2
w0
= nmax
nmax
w0 = 2
El Perceptrn
Caso 2:
( n)
variable
Sea
( n ) x t ( n ) x ( n ) > wt ( n ) x ( n )
Si el producto interno w ( n) x ( n) en la n-sima iteracin tiene signo incorrecto, Entonces, wt ( n + 1) x ( n) tiene el signo correcto. (Tarea) Sugiere mostrar la data una y otra vez hasta que sea clasificado correctamente QED
t
El Perceptrn
= 2
Constante!!!
Ejemplos (1 Neurona)
x1 x2
wk1 wk2
bk
xm
vk
(.)
yk
wkm
En Matlab la data es representada en forma vectorial: >>w=[2,-2]; b=2; >>x=[-1,1]; out=w*x+ b out=-2
>> x1=-3:0.1:3; >> y1=hardlim(x1); >> plot(x1,y1,'k'); >> axis([-3 3 -0.25 1.25]); >> xlabel('entrada'); ylabel('salida'); >> title('Funcion de transferencia')
x2
x1
x2
x1
w1x1+w2x2+b= -4
hardlim(-4) = 0
Introduccin a las Redes Neuronales Artificiales
w = [.1,-.1,.1]'; Epoca = 0; error = ones(1,4); dibujarecta(w,X,d,Epoca) while any(error) for i = 1 : 4, %una epoca suma(i) = X(i,:)*w; if suma(i) > 0, y(i) = 1; else y(i) = -1; end; error(i) = d(i) - y(i); if error(i) ~= 0, % no converge, actualizo los pesos. w(1) = w(1) + Eta*error(i); w(2) = w(2) + Eta*error(i)*X(i,2); w(3) = w(3) + Eta*error(i)*X(i,3); end; end; Epoca = Epoca + 1; dibujarecta(w,X,d,Epoca) end
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Entrenamiento en Matlab
Cmo entrenamos en Matlab a una neurona dada una data? >>load classdata (Esta data se puede obtener de http://prof.usb.ve/mvillasa/redes) >>who
N-simo dato
P = p1(1) p1(2) p1(3) p1(4) p1(5) ..... p1(n) p2(1) p2(2) p2(3) p2(4) p2(5) ...... p2(n) T = t(1) t(2) t(3) ...................... t(n)
Explorar la data
Crear un perceptron
>>help newp >>net = newp([-2 2;-2 2],1); Acabamos de crear un perceptrn con los rangos especificados y con una neurona. Veamos ...... >>net >>net.layers{1} >>net.IW{1} >>net.b{1} Exploremos las opciones >>help(net.inputweights{1,1}.learnfcn) >> net.inputWeights{1,1}.learnFcn=learnwh >>net.inputweights{1,1} Recapitulamos >>net=newp([-2 2; -2 2],1)
Crear un perceptron
Originalmente los pesos son 0, asi que la neurona no hace nada. >>help plotpc >>plotpc(net.IW{1},net.b{1}) Con esto visualizamos el efecto del perceptrn
Entrenar el perceptrn Cul es el algoritmo de entrenamiento? >>help adapt >>help train La diferencia radica en la forma en que se presentan los datos Si los datos son presentados en una matriz la actualizacin es por lote (lo veremos la prxima clase) >>[net1,y,e] = adapt(net,P,T); >>mse(e) Si los datos son presentados en celdas la actualizacin es secuencial (teorema) texto2='TS={'; texto='PS={'; for i=1:40, texto=[texto,' [',num2str(P(1,i)),;,num2str(P(2,i)), ']']; texto2=[texto2,' ',num2str(T(i))]; end; texto=[texto, '}']; texto2=[texto2, '}']; eval(texto) eval(texto2) >>[net2,y,e] = adapt(net,PS,TS); >>mse(e)
Entrenar el perceptron
Por defecto el nmero de pases por la data es 1. Fijamos algunos parmetros del algoritmo >>net.adaptParam.passes = 2; Entrenamos la red y retornamos su valor. >>[net,y,e] = adapt(net,P,T); >>mse(e) El perceptrn ha sido entrenado, es decir se han modificado los pesos para que la salida del perceptrn concuerde con el vector t. >>plotpc(net2.IW{1},net2.b{1});
Entrenar el perceptron
Validar el perceptrn
Exploramos la data de validacin >>Val La validacin se realiza con la simulacin de nueva data en la red (pasamos nueva informacin por el perceptrn) >>help sim >>a = sim(net,Val); Ahora queremos mostrar en una misma grfica la data de entrenamiento y la data que usamos para la validacin pero al esta ltima le cambiamos el color a rojo. >>plotpv(Val,a); >>point = findobj(gca,'type','line'); >>set(point,'Color','red'); >>hold on; >>plotpv(P,T); >>plotpc(net.IW{1},net.b{1});
Validar el perceptrn
Observaciones
Se puede inicializar el perceptrn con otros valores, como por ejemplo valores aleatorios. >> net.inputweights{1,1}.initFcn = rands >> net.biases{1}.initFcn = rands >> net=init(net) Un perceptrn puede aprender utilizando varias reglas de aprendizaje Learnp: El algoritmo para el cual probamos convergencia con parametro fijo Learnpn: La iteracin modificada para ser robusta ante puntos atpicos con parmetros fijos Learnwh: la iteracin LMS con parmetro variable. (lo veremos prxima clase)
Observaciones
Podemos tambin controlar la cantidad de pasadas del entrenamiento. >> net.TrainParam.epochs=1; >>net=train(net,P,T); >>net.IW{1} De esa forma vemos el cambio de una iteracin del algoritmo de entrenamiento.
El Perceptrn
Como vimos antes, un perceptrn produce un hiperplano que discierne entre dos clases. Dos perceptrones, producen dos hiperplanos que pueden diferenciar hasta 22 clases. K perceptrones distinguen hasta 2k clases
Ms de dos clases
b1
x1 x2
y1
Una entrada
x1 (k ) x (k ) 2
b2
y2
d1(k) 0 1 1 0 , = , , d (k) 0 0 1 1 2
y2 = 1 (x1w12 + x2 w22 + b2 )
Introduccin a las Redes Neuronales Artificiales
y1 = 1 ( x1w11 + x2 w21 + b1 )
El Perceptrn multiple
T wk1 x1 b1 wk 2 x2 b2 + wkm xm bk
El Perceptrn multiple
w11 w21 wk1 w11 w21 w w22 wk 2 w w22 = 12 12 w w w w w2 m km 2m 1m 1m T w11 w21 wk1 w11 w21 wk1 w w wk 2 w w w k 12 22 2 12 22 = w w w w w w km km 2m 2m 1m 1m b1 b1 e1 b b e 2 = 2 + 2 bk bk ek
wk 1 wk 2 wkm
e1 x1 e x 2 2 + e k x m e1 x 2 e2 x 2 ek x 2
e1 x1 e x 2 1 + ek x1
e1 x m e2 x m ek x m
El Perceptrn multiple
(perceptron3.m) (class3data.mat)
Para curucutear
Si se quieren divertir: Para practicar Matlab:Generar data aleatoria que siga ciertas especificaciones y data de validacion. Crear un perceptron y practicar. (ayuda: randn, uso de vectores) La data de las flores: (iris.dat) Esta es una data interesante, hay tres clases de irises que deben ser clasificadas segn 4 atributos: long y ancho de la sepa y long y ancho de los ptalos. Mirar la data por pares y darse cuenta de la no-separabilidad de dos de los subconjuntos. Pueden ustedes segregar entre esta y las anteriores? (incluida en la tarea)
Los perceptrones no se comportan bien cuando las clases no son linealmente separables. Podemos pensar en un conjunto ptimo de pesos.
optimalidad
Un perceptrn pudiera visitar un conjunto de pesos ptimos en una iteracin del algoritmo del perceptrn y luego pasar al peor de todos. El algoritmo del perceptrn puede nunca estabilizarse en los casos no separables linealmente. El algoritmo del bolsillo (pocket) lo que hace es aadirle un refuerzo positivo al aprendizaje de los pesos buenos para estabilizar el algoritmo.
Idea: usar el algoritmo del perceptrn manteniendo un conjunto de pesos en el bolsillo. Algoritmo 1) Inicializar W(0) a algn valor aleatorio. 2) Definir algn vector wb (en el bolsillo). 3) Inicializar hb =0 (un contador de historia de wb). 4) En el paso n, calcular la actualizacin W(n+1) segn el algoritmo del perceptrn. Usar el nuevo vector de pesos para calcular h (nmero de muestras clasificados correctamente) Si h>hb, wb W(n+1) hb h fin
Se puede demostrar que el algoritmo del bolsillo (Pocket Algorithm) converge con probabilidad 1 a la solucin ptima.
Gallant, S.I. Neural Networks, IEEE Transactions on Volume 1, Issue 2, Jun 1990 Page(s):179 - 191
Otras variantes: Thermal Perceptron algorithm Loss minimization algorithm Barycentric correction prodecure
Suponga que se tienen multiples clases (L) y se cuentan con M patrones para el entrenamiento (X1, X2, ..... XM) . El conjunto se dice linealmente separable si (y solo si) existen vectores de pesos wi con i=1,...,L tal que para cualquier patrn z en la i-sima clase wit z > wjt z para todo j distinto de i.
Suponga que el patrn z se sabe pertenece a la clase i y que la neurona ganadora (la clase ganadora) se denota por un entero j, por lo tanto para todo l~=j,
wjt z > wlt z
1. Cuando j=i (el patrn est correctamente clasificado), no hay actualizaciones. 2. Cuando j ~=i (z est mal clasificado), se hacen las siguientes actualizaciones:
1. RL: Winuevo = Wiviejo + z 2. ARL: Winuevo = Wiviejo - z