ALGUNOS MODELOS DE UNA NEURONA
w1
w2
wm
Introduccin a las Redes Neuronales Artificiales
Neuronas de McCulloch-Pitts (El Perceptrn)
Rosenblatt, F. (1958), The Perceptron: A Probabilistic Model for Information Storage and Organization in The Brain, Psychological Review, Vol. 65, pp. 386408 Rosenblatt, F. (1962), Principles of Neurodynamics: Perceptrons and the Theory of Brain Mechanisms. Spartan Books, Washington, DC.
w1
w2
wm
Introduccin a las Redes Neuronales Artificiales
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
Introduccin a las Redes Neuronales Artificiales
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
Introduccin a las Redes Neuronales Artificiales
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)
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Interpretacin Geomtrica
Queremos encontrar pesos W tales que sgn(wt x ) = d
La proyeccin del patrn X sobre W tenga el mismo signo que d
La frontera entre proyecciones positivas y negativas es......
t El hiperplano w x =0
En 2D, es la ec. de la recta Con vector perpendicular W
Si y=d no cambio W Si y d actualizo segn la regla
Wnuevo=Wviejo + (d - y) X, para todo d
Introduccin a las Redes Neuronales Artificiales
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||
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Ejemplo:
x1 1 1 2 2
x2 1 2 1 2
d(X) -1 +1 +1 +1
Es linealmente separable? Si Hay algn punto atpico? No
Introduccin a las Redes Neuronales Artificiales
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
Si H es el conjunto de entrenamiento (linealmente separable) y para positivo, el Algoritmo termina (converge).
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Demostracin:
Queremos encontrar los pesos tales que se satisfaga:
t w x > 0 para x C1 t w x 0 para x C2
(1)
(Les quitamos las flechitas)
Si x ( n ) no es clasificado correctamente actualizo los pesos segn la regla:
w(n + 1) = w(n) (n) x(n) si w (n) x(n) > 0 y x(n) C2
t
w(n + 1) = w(n) + (n) x(n) si w (n) x(n) 0 y x(n) C1
t
(2)
( n)
Controla el ajuste que se aplica en la iteracin n
Introduccin a las Redes Neuronales Artificiales
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
wt (n) x(n) > 0 Para x(1),x(2),.,x(n) en H1
Multiplicando a (3) por W0t
t = min w0 x(n) sobre x(n) H1
t w0 w(n + 1) n
(4)
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Ahora,
wo
w ( n + 1)
w w ( n + 1)
t 0
n 2
(4)
Des. Cauchy Schwartz
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
Introduccin a las Redes Neuronales Artificiales
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?
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Debe existir un n tal que ambas desigualdades se satisfagan con igualdad, nmax
nmax 2
2
w0
= nmax
nmax
w0 = 2
Hemos probado que el proceso termina luego de un nmero finito de iteraciones
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Caso 2:
( n)
variable
Sea
(n) el menor entero tal que
( 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
Introduccin a las Redes Neuronales Artificiales
El Perceptrn
Como motiva esto al algoritmo propuesto?
w(n + 1) = w(n) + [d (n) y (n)]x(n)
Supongamos que x(n) est mal clasificado, por ejemplo: X(n) pertenece a C2 (d(n)=-1),pero y(n) =1 d(n)-y(n)=-2
w(n + 1) = w(n) x(n)
Con
= 2
Constante!!!
Introduccin a las Redes Neuronales Artificiales
Ejemplos (1 Neurona)
Una neurona con mltiples entradas
x1 x2
wk1 wk2
bk
xm
vk
(.)
yk
wkm
Matemticamente: yk = j(x1wk1+ x2wk2+ ........+xmwkm + bk) = j(XW+ b)
En Matlab la data es representada en forma vectorial: >>w=[2,-2]; b=2; >>x=[-1,1]; out=w*x+ b out=-2
Introduccin a las Redes Neuronales Artificiales
Dibujar una funcin de transferencia
Algunos comandos en Matlab
>> 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')
Introduccin a las Redes Neuronales Artificiales
Clasificar con una neurona
x2
x1
x2 = x1+1 w1x1+w2x2+b=0 x2= -b/w2 - w1/w2 x1 b = w1 = 2 w2= -2
Introduccin a las Redes Neuronales Artificiales
Clasificar con una neurona
Para un nuevo punto en la data
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
Introduccin a las Redes Neuronales Artificiales
Entrenamiento en Matlab
Cmo entrenamos en Matlab a una neurona dada una data? >>load classdata (Esta data se puede obtener de [Link] >>who
2ndo dato 1er dato
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)
Este ejemplo tiene dos coordenadas (2D)
t(i) = 1 o 0, dependiendo a qu grupo pertenece.
Misin: entrenar un perceptrn para que clasifique la data correctamente.
Introduccin a las Redes Neuronales Artificiales
Explorar la data
>>[P T] >>help plotpv >>plotpv(P,T)
Estos comandos Ayudan a visualizar La data
Introduccin a las Redes Neuronales Artificiales
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 >>[Link]{1} >>[Link]{1} >>net.b{1} Exploremos las opciones >>help([Link]{1,1}.learnfcn) >> [Link]{1,1}.learnFcn=learnwh >>[Link]{1,1} Recapitulamos >>net=newp([-2 2; -2 2],1)
Introduccin a las Redes Neuronales Artificiales
Crear un perceptron
Originalmente los pesos son 0, asi que la neurona no hace nada. >>help plotpc >>plotpc([Link]{1},net.b{1}) Con esto visualizamos el efecto del perceptrn
Automticamente Matlab coloca marcadores distintos para cada caso
Introduccin a las Redes Neuronales Artificiales
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)
Introduccin a las Redes Neuronales Artificiales
Entrenar el perceptron
Por defecto el nmero de pases por la data es 1. Fijamos algunos parmetros del algoritmo >>[Link] = 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([Link]{1},net2.b{1});
Introduccin a las Redes Neuronales Artificiales
Entrenar el perceptron
Hemos clasificado exitosamente!!
Introduccin a las Redes Neuronales Artificiales
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([Link]{1},net.b{1});
Introduccin a las Redes Neuronales Artificiales
Validar el perceptrn
Introduccin a las Redes Neuronales Artificiales
Observaciones
Se puede inicializar el perceptrn con otros valores, como por ejemplo valores aleatorios. >> [Link]{1,1}.initFcn = rands >> [Link]{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)
Introduccin a las Redes Neuronales Artificiales
Observaciones
Podemos tambin controlar la cantidad de pasadas del entrenamiento. >> [Link]=1; >>net=train(net,P,T); >>[Link]{1} De esa forma vemos el cambio de una iteracin del algoritmo de entrenamiento.
Introduccin a las Redes Neuronales Artificiales
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
Introduccin a las Redes Neuronales Artificiales
Ms de dos clases
b1
x1 x2
w11 w12 w22 w21
y1
Una entrada
x1 (k ) x (k ) 2
b2
y2
tiene valor deseado
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
Vectorialmente lo podemos escribir como
w11 w21 w12 w22 T (W x + b ) = w w2 m 1m
T wk1 x1 b1 wk 2 x2 b2 + wkm xm bk
Introduccin a las Redes Neuronales Artificiales
El Perceptrn multiple
Los pesos se actualizan segn la regla
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
Introduccin a las Redes Neuronales Artificiales
El Perceptrn multiple
(perceptron3.m) ([Link])
(Este archivo y la data se pueden obtener de la pgina web)
Introduccin a las Redes Neuronales Artificiales
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: ([Link]) 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)
Introduccin a las Redes Neuronales Artificiales
The Pocket Algorithm
Los perceptrones no se comportan bien cuando las clases no son linealmente separables. Podemos pensar en un conjunto ptimo de pesos.
optimalidad
mayor nmero de clasificados
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.
Introduccin a las Redes Neuronales Artificiales
Variante del Perceptrn-Pocket Algorithm
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
Introduccin a las Redes Neuronales Artificiales
Variante del Perceptrn-Pocket Algorithm
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
Introduccin a las Redes Neuronales Artificiales
clasificacin basado en aprendizaje competitivo
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.
Introduccin a las Redes Neuronales Artificiales
clasificacin basado en aprendizaje competitivo
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
Dejando los dems pesos sin alterar
Introduccin a las Redes Neuronales Artificiales