+ All Categories
Home > Documents > curso_10_11_tercera_parte

curso_10_11_tercera_parte

Date post: 24-Dec-2015
Category:
Upload: julian-hernandez
View: 4 times
Download: 0 times
Share this document with a friend
18
1 3. REDES NEURONALES 3.1 Funcionamiento de una neurona artificial Neurona artificial = unidad de procesamiento lineal x 1 w 1 1 x 2 x d 1 Σ w 0 1 w d w 2 1 con 0 0 0 1 x x w w x w j d j j j d j j Nodo neurona 0 ) ( . ) ( x z x w x z Es un hiperplano en el espacio d- R. Carballo (Dpto. Matemática Aplicada y C.C.) 1 1 datos de entrada o capa de entrada dimensional. El modelo matemático simple z(x) es útil para problemas de regresión y como discriminante lineal. 3.2 Funciones de activación Las funciones de activación nos permiten dar mayor flexibilidad al sistema, y por tanto mayor capacidad. Σ f f a x w ) ( . r Las más interesantes son la función logsig, tansig y la función lineal, ya que son diferenciables. – Con función logsig conseguimos obtener las probabilidades a posteriori para la separación de dos gaussianas multivariadas con igual matriz de Σ f r a f ) ( r R. Carballo (Dpto. Matemática Aplicada y C.C.) 2 covariana. – Redes de neuronas con función de activación permiten aumentar la complejidad (no sin función de activación, ya que la combinación lineal de combinaciones lineales sigue siendo una combinación lineal).
Transcript
Page 1: curso_10_11_tercera_parte

1

3. REDES NEURONALES

3.1 Funcionamiento de una neurona artificial

Neurona artificial = unidad de procesamiento lineal

x1 w11

x2

xd

1

Σ

w0

1

wd

w2 1 con 00

01

xxw wxw j

d

jjj

d

jj

Nodo

neurona0)(

.)(

xz

xwxz

Es un hiperplano en el espacio d-

R. Carballo (Dpto. Matemática Aplicada y C.C.)

1

1

datos de entrada o capa de entrada

dimensional.

El modelo matemático simple z(x) es útil para problemas de regresión y como discriminante lineal.

3.2 Funciones de activación

Las funciones de activación nos permiten dar mayor flexibilidad alsistema, y por tanto mayor capacidad.

Σ ff

a xw )(

.

r

Las más interesantes son la función logsig, tansig y la función lineal, yaque son diferenciables.

– Con función logsig conseguimos obtener las probabilidades a posteriori parala separación de dos gaussianas multivariadas con igual matriz de

Σ fraf )(r

R. Carballo (Dpto. Matemática Aplicada y C.C.)2

p g gcovariana.

– Redes de neuronas con función de activación permiten aumentar lacomplejidad (no sin función de activación, ya que la combinación lineal decombinaciones lineales sigue siendo una combinación lineal).

Page 2: curso_10_11_tercera_parte

2

e

aga

2

1

1)( logsig Función

0a 0a

ag

eag

a

si 0 si 1

)( Heavysidede Función

11

2)( tansigFunción

2

R. Carballo (Dpto. Matemática Aplicada y C.C.) 3

Se utiliza además la “función lineal”aag

x.wa

)(

x1

capa escondida (hidden layer)

salida

3.3 El Multilayer Perceptron

x2

xd

1 1

R. Carballo (Dpto. Matemática Aplicada y C.C.) 4

Page 3: curso_10_11_tercera_parte

3

Esquema del Multilayer Perceptron MLP

x1

capa escondida (hidden layer)

saliday

x2

xd

1

Σ

z

z

R. Carballo (Dpto. Matemática Aplicada y C.C.) 5

1

fΣ c salidas

l nodos

• Puede haber más de una capa escondida

• Puede haber más de una capa de salida

• Hacia delante, o también llamada no recurrente (no se retroalimenta). Eninglés “feed-forward”.

• Cada neurona está conectada a todas las neuronas de la capa siguiente.p g

Nomenclatura de la arquitectura. Por ejemplo N1:N2:N3:N4

N1 variables de entrada, N2 neuronas en la primera capa escondida, N3en la segunda capa escondida y N4 variables de salida.

Para un MLP d:h:c el número de parámetros libres es:

(d+1)*h+(h+1)*c Red 5:3:2 26 parámetros libres

R. Carballo (Dpto. Matemática Aplicada y C.C.) 6

(d+1) h+(h+1) c Red 5:3:2 26 parámetros libres

Capacidad teórica de modelización. Con dos capas de neuronas ysigmoides se puede ajustar cualquier transformación continua entre lasvariables de entrada y las variables de salida.

Page 4: curso_10_11_tercera_parte

4

Utilizando como modelo en cada nodo o neurona:

1 con ) ( 10

xxwg j

d

jj

3.4. Algoritmo de back-propagation para el ajuste de parámetros

y tomando como definición del error en la salida final el mse,puede utilizarse el método de optimización para determinar losparámetros conocido como “back-propagation”.

De acuerdo con el esquema del MLP:

Para un objeto

0j

R. Carballo (Dpto. Matemática Aplicada y C.C.) 7

j

c

kjk

kc

k

kk wgrzrE1

2ij

d

0ii

l

0j1

2 ) )) wxf( ((2

1)(

2

1

ij

d

ii

kkk

jk

kkk

jk

c

kij

d

iijk

kc

k

kk

wxfgg-rw

gg-r

w

E

wxfwgrzrE

) (') ())( (

) )) ( ((2

1)(

2

1

0

1

2

0

l

0j1

2

ij

ij

jkkkk

c

kij

kkk

c

kij

jk

jkkk

ijkjk

x

x f ' wgrgw

gg-r

w

E

yygrg

')( ))( (

')(

11

0

R. Carballo (Dpto. Matemática Aplicada y C.C.)8

ij

ij

jk

jk

x-w

y-w

Aplicando el método de descenso de gradiente

Page 5: curso_10_11_tercera_parte

5

2

)( ) )(1( ;1

1)( sig log

:siguientes las son y tansiglogsig funciónla de derivadas Las

aga-ga

g

eag

a

))( (1 ) )(1( ; 11

2g(a) tansig

2aga-g

a

g

e a

Batch trainingPara cada objeto se calculan los incrementos que deberíamos aplicar a wde acuerdo con el procedimiento anterior. A continuación se suman losincrementos obtenidos para todos los objetos y se aplica ese incrementototal a w. Cada paso por todos los objetos se llama “época” del proceso

R. Carballo (Dpto. Matemática Aplicada y C.C.) 9

p p j p piterativo.

El método de backpropagation utiliza las fórmulas anteriores, tomandovalores iniciales aleatorios para los parámetros. El proceso finalizacuando se alcanza un mínimo de la función error.

Este algoritmo de optimización se aplica a MLP con batch-training,función error mse, y funciones de activación tansig, logsig o lineal. Esmejor que el método de descenso de gradiente ya que combina

3.5. Algoritmo de entrenamiento de Levenberg-Marquardt

mejor que el método de descenso de gradiente, ya que combinadistintos métodos de minimización de funciones utilizando uno u otrodependiendo de los valores de las derivadas de la función error.

R. Carballo (Dpto. Matemática Aplicada y C.C.) 10

Page 6: curso_10_11_tercera_parte

6

3.6. Algunos aspectos prácticos en el entrenamiento de redes neuronales

• Preprocesamiento: Se deben escalar las entradas a un rangoconveniente. De lo contrario las variables con valores altos (en valorabsoluto) conducirán el proceso de aprendizaje enmascarando lacontribución de las variables con valores menores.

• Selección de atributos: El objetivo es reducir la dimensión delespacio de las variables de entrada. Corresponde aproximadamenteal número de autovectores significativos en la matriz de covarianza,pero no hay regla mejor que la experimentación.

• Ritmo de aprendizaje η: Puede tomar valores entre 0 y 1. Muchas

R. Carballo (Dpto. Matemática Aplicada y C.C.) 11

veces se inicia con 0.5. Son más interesantes los métodos quepermiten no dejarlo constante, disminuyendo su valor durante elentrenamiento. Con el método de Levenberg-Marquardt el ritmo deaprendizaje se adapta al mejor valor (bajo cerca del mínimo, altolejos de él).

• Mínimos locales: La hipersuperficie de error del MLP depende devarios parámetros y por tanto es esperable que sea bastantecompleja y que pueda tener varios mínimos locales.

A fin de alcanzar el mínimo global se puede recurrir a una o variaslt tialternativas:

– Realizar el proceso completo comenzando con distintos valoresiniciales de los parámetros

– Añadir ruido a los datos, y realizar el proceso completo paradistintos valores del ruido

– Utilizar varios conjuntos de entrenamiento distintos

– Tomar distintos valores del ritmo de aprendizaje η

R. Carballo (Dpto. Matemática Aplicada y C.C.) 12

j

Page 7: curso_10_11_tercera_parte

7

3.7 Generalización

• El objetivo del AA no es replicar los datos de entrenamiento, sino lapredicción en casos nuevos, es decir, generar la salida adecuada parauna instancia no incluida en el conjunto de entrenamiento.

Llamamos generalización a cómo de bien un modelo entrenado con unLlamamos generalización a cómo de bien un modelo entrenado con unconjunto de entrenamiento predice la salida correcta en instanciasnuevas.

• La mejor generalización se obtiene cuando la complejidad del modelocoincide con la complejidad de la función implícita en los datos.

–Si modelo menos complejo que función subyacente a los datostenemos subajuste.

R. Carballo (Dpto. Matemática Aplicada y C.C.) 13

–El otro caso es el sobreajuste. Si hay ruido y el modelo esdemasiado complejo, en el entrenamiento se estará ajustandoademás de la función subyacente, el ruido de los datos, produciendoun mal ajuste sobre datos nuevos.

Validación cruzada

En el aprendizaje supervisado tiene que haber un balance entre tresfactores:

– Complejidad de la hipótesis– Cantidad de datos de entrenamiento

Errores en objetos nuevos– Errores en objetos nuevos

Al ir aumentando la complejidad, al principio disminuye el error en datosnuevos, pero luego empieza a aumentar.

Al aumentar los datos de entrenamiento el error en datos nuevosdisminuye, pero sólo hasta cierto límite.

El conjunto de entrenamiento debe dividirse en dos partesj t d t i t

R. Carballo (Dpto. Matemática Aplicada y C.C.) 14

– conjunto de entrenamiento– conjunto de validación (testea la habilidad para generalizar)

Suponiendo que los conjuntos de entrenamiento y de validación sonsuficientemente amplios, la mejor hipótesis o modelo es la que resulta másprecisa para el conjunto de validación. Este proceso se denominavalidación cruzada. Nótese que determina el modelo, no los parámetros.

Page 8: curso_10_11_tercera_parte

8

3.8 Redes neuronales en Matlab

Regresión 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 mínimo y máximo de la variable

% el programa tiene en cuenta el rango anterior para calcular los

% parámetros iniciales

% [1] : arquitectura de la red: sólo una neurona

% purelin : salida con funcion de activacion g(a)=a a=w1x1+w0

% í i d d f t L b M dt

R. Carballo (Dpto. Matemática Aplicada y C.C.) 15

% no varío sus opciones de defecto: mse y Levenberg-Marquardt

net=newff([0 10] , [1] ,{'purelin'})

% sim() me muestra la salida del modelo “net” para los datos “x”

g=sim(net,x)

net.IW{1} , net.b{1} % me da los dos parámetros del MLP

hold on , plot(x,g,'k')

figure(2)

net= train(net,x,r) % entrena la red hasta alcanzar mínimo( , , )

figure(1), g=sim(net,x), plot(x,g,'g') , net.IW{1}, net.b{1}

print -depsc2 regresionlineal.eps

e=g-r

mse(e) %sum(e.^2/length(x))

R. Carballo (Dpto. Matemática Aplicada y C.C.)

16

Page 9: curso_10_11_tercera_parte

9

15

20

Regresión lineal unidimensional

Modelo con los parámetrosoptimizados. Error mse

5

10

Modelo con los parámetrosiniciales, aleatorios

optimizados. Error mse

R. Carballo (Dpto. Matemática Aplicada y C.C.)

17

0 1 2 3 4 5 6 7 8 9 10−5

0

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')

R. Carballo (Dpto. Matemática Aplicada y C.C.)18

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)

Page 10: curso_10_11_tercera_parte

10

0

50

100

Polinomio unidimensional de grado 2

Modelo con los parámetrosiniciales, aleatorios

−250

−200

−150

−100

−50

Modelo con los parámetrosoptimizados. Error mse

R. Carballo (Dpto. Matemática Aplicada y C.C.) 19

0 1 2 3 4 5 6 7 8 9 10−400

−350

−300

optimizados. Error mse

Separación 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];

dend

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

R. Carballo (Dpto. Matemática Aplicada y C.C.)20

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)

