Está en la página 1de 18

3.

REDES NEURONALES
3.1 Funcionamiento de una neurona artificial
Neurona artificial = unidad de procesamiento lineal
x1
x2
xd

w1

w2

Nodo
neurona

wd
w0

w j x j w0 w j x j con x0 1

j 0
j 1

z( x ) w . x

z( x ) 0
Es un hiperplano en el espacio ddimensional.

El modelo matemtico simple z(x) es til


para problemas de regresin y como
discriminante lineal.

datos de entrada o
capa de entrada

R. Carballo (Dpto. Matemtica


Aplicada y C.C.)

3.2 Funciones de activacin


Las funciones de activacin nos permiten dar mayor flexibilidad al
sistema, y por tanto mayor capacidad.


w. x a
f (a) r

Las ms interesantes son la funcin logsig, tansig y la funcin lineal, ya


que son diferenciables.
Con funcin logsig conseguimos obtener las probabilidades a posteriori para
la separacin
p
de dos g
gaussianas multivariadas con igual
g
matriz de
covariana.
Redes de neuronas con funcin de activacin permiten aumentar la
complejidad (no sin funcin de activacin, ya que la combinacin lineal de
combinaciones lineales sigue siendo una combinacin lineal).
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

Funcin logsig

g (a )

1
1 e a

Funcin tansig

g (a )

2
1
1 e 2 a

1 si a 0
Funcin de Heavyside g ( a )
0 si a 0

w . x

Se utiliza adems la funcin lineal


g ( a )

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

3.3 El Multilayer Perceptron


capa escondida
(hidden layer)
x1
x2

salida
f

xd

f
1

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

Esquema del Multilayer Perceptron MLP


capa escondida
(hidden layer)
x1
x2

salida

xd

c salidas

l nodos
1
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

Puede haber ms de una capa escondida


Puede haber ms de una capa de salida
Hacia delante, o tambin llamada no recurrente (no se retroalimenta). En
ingls feed-forward.
Cada neurona est conectada a todas las neuronas de la capa
p siguiente.
g
Nomenclatura de la arquitectura. Por ejemplo N1:N2:N3:N4
N1 variables de entrada, N2 neuronas en la primera capa escondida, N3
en la segunda capa escondida y N4 variables de salida.
Para un MLP d:h:c el nmero de parmetros libres es:
(d+1)*h+(h+1)*c
(d+1)
h+(h+1) c
Red 5:3:2 26 parmetros libres
Capacidad terica de modelizacin. Con dos capas de neuronas y
sigmoides se puede ajustar cualquier transformacin continua entre las
variables de entrada y las variables de salida.
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

3.4. Algoritmo de back-propagation para el ajuste de parmetros


Utilizando como modelo en cada nodo o neurona:
d

g ( w j x
j0

) con

x1 1

y tomando como definicin del error en la salida final el mse,


puede utilizarse el mtodo de optimizacin para determinar los
parmetros conocido como back-propagation.
De acuerdo con el esquema del MLP:
Para un objeto
j

1
2

(r

z k )2

k 1

1
2

(r

g ( w jk f( x i w ij

k 1

j 0

)) ) 2

i0

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

1
2

(r k z k ) 2

k 1

1
2

k 1

( r k g ( w jk
j 0

f ( x i w ij )) ) 2
i0

d
E
g k
( r k - g k )(
) ( r k - g k ) g ' k f ( x i w ij )
w jk
w jk
i0

( g k r k ) g 'k y j k y j
E

w ij

( r k - g k )(

k 1

g k
)
w ij

k 1

( g k r k ) g ' k w jk

f'

xi

j xi
Aplicando el mtodo de descenso de gradiente

w jk - k y j
w ij - j x i
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

Las derivadas de la funcin logsig y tansig son las siguientes :


log sig

g (a )

1
;
1 e a

tansig

g(a)

2
1;
1 e 2a

g
(1-g ( a ) ) g ( a )
a
g
(1-g ( a ) ) (1 g ( a ))
a

