Está en la página 1de 26

2

Universidad Nacional Experimental del Táchira


Departamento de Ingeniería Electrónica
Núcleo de Instrumentación y Control
Cátedra: Redes Neuronales y Lógica Difusa

MatLab y Redes Neuronales

Mayo 2007
3

Para crear, usar, importar y exportar datos y redes


neuronales en Matlab se utiliza la interfaz gráfica de
usuario llamada “nntool”. Al tipiar nntool en el
Workspace del Matlab se abre una ventana Network/Data
Manager la cual permite realizar las funciones antes
señaladas.
En la figura 1, se presenta el Network/Data Manager
(Entrenador de Datos y Redes).

Figura1. Network/Data Manager


(Entrenador de Datos y Redes).

A continuación se describen cada una de las partes


que componen el entrenador de datos y redes.
Inputs: Almacena la (s) matriz (es) que utilizará la red
como entradas bien sea para entrenamiento, prueba o
funcionamiento.
4

Targets: Almacena la (s) matriz (es) que utilizará la red


como salidas bien sea para entrenamiento, o
reentrenamiento.
Input Delay States: Estados de retardos de las entradas,
por defecto son cero.
Networks: Espacio para construir las redes.
Output: Son las salidas generada por la red al ser
entrenada, evaluada o simulada.
Errors: Genera un vector de los errores ocurridos durante
el entrenamiento de la red.
Layer Delay States: Estados de retardos de las capas de
salidas, por defecto son cero.
La sección Networks and Data permite acceder a
algunas de las secciones anteriores, haciendo click en el
espacio en blanco de la sección (Input, Targets, Input
Delay Status, Networks) y luego hacer clik en el botón

(nuevos datos) o (nueva red), según


sea el caso. Las secciones Ouput, Errors, Layer Delay
States, sólo son visualizadas ya que son salidas de la
red.

El comando visualiza a los datos o redes que


se seleccionen al hacer clic sobre ellas.
La seccion Networks and Data se utiliza únicamente
para cuando se crean datos y redes, además de acceder a
las visualizaciones de las variables asociadas a la red.
Los comandos Import y Export, permiten importar y
exportar datos y redes que hayan sido almacenadas (en el
caso de Import) o que se quieran almacenar (en el caso de
Export).

La sección Networks only es de exclusivo uso para el


manejo global de la red. En este cuadro encontramos los
5

comandos para inicializar, simular, entrenar y adaptar la


red que se haya creado. Para el manejo de los conceptos
anteriores procedemos a presentar un ejemplo
Ejemplo:
Haciendo clic sobre Input en la parte de abajo

(espacio en blanco), presione ahora el comando


se abrirá la siguiente ventana (figura 2):

Figura 2

En esta ventana name es el campo correspondiente al


nombre de la variable, y a la derecha se encuentra Data
Type, donde se elige el tipo de dato al cual pertenece la
variable: si son entradas (Input), objetivos (Targets),
estados de retardo de la entrada (Input Delay States) y
así con cada una de los otros tipos de datos que deseemos
crear.
En el campo value se escribe la matriz con los
valores de la variable y luego se hace clic sobre el

botón para crearla.

El procedimiento expuesto anteriormente se debe


seguir en general para las variables que sean datos. Para
6

crear nuevas redes, una vez seleccionado el espacio en


blanco debajo del cuadro Networks, debe hacerse clic en

. Entonces aparecerá el siguiente cuadro (figura


3):

Figura 3.

En donde:
Network Name: Es el nombre de la red.
Network Type: Es el tipo de red, por ejemplo: perceptrón,
backpropagation, mapas de kohonen, Adaline entre otros.
Inputs ranges: valores máximos y mínimos de las entradas,
es decir, el rango de la variable.
Training function: Función de entrenamiento.
Adaption learning function: Función de aprendizaje para
adaptación.
Performance function: Función de desempeño de la red.
Number of layer: Numero de capas
Properties for layer n°: Propiedades para la capa numero
(se especifica el número de la capa):
Numbers of neuron: Numero de neurona para la capa
seleccionada
Transfer function: Función de transferencia para las
neuronas de la capa seleccionada.
7

Supongamos que se desea entrenar una red para


implementar la función lógica XOR para cuatro variables,
con una ligera modificación para fines didácticos, la
salida de la función XOR tomará con dos variables, las
cuales tendrán el mismo valor.
Se construirá una tabla donde estén organizados los
patrones de entrada y los patrones de salida.

