Está en la página 1de 32

Simulacin de Redes Neuronales con Matlab

1.

Fundamentos Bsicos de Redes


Neuronales Artificiales

1.1

Surgimiento de las Redes Neuronales

Simulacin de Redes Neuronales con Matlab

Figura 1.1. Modelo Simplificado de una Neurona


Biolgica
1
bk
E
N
T
R
A
D
A
S

Las Redes Neuronales Artificiales (RNA) surgen como


una necesidad de contar con mquinas capaces de
aprender y recordar, tal como la inteligencia humana.
Dicho de otra manera, imitar el funcionamiento del
cerebro humano, ya que este posee un procesamiento
altamente paralelo y con capacidad de resolver
problemas complejos [3].
1.2

x1

w1

x2

w2

yk

wn
xn

Definicin. Neurona Biolgica y Artificial

E s ta d o d e
A c ti v a c i n
(salida)

Cuerpo de la
Neurona k

Figura 1.2 Modelo de una Neurona Artificial

Existen muchas definiciones acerca de las RNA. Por


ejemplo, algoritmos computacionales inspirados en la
naturaleza: Neuronas Biolgicas. O como tambin,
sistemas altamente paralelos no lineales y densamente
interconectados y basados en procesadores simples:
modelo simplificado de la neurona biolgica [3].

Cabe mencionar que el cuerpo de la neurona biolgica es


aquel en donde se encuentra el ncleo y por lo tanto es
donde se realiza el procesamiento de la informacin
recibida (impulsos elctricos), inhibiendo o activando la
neurona. En cuanto que las synapses vienen hacer los
puntos de unin entre una neurona pre-sinptica y otra
post-sinptica.

A continuacin, en las figuras 1.1 y 1.2 se muestran los


modelos de una neurona biolgica y una neurona
artificial.

Donde w1, w2, .., wn, bk, x1, x2, , xn, e yk, se representan
como contenido de los vectores:

Cuerpo

Axon

Dendritas
Synapses

Mg. Pedro Freddy Huaman Navarrete

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

W1 x n = w1

X n x1

w2

x1
x
= 2
...
xn

Simulacin de Redes Neuronales con Matlab

... w n

B kx1

b1
= ...
bk

Cuando se cuenta con redes neuronales de mltiples


capas, y mltiples neuronas por capas, los pesos
sinpticos y los bias son representados a travs de
matrices. Ver seccin 1.4.

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

Se caracteriza porque el vector de entrada a la funcin de


transferencia es real, en cuanto que la salida est
limitada a un vector con slo dos valores.

vk = w i * x i + bk
i =1

v k = w 1 * x1 + w 2 * x 2 + . . . + w n * x n + b k

Si se desea que la salida tome los valores 0 o 1,


entonces se hace uso de la funcin o comando
hardlim. Y, si se desea que la salida tome los valores 1 o 1, se utiliza la funcin hardlims. Por ejemplo, en las
figuras 1.3a y 1.3b, se muestran los casos de ambas
funciones de transferencia. Se utiliza en la red
Perceptron.

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:

(.) : representa a la Funcin de Transferencia o de


k

Activacin, sobre la variable V.


hace referencia a la k-sima neurona de la red
neuronal.

Mg. Pedro Freddy Huaman Navarrete

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Se caracteriza porque la entrada a la funcin es real, en


cuanto que la salida tambin lo es pero limitado a un
rango. Puede ser del tipo sigmoid logartmico o
sigmoid tangente hiperblico. Ver figura 1.5.

Figura 1.3. a) Funcin hardlim. b) Funcin hardlims


Funcin de Transferencia Lineal
Figura 1.5. Funciones de transferencia logsig y tansig

Se caracteriza porque la entrada y la salida de la funcin,


son del tipo real. El comando o funcin que realiza dicha
operacin se denomina purelin. Es utilizada por las
redes lineales y en ocasiones en la ltima capa de una
red Multicapa. En la figura 1.4 se muestra dicha funcin.

Esta funcin es utilizada por la red Multicapa con


regla de aprendizaje Backpropagation.
>>
>>
>>
>>
>>

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

Funcin de Transferencia Competitiva


Se caracteriza porque la entrada a la funcin de
transferencia es real, y la salida ser igual a 1 slo para
el caso mximo, y ser 0 para los dems casos. A
continuacin se muestra un vector con valores aleatorios,
donde el valor mximo est ubicado en la posicin 6, por
lo tanto, la salida ser un vector con valor 1 en la posicin
6, y valor 0 en las dems posiciones. Vea el ejemplo y la
figura 1.6. Es utilizado por las redes competitivas.

Figura 1.4. Funcin de transferencia purelin


Funcin de Transferencia No Lineal

Mg. Pedro Freddy Huaman Navarrete

>> V = randn( 8 , 1 );

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

>> Y = compet( V );
>> subplot(121), stem( V );
>> subplot(122), stem( Y );

Figura 1.7. Funciones de transferencia a) satlin. b)


satlins
Funcin de Transferencia Radial Basis

Figura 1.6. Funcin de transferencia compet

Se caracteriza porque la entrada a la funcin de


transferencia es real, y la salida est limitada a un
intervalo de 0 a 1 formando una curva gaussiana. Ver la
figura 1.8. Es utilizada por la red Function Radial Basis.

Funcin de Transferencia de Saturacin


Se caracteriza porque la entrada a la funcin de
transferencia es del tipo real, y la salida es real y lineal
pero limitada al intervalo de 0 a 1 o de -1 a 1. Es decir, se
satura cualquier valor por encima o debajo de los lmites.
Es utilizada por la red Hopfield. Ver figura 1.7a y 1.7b..
>> V = -8:0.2:8;
>> Y = satlin( V );
>> subplot(121), plot( V , Y )
>> Y = satlins( V );
>> subplot(122), plot( V , 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)

Aprendizaje: porque aprende de la experiencia.


Asociacin: debido a que asocia padrones diferentes.
Generalizacin: generaliza de ejemplos anteriores.
Robustez: la prdida de algunas neuronas, no
deteriora el buen funcionamiento de la red neuronal.
e) Bsqueda Paralela: basado en la bsqueda por
contenido y no en forma paralela.

Mg. Pedro Freddy Huaman Navarrete

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Figura 1.9. Red neuronal con una Capa Feed-Forward

De esta manera, en forma matricial se interpretara como:

Y3x1 = (W3 x 2 * X 2 x1 + B 3x1 )


Figura 1.8. Funcin de transferencia radbas
1.5

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

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Es una arquitectura conformada por una o varias capas


de neuronas, donde existe una realimentacin de la
salida total hacia la entrada principal de la red neuronal.
A continuacin, en la figura 1.11, se muestra el caso
particular de una red recurrente de una capa, tres
neuronas y tres elementos por cada vector de entrada.

Figura 1.10. Red neuronal Multi-Capa Feed-Forward


En este caso, como existen dos capas de neuronas, se
acostumbra a utilizar una notacin matricial particular
para referenciar a la matriz de pesos y de bias de la
primera y segunda capa.

x1
y1

x*1
x2