Batch training
Para cada objeto se calculan los incrementos que deberamos aplicar a w
de acuerdo con el procedimiento anterior. A continuacin se suman los
incrementos obtenidos para todos los objetos y se aplica ese incremento
total a w. Cada p
paso p
por todos los objetos
j
se llama poca
p
del p
proceso
iterativo.
El mtodo de backpropagation utiliza las frmulas anteriores, tomando
valores iniciales aleatorios para los parmetros. El proceso finaliza
cuando se alcanza un mnimo de la funcin error.
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

3.5. Algoritmo de entrenamiento de Levenberg-Marquardt


Este algoritmo de optimizacin se aplica a MLP con batch-training,
funcin error mse, y funciones de activacin tansig, logsig o lineal. Es
mejor que el mtodo de descenso de gradiente,
gradiente ya que combina
distintos mtodos de minimizacin de funciones utilizando uno u otro
dependiendo de los valores de las derivadas de la funcin error.

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

10

3.6. Algunos aspectos prcticos en el entrenamiento de redes


neuronales
Preprocesamiento: Se deben escalar las entradas a un rango
conveniente. De lo contrario las variables con valores altos (en valor
absoluto) conducirn el proceso de aprendizaje enmascarando la
contribucin de las variables con valores menores.
Seleccin de atributos: El objetivo es reducir la dimensin del
espacio de las variables de entrada. Corresponde aproximadamente
al nmero de autovectores significativos en la matriz de covarianza,
pero no hay regla mejor que la experimentacin.
Ritmo de aprendizaje : Puede tomar valores entre 0 y 1. Muchas
veces se inicia con 0.5. Son ms interesantes los mtodos que
permiten no dejarlo constante, disminuyendo su valor durante el
entrenamiento. Con el mtodo de Levenberg-Marquardt el ritmo de
aprendizaje se adapta al mejor valor (bajo cerca del mnimo, alto
lejos de l).
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

11

Mnimos locales: La hipersuperficie de error del MLP depende de


varios parmetros y por tanto es esperable que sea bastante
compleja y que pueda tener varios mnimos locales.
A fin de alcanzar el mnimo global se puede recurrir a una o varias
alternativas:
lt
ti
Realizar el proceso completo comenzando con distintos valores
iniciales de los parmetros
Aadir ruido a los datos, y realizar el proceso completo para
distintos valores del ruido
Utilizar varios conjuntos de entrenamiento distintos
Tomar distintos valores del ritmo de aprendizaje
j

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

12

3.7 Generalizacin
El objetivo del AA no es replicar los datos de entrenamiento, sino la
prediccin en casos nuevos, es decir, generar la salida adecuada para
una instancia no incluida en el conjunto de entrenamiento.
Llamamos generalizacin a cmo de bien un modelo entrenado con un
conjunto de entrenamiento predice la salida correcta en instancias
nuevas.
La mejor generalizacin se obtiene cuando la complejidad del modelo
coincide con la complejidad de la funcin implcita en los datos.
Si modelo menos complejo que funcin subyacente a los datos
tenemos subajuste.
El otro caso es el sobreajuste. Si hay ruido y el modelo es
demasiado complejo, en el entrenamiento se estar ajustando
adems de la funcin subyacente, el ruido de los datos, produciendo
un mal ajuste sobre datos nuevos.
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

13

Validacin cruzada
En el aprendizaje supervisado tiene que haber un balance entre tres
factores:
Complejidad de la hiptesis
Cantidad de datos de entrenamiento
Errores en objetos nuevos
Al ir aumentando la complejidad, al principio disminuye el error en datos
nuevos, pero luego empieza a aumentar.
Al aumentar los datos de entrenamiento el error en datos nuevos
disminuye, pero slo hasta cierto lmite.
El conjunto de entrenamiento debe dividirse en dos partes
conjunto
j t de
d entrenamiento
t
i t
conjunto de validacin (testea la habilidad para generalizar)
Suponiendo que los conjuntos de entrenamiento y de validacin son
suficientemente amplios, la mejor hiptesis o modelo es la que resulta ms
precisa para el conjunto de validacin. Este proceso se denomina
validacin cruzada. Ntese que determina el modelo, no los parmetros.
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