Patrones de Entradas Patrones de salidas


A B C D X Y
0 0 0 0 0 0
0 0 0 1 1 1
0 0 1 0 1 1
0 0 1 1 0 0
0 1 0 0 1 1
0 1 0 1 0 0
0 1 1 0 0 0
0 1 1 1 1 1
1 0 0 0 1 1
1 0 0 1 0 0
1 0 1 0 0 0
1 0 1 1 1 1
1 1 0 0 0 0
1 1 0 1 1 1
1 1 1 0 1 1
1 1 1 1 0 0

Tabla 1

Se comenzará por realizar las matrices de los


patrones de entradas y salidas, tomando en cuenta que en
Matlab las filas de esas matrices están definidas por el
número de variables que existan. En este ejemplo la
8

matriz de entrada tendrá cuatro (4) filas


correspondientes a las cuatro (4) variables y sus
columnas quedarán definidas por la cantidad de patrones,
es decir, tendremos matrices con dimensiones NxP, donde N
representa el número de variables y P el número de
patrones. En nuestro caso es una matriz (4x16). En Matlab
la matriz de entrada será:
Matriz de entrada = [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1; 0 0
0 0 1 1 1 1 0 0 0 0 1 1 1 1; 0 0 1 1 0 0 1 1 0 0 1 1 0 0
1 1; 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1];
Matriz de entrada =
P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16  Patrones

A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Se plantea ahora la matriz de Objetivos o salidas
deseadas:
Matriz Objetivos = [0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0; 0 1
1 0 1 0 0 1 1 0 0 1 0 1 1 0]
Matriz Objetivos =
P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16  Patrones

X 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
Y 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
Finalmente se diseñará la estructura que tendrá la
red. Para este ejemplo se utilizará una red multicapa con
las siguientes especificaciones:
2 capas ocultas o intermedias: la primera con 5 neuronas
y la segunda con 3 neuronas.
La función de transferencia de la primera y segunda
capa será del tipo sigmoidal (en matlab corresponde a
logsig)
9

La capa de salida: tendrá tantas neuronas como


variables de salidas se tengan; para el ejemplo nuestro
son 2 neuronas. Su función de transferencia será una del
tipo lineal (en matlab corresponde a purelin).
La arquitectura de la red será la siguiente:

Red Multicapa

Fig. 4

Una vez diseñada la arquitectura de la red, se


procederá a introducirse en Matlab al igual que los
patrones de entrada y las salidas deseadas.
El primer paso será acceder al Network/Data manager
(Entrenador de datos y redes), haciendo clic sobre el
icono de Matlab usted entrará al panel principal
abriéndose la siguiente ventana (Figura 5):
10

Figura 5

En esta ventana debe hacer clic en View y seleccionar


Launch Pad, tal como se muestra en la siguiente figura:

Figura 6

Al hacer clic en Launch Pad , a través de la barra


buscar y abrir Neural Network Toolbox (Caja de
herramientas de Redes Neurales), tal y como se muestra
abajo en la figura 7 :
11

Figura 7
Al hacer doble clic sobre NNTool, se desplegará la
ventana del entrenador de red:

Figura 8

Haciendo clic en el botón , introducimos el


nombre MatrizEntrada con sus correspondientes valores tal
y como se muestra abajo en la figura 9:
12

Figura 9
Una vez introducidos los datos se selecciona el tipo
de dato, Inputs (entradas), luego se hace clic sobre la

opción y el Network/Data manager aparecerá de


esta forma:

Figura 10
Si desea observar si realmente la variable
MatrizEntrada almacenó los valores introducidos,
13

selecciónela con el ratón, y luego debe hacer clic sobre

la opción como se muestra abajo en la figura 11:

Figura 11
Desplegándose así la siguiente ventana:

Figura 12
De la misma manera se procede para introducir la
Matriz_Objetivo. Al finalizar, la vista es la siguiente:
14

Figura 13
A continuación se procederá con la creación de la

red. Haciendo clic sobre el botón se desplegará


la siguiente ventana:

Figura 14
en donde se realizará el vaciado de las especificaciones
de la red. El nombre de la red será Red_XOR, los rangos
de entrada pueden ser tomados automáticamente al
seleccionar en Get from input (Obtener de la entrada) la
matriz_Entrada, en Number of layers se colocará 3 y
procederemos a colocar las especificaciones para cada
capa en Properties for: N° de capa, en las siguientes
15

