Está en la página 1de 32

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete


1
1. Fundamentos Bsicos de Redes
Neuronales Artificiales
1.1 Surgimiento de las Redes Neuronales
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 Definicin. Neurona Biolgica y 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].
A continuacin, en las figuras 1.1 y 1.2 se muestran los
modelos de una neurona biolgica y una neurona
artificial.










Cuerpo
Dendritas
Synapses
Axon
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
2
Figura 1.1. Modelo Simplificado de una Neurona
Biolgica
Figura 1.2 Modelo de una Neurona Artificial
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.
Donde w
1
, w
2
, .., w
n
, b
k
, x
1
, x
2
, , x
n
, e y
k
, se representan
como contenido de los vectores:
y
k

C Cu ue er rp po o d de e l la a
N Ne eu ur ro on na a k k
b
k

1
E Es st ta ad do o d de e
A Ac ct ti iv va ac ci i n n
( (s sa al li id da a) )


v
w
1

w
2

w
n
E
N
T
R
A
D
A
S
x
1

x
2

x
n

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
3


y
...
y
Y
b
...
b
B
x
...
x
x
X
w ... w w W
k
1
1 kx
k
1
1 kx
n
2
1
1 x n
n 2 1 n x 1
= = =
=

Definindose como:

) v ( y
b x * w . . . x * w x * w v
b x * w v
k k
k n n 2 2 1 1 k
n
1 i
k i i k
=
+ + + + =
+ =

=

Y, en notacin matricial, como:
) V ( Y
B X * W V
k k
k k k
=
+ =

Donde:
(.) : representa a la Funcin de Transferencia o de
Activacin, sobre la variable V.
k hace referencia a la k-sima neurona de la red
neuronal.
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
4
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.
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
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.
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.
>>V =-8:0.2:8;
>>Y =hardlim( V );
>>subplot(121), plot( V , Y )
>>Y =hardlims( V );
>>subplot(122), plot( V , Y )
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
5

Figura 1.3. a) Funcin hardlim. b) Funcin hardlims
Funcin de Transferencia Lineal
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.
>>V =-8:0.2:8;
>>Y =purelin( V );
>>plot( V , Y )

Figura 1.4. Funcin de transferencia purelin
Funcin de Transferencia No Lineal
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
6
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.5. Funciones de transferencia logsig y tansig
Esta funcin es utilizada por la red Multicapa con
regla de aprendizaje Backpropagation.
>> 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.
>> V = randn( 8 , 1 );
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
7
>> Y = compet( V );
>> subplot(121), stem( V );
>> subplot(122), stem( Y );

Figura 1.6. Funcin de transferencia compet
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 )
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
8

Figura 1.7. Funciones de transferencia a) satlin. b)
satlins
Funcin de Transferencia Radial Basis
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.
>>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) Aprendizaje: porque aprende de la experiencia.
b) Asociacin: debido a que asocia padrones diferentes.
c) Generalizacin: generaliza de ejemplos anteriores.
d) 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.
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
9

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.









b
1

y
1
y
2
y
3
x
1

x
2

b
2

b
3

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
10


Figura 1.9. Red neuronal con una Capa Feed-Forward
De esta manera, en forma matricial se interpretara como:
( )
1 x 3 1 x 2 2 x 3 1 x 3
B X * W Y + =
3
2
1
1 x 3
3
2
1
1 x 3
32 31
22 21
12 11
2 x 3
2
1
1 x 2
y
y
y
Y
b
b
b
B
w w
w w
w w
W
x
x
X
= =
= =

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.


b
1

y
1

y
2

x
1

x
2

b
2

b
3

b
1