Page 11: curso_10_11_tercera_parte

11

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

% size(Btrain) 2 x 1000

% objeto1 objeto2 objeto3 ...j j 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

R. Carballo (Dpto. Matemática Aplicada y C.C.) 21

limits= [min(Btrain,[],2) max(Btrain,[],2)]

% son random, o sea que pueden variar

% -0.8175 1.8451

% -1.0369 1.9748

% 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'}); % sin capa escondida

nnet=newff(limits,[2 1],{'tansig','tansig'}); % 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')

R. Carballo (Dpto. Matemática Aplicada y C.C.) 22

bias=nnet.b{1} , w=nnet.IW{1}

bias=nnet.b{2}, w=nnet.LW{2} % con capa escondida

Page 12: curso_10_11_tercera_parte

12

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, tendría que quitar mesh utilizando

% sobre la figura "tools" "edit plot"

R. Carballo (Dpto. Matemática Aplicada y C.C.) 23

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)

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+')

R. Carballo (Dpto. Matemática Aplicada y C.C.) 24

xlabel('Tasa de falsas alarmas'), ylabel('Sensibilidad')

Page 13: curso_10_11_tercera_parte

13

1.5

2

2.5

0.5

1

Clasificacion con MLP

−1.5

−1

−0.5

0

0.5