14

3.8 Redes neuronales en Matlab


Regresin lineal unidimensional
x = [0 1 2 3 4 5 6 7 8 9 10]; f=2*x; r=f+randn(1,11);
figure(1), plot(x,r,'o'),
% comando newff(). Crea un MLP
% [0 10] : valores mnimo y mximo de la variable
% el programa tiene en cuenta el rango anterior para calcular los
% parmetros iniciales
% [1] : arquitectura de la red: slo una neurona
% purelin : salida con funcion de activacion g(a)=a a=w1x1+w0
% no varo
sus opciones
i
d
de d
defecto:
f t mse y L
Levenberg-Marquardt
b
M
dt
net=newff([0 10] , [1] ,{'purelin'})
% sim() me muestra la salida del modelo net para los datos x
g=sim(net,x)
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

15

net.IW{1} , net.b{1} % me da los dos parmetros del MLP


hold on , plot(x,g,'k')
figure(2)
net= train(net,x,r)
( , , ) % entrena la red hasta alcanzar mnimo
figure(1), g=sim(net,x), plot(x,g,'g') , net.IW{1},
print -depsc2 regresionlineal.eps
e=g-r
mse(e) %sum(e.^2/length(x))

R. Carballo (Dpto. Matemtica


Aplicada y C.C.)

net.b{1}

16

Regresin lineal unidimensional


20

Modelo con los parmetros


optimizados. Error mse

15

10

Modelo con los parmetros


iniciales, aleatorios

R. Carballo (Dpto. Matemtica


Aplicada y C.C.)

10

17

Polinomio unidimensional de grado 2


clear % para borrar las variables anteriores
close % para cerrar las figuras anteriores
x1 = [0 1 2 3 4 5 6 7 8 9 10];
r = 2 + 3*x1 - 4*x1.*x1 +3*randn(1,11);
( , ); figure(1)
g ( )
plot(x1,r,'o')
data=[x1;x1.*x1]; mins = min(data'), maxs = max(data')
net=newff( [[mins(1) maxs(1)];[mins(2) maxs(2)]] , [1] ,{'purelin'})
g=sim(net,data), net.IW{1}, net.b{1}
hold on, plot(x1,g,'k')
figure(2), net= train(net,data,r)
figure(1), g=sim(net,data), plot(x1,g,'g')
net.IW{1}, net.b{1}
print -depsc2 polinomio2.eps , e=g-r, mse(e)
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

18

Polinomio unidimensional de grado 2


100

Modelo con los parmetros


iniciales, aleatorios

50

50

100

150

200

Modelo con los parmetros


optimizados. Error mse

250

300

350

400

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

10

19

Separacin entre dos clases: ejemplo 1


clear, close all, j=[]; k=[];
for i=1:1000
j=[j 0.5*randn(1)+0.5]; k=[k 0.3*randn(1)+0.3];
end
d
data1x1=j(1:500); data1x2=j(501:1000);
data2x1=k(1:500); data2x2=k(501:1000);
figure(1), plot(data1x1,data1x2,'+')
hold on, plot(data2x1,data2x2,'ro'), axis square
figure(2), subplot(2,1,1), axis([-2 2 0 250]), hist(j-0.5)
subplot(2,1,2), hist(k-0.3), axis([-2 2 0 250])
std(j) ,std(k)
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

20

10

Btrain=[ [data1x1 data2x1]; [data1x2 data2x2]];


% size(Btrain) 2 x 1000
%
objeto1
j
objeto2
j
objeto3
j
...
% variable x1 x1 de 1 x1 de 2 x1 de 3 x1 de 4
% variable x2 x2 de 1 x2 de 2 x2 de 3 x2 de 4
T=[ones(1,500) -1*ones(1,500)];
% size(T) 1 * 1000
min(Btrain,[],2), max(Btrain,[],2) % devuelve minimo (max) de cada fila
limits= [min(Btrain,[],2) max(Btrain,[],2)]
% son random, o sea que pueden variar
% -0.8175 1.8451
% -1.0369 1.9748
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

