Está en la página 1de 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
b

x1

w1

x2

xm

con

w2

wm

y = (v )

t
v = w j x j + b = wi xi = w x
m

j =1

i =0

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
la entrada: x1 , x2 ,
que representan
Muestras de dos clases linealmente separables,
C1 y C2 , asuma que existe un vector w tal que

zConsidere

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:

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

(n)

(2)

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

= min w0t x(n) sobre x(n) H1

w0t w(n + 1) n

Multiplicando a (3) por W0t

(4)

Introduccin a las Redes Neuronales Artificiales

El Perceptrn

Ahora,

wo

w ( n + 1)

w w ( n + 1)
t
0

Des. Cauchy Schwartz

w ( n + 1)

n 2

(4)

n 2 2
w0

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,


n

w( n + 1)
2

2
x (i ) n con = max x (i )
2

x ( i ) enH 1

i =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)

Sea

variable

(n) el menor entero tal que

( n ) x t ( n ) x ( n ) > wt ( n ) x ( n )
t

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

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

wk1

x2

wk2

bk

xm

wkm

vk

(.)

yk

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)

Este ejemplo tiene dos


coordenadas (2D)

t(3) ...................... t(n)


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

y1

w12
w22

w21

b2

Una entrada

x1 (k )

x2 ( k )

tiene valor deseado

y2

d1(k) 0 1 1 0

= , , ,
d2(k) 0 0 1 1

y1 = 1 ( x1w11 + x2 w21 + b1 )

y2 = 1 (x1w12 + x2 w22 + b2 )
Introduccin a las Redes Neuronales Artificiales

El Perceptrn multiple

Vectorialmente lo podemos escribir como

w11 w21

w12 w22
T
(W x + b ) =


w1m w2 m

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
w1m w2 m
km
2m
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 1
+

ek x1

e1 x1
e x
2
2
+


ek x m
e1 x 2
e2 x 2

ek x 2

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

También podría gustarte