figuras se muestran los pasos a seguir para la


configuración de la red:
Paso 1

Figura 15
produciéndose el siguiente cambio en Input ranges

Figura 16
Como se explicó en párrafos anteriores, Input ranges
toma los valores máximos y mínimos de las variables de
entrada, en este caso debe existir 4 rangos ya que se
tienen cuatro variables de entrada (A,B,C,D). El comando
Get from input realiza una inspección sobre la matriz de
entrada por cada fila a fin de determinar los valores
máximos y mínimos de las variables de entrada.
16

Paso 2
Asignando las propiedades para cada capa

Figura 17

Figura 18

Haciendo clic en la opción la red será creada y


volverá al menú principal:
17

Figura 19
de donde seleccionando la red neural Red_XOR y haciendo

clic en la opción se mostrará la red diseñada.


Este despliegue se habilita para redes con pocas capas
ocultas,

Figura 20
18

en donde en la figura 20, se pueden apreciar las tres


(3) capas creadas con el número de neuronas de cada capa
y su correspondiente función de transferencia, además de
aparecer las matrices de pesos con su vector de umbrales
(LW{},b{}), y el número de variables de entradas
señaladas por el bloque en negro:
IW{1,1}= Input Weight= Corresponde a la matriz de los
pesos que asocian las entradas con la primera capa
oculta. Contendrá 20 elementos.
b{1}=bias= Corresponde al vector de umbrales de la capa
1, en el cual existirán tantos umbrales como neuronas
hayan en la capa 1, en nuestro caso el vector de umbrales
b{1} tendrá 5 elementos.
LW{2,1}=Layer Weights= Corresponde a la matriz de pesos
que asocia las salidas de la capa 1 con las entradas a la
capa 2. Contendrá 15 elementos.
b{2}=bias= Corresponde al vector de umbrales de la capa
2, para nuestro caso éste vector tendrá tres (3)
elementos.
LW{3,2}= Corresponde a la matriz de pesos que asocia las
salidas de la capa 2 con las entradas de la capa 3 o de
salida. Contendrá 6 elementos.
b{3}= Corresponde al vector umbrales de la capa 3, en
nuestro caso éste vector tendrá 2 elementos.
Más adelante se verá la forma de acceder a cada
matriz de pesos y los vectores umbrales.

Entrenamiento de la red
El proceso de entrenamiento consiste en lograr que la red
aprenda mediante la escogencia de los parámetros de
entrenamiento que permitan un aprendizaje óptimo. Algunos
de estos parámetros de entrenamiento son: número de
iteraciones, taza o rata de aprendizaje, valor mínimo del
19

gradiente, número máximo de fallas permitido, error


mínimo aceptable; los parámetros variarán ligeramente
según el método o algoritmo que se utilice en el
entrenamiento de la red.

Siguiendo con el ejemplo, se entrará en la fase de


entrenamiento. En el entrenador de red existe en la parte
inferior el cuadro Networks only, en ese cuadro aparecen
las funciones que podemos realizar con la red creada:
Initialize (inicializar), Simulate (simular), Train
(entrenar), Adapt (adaptar). Antes de proseguir su
aplicación en Matlab, se explicará cada una de ellas.

Initialize: Inicializa rangos de entradas y los pesos


entre capas en forma manual o automáticamente (en forma
aleatoria).
Simulate: Se genera una matriz de salida, con su
correspondiente vector de error, para una matriz de
entrada suministrada.
Train: Se introducen las matrices que contienen el par de
patrones entrada-salida. Además se introducen los valores
de los parámetros de entrenamientos.
Adapt: Permite el reentrenamiento de la red, al
suministrar un nuevo par de patrones entrada-salida.

Otra forma de visualizar éstas funciones es seleccionar

la red y hacer clic sobre la opción , lo que


permitirá que se despliegue la siguiente ventana:
20

Fig. 21
En la parte superior de la ventana (figura 21), se
observan las funciones descritas anteriormente, con un
opción adicional Weights, ésta opción es la que permite
visualizar las matrices de pesos y los vectores umbrales.
Para desplegar cada una de éstas funciones se debe hacer
clic sobre la función a la que se quiere acceder.
A continuación se explicará cada una de ellas:
Función Initialize

Fig. 22
21

Input Ranges: Permite editar los rangos de las variables