21

% Hay que utilizar y analizar los datos completos para las dos
% arquitecturas que siguen.
% Primero se precede una de ellas de %, para que no se ejecute, y
% luego la otra.
%nnet=newff(limits,[1],{'tansig'});
nnet=newff(limits,[2 1],{'tansig','tansig'});

% sin capa escondida


% con capa escondida

figure(3) , [nnet,tr]=train(nnet,Btrain,T);
pru=sim(nnet,Btrain); msetrain=mse(pru-T)
figure(4), plot(pru,'+'), hold on, plot(T,'sr')
bias=nnet.b{1} , w=nnet.IW{1}
bias=nnet.b{2}, w=nnet.LW{2}

% con capa escondida

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

22

11

figure(5) , [x1,x2]=meshgrid(-2.5:0.05:2.5,-2.5:0.05:2.5);
matrix=[x1(:),x2(:)]'; model=sim(nnet,matrix); % size(matrix) = 2 * 1021
S=reshape(model,size(x1));
mesh(x1,x2,S), view(-15,20),xlabel('x1'), ylabel('x2')
hold on, plot3(Btrain(1,1:500),Btrain(2,1:500),T(1:500),'k+')
hold on, plot3(Btrain(1,501:1000),Btrain(2,501:1000),T(501:1000),'ko')
% si no se ven bien los datos, tendra que quitar mesh utilizando
% sobre la figura "tools" "edit plot"
figure(1)
% contour(x1,x2,S,[-0.9 -0.8],'r');
% contour(x1,x2,S,[0.7 0.5 0.3 -0.3 -0.5 -0.7]);
contour(x1,x2,S,10)
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

23

figure(6), sensi=[]; f_a=[];


% objetivo seleccionar la clase alta
for thr=0:0.2:0.8
tp=length(find(pru(1:500)>=thr)); fn=length(find(pru(1:500)<thr));
fp=length(find(pru(501:1000)>=thr)); tn=length(find(pru(501:1000)<thr));
sensi = [sensi tp./(tp+fn)]; f_a = [ f_a fp./(fp+tn) ];
end
plot(f_a,sensi,'k-'), hold on, plot(f_a,sensi,'k+')
xlabel('Tasa de falsas alarmas'), ylabel('Sensibilidad')

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

24

12

Clasificacion con MLP


1

2.5
2

0.5

1.5
1

0
0.5
0

0.5
0.5
1

1
5

1.5
2

2.5
3

x2

x1

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

25

0.7

0.6

Sensibilidad

0.5

0.4

0.3

0.2

0.1

0.05

0.1

0.15
0.2
0.25
Tasa de falsas alarmas

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

0.3

0.35

26

13

Clasificacion con MLP

2.5
0.5

2
1.5

1
0.5

0.5
0

1
5

0.5

1
1.5

x2

x1

2
2.5
3

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

27

0.65
0.6

Sensibilidad

0.55
0.5
0.45
0.4
0.35
0.3
0.25

0.02

0.04

0.06
0.08
Tasa de falsas alarmas

0.1

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

0.12

0.14

28

14

Separacin entre dos clases: ejemplo 2


clear, close all, xx1=[]; yy1=[];
for i=0:0.05:2*pi
xx1=[xx1 (6+randn(1))*cos(i)]; yy1=[yy1 (6+randn(1))*sin(i)]; end
xx2=[];yy2=[];
xx2
[];yy2 [];
for i=0:0.05:2*pi
xx2=[xx2 (2.+randn(1))*cos(i)]; yy2=[yy2 (2.+randn(1))*sin(i)]; end
figure(1), plot(xx1,yy1,'+'), hold on, plot(xx2,yy2,'ro'), axis square
Btrain=[ [xx1 xx2]; [yy1 yy2]];
% size(Btrain) 2 x 252
N=size(Btrain,2)
%
1 2 3 4 5
% variable x1
% variable x2

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

