Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Redes Neuronales Matlab
Redes Neuronales Matlab
1.
1.1
x1
w1
x2
w2
yk
wn
xn
E s ta d o d e
A c ti v a c i n
(salida)
Cuerpo de la
Neurona k
Donde w1, w2, .., wn, bk, x1, x2, , xn, e yk, se representan
como contenido de los vectores:
Cuerpo
Axon
Dendritas
Synapses
W1 x n = w1
X n x1
w2
x1
x
= 2
...
xn
... w n
B kx1
b1
= ...
bk
Ykx1
y1
= ...
yk
1.3
Funciones de Transferencia
Existen diversos tipos de funciones de transferencia. Por
ejemplo: Funcin de Transferencia Escaln, Lineal, No
Lineal (tangencial o sigmoidal), entre otros.
Funcin de Transferencia Escaln
Definindose como:
n
vk = w i * x i + bk
i =1
v k = w 1 * x1 + w 2 * x 2 + . . . + w n * x n + b k
yk = (vk )
Y, en notacin matricial, como:
Vk = Wk * X + Bk
>> V = -8:0.2:8;
>> Y = hardlim( V );
>> subplot(121), plot( V , Y )
>> Y = hardlims( V );
>> subplot(122), plot( V , Y )
Yk = (Vk )
Donde:
>> V = -8:0.2:8;
>> Y = purelin( V );
>> plot( V , Y )
V = -8:0.2:8;
Y = logsig( V );
subplot(121), plot( V , Y )
Y = tansig( V );
subplot(122), plot( V , Y )
>> V = randn( 8 , 1 );
>> Y = compet( V );
>> subplot(121), stem( V );
>> subplot(122), stem( Y );
>> V = -8:0.2:8;
>> Y = radbas( V );
>> plot( V , Y )
1.4
Caractersticas Principales
Entre las principales caractersticas de toda red neuronal
artificial, se tiene:
a)
b)
c)
d)
Arquitecturas ms Comunes
Seguidamente se muestran tres tipos principales de
arquitecturas, de las cuales se derivan otras ms. La
eleccin del tipo de arquitectura a utilizar, se basa en el
tipo de aplicacin que se desea realizar.
a) Una Capa Feed-Forward
Es una arquitectura conformada por una sola capa de
neuronas, donde el flujo de datos viaja por la red de
izquierda a derecha. Esto significa que se dirige desde el
vector de entrada hacia la salida de toda la red. A
continuacin, en la figura 1.9, se muestra el caso
particular de una red neuronal de una capa, con 3
neuronas y dos elementos por cada vector de entrada.
X 2 x1
x
= 1
x2
B 3 x1
b1
= b2
b3
W3 x 2
Y3x1
w 11
= w 21
w 31
w 12
w 22
w 32
y1
= y2
y3
b) Multi-Capa Feed-Forward
Es una arquitectura conformada por mltiples capas de
neuronas, donde el flujo de datos viaja de capa en capa
desde la primera capa hacia la ltima capa de la red
neuronal. A continuacin, en la figura 1.10, se muestra el
caso particular de una red neuronal con dos capas, de 3
y 2 neuronas, y dos elementos por cada vector de
entrada.
b1
y1
x1
b1
b2
b1
y2
x2
x1
b3
y1
b2
y3
x2
Mg. Pedro Freddy Huaman Navarrete
b2
10
b3
y2
x1
y1
x*1
x2
y2
x*2
x3
Y 2 C = ( W 2C * Y1C + B2C )
x*3
y3
Donde:
X 2 x1 =
1C
3 x1
x1
x2
y1
= y2
y3
B 22 Cx1 =
b1
b2
w 11
w 12
b1
W31xC2 = w 21
w 31
w 22
w 32
B13Cx1 = b 2
b3
w
= 11
w 21
w 12
w 22
2C
2x3
Y22xC1 =
Y = ( W * X + B)
X* = Y
w 13
w 23
y1
y2
1.6
c) Red Recurrente
11
12
a.
Sin Entrenamiento
Entrada
X
Error
+
+
Salida
Deseada
Y
Entrenamiento No Supervisado
Algunas Aplicaciones
Actualmente, las RNAs vienen siendo utilizadas en
diversos sectores. As tenemos el sector industrial,
mdico, ambiental, de energa, entre otros. A
continuacin se cita algunas aplicaciones principales de
las RNAs.
Salida
Y
R.N.A
Salida
Y
Entrenamiento Supervisado
Entrada
X
R.N.A
1.8
13
14
performParam: (none)
trainParam: .epochs, .goal, .show, .time
other:
userdata: (user stuff)
% crea
% entrena
% simula
Por ejemplo:
net =
Neural Network object:
>> net.trainParam
% por defecto
>> net.trainParam.epochs = 50; % nmero de iteraciones
>> net.trainParam.goal = 0.001; % desempeo global
>> net.trainParam.show = 5;
% mostrar cada 5 iterac.
>> net.trainParam.time = 1;
% tiempo mximo para
% entrenamiento (seg.)
architecture:
numInputs: 1
numLayers: 1
biasConnect: [1]
inputConnect: [1]
layerConnect: [0]
outputConnect: [1]
targetConnect: [1]
>> net.adaptFcn
>> net.initFcn
>> net.performFcn
>> net.trainFcn
>> help trains
>> help initlay
>> help mae
.
.
.
parameters:
adaptParam: .passes
initParam: (none)
15
16
% por defecto
% por defecto
% por defecto
% por defecto
% funcin de entren. secuencial
% funcin de inicializ. por capa
% funcin error absoluto
>> net.inputs{1}
% de entradas
>> net.inputs{1}.range
% retorna lo ingresado
>> net.layers{1}
% de las capas
>> net.layers{1}.transferFcn = hardlims ;
>> net.outputs{1}
% de las salidas
2.
2.1
Definicin y Caractersticas
Representa una de las formas ms simple de RNA. Su
uso es bsicamente para la clasificacin de padrones
linealmente separables [6]. En la figura 2.1 se muestra la
estructura de una red Perceptron.
>> net.numInputs
>> net.numLayers
>> net.numOutputs
>> net.numTargets
X Rx1
Capa Perceptron
W SxR
V Sx1
Y Sx1
B Sx1
Y = hardlim( W * X + B )
>> nntool
2.2
Regla de Aprendizaje
Es muy sencilla, y est basada en la actualizacin de los
pesos sinpticos a partir del error obtenido al comparar la
salida deseada con la salida total de la red neuronal [6].
17
18
a , si v j j
yj =
a , si v j < j
Donde:
j :
x1
1
a, -a:
1
0
0
1
0
0
b1
x1
y1
x2
>> X = [ 1 1 0 0 ; 1 0 1 0 ] ;
>> Yd = [ 1 0 0 0 ];
Yd
1
W = W + E * XT
B = B+E
2.3
x2
1
19
20
0 0
>> net.b{1}
ans =
0
%bias inicial
>> t = tr.epoch;
>> e = tr.perf;
>> plot( t , e )
% simulando
21
22
w (1) * x1 + w (2) * x 2 + b = 0
>> X = [ 1 1 0 0
1 0 1 0 ];
>> Yd = [ 0 1 1 0 ];
>> net = newp( [ 0 1 ; 0 1 ] , 1 , 'hardlim' , 'learnp' );
>> net.trainParam.epochs = 300;
>> net.trainParam.show = 100;
>> net = train( net , X , Yd );
TRAINC, Epoch 0/300
TRAINC, Epoch 100/300
TRAINC, Epoch 200/300
TRAINC, Epoch 300/300
TRAINC, Maximum epoch reached.
>> axis( [ 0 200 0 1.5 ] )
>> plotpv( X , Yd );
>> plotpc( net.iw{1} , net.b{1} )
>> w = net.iw{1};
% w(1) y w(2) son los elementos
>> b = net.b{1};
% del vector w.
>> x1 = 0:0.1:1.5;
>> x2 = ( -b - w(1)*x1 ) / ( w(2) );
>> plot( x1 , x2 )
>> axis( [ 0 1.5 -0.5 1.5 ] )
23
24
>> EE = [ 1; 1; 1; 1; 1; 1; 0; 1; 0; 1; 1; 0; 0; 0; 1 ] ;
>> II = [ 0; 0; 0; 0; 0; 1; 1; 1; 1; 1; 0; 0; 0; 0; 0 ] ;
>> OO= [ 0; 1; 1; 1; 0; 1; 0; 0; 0; 1; 0; 1; 1; 1; 0 ] ;
>> UU = [1; 1; 1; 1; 1; 0; 0; 0; 0; 1; 1; 1; 1; 1; 1 ] b;
yd1
yd 2
yd 3
x1
E
I
1
0
1
0
1
0
x2
x3
O
U
1
0
1
0
1
0
...
y1
b2
y2
b3
x15
y3
1 1 1
1 0 1
1 1 1
1 0 0
0 1 0
0 1 0
0 1 0
1 0 1
>> X = [ AA EE II OO UU ] ;
>> Yd = [ 1 1 0 1 0 ; 1 1 0 1 0 ; 1 1 0 1 0 ] ;
>> net = newp( [-ones(15,1) ones(15,1) ] , 3 );
>> net = train( net , X , Yd );
% ver figura 2.8
TRAINC, Epoch 0/100
TRAINC, Epoch 6/100
TRAINC, Performance goal met.
1 0 1
1 0 1
>> AA = [ 1; 1; 1; 1; 1; 1; 0; 0; 1; 0; 1; 1; 1; 1; 1 ] ;
25
26
3.
3.1
Definicin y Caractersticas
Es similar a la red Perceptron excepto en su funcin de
transferencia, que es del tipo lineal. Por ello, el nombre
de Red Neuronal Lineal. Esta red tiene un aprendizaje
supervisado, y su principal objetivo es minimizar la suma
de los cuadrados de los errores al comparar la salida
deseada con la salida total de la red [2]. Est basada en
la regla de Widrow-Hoff o tambin conocida como regla
Least Mean Square (LMS).
Asimismo, tambin es posible que la red pueda
responder a cambios en su ambiente como en su
operacin, por ello el nombre de sistemas adaptativos.
Su uso es muy comn en procesamiento de seales,
control y sistemas de prediccin [2]. La figura 3.1 muestra
la estructura de una red lineal simbolizando su funcin de
transferencia con una funcin lineal.
Entrada
X Rx1
Capa Lineal
W SxR
V Sx1
Y Sx1
+
1
B Sx1
Y = purelin( W * X + B )
Figura 3.1. Estructura de una Red Lineal [2]
27
28
Regla de Aprendizaje
W = W + (lr ) * E * X T
B = B + (lr ) * (E )
k =1
Donde:
n:
yd:
y:
% vectores de entrada
% cuando se usa el bias
29
30
>> X1 = [ 11 ; 21 ];
>> Y1 = sim( net, X1 )
Y1 =
15.9416
3.4
% simulacin con
% nuevo vector
Redes Adaptativas
La figura 3.3 muestra el diagrama de bloques de una red
neuronal lineal adaptativa, donde se observa el vector de
salida deseada Yd que se compara con la salida total
Y, para obtener el error que luego ser minimizado.
Yd salida deseada
X entrada
Red
Lineal
Adaptativa
>> W = randn(1);
>> B = randn(1);
>> lr = 0.01;
>> nntwarn off
>> [ Y , E , W , B ] = adaptwh( W , B , X , Yd , lr );
>> plot( t , Y ,'r' , t , Yd ,'ob')
% ver figura 3.5.a
>> title( ' Salida Total: "-" , Salida Deseada: "o" ' )
>> plot( t , E ), grid
% Error (figura 3.5.b)
>> Y1 = W * X(1251) + B;
>> mse( Yd( 1251 ) Y1 )
ans =
2.1360e-004
Y salida total +
31
32
Rt = Ro * (1 + * T)
Donde:
Figura 3.6. Grfico de desempeo del error
33
34
4.
4.1
Definicin y Caractersticas
1ra Capa
2da Capa
Y1CS1x1
X Rx1
1C
S1xR
V1CS1x1
2C
S2xS1
V2CS2x1
Y2CS2x1
+
1C
S1x1
Y 1C = ( W 1C * X + B1C )
2C
Y 2 C = ( W 2 C * Y 1C + B 2 C )
...
S2x1
1C
Y =tansig(W
1C
1C
*X+B
2C
Y =purelin(W
2C
1C
*Y
2C
+B
Y nC = ( W nC * Y ( n 1) C + B nC )
Donde:
Regla de Aprendizaje
35
36
w ij = (lr ) * (e i ) * (x j )
Donde:
E = ' ( v) * (Yd Y)
Error
en
la
neurona de la
capa de salida.
E = ' ( v) * ( E * W ) ,
Error
en
las
k =1
neuronas de las
capas ocultas.
1
( v) =
1 + e v
' ( v) = (Y )(1 Y )
4.4
37
38
Rt = (Ro )e
>> Tt = 10:2:120;
>> beta = 21;
>> Ro = 90;
>> To = 25;
>> Rt = Ro*exp(beta*(1./Tt - 1/To));
% termistor
>> Yd = [ Rt / 100 ];
>> %Normalizando la Temperatura (entre el valor max.)
>> Tmaxima = 120;
>> X = [ Tt ; beta*ones(size(Tt)) ] / Tmaxima;
>> lr = maxlinlr( X , 'bias' );
>> net = newff( [ -ones(2,1) ones(2,1) ] , [ 4 2 1 ] , {
'tansig' 'tansig' 'purelin' } , 'trainlm' );
>> net.trainparam.epochs = 4000;
>> net.trainparam.show = 800;
>> net.trainparam.goal = 10e-6;
>> net = train( net , X , Yd);
% Ver figura 4.3
39
1 1
)
Tt To
Donde:
40
5.
5.1
Definicin y Caractersticas
Son redes capaces de aprender a detectar regularidades
y correlaciones en sus entradas, y por consiguiente
adaptar sus respuestas futuras a esas entradas [2].
Asimismo, se caracterizan por presentar un tipo de
aprendizaje competitivo y/o cooperativo. Es decir, las
neuronas compiten y/o cooperan unas con otras con el
fin de llevar a cabo una determinada tarea. Con esto se
espera que cuando se presente a la red cierta
informacin de entrada, slo una de las neuronas de
salida de la red, o una por cierto grupo de neuronas, se
active (alcance su valor de respuesta mximo). Por tanto
las neuronas compiten para activarse quedando
finalmente una, o una por grupo, como neurona
vencedora y as el resto quedan anuladas siendo
forzadas a sus valores de respuesta mnimos [2].
% simulando
5.2
>> T1 = 25.5;
% Temp. Ambiente
>> Y = 100*sim( net, [ T1 ; beta ] / Tmaxima);
41
42
Donde:
: Coeficiente de aprendizaje que decrece de 1 a
0 conforme aumenta el nmero de iteraciones.
yi :
representa la salida de la neurona
vencedora.
k : constante para bias (default = 0.999).
d i = (x j w i , j )
4. Retornar al paso 2.
j=1
5.3
Donde:
X Rx1
>> X = [ 3 4 -8 4 -7
2 -1 7 3 8
Capa Competitiva
W SxR
V Sx1
+
1
Y Sx1
Y = compet( -dist( W, X ) + B )
Figura 5.1. Estructura de una Red Competitiva [2]
3. Localizada la neurona vencedora, se actualizan los
pesos correspondientes a dicha neurona (de
preferencia utilizar el aprendizaje tipo Instar [2]).
w i , j = w i , j + * yi * ( x j w i , j )
bi = k * bi + (1 k ) * yi
43
];
B Sx1
44
>> Yc = vec2ind(Y)
Yc =
1 3 2 1 2
>> W = net.iw{1};
>> B = net.b{1};
>> hold on
>> plot( X(1,:) , X(2,:), '+r');
>> plot( W(:,1) , W(:,2),'ob');
>> axis( [-10 6 -3 11] ) %personalizando la presentacin
>> hold off
Entrada
Capa Competitiva
2C
S2x1
Y1CS1x1
V1CS1x1
X Rx1
Capa Lineal
1C
S1xR
2C
S2xS1
C
Y1C=compet( -dist(W1C, X) )
45
Y2C=purelin(W2C * Y1C)
46
Y2CS2x1
1
2.1
2
1
-3
4
4
3
-2
3
2.5
3.2
3.2
2.4
-1.8
3 ];
>> Yd = [ 1 1
2 1 2 1
1
2 ];
>> Y = ind2vec( Yd ); %array o matriz sparse
Se sealan dos sub-clases para cada una de las 2 clases
existentes, lo cual da un total de 4 sub-clases. Es decir,
existirn 4 neuronas en la primera capa, y 2 en la
segunda. De esta manera, en la funcin newlvq, se
indica los valores mximos y mnimos por vector de
entrada con ayuda de la funcin minmax; y tambin, se
utiliza la variable PORC para indicar el grado de
porcentaje de aceptacin para cada neurona de la
segunda capa. La suma no debe exceder el valor de 100.
Sub-Clases
Clases
x1
x2
47
48
% simulacin de la red
% comprobacin
%comprobacin
49
%Imagen de 64 x 64 pixels
>> W = net.iw{1};
>> for i =1:1024
50
% matriz de pesos 64 x 4
6.
6.1
Cond. Iniciales
X Rx1
W SxR
V Sx1
que
la
codificada
64 x 64 x8
= 4KBytes ,
8x1024
reconstruida
B Sx1
Y = satlins( W * X + B )
tiene
1024 x 6
= 0.75KBytes .
8x1024
Y Sx1
51
6.2
Regla de Aprendizaje
La red de Hopfield no tiene una regla de
aprendizaje, por lo tanto no existe entrenamiento.
52
>> W = net.LW{ 1 } ;
>> B = net.b{ 1 } ;
1
V( y) = y T Wy b T y
2
( )
W = Xi * Xi
, B=0
i =1
Donde:
W, B:
X:
y:
b:
n:
V(y):
1];
-1 ] ;
1];
-1 ] ;
53
54
Aplicacin:
Reconocimiento
Impares con Hopfield
de
ans =
0
Finalmente, se altera el cuarto dgito simulando la
presencia de un ruido, tal como lo muestra la figura 6.4.
Dicho arreglo, tambin de 10x7, es transformado a un
vector de 70x1 y es representado por la variable D4ruido.
Dgitos
55
56
7.
7.1
Definicin y Caractersticas
Capa Lineal
Y1CS1x1
X Rx1
1C
S1xR
V1CS1x1
2C
S2xS1
1C
S1x1
>> net.iw{1}
>> net.lw{2}
>> net.b{1}
>> net.b{2}
Y2CS2x1
+
B
2C
S2x1
2C
S2x1
7.3
57
>> Fs = 100;
% se define la frecuencia de muestreo.
>> n = 0:Fs-1; % se define el tiempo discreto
>> x = -cos( 2*pi*5*n/Fs + pi/4 ) + cos( 2*pi*2*n/Fs );
58
x1
x2
2da Capa
1ra Capa
59
60
% giramos la entrada
% giramos la entrada
61
62
Bibliografa
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
63
64