de entradas, y se introducen haciendo clic en Set Ranges.
Una forma adicional de obtener los rangos es hacer clic
en
Get from input y seleccionar la matriz que contenga los
patrones de entrada, siempre y cuando en dicha matriz se
encuentren los valores máximos y mínimos de las variables
de entrada.
Revert Ranges: Revierte el vector que contiene los
rangos de las variables de entrada a un vector de rangos
anterior.
Revert Weights: Actúa de la misma forma que Revert
Ranges, pero sobre las matrices de pesos y vectores de
umbrales.
Initialize Weights: Inicializa de forma aleatoria las
matrices de pesos y los vectores umbrales.
Función Simulate

Fig. 23
En la ventana de arriba tenemos a Simulation Data (Datos
de la simulación):
Inputs: Entradas a la red a ser simuladas.
22

Init. input Delay States: Estado de retardos iniciales a


la entrada. Esta opción aparece desactivada ya que, no se
colocaron retardos para la matriz entrada.
Init. Layer Delay States: Estado de retardos iniciales
para las capas de la red. Esta opción se encuentra
desactivada debido a que no se introdujeron en el
entrenador retardos iniciales para las capas.
Supply Targets: Suministrar objetivos. Si se habilita
esta casilla se calculará un vector de error que se
almacenará en Errors., y a la derecha Simulation Results
(Resultados de la simulación):
Outputs: Salidas generadas por la red, se le asigna un
nombre a en la casilla adjunta, la cual contendrá las
salidas de la red.
Final input Delay States: Estado de retardos finales a la
entrada. Esta opción aparece desactivada ya que, no se
colocaron retardos iniciales para las entradas.
Final Layer Delay States: Estado de retardos finales para
las capas de la red. Esta opción se encuentra desactivada
debido a que no se introdujeron en el entrenador retardos
iniciales para las capas.

Función Train
23

Fig. 24
El submenú Training Info contiene a la izquierda Training
Data (Datos de entrenamiento), en el cual se suministran
los patrones de entrada-objetivo (Inputs-Targets); y a la
derecha Training Results (Resultados del entrenamiento),
en este cuadro se almacenan las salidas de la red,
además de el error de la misma durante el entrenamiento.

Fig. 25

En este submenú (figura 25) de Training Parameters


(Parámetros de entrenamiento) aparecen algunos parámetros
de entrenamiento para la red, a continuación se
especifican:
Epochs: Corresponde al número de iteraciones
Goal: El error máximo permitido
Max_fail: Corresponde al numero máximo de fallas
permitido
Min_grad: Corresponde al valor mínimo del gradiente
24

Mu: Corresponde al valor asociado a la taza de


aprendizaje final
Mu_inc: Corresponde al valor de incremento del mu durante
el entrenamiento
Mu_dec: Corresponde al valor de decremento del mu durante
el entrenamiento
Mu_max: Corresponde al valor máximo que puede alcanzar el
mu.
Show: Intervalo de visualización de los resultados
Time: Máximo tiempo de entrenamiento en segundos.

Fig. 26
En éste submenú (figura 26) Optional Info , presenta un
cuadro para validación de los datos y otro para prueba de
datos, al marcar las casillas se habilitan estas
opciones.

Una vez que se haya configurado la función para el


entrenamiento de la red, y la red comience su
entrenamiento aparecerá la curva de error versus
iteraciones, tal como se muestra en la figura 27:
25

Fig. 27
Función adaptar

Fig. 28
Se proporcionan los nuevos patrones de entrada en Inputs
y los nuevos objetivos en Targets (Figura 28). El cuadro
Adapt results presenta los resultados de la adaptación.
26

En el submenú Adaption Parameters se coloca el número de


pasos a realizar para la adaptación.
Función Weights
En la ventana de abajo se muestra la opción que permite
la visualización de los matrices y vectores umbrales que
son generados en la red. Como se explico anteriormente la
matriz de pesos IW corresponde a la matriz de pesos que
une los nodos de entrada con la primera capa oculta, y
las matrices del tipo LW corresponde a las matrices de
pesos entre capas; los vectores que aparecen
identificada con la letra b{i}, corresponde a los
vectores con los umbrales de activación por capa.

Fig. 29

En esta pagina se termina la explicación de cómo


usar la herramienta de redes neurales de Matlab, sólo
para redes multicapas del tipo feedforward.
27

Para ayuda de las funciones de entrenamiento ver


archivo anexo en formato pdf contenido en la carpeta
redes neurales.