Y1C = ( W1C * X + B1C )

y2

x*2
x3

Y 2 C = ( W 2C * Y1C + B2C )

x*3
y3

Donde:

Figura 1.11. Red neuronal recurrente.

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 =

En forma matricial se tendra:

Y = ( W * X + B)
X* = Y

w 13
w 23

Donde X* = Y, indica que los nuevos clculos se


obtienen con el nuevo vector de entrada.

y1
y2

1.6

El aprendizaje de una red neuronal se refiere al proceso


de como los pesos y bias cambian o se actualizan debido
a la experiencia. Se distinguen tres tipos de configuracin
de aprendizaje en la mayora de redes neuronales
artificiales. As tenemos:

c) Red Recurrente

Mg. Pedro Freddy Huaman Navarrete

Aprendizaje en Redes Neuronales

11

12

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

a.

Simulacin de Redes Neuronales con Matlab

Sin Entrenamiento
Entrada
X

Es un caso donde los pesos de la red neuronal no se


entrenan sino se calculan. Un ejemplo de ello lo podemos
encontrar en la red neuronal recurrente Hopfield.
b.

Es cuando se hace necesaria la presencia de un tutor


para la supervisin. Es decir, existe una comparacin
entre el vector de salida total y un vector de salida
deseada. Un ejemplo de ello lo podemos encontrar en la
red neuronal Perceptron. Ver la figura 1.12.

Figura 1.13. Diagrama de bloques del Entrenamiento No


Supervisado.
1.7

Error

+
+

Salida
Deseada
Y

Figura 1.12. Diagrama de bloques del Entrenamiento


Supervisado
c.

Entrenamiento No Supervisado

Es cuando no se hace necesaria la presencia de un tutor


para la supervisin. Un ejemplo de ello lo encontramos
en las redes neuronales Competitivas. Ver la figura 1.13.

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

Procesamiento de imgenes y de voz


Reconocimiento de patrones
Identificacin de Sistemas
Planeamiento y prediccin
Interfaces adaptivas para sistemas Hombre/Mquina
Control y optimizacin
Filtrado de seales.
Sistemas de visin para robots
Entre otras.

Toolbox de Redes Neuronales


El toolbox con el cuenta el software Matlab y que es
utilizado en todo este material preparado, es el
denominado Neural Network; el cual cuenta con un
conjunto de comandos o funciones propias para crear,

Mg. Pedro Freddy Huaman Navarrete

13

14

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

performParam: (none)
trainParam: .epochs, .goal, .show, .time

disear, entrenar y simular distintas redes neuronales


artificiales. La ayuda puede ser invocada de la siguiente
manera:

weight and bias values:


IW: {1x1 cell} containing 1 input weight matrix
LW: {1x1 cell} containing no layer weight matrices
b: {1x1 cell} containing 1 bias vector

>> help nnet


Por ejemplo, de toda esa lista mostrada, podemos ver las
funciones utilizadas para la creacin, entrenamiento y
simulacin de la red neuronal Perceptron, que es objeto
de estudio en el captulo 2.
>> help newp
>> help train
>> help sim

other:
userdata: (user stuff)

De esta manera, los pesos y los bias se visualizan:


>> net.iw
>> net.lw
>> net.b
>> net.iw{1}

% crea
% entrena
% simula

Asimismo, es necesario aadir que las funciones de


creacin de las distintas redes neuronales, establecen
una variable denominada net que es del tipo network
object. Esto quiere decir que es una variable objeto,
pues a su vez contiene ms variables.

%pesos de la primera capa: Cell Array


%pesos de las dems capas: Cell Array
%bias de todas las capas: Cell Array
%para observar el contenido en la
%primera ubicacin del Cell Array.

Por ejemplo:

Tambin, es posible ver y configurar distintos parmetros


como por ejemplo para la adaptacin, para el
entrenamiento, las funciones para el entrenamiento, las
estructuras sub-objetos y las caractersticas de la
arquitectura de la red neuronal.

>> net = newp( [ -1 2 ; -1 2 ] ,1)

>> net.adaptParam.passes = 2; % nmero de pasos

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)

Mg. Pedro Freddy Huaman Navarrete

15

16

% por defecto
% por defecto
% por defecto
% por defecto
% funcin de entren. secuencial
% funcin de inicializ. por capa
% funcin error absoluto

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

>> help trainc

% funcin de entren. cclico

>> 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.

Red Neuronal Perceptron

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

Entre sus principales caractersticas encontramos:

De esta forma, se configura o se muestran todos los


parmetros relacionados a la creacin de una RNA.
Muchas veces, no es necesario realizar una
configuracin detallada, ya que por defecto se
encuentran configuradas cuando se elige el tipo de red a
utilizar. Slo cuando se utiliza la funcin network, es
necesaria una configuracin exhaustiva, ya que este
representa una funcin para la creacin de una red
neuronal personalizada.

Funcin de transferencia escaln.


Regla de aprendizaje supervisado.
Valores de entrada reales y salidas binarias {0,1} o
bipolares {-1,1}.
Entrada

X Rx1

Capa Perceptron

W SxR
V Sx1

Y Sx1

>> help network


1

Asimismo, tambin es posible trabajar con una interfase


grfica del usuario (GUI) exclusivamente para redes
neuronales. Slo basta con digitar el comando nntool:

B Sx1
Y = hardlim( W * X + B )

Figura 2.1. Estructura de una Red Perceptron [2].

>> 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].

Mg. Pedro Freddy Huaman Navarrete

17

18

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

1. Inicializar los pesos sinpticos y los bias con valores


aleatorios y pequeos.
2. Aplicar un padrn de entrada y obtener el vector de
salida total.

clases diferentes. A continuacin se muestra, en la figura


2.2, la tabla de la funcin AND de 2 entradas y la red
neuronal utilizada. Las dos primeras columnas de la tabla
mostrada, indican todas las combinaciones posibles para
los cuatro vectores de entrada, con dos elementos cada
uno. En cuanto que la tercera columna, representa la
salida deseada (un elemento) por cada vector de
entrada.

a , si v j j
yj =
a , si v j < j
Donde:

j :

representa a un umbral seleccionado.

x1
1

a, -a:

representa el valor de salida que podr ser


{1,0} o {1,-1}.

1
0

0
1

0
0

3. Obtener el error a partir de la expresin: E = Yd Y.


Donde Yd representa el vector de salida deseada.
4. Actualizar los pesos y bias (Si el Error 0).

b1
x1
y1

x2

Los vectores de entrada y de salida deseada sern:

5. Retornar al paso nmero 2.

>> X = [ 1 1 0 0 ; 1 0 1 0 ] ;
>> Yd = [ 1 0 0 0 ];

La funcin newp del Toolbox Neural Network del


Matlab, crea una red Perceptron. Asimismo, la funcin
train realiza el entrenamiento de los pesos y bias de
esta red neuronal.

Luego, se procede a crear la red neuronal Perceptron


con la funcin newp. En esta funcin se debe incluir la
cantidad de neuronas, una matriz con los valores
mximos y mnimos por cada elemento del vector de
entrada, y el tipo de funcin de transferencia utilizada. La
regla de aprendizaje utilizada es la perteneciente a
Perceptron: learnp.