b
2

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
11


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.
) B Y * W ( Y
) B X * W ( Y
C 2 C 1 C 2 C 2
C 1 C 1 C 1
+ =
+ =

Donde:
3
2
1
C 1
1 x 3
32 31
22 21
12 11
C 1
2 x 3
2
1
1 x 2
b
b
b
B
w w
w w
w w
W
x
x
X = = =
2
1 C 2
1 x 2
2
1 C 2
1 x 2
23 22 21
13 12 11 C 2
3 x 2
3
2
1
C 1
1 x 3
y
y
Y
b
b
B
w w w
w w w
W
y
y
y
Y
= =
= =

c) Red Recurrente
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
12
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.11. Red neuronal recurrente.
En forma matricial se tendra:
Y * X
) B X * W ( Y
=
+ =

Donde X* = Y, indica que los nuevos clculos se
obtienen con el nuevo vector de entrada.
1.6 Aprendizaje en Redes Neuronales
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:
y
1

y
2

y
3

x
1

x
2

x
3

x*
3

x*
2

x*
1

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
13
a. Sin Entrenamiento
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. Entrenamiento Supervisado
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.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.
R.N.A
W
+
Entrada
X
Salida
Y
Salida
Deseada
Y
Error
-
+
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
14

Figura 1.13. Diagrama de bloques del Entrenamiento No
Supervisado.
1.7 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.
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.
1.8 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,
R.N.A
W
Entrada
X
Salida
Y
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
15
disear, entrenar y simular distintas redes neuronales
artificiales. La ayuda puede ser invocada de la siguiente
manera:
>>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 % crea
>>help train % entrena
>>help sim % 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.
Por ejemplo:
>>net =newp( [ -1 2 ; -1 2 ] ,1)
net =
Neural Network object:

architecture:
numInputs: 1
numLayers: 1
biasConnect: [1]
inputConnect: [1]
layerConnect: [0]
outputConnect: [1]
targetConnect: [1]
.
.
.
parameters:
adaptParam: .passes
initParam: (none)
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
16
performParam: (none)
trainParam: .epochs, .goal, .show, .time

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

other:
userdata: (user stuff)
De esta manera, los pesos y los bias se visualizan:
>>net.iw %pesos de la primera capa: Cell Array
>>net.lw %pesos de las dems capas: Cell Array
>>net.b %bias de todas las capas: Cell Array
>>net.iw{1} %para observar el contenido en la
%primera ubicacin del Cell Array.
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.adaptParam.passes =2; % nmero de pasos

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

>>net.adaptFcn % por defecto
>>net.initFcn % por defecto
>>net.performFcn % por defecto
>>net.trainFcn % por defecto
>>help trains % funcin de entren. secuencial
>>help initlay % funcin de inicializ. por capa
>>help mae % funcin error absoluto
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
17
>>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

>>net.numInputs
>>net.numLayers
>>net.numOutputs
>>net.numTargets
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.
>>help network
Asimismo, tambin es posible trabajar con una interfase
grfica del usuario (GUI) exclusivamente para redes
neuronales. Slo basta con digitar el comando nntool:
>>nntool
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
18
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.
Entre sus principales caractersticas encontramos:
Funcin de transferencia escaln.
Regla de aprendizaje supervisado.
Valores de entrada reales y salidas binarias {0,1}o
bipolares {-1,1}.












Figura 2.1. Estructura de una Red Perceptron [2].
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].
B
Sx1

W
SxR

1
Entrada Capa Perceptron
Y =hardlim( W * X +B )
X
Rx1

+

Y
Sx1

V
Sx1

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
19
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.

<

=
j j
j j
j
v si , a
v si , a
y
Donde:
j
: representa a un umbral seleccionado.
a, -a: representa el valor de salida que podr ser
{1,0}o {1,-1}.
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).
E B B
X * E W W
T
+ =
+ =

5. Retornar al paso nmero 2.
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.
2.3 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.
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
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
20
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.








Figura 2.2. Tabla de la Funcin AND y RNA utilizada
para su representacin.
Los vectores de entrada y de salida deseada sern:
>>X =[ 1 1 0 0 ; 1 0 1 0 ] ;
>>Yd =[ 1 0 0 0 ];
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.
>>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 =
0 0 0
0 1 0
0 0 1
1 1 1
Y x x
d 2 1
x
1

x
2

b
1

y
1

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
21
0 0
>>net.b{1} %bias inicial
ans =
0
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) ; )
Antes de proceder con el entrenamiento, se observa que
la salida total con los pesos y bias iniciales es:
>>Y =sim( net , X )
Y =
1 0 1 1
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 ); %ver figura 2.3
TRAINC, Epoch 0/40
TRAINC, Epoch 8/40
TRAINC, Performance goal met.

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
22
Figura 2.3. Curva de desempeo por cada iteracin
alcanzada. Error =0.
De la figura anterior se observa que se necesitaron slo 8
iteraciones para lograr la clasificacin. Adems, el grfico
tambin puede se obtenido de:
>>t =tr.epoch;
>>e =tr.perf;
>>plot( t , e )
Luego, se realiza la simulacin y se obtiene.
>>Y =sim( net , X ) % simulando
Y =
1 0 0 0
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
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 x
1
y x
2
), 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})
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
23
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.
Para graficar la recta de separacin se procede a la
siguiente ecuacin de la recta.
0 b x * ) 2 ( w x * ) 1 ( w
2 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 Limitacin de la Red Perceptron
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
24
La red Perceptron cuenta con limitaciones al no
poder clasificar padrones linealmente no
separables [3].
Problemas con la Funcin XOR
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.
>>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})

