Modelos, Control y Sistema de Visión

Central     Modelos     Control     Visión     Aplicaciones     Mapa del sitio     Publicaciones     Sobre el autor      
Red neuronal dedicada
 
Las redes neuronales dedicadas pueden considerarse como un tipo de sistema jerárquico, donde una capa de neuronas en el primero es equivalentes a un núcleo estimador del segundo.
 
Para crear una red neuronal dedicada se debe definir:
1.- Las entradas y salidas del sistema.
2.- Una capa por cada grupo o fuente de variables de entrada.
3.- La capa(s) de salida(s), considerando que al menos una debe coincidir con la salida conocida.
4.- La relación entre capas, considerando retrasos entre las capas intermedias.
5.- Funciones de activación, método de validación, mecanismo de entrenamiento, inicialización de
     parámetros, etc.; descritos en los pasos para obtener un modelo.
 
Supóngase que se desea diseñar una red dedicada para el problema de las tres plantas expuesto en sistema jerárquicos. A continuación se muestra el sistema jerárquico y una posible red dedicada
 

 

Sistema jerárquico

Red neuronal dedicada

 
Un programa en Matlab que permite la solución de la red propuesta se muestra a continuación
 

% Define una red a medida o dedicada

redjerarquica=network;

 

% Fuentes de entrada (3, 1 por planta)

redjerarquica.numInputs=3;

 

% Número de capas de la red

redjerarquica.numLayers=4;

 

% Presencia de ganancia en cada capa (solo en capa 1)

redjerarquica.biasConnect=[1; 0; 0; 0];

 

% Relación entre fuentes de entrada y capas

% Fuerza la definición de IW{3,3}, por lo que

% habrá que definir IW{3,1}, IW{3,2}

redjerarquica.inputConnect=[1 0 0; 0 1 0; 0 0 1; 0 0 0];

 

% Relación entre capas (4x4)

%La fila representa la capa que se define

%Las columnas las salidas de capas que constituyen entradas

redjerarquica.layerConnect=[0 0 0 0; 1 0 0 0; 1 1 0 0; 0 0 1 1];

 

% Define capas que serán salidas (obligada salida conocida (target))

redjerarquica.outputConnect=[0 0 0 1];

 

% Se define en cada fuente de entrada su número de variables y su intervalo (minmax)

% Fuentes de entrada 1

redjerarquica.inputs{1}.range=[0 1; 0 1; 0 1; 0 1; 0 1; 0 1];

% Fuentes de entrada 2

redjerarquica.inputs{2}.range=[-1 1; -1 1; -1 1; -1 1; -1 1];

% Fuente de entrada 3

redjerarquica.inputs{3}.range=[-1 1; -1 1; -1 1; -1 1];

 

% Se define el número de neuronas, función de activación y parámetros y ganancia en cada capa

% Verificar con: >>redjerarquica.layers{capa} y >>redjerarquica.outputs{4}

% Capa 1

redjerarquica.layers{1}.size=4;

redjerarquica.layers{1}.transferFcn='tansig';

redjerarquica.layers{1}.initFcn='initnw';

% Capa 2

redjerarquica.layers{2}.size=3;

redjerarquica.layers{2}.transferFcn='logsig';

redjerarquica.layers{2}.initFcn='initnw';

% Capa 3

redjerarquica.layers{3}.size=2;

redjerarquica.layers{3}.transferFcn='tansig';

redjerarquica.layers{3}.initFcn='initnw';

% Capa 4

redjerarquica.layers{4}.size=2;

redjerarquica.layers{4}.transferFcn='purelin';

redjerarquica.layers{4}.initFcn='initnw';

 

%Definición de valores retrasados en las capas

%(k-1)

redjerarquica.layerWeights{2,1}.delays = 1;

redjerarquica.layerWeights{3,1}.delays = 1;

redjerarquica.layerWeights{3,2}.delays = 1;

%(k-1),(k-2)

redjerarquica.layerWeights{4,4}.delays = [1 2];

 

% Otras propiedades

% Define condiciones iniciales a 'initnw' previamente definidos

% Después de ejecutado este comando se debe comprobar si el

% tamaño de las matrices de pesos de entrada >>redjerarquica.IW{i,j)

% y las matrices de pesos de capas intermedias >>redjerarquica.LW{i,j)

% son las que se desean

redjerarquica.initFcn='initlay';

 

% Método de entrenamiento y criterio de validación

redjerarquica.performFcn='mse';

redjerarquica.trainFcn='trainscg';

 

% Inicializa la red

redjerarquica=init(redjerarquica);

 

% Se definen vectores de entrada-salida

P1=rand(6,100);

P2=rand(5,100);

P3=rand(4,100);

P={P1; P2; P3};

T={rand(2,100)};

 

% Simula la red

Y=sim(redjerarquica, P);

plot(Y{1,1}');

 

% Se entrena la red

redjerarquica=train(redjerarquica, P, T);

 

% Se simula la red (con mismos datos)

sal=sim(redjerarquica, P);

 

% Se visualiza

figure;

plot(sal{1,1}');

hold on;

plot(Y{1,1}','.-');

 

La red creada y entrenada es de la forma que se muestra a continuación

>>view(redjerarquica)

Referencias:

 

Mathworks, Inc.:"Neural Networks Toolbox". 2008.