Ejemplo Prctico con la Red Perceptron


Con ayuda de una red Perceptron, es posible representar
las funciones lgicas AND y OR, de 2, 3 o ms entradas.

>> help newp


>> net = newp( [ 0 1 ; 0 1 ] , 1 , 'hardlim' , 'learnp' );
>> net.iw
%tamao de la matriz de pesos
>> net.iw{1}
%pesos iniciales
ans =

Representacin de la Funcin AND de 2 entradas


La funcin AND de 2 entradas, se puede representar con
una sola neurona, la cual realizar la clasificacin en dos

Mg. Pedro Freddy Huaman Navarrete

Yd
1

Figura 2.2. Tabla de la Funcin AND y RNA utilizada


para su representacin.

W = W + E * XT
B = B+E

2.3

x2
1

19

20

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

0 0
>> net.b{1}
ans =
0

Simulacin de Redes Neuronales con Matlab

Figura 2.3. Curva de desempeo por cada iteracin


alcanzada. Error = 0.

%bias inicial

De la figura anterior se observa que se necesitaron slo 8


iteraciones para lograr la clasificacin. Adems, el grfico
tambin puede se obtenido de:

La funcin newp crea pesos y bias iniciales iguales a


cero. Pero tambin es posible crearlos a partir de valores
pequeos y aleatorios ( net.iw{1} = randn(1,2) ; )

>> t = tr.epoch;
>> e = tr.perf;
>> plot( t , e )

Antes de proceder con el entrenamiento, se observa que


la salida total con los pesos y bias iniciales es:

Luego, se realiza la simulacin y se obtiene.

>> Y = sim( net , X )


Y=
1 0 1 1

>> Y = sim( net , X )


Y=
1 0 0 0

Lo cual indica que es totalmente diferente a la Salida


Deseada. Por ello, se necesita entrenar los pesos y bias.
Seguidamente, se procede al entrenamiento de la nica
neurona con un total de 40 iteraciones; de tal manera que
el error sea igual a cero, o en otras palabras que la salida
total Y sea idntica a la salida deseada Yd.
>> net.trainParam.epochs = 40;
>> [ net , tr ] = train( net , X , Yd );
TRAINC, Epoch 0/40
TRAINC, Epoch 8/40
TRAINC, Performance goal met.

% simulando

Esta simulacin equivale a realizar lo siguiente:


>> for i = 1:4
V = net.iw{1}* X( : , i ) + net.b{1};
if V>=0, Y(i) = 1;
else,
Y(i) = 0;
end
end

%ver figura 2.3

Por lo tanto, realizado el entrenamiento se puede verificar


que el producto de la matriz de pesos con cualquier
vector de entrada y sumado al bias entrenado, y
aplicando la funcin de transferencia correspondiente, la
salida total ser igual a la salida deseada.
Grficamente, esto se puede demostrar cuando se
representa en el plano (por existir dos elementos en el
vector de entrada x1 y x2), cada vector de entrada
simbolizado de manera diferente segn la clase a la que
corresponden (salida deseada). Ver figura 2.4.
>> plotpv( X , Yd );
>> plotpc( net.iw{1} , net.b{1} )

Mg. Pedro Freddy Huaman Navarrete

21

22

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Es decir, existe una clasificacin en dos clases


diferentes, una clase a un lado de la recta observada en
el grfico, y la otra clase al otro lado de la misma recta
inclusive esta.

La red Perceptron cuenta con limitaciones al no


poder
clasificar
padrones
linealmente
no
separables [3].
Problemas con la Funcin XOR

Para graficar la recta de separacin se procede a la


siguiente ecuacin de la recta.

La funcin XOR no puede ser representada por una


neurona Perceptron, debido a la distribucin de sus
padrones o vectores de entrada. Ver figura 2.5.

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

Figura 2.4. Clasificacin de padrones. La recta es


obtenida de los pesos y bias entrenados.
La clasificacin en clases diferentes se da utilizando
rectas (cuando existen dos elementos por vector de
entrada), planos (cuando existen tres elementos por
vector de entrada), o un hiper-plano, para el caso de ms
de tres elementos por cada vector de entrada.
2.4

Figura 2.5. a) Curva de desempeo en 300 iteraciones.


b) Distribucin de padrones de entrada: XOR.

Limitacin de la Red Perceptron

Mg. Pedro Freddy Huaman Navarrete

23

24

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Del grfico 2.5b se ve que es imposible trazar una recta


en el plano de tal forma que ubique a cada lado de la
misma, cada clase de padrones de entrada existente.
2.5

>> 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;

Aplicacin: Clasificacin de Vocales

A continuacin, se realiza la clasificacin de cinco


padrones de entrada en dos clases diferentes, donde
cada padrn cuenta con 15 elementos. Los padrones de
entrada pertenecen a las cinco vocales, las cuales
debern de ser clasificadas en vocales fuertes y vocales
dbiles. Ver las figuras 2.6a, 2.6b y 2.7.

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

Figura 2.7. Salida deseada para cada padrn de entrada


y Red neuronal utilizada en la clasificacin.

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

A=1 0 1 E=1 1 0 I= 0 1 0 O= 1 0 1 U=1 0 1


1 1 1
1 0 0
0 1 0
1 0 1
1 0 1
1 0 1
1 1 1
0 1 0
0 1 0
1 1 1
Figura 2.6. a) Cinco vocales como padrones de entrada
(1: color blanco y 0: color negro) b) Padrones de entrada
simbolizados por 1s y 0s.
Para representar cada padrn, se procede a formar un
vector uniendo columna tras otra; resultando as 5
vectores de entrada con 15 elementos cada uno.

Figura 2.8. Curva de desempeo en 6 iteraciones (E=0).

>> AA = [ 1; 1; 1; 1; 1; 1; 0; 0; 1; 0; 1; 1; 1; 1; 1 ] ;

Mg. Pedro Freddy Huaman Navarrete

25

26

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

>> Y = sim( net, X(:,1) ) % simulando con1ra vocal fuerte


El vector obtenido es igual al indicado en la tabla de la
figura 2.7. Lo mismo debe cumplirse con cada vocal.

Simulacin de Redes Neuronales con Matlab

3.

Red Neuronal Lineal

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]

Mg. Pedro Freddy Huaman Navarrete

27

28

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab


3.2

Regla de Aprendizaje

Simulacin de Redes Neuronales con Matlab


3.3

La regla de aprendizaje es similar al de la red Perceptron,


a excepcin que ahora se utiliza una tasa de aprendizaje
lr para la actualizacin de los pesos y los bias, tal como
lo muestran las siguientes expresiones:

W = W + (lr ) * E * X T
B = B + (lr ) * (E )

Seguidamente se muestra un ejemplo del uso de la red


lineal para aproximar el promedio de dos nmeros. Para
ello se utiliza la funcin newlin.
>> help newlin
>> X = [ 1 3 5 7 9 ; 11 13 15 17 19 ];
>> Yd = mean( X );
% promedio de entrada
>> lr = maxlinlr( X,'bias');
% tasa de aprendizaje
>> net = newlin( [ 0 20 ; 0 20 ] , 1 , 0 , lr );