Figura 2.5. a) Curva de desempeo en 300 iteraciones.
b) Distribucin de padrones de entrada: XOR.
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
25
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 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.




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

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.
>>AA =[ 1; 1; 1; 1; 1; 1; 0; 0; 1; 0; 1; 1; 1; 1; 1 ] ;
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
26
>>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 ] ;








Figura 2.7. Salida deseada para cada padrn de entrada
y Red neuronal utilizada en la clasificacin.
>>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.


Figura 2.8. Curva de desempeo en 6 iteraciones (E=0).
0 0 0 U
1 1 1 O
0 0 0 I
1 1 1 E
1 1 1 A
yd yd yd X
3 2 1

x
1

x
2


x
3


. . .

x
15

b
1

y
1


y
2



y
3

b
2

b
3

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
27
>>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

Mg. Pedro Freddy Huaman Navarrete
28
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.













Figura 3.1. Estructura de una Red Lineal [2]
B
Sx1

W
SxR

1
Entrada Capa Lineal
Y =purelin( W * X +B )
X
Rx1

+

Y
Sx1

V
Sx1

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
29
3.2 Regla de Aprendizaje
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:
( ) ( )
( ) ( ) E * lr B B
X * E * lr W W
T
+ =
+ =

Tales expresiones son obtenidas cuando se busca
minimizar la suma del error cuadrtico (sse) [3].
( )

= =
= =
n
1 k
2
d
n
1 k
2
) k ( y ) k ( y ) k ( e sse
Donde:
n: nmero de elementos del vector
y
d
: vector de salida deseada
y: 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 ]; % vectores de entrada
>>lr =maxlinlr( X , bias ); % cuando se usa el bias
lr =
0.1569
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
30
3.3 Ejemplo Prctico con la Red Lineal
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.
>>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.

Figura 3.2. Curva de desempeo del error
>>Y =sim( net , X );
>>E =mse( Yd - Y ); % error medio cuadrtico

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
31
>>X1 =[ 11 ; 21 ]; % simulacin con
>>Y1 =sim( net, X1 ) % nuevo vector
Y1 =
15.9416
3.4 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.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: * ' )
+
Red
Lineal
Adaptativa
X
entrada
Yd
salida deseada
-
+
Y
salida total
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
32


Figura 3.4. Vector de Entrada - - y Vector de Salida
Deseada *
>>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

Figura 3.5. a) Grfico de Salida Total - y Salida
Deseada o . b) Grfico del error.
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
33
3.5 Aplicacin: Modelamiento de RTDs
Los RTD son instrumentos utilizados para medir
temperatura. Tienen una representacin lineal y
responden al siguiente modelo matemtico.
) T * 1 ( * Ro Rt + =
Donde:
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

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
34

Figura 3.6. Grfico de desempeo del error
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
35
4. Red Perceptron Multicapa
4.1 Definicin y Caractersticas
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.















Figura 4.1. Estructura de una Red Perceptron Multicapa [2]
Entre sus principales caractersticas encontramos:
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.
Entrada 1ra Capa 2da Capa
Y
1C
=tansig(W
1C
* X +B
1C
) Y
2C
=purelin(W
2C
* Y
1C
+B
2C
)
X
Rx1

Y
2C
S2x1

V
2C
S2x1
V
1C
S1x1

Y
1C
S1x1

W
1C
S1xR
B
1C
S1x1
W
2C
S2xS1
B
2C
S2x1
+
+
1 1
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
36
4.2 Regla de Aprendizaje
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 Feed-
Backward, donde los errores se propagan en la direccin
contraria al flujo de entrada [6].
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).
) B Y * W ( Y
. . .
) B Y * W ( Y
) B X * W ( Y
nC C ) 1 n ( nC nC
C 2 C 1 C 2 C 2
C 1 C 1 C 1
+ =
+ =
+ =


Donde:
n: representa el nmero de capa ( 2 )
: representa la funcin de transferencia

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.
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
37
( ) ( ) ( )
j i ij
x * e * lr w =
Donde:
) Y Y ( * ) v ( E
d
'
= Error en la
neurona de la
capa de salida.

=
=
1 k
'
) W * E ( * ) v ( E , Error en las
neuronas de las
capas ocultas.
( )( ) Y 1 Y ) v (
e 1
1
) v (
'
v
=
+
=



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 , '--' )
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
38
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.
>>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
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.
>>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
4.4 Variantes del Aprendizaje Backpropagation
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
39
El aprendizaje Backpropagation puede ser mejorado de
dos formas diferentes: por heurstica, y utilizando
potentes mtodos de optimizacin [2].

