Date post: | 24-Dec-2015 |
Category: |
Documents |
Upload: | julian-hernandez |
View: | 4 times |
Download: | 0 times |
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).
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
fΣ
capa escondida (hidden layer)
salida
3.3 El Multilayer Perceptron
x2
xd
1 1
fΣ
fΣ
fΣ
R. Carballo (Dpto. Matemática Aplicada y C.C.) 4
3
Esquema del Multilayer Perceptron MLP
x1
fΣ
capa escondida (hidden layer)
saliday
x2
xd
1
Σ
fΣ
gΣ
gΣ
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.
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
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
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
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.
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
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)
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)
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
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')
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
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
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}
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')
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
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