Luego, se configuran los parmetros de entrenamiento,


para finalmente entrenar y simular la red lineal.

Tales expresiones son obtenidas cuando se busca


minimizar la suma del error cuadrtico (sse) [3].
n

>> net.trainParam.epochs = 2000;


>> net.trainParam.show = 500;
>> net.trainParam.goal = 0.001;
>> net.iw{1} = randn( 1, 2 );
% pesos iniciales
>> net.b{1} = randn( 1 );
% bias inicial
>> net = train( net , X , Yd );
% ver Figura 3.2
TRAINB, Epoch 0/2000, MSE 1447.36/0.001.
TRAINB, Epoch 193/2000, MSE 0.000999512/0.001.
TRAINB, Performance goal met.

sse = e(k ) = (y d (k ) y(k ) )


k =1

k =1

Donde:
n:
yd:
y:

Ejemplo Prctico con la Red Lineal

nmero de elementos del vector


vector de salida deseada
vector de salida total

La eleccin de la tasa de aprendizaje no puede ser muy


grande porque, a pesar que el entrenamiento es
sumamente rpido, puede volver a la red inestable
(pesos y bias con valores extremadamente grandes). Por
otro lado, si la tasa de aprendizaje es pequea, el
entrenamiento se hace largo evitando la inestabilidad.
Una manera adecuada de elegir la tasa de aprendizaje,
se hace utilizando la funcin maxlinlr.
>> help maxlinlr
>> X = [ 0 0 1 1 ; 0 1 0 1 ];
>> lr = maxlinlr( X , bias );
lr =
0.1569

Mg. Pedro Freddy Huaman Navarrete

Figura 3.2. Curva de desempeo del error

% vectores de entrada
% cuando se usa el bias

29

>> Y = sim( net , X );


>> E = mse( Yd - Y );

30

% error medio cuadrtico

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

>> X1 = [ 11 ; 21 ];
>> Y1 = sim( net, X1 )
Y1 =
15.9416
3.4

Simulacin de Redes Neuronales con Matlab

% 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.

Figura 3.4. Vector de Entrada - - y Vector de Salida


Deseada *

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 +

Figura 3.3. Diagrama de Bloques de la Red Lineal


Adaptativa [2]
La funcin adaptwh nos permite disear una red
adaptativa, sin embargo esta funcin pertenece a una
versin anterior del toolbox de redes neuronales, por ello
es necesario ocultar la advertencia de funcin obsoleta
con la funcin nntwarn Seguidamente, se muestra un
ejemplo del uso de este comando.
>> t = 1 : 0.002 : 3.5;
>> X = cos( sin(2*t) .* t *3 );
>> Yd = 2 * X + 3;
>> plot ( t , X , '--' , t , Yd , '*' ) % ver figura 3.4
>> title( ' Entrada: - - , Salida Deseada: * ' )

Mg. Pedro Freddy Huaman Navarrete

Figura 3.5. a) Grfico de Salida Total - y Salida


Deseada o . b) Grfico del error.

31

32

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab


3.5

Aplicacin: Modelamiento de RTDs


Los RTD son instrumentos utilizados para medir
temperatura. Tienen una representacin lineal y
responden al siguiente modelo matemtico.

Rt = Ro * (1 + * T)
Donde:
Figura 3.6. Grfico de desempeo del error

Rt: es la resistencia de salida


Ro: resistencia a 0 C
: Coeficiente de Temperatura ( 0.0038 )
T: Temperatura medida
>> T = 20:10:800;
>> a = 0.0038;
>> Ro1 = 100; Rt1 = Ro1*(1 + a*T);
% PT100
>> Ro2 = 200; Rt2 = Ro2*(1 + a*T);
% PT200
>> Ro3 = 500; Rt3 = Ro3*(1 + a*T);
% PT500
>> Yd = [ Rt1 / 100; Rt2 / 100; Rt3 / 100 ];
>> %Normalizando la Temperatura (entre el valor max.)
>> Tmaxima = 800;
>> X = [ T / Tmaxima ; a*ones(size(T)) ];
>> lr = maxlinlr( X , 'bias' );
>> net = newlin( [ -ones(2,1) ones(2,1) ] , 3 , 0 , lr );
>> net.trainparam.epochs = 400;
>> net.trainparam.show = 80;
>> net.trainparam.goal = 10e-6;
>> net = train( net , X , Yd);
% Ver figura 3.6
TRAINB, Epoch 0/400, MSE 72.9424/1e-005.
TRAINB, Epoch 80/400, MSE 0.000892697/1e-005.
TRAINB, Epoch 125/400, MSE 9.21106e-006/1e-005.
TRAINB, Performance goal met.
>> T1 = 25 / Tmaxima;
% Temp Amb.
>> Y = 100*sim( net, [ T1 ; a ] );
% simulando

Mg. Pedro Freddy Huaman Navarrete

33

34

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

4.

Red Perceptron Multicapa

4.1

Definicin y Caractersticas

Simulacin de Redes Neuronales con Matlab


4.2

La regla de aprendizaje Backpropagation de las redes


multicapa presentan dos fases. La primera es
denominada Feed-Forward donde las entradas se
propagan por toda la red desde la capa de entrada hacia
la de salida. La segunda recibe el nombre de FeedBackward, donde los errores se propagan en la direccin
contraria al flujo de entrada [6].

Debido a las limitaciones que presentan las redes


lineales al tratar de representar relaciones no lineales
entre entradas y salidas deseadas, surgen las redes
Multicapa pero con funciones de transferencia no lineal.
Por ello, se utiliza el error para actualizar los pesos,
desde la ltima capa hacia la primera [2]. Este algoritmo
recibe el nombre de Backpropagation. En la figura 4.1 se
muestra la estructura de una red Perceptron Multicapa.
Entrada

1ra Capa

La regla de aprendizaje, al igual que en las redes


lineales, est basada en la actualizacin del error por el
mtodo del Gradiente Descendiente, por lo tanto, en su
forma ms bsica sera:
1. Inicializar pesos sinpticos y bias.
2. Aplicar un padrn de entrada con su respectiva salida
deseada.
3. Calcular la salida total recorriendo todas las capas
ocultas (fase feed-forward).

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:

Figura 4.1. Estructura de una Red Perceptron Multicapa [2]

n: representa el nmero de capa ( 2 )


: representa la funcin de transferencia

Entre sus principales caractersticas encontramos:

4. Calcular el error para cada neurona de la capa de


salida. Si el error es menor a la tolerancia regresar al
paso 2, en caso contrario continuar.
5. Actualizar los pesos de cada neurona, iniciando por
la capa de salida.

Funcin de transferencia no lineal (muchas veces


slo la ltima capa tiene una funcin lineal).
Regla de aprendizaje supervisado.
Valores de entrada y salidas reales y/o binarias.

Mg. Pedro Freddy Huaman Navarrete

Regla de Aprendizaje

35

36

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

w ij = (lr ) * (e i ) * (x j )