1

5−1

−0.5

0

R. Carballo (Dpto. Matemática Aplicada y C.C.) 25

−3 −2 −1 0 1 2 3−2.5

−2

−1.5

−3 −2 −1 0 1 2 3−5

0

5

x1x2

0.5

0.6

0.7

0.2

0.3

0.4

Sen

sibi

lidad

R. Carballo (Dpto. Matemática Aplicada y C.C.) 26

0 0.05 0.1 0.15 0.2 0.25 0.3 0.350

0.1

Tasa de falsas alarmas

Page 14: curso_10_11_tercera_parte

14

Clasificacion con MLP

2.5

1

−0.5

0

0.5

1

1.5

2

2.5

5−1

−0.5

0

0.5

R. Carballo (Dpto. Matemática Aplicada y C.C.) 27

−3 −2 −1 0 1 2 3−2.5

−2

−1.5

−1

−3 −2 −1 0 1 2 3−5

0

x1x2

0.55

0.6

0.65

0.35

0.4

0.45

0.5

Sen

sibi

lidad

R. Carballo (Dpto. Matemática Aplicada y C.C.) 28

0 0.02 0.04 0.06 0.08 0.1 0.12 0.140.25

0.3

Tasa de falsas alarmas

Page 15: curso_10_11_tercera_parte

