You are on page 1of 46

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 http://prof.usb.ve/mvillasa/redes) >>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 >>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)

Introduccin a las Redes Neuronales Artificiales

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

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 >>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});

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(net.IW{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. >> 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)

Introduccin a las Redes Neuronales Artificiales

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.

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) (class3data.mat)

(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: (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)

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