Luego, se crea la red neuronal Multicapa con la funcin


newff. En esta funcin se incluye una matriz con los
valores mximos y mnimos por cada elemento de los
vectores de entrada, la cantidad de neuronas por capa y
la funcin de transferencia utilizada por capa. El
entrenamiento bsico utiliza la funcin traingd. Es as,
que se opta por una RNA con tres capas. Ocho neuronas
en la primera, tres en la segunda y una en la tercera.

Donde:

E = ' ( v) * (Yd Y)

Error

en

la

neurona de la
capa de salida.

E = ' ( v) * ( E * W ) ,

Error

en

>> net = newff( [ 0 10 ] , [ 8 3 1 ] , { 'tansig' 'tansig'


'purelin' } , 'traingd' );
>> Y = sim( net , X );
% simulacin
>> plot( X , Yd , '+' , X , Y , '--' )
% figura 4.2-a

las

k =1

neuronas de las
capas ocultas.

Luego, se procede a entrenar la red configurando


previamente el nmero de iteraciones a 10000, la tasa de
aprendizaje a 0.01 y el MSE a 0.0002. Se observa que el
entrenamiento es lento sin llegar a alcanzar el mse
deseado, pero si logrando una buena aproximacin de la
funcin planteada inicialmente.

1
( v) =
1 + e v
' ( v) = (Y )(1 Y )

>> net.trainParam.epochs = 100000;


>> net.trainParam.show = 20000;
>> net.trainParam.lr = 0.01;
>> net.trainParam.mse = 0.0002;
>> net = train( net , X , Yd );
>> Y = sim( net , X );
>> plot( X , Yd , '+' , X , Y , '--' )
%figura 4.2-b
>> %PESOS Y BIAS POR CADA CAPA
>> W1c = net.iw{1,1} ;
% iw: Capa de entrada
>> W2c = net.lw{2,1} ;
% lw: Segunda Capa
>> W3c = net.lw{3,2} ;
% lw: Tercera Capa
>> B1c = net.b{1,1} ;
%bias 1ra capa
>> B2c = net.b{2,1} ;
%bias 2da capa
>> B3c = net.b{3,1} ;
%bias 3ra capa

lr: Tasa de Aprendizaje


6. Regresar al paso 2.
4.3

Ejemplo Prctico con Backpropagation en


Aproximacin de Funciones
En esta seccin se muestra un ejemplo de aproximacin
de funciones. Para ello se define un vector lineal de
entrada, y un vector de salida deseada conformado por la
suma de dos funciones senos.
>> X = -2 : 0.2 : 2;
>> Yd = 2*sin( 2*pi*0.4*X ) - cos( 2*pi*0.2*X );
>> plot( X , Yd , '--' )

Mg. Pedro Freddy Huaman Navarrete

4.4

37

38

Variantes del Aprendizaje Backpropagation

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

El aprendizaje Backpropagation puede ser mejorado de


dos formas diferentes: por heurstica, y utilizando
potentes mtodos de optimizacin [2].

El lector es libre de elegir cualquiera de estas otras


formas de aprendizaje para la red Backpropagation, que
en la mayora de veces trae consigo el uso de un menor
nmero de iteraciones.
4.5

Aplicacin: Modelamiento de un Termistor


Los Termistores tambin son instrumentos utilizados para
medir temperatura. Tienen una representacin no lineal y,
algunos de ellos, responden al siguiente modelo
matemtico.

Rt = (Ro )e

Figura 4.2. a) Sin entrenamiento. b) Resultado de 10000


iteraciones. ( +: funcin por aproximar. --: funcin
aproximada )

Rt: es la resistencia de salida


Ro: resistencia a la temperatura de referencia To
: constante del material
To: temperatura de referencia

* Aprendizaje con Momento: reemplazar en la funcin


newff el string traingd por traingdm.

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

* Aprendizaje con Tasa de Aprendizaje Adaptativo:


reemplazar en la funcin newff el string traingd por
traingda.
* Aprendizaje con Momento y Tasa de Aprendizaje
Adaptativo: reemplazar en la funcin newff el string
traingd por traingdx.
* Aprendizaje con Backpropagation Resileint: reemplazar
en la funcin newff el string traingd por trainrp.
* Aprendizaje con Aproximacin Levenberg-Marquardt
(mtodo de Newton): reemplazar en la funcin newff el
string traingd por trainlm.

39

1 1
)
Tt To

Donde:

Entre las principales variantes tenemos:

Mg. Pedro Freddy Huaman Navarrete

40

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

TRAINLM, Epoch 0/4000, MSE 0.288138/1e-005,


Gradient 23.3935/1e-010
TRAINLM, Epoch 800/4000, MSE 3.21572e-005/1e-005,
Gradient 0.034127/1e-010
TRAINLM, Epoch 840/4000, MSE 9.88634e-006/1e-005,
Gradient 0.174969/1e-010
TRAINLM, Performance goal met.

5.

Redes Neuronales Auto Organizativas

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].

Figura 4.3. Grfico del desempeo del error.


Finalmente, se verifica el desempeo de la red realizando
la respectiva simulacin.
>> Y = sim( net , X );
>> mse( Yd - Y)
ans =
9.8863e-006

Entre las redes auto-organizativas ms utilizadas


encontramos la Red Competitiva, los Mapas de Autoorganizacin (SOM) y la Red Learning Vector
Quantization (LVQ) [2].

% simulando

5.2

>> T1 = 25.5;
% Temp. Ambiente
>> Y = 100*sim( net, [ T1 ; beta ] / Tmaxima);

Red Competitiva y Regla de Aprendizaje


La red competitiva se identifica por contar con una capa
de neuronas con un entrenamiento no supervisado. Es
decir, la salida es obtenida a partir de una competencia
entre sus neuronas, dando como ganadora aquella que
obtuvo el mayor valor de salida (figura 5.1). El algoritmo:
1. Inicializar los pesos sinpticos y bias.
2. Aplicar un padrn de entrada y determinar la neurona
vencedora, cuyos pesos sinpticos asociados

Mg. Pedro Freddy Huaman Navarrete

41

42

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

resultarn ser los ms parecidos al vector de entrada.


La comparacin se realiza con la distancia eucldea
definida por [3], seguida de la funcin de
transferencia compet.

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:

A continuacin se muestran cinco vectores con dos


elementos cada uno. Asimismo, existen dos pares de
vectores muy parecidos entre s.

xj: es el componente j-simo del vector de


entrada X.
i: representa la i-esima neurona de la red.
Entrada

X Rx1

>> X = [ 3 4 -8 4 -7
2 -1 7 3 8

Capa Competitiva

W SxR
V Sx1

+
1

Y Sx1

>> net = newc( [-10 10 ;-10 10] , 3, 0.001);


>> net.trainParam.epochs = 1000;
%cant. de iterac.
>> net.trainParam.show = 250;
%mostrar c/250
>> net = train( net , X );
TRAINR, Epoch 0/1000
TRAINR, Epoch 250/1000
TRAINR, Epoch 500/1000
TRAINR, Epoch 750/1000
TRAINR, Epoch 1000/1000
TRAINR, Maximum epoch reached.
>> Y = sim(net , X);
% simulacin de la red
>> full( Y )
% transforma matriz sparse
ans =
1 0 0 1 0
0 0 1 0 1
0 1 0 0 0

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

];