15

Separación 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

R. Carballo (Dpto. Matemática Aplicada y C.C.) 29

N=size(Btrain,2)

% 1 2 3 4 5 N

% variable x1

% variable x2

% 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 límites -1, 1 en todas las variables.

[b b i b ] (Bt i )[bpre,bpremin,bpremax]=premnmx(Btrain);

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')

R. Carballo (Dpto. Matemática Aplicada y C.C.) 30

bias=nnet.b{1}

w=nnet.IW{1}

bias=nnet.b{2}

w=nnet.LW{2}

Page 16: curso_10_11_tercera_parte

16

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

h( 1 2 S) i ( 15 20) l b l(' 1') l b l(' 2')mesh(x1,x2,S), view(-15,20), xlabel('x1'), ylabel('x2')

% 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 plot3(bpre(1 N/2+1:N) bpre(2 N/2+1:N) T(N/2+1:N) 'ko')

R. Carballo (Dpto. Matemática Aplicada y C.C.) 31

hold on, plot3(bpre(1,N/2+1:N),bpre(2,N/2+1:N),T(N/2+1:N), ko )

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 -0.3 -0.5 -0.7 -0.9],'r:');contour(x1,x2,S,[ 0.1 0.3 0.5 0.7 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));

R. Carballo (Dpto. Matemática Aplicada y C.C.) 32

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')

Page 17: curso_10_11_tercera_parte

17

4

6

8

100

101

Performance is 0.00965706, Goal is 0

−6

−4

−2

0

2

10−2

10−1

Tra

inin

g−

Blu

e

R. Carballo (Dpto. Matemática Aplicada y C.C.) 33

−10 −5 0 5 10−10

−8

0 20 40 60 80 10010

−3

100 Epochs

0.4

0.6

0.8

1

0.5

1

−0.6

−0.4

−0.2

0

0.2

0.4

1−1

−0.5

0

R. Carballo (Dpto. Matemática Aplicada y C.C.) 34

0 50 100 150 200 250 300−1

−0.8

−0.6

−1 −0.5 0 0.5 1−1

0

1

x1x2

Page 18: curso_10_11_tercera_parte

18

0.998

0.999

1

1.001

0.4

0.6

0.8

1

0.993

0.994

0.995

0.996

0.997

Se

nsib

ilid

ad

−0.6

−0.4

−0.2

0

0.2

R. Carballo (Dpto. Matemática Aplicada y C.C.) 35

−1 0 1 2 3 4 5 6 7 8

x 10−3

0.991

0.992

0.993

Tasa de falsas alarmas−1 −0.5 0 0.5 1

−1

−0.8

−0.6