Figura 4.2. a) Sin entrenamiento. b) Resultado de 10000
iteraciones. ( +: funcin por aproximar. --: funcin
aproximada )
Entre las principales variantes tenemos:
* Aprendizaje con Momento: reemplazar en la funcin
newff el string traingd por traingdm.
* 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.
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
40
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.
( )
)
To
1
Tt
1
(
e Ro Rt

=
Donde:
Rt: es la resistencia de salida
Ro: resistencia a la temperatura de referencia To
: constante del material
To: temperatura de referencia
>>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
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
41
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.

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

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



Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
42
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].
Entre las redes auto-organizativas ms utilizadas
encontramos la Red Competitiva, los Mapas de Auto-
organizacin (SOM) y la Red Learning Vector
Quantization (LVQ) [2].
5.2 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
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
43
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.
( )

=
=
1 j
2
j , i j i
w x d
Donde:
x
j
: es el componente j-simo del vector de
entrada X.
i: representa la i-esima neurona de la red.














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]).
i i i
j , i j i j , i j , i
y * ) k 1 ( b * k b
) w x ( * y * w w
+ =
+ =

B
Sx1

W
SxR

1
Entrada Capa Competitiva
Y =compet( -dist( W, X ) +B )
X
Rx1

+
C
Y
Sx1

V
Sx1

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
44
Donde:
: Coeficiente de aprendizaje que decrece de 1 a
0 conforme aumenta el nmero de iteraciones.
y
i
: representa la salida de la neurona
vencedora.
k : constante para bias (default =0.999).
4. Retornar al paso 2.
5.3 Ejemplo Prctico con la Red Competitiva
A continuacin se muestran cinco vectores con dos
elementos cada uno. Asimismo, existen dos pares de
vectores muy parecidos entre s.
>>X =[ 3 4 -8 4 -7
2 -1 7 3 8 ];
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.
>>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
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
45
>>Yc =vec2ind(Y)
Yc =
1 3 2 1 2
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.
>>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

Figura 5.2. Representacin en el plano de vectores de entrada
+ y vectores de pesos o.
Verificando el primer vector de entrada con toda la matriz
de pesos y bias entrenado:
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
46
>>a =-dist( W , X( :,1 ) );
>>y =full( compet( a , B ) )
y =
1
0
0
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].






Figura 5.3. Estructura de una Red Neuronal LVQ [2]
A continuacin, la regla de aprendizaje de la red LVQ
W
1C

S1xR

Entrada Capa Competitiva Capa Lineal
Y
1C
=compet( -dist(W
1C
, X) ) Y
2C
=purelin(W
2C
* Y
1C
)
X
Rx1

C
Y
2C
S2x1

V
2C
S2x1

W
2C

S2xS1

V
1C
S1x1
Y
1C
S1x1

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
47
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 W
2C
, para obtener la
salida final Y
2C
, la cual tiene solamente un elemento
diferente de cero.
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.













Figura 5.4. Red Neuronal LVQ
5.5 Ejemplo Prctico con la Red LVQ
x
1



x
2

Sub-Clases


Clases


Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
48
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 -3 4 -2 2.5 3.2 -1.8
2.1 1 4 3 3 3.2 2.4 3 ];
Se utiliza un vector de salida deseada para la segunda
capa (indicando las dos clases existentes), la cual
determinar la salida deseada.
>>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.
>>PORC =[ 50 50 ] / 100;
>>net =newlvq( minmax( X ) , 4 , PORC );
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.
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
49
>>Y =sim( net , X ); % simulacin de la red
>>Yc =vec2ind( Y );
>>net.iw{1} % comprobacin
ans =
0.7182 2.4802
0.5350 2.4850
0.3956 2.5295
0.5000 2.5000
>>net.lw{2} %comprobacin
ans =
1 1 0 0
0 0 1 1
>>net.b
ans =
[]
[]
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 %cargamos imgenes del Matlab
>>I =double( tire ); %seleccionamos una de ellas
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
50
>>II =I( 1:64 , 1:64 ); %Imagen de 64 x 64 pixels
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
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.
>>W =net.iw{1}; % matriz de pesos 64 x 4
>>for i =1:1024
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
51
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')
La figura 5.5 muestra la imagen original y la imagen
reconstruida despus de la compresin con la red
competitiva.