Entonces, se realiza la clasificacin o agrupacin de esos


cinco vectores, en tres clases distintas. Para ello se
utiliza una tasa de aprendizaje de 0.001 para que el
entrenamiento sea lento y seguro.

B Sx1

Mg. Pedro Freddy Huaman Navarrete

Ejemplo Prctico con la Red Competitiva

44

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

>> Yc = vec2ind(Y)
Yc =
1 3 2 1 2

>> a = -dist( W , X( :,1 ) );


>> y = full( compet( a , B ) )
y=
1
0
0

Por lo tanto, las columnas 1 y 4 (vectores de entrada) de


la matriz X, corresponden a una primera clase. Luego, la
nica columna 2 corresponde a la clase 3. Finalmente,
las columnas 3 y 5 corresponden a la segunda clase.
Esto se observa en la figura 5.2, donde cada vector peso
(filas de la matriz W) es muy prximo a algunos vectores
de entrada. Este grfico slo puede ser representado
cuando los vectores de entrada slo presentan dos o tres
elementos.

Este ejemplo puede ser extendido para un nmero mayor


de vectores de entrada, mayor nmero de elementos por
vector de entrada, as como una mayor cantidad de
neuronas para aumentar el nmero de clases diferentes.
5.4

Red LVQ y Regla de Aprendizaje


Esta red cuenta con dos capas y es del tipo hbrida,
porque cuenta con un entrenamiento supervisado y uno
no supervisado (ver figura 5.3). Tiene como principal
objetivo la clasificacin de padrones, y donde cada
neurona de la primera capa es asignada a una sub-clase
que corresponde a su vez a una neurona de la segunda
capa (clase) [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) )

Figura 5.2. Representacin en el plano de vectores de entrada


+ y vectores de pesos o.

Figura 5.3. Estructura de una Red Neuronal LVQ [2]

Verificando el primer vector de entrada con toda la matriz


de pesos y bias entrenado:

Mg. Pedro Freddy Huaman Navarrete

45

Y2C=purelin(W2C * Y1C)

A continuacin, la regla de aprendizaje de la red LVQ

46

Mg. Pedro Freddy Huaman Navarrete

Y2CS2x1

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

1. Por cada iteracin, se aplica un vector de entrada X a


la red, para calcular la distancia a cada vector
prototipo.
2. Las neuronas ocultas compiten entre s, de tal forma
que una neurona i gana la competencia haciendo
que el i-simo elemento de la salida de la primera
capa se fije en 1.
3. La salida de la primera capa es multiplicada por los
pesos de la segunda capa W2C, para obtener la
salida final Y2C, la cual tiene solamente un elemento
diferente de cero.

Se presenta ocho vectores de entrada con dos elementos


cada uno. Donde se pre-define dos grupos de vectores
diferentes. El primer grupo conformado por cinco
vectores, y el segundo por tres. Por lo tanto, se hace uso
de la red LVQ para realizar la clasificacin respectiva.
>> X = [

1
2.1

2
1

-3
4

4
3

-2
3

2.5
3.2

3.2
2.4

-1.8
3 ];

Se utiliza un vector de salida deseada para la segunda


capa (indicando las dos clases existentes), la cual
determinar la salida deseada.

En esta red neuronal muchas neuronas de la primera


capa representarn sub-clases, que a su vez formarn
parte de otra clase (neurona de la segunda capa). La
primera capa cuenta con una funcin de transferencia
competitiva, mientras que la segunda es del tipo lineal. La
figura 5.4, muestra un ejemplo de una red LVQ.

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

>> PORC = [ 50 50 ] / 100;


>> net = newlvq( minmax( X ) , 4 , PORC );

x2

Luego, se verifica la matriz de pesos de la segunda capa,


la cual no sufrir modificacin alguna durante la etapa de
entrenamiento.
>> net.lw
% pesos de la segunda capa
>> net.lw{2}
>> net = train( net , X , Y );
TRAINR, Epoch 0/100
TRAINR, Epoch 2/100
TRAINR, Performance goal met.

Figura 5.4. Red Neuronal LVQ


5.5

Ejemplo Prctico con la Red LVQ

Mg. Pedro Freddy Huaman Navarrete

47

48

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

>> Y = sim( net , X );


>> Yc = vec2ind( Y );
>> net.iw{1}
ans =
0.7182 2.4802
0.5350 2.4850
0.3956 2.5295
0.5000 2.5000
>> net.lw{2}
ans =
1 1 0 0
0 0 1 1
>> net.b
ans =
[]
[]

Simulacin de Redes Neuronales con Matlab

% simulacin de la red

>> II = I( 1:64 , 1:64 );

% comprobacin

Tomamos bloques de 2x2 pixeles en la imagen II, y lo


transformamos em vectores de 4x1.
>> X = im2col( II , [2 2] , 'distinc' );
>> size( X )
%1024 padrones de entrada
>> NN = 64;
%nmero de neuronas
>> net = newc( [ zeros(4,1) 255*ones(4,1) ] , NN , 0.001);
>> net.trainParam.epochs = 3000;
%cant. de iterac.
>> net.trainParam.show = 500;
%mostrar c/200
>> net = train( net , X );
TRAINR, Epoch 0/3000
TRAINR, Epoch 500/3000
TRAINR, Epoch 1000/3000
TRAINR, Epoch 1500/3000
TRAINR, Epoch 2000/3000
TRAINR, Epoch 2500/3000
TRAINR, Epoch 3000/3000
TRAINR, Maximum epoch reached.
>> Y = sim( net , X );
% simulacin
>> P = [ X( : , 1 ) X( : , 3 ) ]
% vectores parecidos
P=
4 4
6 2
3 4
3 3
>> Y = sim( net , P )
%activan la misma neurona 58
Y=
(58,1)
1
(58,2)
1

%comprobacin

En los pesos de la segunda capa, las columnas


representan las sub-clases y las filas representan las
clases, Por ello, estos pesos slo tienen un 1 en cada
columna, en cuanto que los dems elementos son cero.
La fila en la cual se presenta el 1 ndica la clase a la cual
la subclase pertenece. Por lo general, se conecta un
nmero igual de neuronas ocultas a cada neurona de
salida, para que de esta manera cada clase pueda ser
conformada por el mismo nmero de regiones convexas
[2].
5.6

Aplicacin: Compresin de Imgenes


Se toma sub-bloques de una imagen en tonos de gris y
se convierte a vectores columnas, que servirn como
padrones de entrada a la red competitiva. Esta red
realizar el trabajo de agrupar los vectores similares,
para codificarlos por un nmero determinado de bits.
>> load imdemos
>> I = double( tire );

Luego, pasamos a reconstruir la imagen, a partir de los


vectores pesos que representan a todo el conjunto de
vectores de entrada. Finalmente, retornamos al tamao
original de 64 x 64 pixels con ayuda de la funcin
col2im.