29

% t
t de 1 t de 2 t de 3 t de 4
T=[ones(1,N/2) -1*ones(1,N/2)];
% size(T) 1 * 252
% Datos renormalizados a lmites -1, 1 en todas las variables.
[b
[bpre,bpremin,bpremax]=premnmx(Btrain);
b
i b
]
(Bt i )
nnet=newff([min(bpre,[],2),max(bpre,[],2)],[4 1],{'tansig' ,'tansig'},'trainlm');

figure(2), [nnet,tr]=train(nnet,bpre,T); pru=sim(nnet,bpre);


msetrain=mse(pru-T)
figure(3), plot(pru,'+'), hold on, plot(T,'sr')
bias=nnet.b{1}
w=nnet.IW{1}
bias=nnet.b{2}
w=nnet.LW{2}
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

30

15

figure(4), [x1,x2]=meshgrid(-1:0.05:1.0,-1.0:0.05:1.0);
matrix=[x1(:),x2(:)]'; model=sim(nnet,matrix);
S=reshape(model,size(x1));
% S es la salida de la red neuronal
mesh(x1,x2,S),
h( 1 2 S) view(-15,20),
i ( 15 20) xlabel('x1'),
l b l(' 1') ylabel('x2')
l b l(' 2')
% si no se ven los datos, quitar mesh utilizando en figura
% tools edit plot
hold on, plot3(bpre(1,1:N/2),bpre(2,1:N/2),T(1:N/2),'k+')
hold on
on, plot3(bpre(1
plot3(bpre(1,N/2+1:N),bpre(2,N/2+1:N),T(N/2+1:N),
N/2+1:N) bpre(2 N/2+1:N) T(N/2+1:N) 'ko')
ko )

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

31

figure(5)
plot( bpre(1,1:N/2) , bpre(2,1:N/2) ,'+') , hold on
plot( bpre(1,N/2+1:N) , bpre(2,N/2+1:N) ,'ro'), axis square
contour(x1,x2,S,[ 0.2 0.4 0.6 0.8 ],'b');
contour(x1,x2,S,[-0.1
contour(x1,x2,S,[
0.1 -0.3
0.3 -0.5
0.5 -0.7
0.7 -0.9],'r:');
0.9], r: );
figure(6), sensi=[]; f_a=[];

% Curva ROC

for thr=-0.5:0.1:0.9
tp=length(find(pru(1:N/2)>=thr)); fn=length(find(pru(1:N/2)<thr));
fp=length(find(pru(N/2+1:N)>=thr));
tn=length(find(pru(N/2+1:N)<thr));
sensi = [sensi tp./(tp+fn)]; f_a = [ f_a fp./(fp+tn) ]; end
plot(f_a,sensi,'k+'), axis([-0.001 0.009 0.991 1.001])
hold on, plot(f_a,sensi,'k-')
xlabel('Tasa de falsas alarmas'), ylabel('Sensibilidad')
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

32

16

Performance is 0.00965706, Goal is 0

10
8
6

10
4
TrainingBlue

2
0
2

10

4
2

10

6
8
10
10

10

10

20

40

60

80

100

100 Epochs
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

33

0.8
0.6

0.5

0.4

0.2
0

0.5
0.2
0.4

1
1

0.6

0.8
1

50

100

150

200

250

300

x2

0.5

0.5

x1
R. Carballo (Dpto. Matemtica Aplicada y C.C.)

34

17

1.001

0.8

0.6

0.999

0.4

0.998

0.2

0.997

Sensibilidad

0
0.2

0.996
0.995

0.4

0.994

0.6

0.993

0.8

0.992

1
1

0.5

0.5

0.991
1

R. Carballo (Dpto. Matemtica Aplicada y C.C.)

3
4
5
6
Tasa de falsas alarmas

8
3

x 10
35

18

También podría gustarte