Figura 5.5. Comparacin entre imagen original y reconstruida
La imagen original tiene un total de
KBytes 4
1024 x 8
8 x 64 x 64
=
,
mientras que la codificada o reconstruida tiene
KBytes 75 . 0
1024 x 8
6 x 1024
=
.
Esto explica que en la imagen reconstruida se ha
utilizado 6 bits ( log
2
(64 neuronas) ) por cada vector de
entrada
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
52
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.








Figura 6.1. Estructura de una red Hopfield [2].
6.2 Regla de Aprendizaje
La red de Hopfield no tiene una regla de
aprendizaje, por lo tanto no existe entrenamiento.
B
Sx1

W
SxR

1
Cond. Iniciales Capa Lineal Saturada
Y =satlins( W * X +B )
X
Rx1

+
Y
Sx1

V
Sx1

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
53
Sin embargo, es posible obtener la matriz de
pesos a partir de un procedimiento apoyado en la
funcin de alta ganancia de Lyapunov [3].
y b Wy y
2
1
) y ( V
T T
=
( ) 0 B , X * X W
n
1 i
T
i i
= =

=

Donde:
W, B: matriz de pesos y vector de bias
X: vector de entrada
y: vector de salida de la red
b: vector de ganancias
n: nmero de padrones de entrada
V(y): funcin Lyapunov
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 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 ; 1 ] ;
>>X2 =[ 1 ; -1 ; -1 ; -1 ; 1 ; -1 ] ;
>>X3 =[ -1 ; 1 ; 1 ; 1 ; -1 ; 1 ] ;
>>X4 =[ -1 ; 1 ; 1 ; -1 ; 1 ; -1 ] ;
>>X =[ X1 X2 X3 X4 ] ;
>>net =newhop( X );
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
54
>>W =net.LW{1 }; %matriz de pesos (ver figura 6.2)
>>B =net.b{1 }; %vector de bias



Figura 6.2. Estructura de la red Hopfield del ejemplo
prctico.
Seguidamente,, se verifica el reconocimiento de los dos
ltimos vectores X3 y X4.
>>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
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
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
55
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 de Dgitos
Impares con Hopfield
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
>>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
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
56
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.
>>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


Figura 6.4. Cuarto dgito impar con ruido

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
57
7. Red Neuronal Radial Basis Function
7.1 Definicin y Caractersticas
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.

Figura 7.1. Estructura de una Red Neuronal RBF
7.2 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
Entrada Capa Radial Basis Capa Lineal
Y
1C
=radbasis( dist(W
1C
, X),B
1C
) Y
2C
=purelin(W
2C
* Y
1C
, B
2C
)
X
Rx1

Y
2C
S2x1

V
2C
S2x1
V
1C
S1x1

Y
1C
S1x1

W
1C
S1xR
B
1C
S1x1
W
2C
S2xS1
B
2C
S2x1
+
+
1 1
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
58
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
Finalmente, los tamaos y contenidos de las matrices de
pesos y bias de esta red neuronal resultan ser:
>>net.iw{1} % pesos de la primera capa
>>net.lw{2} % pesos de la segunda capa
>>net.b{1} % bias de la primera capa
>>net.b{2} % bias de la segunda capa
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.
7.3 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.
>>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 );
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
59
>>plot( n , x , * ), gris % Ver figura 7.3

Figura 7.2. Red Neuronal RBF

Figura 7.3. Grfico de 100 muestras de la seal temporal
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
x
1



x
2

1ra Capa


2da Capa

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
60
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; % vector con 10 muestras
>>nntwarn off % para ocultar advertencias
>>B =delaysig( A , 5 ); % crea 6 retardos en el vector A
B =
1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
0 0 1 2 3 4 5 6 7 8
0 0 0 1 2 3 4 5 6 7
0 0 0 0 1 2 3 4 5 6
0 0 0 0 0 1 2 3 4 5
>>nntwarn off % evita mensajes de advertencia
>>X =delaysig( x , 5 ); % 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
Para verificar el desempeo de la red, se procede a
ingresar de la muestra 13ava a la 18ava, para predecir la
19ava.
>>X1 =fliplr( x( 13:18 ) ) ; % giramos la entrada
>>Y =sim( net , X1 );
>>[ Y x(19) ]
ans =
-1.6251 -1.6251
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
61
Lo mismo, con las muestras 94ava a 99ava para predecir
la 100ava
>>X2 =fliplr( x( 94:99 ) ) ; % giramos la entrada
>>Y =sim( net , X2 );
>>[ Y x(100) ]
ans =
0.1011 0.1011
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.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
Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
62

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

Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
63
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







Simulacin de Redes Neuronales con Matlab

Mg. Pedro Freddy Huaman Navarrete
64

También podría gustarte