%cargamos imgenes del Matlab


%seleccionamos una de ellas

Mg. Pedro Freddy Huaman Navarrete

49

%Imagen de 64 x 64 pixels

>> W = net.iw{1};
>> for i =1:1024

50

% matriz de pesos 64 x 4

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Y = sim( net , X( : , i ) ); % Para conocer la neurona


Y = full( Y );
%.activada, por medio del valor
[ m , n ] = max( Y );
% mximo en la salida Y
Xr( i , 1:4 ) = W( n , : ) ; % representacin de la imagen
end
% a partir de los vectores pesos
>> Xr = Xr' ;
% traspuesta
>> IIr = col2im( Xr , [2 2] , [64 64] , 'distinc' );
>> colormap( gray ( 256 ) );
% configuracin a gris
>> subplot(121), image( II ), title('Imagen Original')
>> subplot(122), image( IIr ), title('Imagen Reconstruida')

Simulacin de Redes Neuronales con Matlab

6.

Red Neuronal Recurrente

6.1

Red de Hopfield. Definicin y Configuracin


La red de Hopfield es del tipo recurrente, pues la salida
de dicha red es dinmica lo que indica que despus de
aplicar una nueva entrada, la salida es calculada y
realimentada para modificar tal entrada Esta recurrencia
asegura la estabilidad haciendo que sucesivas
iteraciones, produzcan cambios de salida cada vez ms
pequeas hasta lograr que las salidas sean constantes.
Tambin es conocida como red con memoria auto
asociativa [1]. Ver figura 6.1.

La figura 5.5 muestra la imagen original y la imagen


reconstruida despus de la compresin con la red
competitiva.

Cond. Iniciales

X Rx1

Capa Lineal Saturada

W SxR
V Sx1

Figura 5.5. Comparacin entre imagen original y reconstruida


1
La imagen original tiene un total de
mientras

que

la

codificada

64 x 64 x8
= 4KBytes ,
8x1024
reconstruida

B Sx1

Y = satlins( W * X + B )

tiene

1024 x 6
= 0.75KBytes .
8x1024

Figura 6.1. Estructura de una red Hopfield [2].

Esto explica que en la imagen reconstruida se ha


utilizado 6 bits ( log2(64 neuronas) ) por cada vector de
entrada

Mg. Pedro Freddy Huaman Navarrete

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

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Sin embargo, es posible obtener la matriz de


pesos a partir de un procedimiento apoyado en la
funcin de alta ganancia de Lyapunov [3].

>> W = net.LW{ 1 } ;
>> B = net.b{ 1 } ;

%matriz de pesos (ver figura 6.2)


%vector de bias

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

matriz de pesos y vector de bias


vector de entrada
vector de salida de la red
vector de ganancias
nmero de padrones de entrada
funcin Lyapunov

Figura 6.2. Estructura de la red Hopfield del ejemplo


prctico.
Seguidamente,, se verifica el reconocimiento de los dos
ltimos vectores X3 y X4.

Se dice que la red es estable si se cumple lo siguiente. Al


presentar un padrn de entrada incorrecto, la red
estabilizar en el valor ms prximo (o valor correcto) al
padrn presentado.
6.3

>> nVect = 1; % cantidad de vectores a verificar


>> Xr3 = sim( net , nVect , [ ] , X3 ) ;
>> [ X3 Xr3 ] % vectores idnticos
>> Xr4 = sim( net , nVect , [ ] , X4 ) ;
>> [ X4 Xr4 ] % vectores idnticos

Ejemplo Prctico con la Red Hopfield


En esta seccin se muestra un ejemplo prctico del uso
de la red de Hopfield para el reconocimiento de cuatro
vectores con seis elementos cada uno.
>> X1 = [ 1 ; 1 ; 1 ; 1 ; 1 ;
>> X2 = [ 1 ; -1 ; -1 ; -1 ; 1 ;
>> X3 = [ -1 ; 1 ; 1 ; 1 ; -1 ;
>> X4 = [ -1 ; 1 ; 1 ; -1 ; 1 ;
>> X = [ X1 X2 X3 X4 ] ;
>> net = newhop( X );

Mg. Pedro Freddy Huaman Navarrete

Luego, para corregir un vector ruidoso haciendo uso de la


red de Hopfield, procedemos de la siguiente manera.
>> nVeces = 100;
% simula 100 veces
>> XR2 = { [ 1 ; -1 ; -1 ; -1 ; 1 ; 1 ] } ; %cell array
>> Y = sim( net , { nVect nVeces } , { } , XR2 ) ;
>> Y{ 100 }
% muestra la ltima simulacin
>> [ X2 Y{ 100 } ]
% idnticos

1];
-1 ] ;
1];
-1 ] ;

53

54

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Una caracterstica importante en las redes de Hopfield


radica en la definicin de los vectores de entrada. Cuanto
ms diferentes son entre s, mayores son las
oportunidades de correccin ante la presencia de errores.
6.4

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

>> nVeces = 100;


% simula 100 veces
>> D4ruido = { D4ruido };
>> Y = sim( net , { nVect nVeces } , { } , D4ruido ) ;
>> Y{ 100 }
% muestra la ltima simulacin
>> any( D4 Y )
% vectores iguales
ans =
0

A continuacin, se definen los primeros cinco dgitos


impares en un arreglo de 10x7, tal como lo muestra la
figura 6.3. Adems, se transforma cada arreglo de 10x7 a
un vector de 70x1, concatenando las filas y
representando las casillas de color negro por -1 y las de
color blanco por 1. Estos vectores son denominados D1,
D2, D3, D4 y D5, respectivamente.

Figura 6.3. Cinco dgitos impares en un arreglo de 10x7


Figura 6.4. Cuarto dgito impar con ruido
>> whos D1 D2 D3 D4 D5
Name
Size
Bytes Class
D1
70x1
560 double array
D2
70x1
560 double array
D3
70x1
560 double array
D4
70x1
560 double array
D5
70x1
560 double array
>> D = [ D1 D2 D3 D4 D5 ];
>> net = newhop( D );
>> net.lw
>> nVect = 1;
% verificando el segundo dgito
>> D2r = sim( net , nVect , [] , D2 ) ;
>> any( D2 D2r )
% vectores iguales

Mg. Pedro Freddy Huaman Navarrete

55

56

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

7.

Red Neuronal Radial Basis Function

7.1

Definicin y Caractersticas

Simulacin de Redes Neuronales con Matlab

linealmente no separables. Por lo tanto, con el uso de la


red Radial Basis Function, se lograr representar dicha
funcin. Se introducen los vectores de entrada y de salida
deseada.
>> X = [ 1 1 0 0 ; 1 0 1 0 ] ;
>> Yd = [ 0 1 1 0 ] ;
>> net = newrb( X , Yd );
% entrenamiento
NEWRB, neurons = 0, SSE = 0.947368
>> X1 = X( :, 1 );
>> Y = sim( net , X1 )
% simulacin
>> X2 = X( :, 2 );
>> Y = sim( net , X2 )
>> X3 = X( :, 3 );
>> Y = sim( net , X3 )
>> X4 = X( :, 4 );
>> Y = sim( net , X4 )
%prcticamente igual a 0

