Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso 10 11 Tercera Parte
Curso 10 11 Tercera Parte
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.
datos de entrada o
capa de entrada
w. x a
f (a) r
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
salida
f
xd
f
1
salida
xd
c salidas
l nodos
1
R. Carballo (Dpto. Matemtica Aplicada y C.C.)
g ( w j x
j0
) con
x1 1
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
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.)
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.)
10
11
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
15
net.b{1}
16
15
10
10
17
18
50
50
100
150
200
250
300
350
400
10
19
20
10
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'});
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}
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
24
12
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
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
0.3
0.35
26
13
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
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
0.12
0.14
28
14
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');
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 )
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
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
3
4
5
6
Tasa de falsas alarmas
8
3
x 10
35
18