Es un tipo de red conformada por dos capas. La primera


con una funcin de transferencia Radial Basis
(gaussiana), y la segunda con funcin de transferencia
lineal. Esta red, a diferencia de la Perceptron Multicapa,
necesita un nmero mayor de neuronas en su primera
capa, sin embargo slo necesita de una fraccin pequea
de tiempo para el entrenamiento de sus pesos [4]. Su
principal aplicacin es la aproximacin de funciones y la
clasificacin de padrones [2]. La figura 7.1 muestra la
estructura de una red RBF.
Entrada

Capa Radial Basis

Capa Lineal

Finalmente, los tamaos y contenidos de las matrices de


pesos y bias de esta red neuronal resultan ser:

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

De esta manera, esta red RBF cuenta con dos capas. En


la primera capa cuatro neuronas, y en la segunda una
neurona. Ver figura 7.2.

Y1C=radbasis( dist(W1C, X),B1C )

Y2C=purelin(W2C * Y1C, B2C )

7.3

Figura 7.1. Estructura de una Red Neuronal RBF


7.2

Aplicacin: Prediccin de Seales Temporales


Seguidamente, se utiliza la red RBF para predecir
muestras hacia delante, en una seal temporal
compuesta por la suma de dos ondas cosenos de
frecuencias diferentes.

Solucin al Problema de la Funcin XOR


Tal como se vio en la seccin 2.4, la red Perceptron de
una capa es insuficiente para representar la funcin
XOR. Ello se debe a la presencia de padrones

Mg. Pedro Freddy Huaman Navarrete

% pesos de la primera capa


% pesos de la segunda capa
% bias de la primera capa
% bias de la segunda capa

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

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

>> plot( n , x , * ), gris

Simulacin de Redes Neuronales con Matlab

% Ver figura 7.3

deseada. Este criterio se contina hasta cubrir las


primeras 99 muestras. A continuacin se muestra un
ejemplo del uso de la funcin delaysig para la
operacin de desfasado en un vector de 10 muestras.
>> A = 1:10;
>> nntwarn off
>> B = delaysig( A , 5 );
B=
1 2 3 4 5
0 1 2 3 4
0 0 1 2 3
0 0 0 1 2
0 0 0 0 1
0 0 0 0 0
>> nntwarn off
>> X = delaysig( x , 5 );

x1

x2

2da Capa

1ra Capa

Figura 7.2. Red Neuronal RBF

% vector con 10 muestras


% para ocultar advertencias
% crea 6 retardos en el vector A
6 7 8 9 10
5 6 7 8 9
4 5 6 7 8
3 4 5 6 7
2 3 4 5 6
1 2 3 4 5
% evita mensajes de advertencia
% lo mismo al vector de datos X

Se debe asignar al vector de salida deseada Yd, una


muestra que corresponde a la prediccin.
>> for i = 1:99, Yd(i) = X( 1 , i + 1 ); end
>> net = newrb( X( : , 1:99 ) , Yd );
% ver figura 7.4
NEWRB, neurons = 0, SSE = 63.3114
NEWRB, neurons = 25, SSE = 0.462873
NEWRB, neurons = 50, SSE = 0.0224332
NEWRB, neurons = 75, SSE = 0.000253273
>> size( net.iw{1} )
%99 neuronas para la 1ra capa
>> size( net.lw{2} )
% 1 neurona para la 2da capa
Figura 7.3. Grfico de 100 muestras de la seal temporal

Para verificar el desempeo de la red, se procede a


ingresar de la muestra 13ava a la 18ava, para predecir la
19ava.

Luego, se establecen 6 muestras de entrada para la


primera capa y una muestra de salida para la segunda
capa. Y, se procede a reacomodar (desfasar) las
muestras de entrada a la red, de tal forma que las
primeras seis muestras ingresen a la red, y la sptima
que corresponda a la salida deseada. De igual manera,
de la segunda a la sptima muestra ingresen a la red,
con la octava muestra correspondiente a la salida

Mg. Pedro Freddy Huaman Navarrete

59

>> X1 = fliplr( x( 13:18 ) ) ;


>> Y = sim( net , X1 );
>> [ Y x(19) ]
ans =
-1.6251 -1.6251

60

% giramos la entrada

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Lo mismo, con las muestras 94ava a 99ava para predecir


la 100ava
>> X2 = fliplr( x( 94:99 ) ) ;
>> Y = sim( net , X2 );
>> [ Y x(100) ]
ans =
0.1011 0.1011

% giramos la entrada

Finalmente, predecimos las muestras 101ava, 102ava y


103ava y lo graficamos junto a la seal inicial x
>> X3 = fliplr( x( 95:100 ) ) ;
%giro
>> Y_101 = sim( net , X3 );
>> X4 = fliplr( [ x( 96:100 ) Y_101 ] ) ;
%giro
>> Y_102 = sim( net , X4 );
>> X5 = fliplr( [ x( 97:100 ) Y_101 Y_102 ] ) ; %giro

Figura 7.5. Grfico de 100 muestras de la seal temporal ms 3


muestras predichas

Figura 7.4. Grfico de desempeo de la red


>> Y_103 = sim( net , X5 );
>> eje1 = 0:99;
>> eje2 = 100:102;
>> plot(eje1, x, xb, eje2, [Y_101 Y_102 Y_103 ], or)
>> % ver figura 7.5: muestras pasadas y predichas

Mg. Pedro Freddy Huaman Navarrete

61

62

Mg. Pedro Freddy Huaman Navarrete

Simulacin de Redes Neuronales con Matlab

Simulacin de Redes Neuronales con Matlab

Bibliografa
[1]

BONIFACIO, Martn del Brio. Redes Neuronales y


Sistemas Borrosos. 2da Edicin. Alfa y Omega. 2007

[2]

DEMUTH, Howard, HAGAN Martin and BEALE, Mark.


Neural Network TOOLBOX Users Guide. The MathWorks
Inc. 2005.

[3]

HAYKIN, Simon. Neural Networks. A Comprehensive


Foundation. 2da Edicin. Prentice Hall 1999.

[4]

HAYKIN, Simon. Adaptive Filter Theory. Cuarta Edicin.


Prentice Hall 2001.

[5]

VELLASCO, Marley. Ementa de Redes Neurais. Material


del Curso de Redes Neuronales Artificiales en el Programa
de Maestra. PUC- RIO. 1995. Brasil.

[6]

WASSERMAN, Philip D. Neural Computing: Theory and


Practice. Van Nostrand Preinhold. 1989.

[7]

Introduccin a las Redes Neuronales Artificiales.


Desarrollado
por
Alfredo
Catalina
Gallego
http://www.gui.uva.es/login/13/redesn.html

[8]

Tutorial Redes Neuronales contiene Teoria General


http://www.gc.ssr.upm.es/inves/neural/ann2/anntutorial.htm
l

Mg. Pedro Freddy Huaman Navarrete

63

64

Mg. Pedro Freddy Huaman Navarrete

También podría gustarte