Вы находитесь на странице: 1из 29

Simulación redes neuronales

Simulación de la Neural Network con Matlab


FLOW DIAGRAM

Inicio y crear un
objeto de la red

Entrenar la red

Comparar resultados
de la salida de la red
al entrenar y validar
SIMULACIÓN DE LA NEURAL NETWORK CON MATLAB
newff
• Define la red, arquitectura, tamaño y tipo de entrenamiento usado.
Se inicia autoamáticamente.
Las dos últimas letras en newff indica el tipo de red neuronal usada:
realimentación directa
APLICACIÓN
• Considere la función humps en Matlab, dado por:

• Encontrar una red neuronal de los datos generados por la función humps
entre [0,2].
a) Implementar una red perceptron multicapa, diferentes tamaños de red y
algoritmos.
b) Repita la aplicación con las redes de funciones de base radial
SIMULACIÓN DE LA NEURAL NETWORK CON MATLAB
Solución
Para obtener datos use los siguientes comandos
• x = 0:.05:2;
• y=humps(x);
• P=x;
• T=y;
• % Plot the data
• plot(P,T,’x’)
• grid;
• xlabel(’time (s)’);
• ylabel(’output’);
• title(’humps function’)
FUNCIÓN HUMPS
ALGORITMOS DE ENSEÑANZA PARA REDES PERCEPTRÓN

Multicapa tienen la siguiente estructura :

a. Inicializar la red neuronal:

-parámetros , pesos, sesgos.

-con su propia cuenta o utilizando rutinas de inicialización .

- Definir la estructura de la red.

b. Definir los parámetros asociados con el algoritmo

-como objetivo error.

- máximo número de iteraciones.

c. Llamar al algoritmo de enseñanza.


• % DESIGN THE NETWORK
• % ==================
• %First try a simple one – feedforward (multilayer perceptron) network

• net=newff(P,T,5, {'tansig‘ 'purelin'},'traingd');

• % Here newff defines feedforward network architecture.


• % The first argument [0 2] defines the range of the input and initializes the
network parameters.
• % The second argument the structure of the network. There are two layers.
• % 5 is the number of the nodes in the first hidden layer.
• % 1 is the number of nodes in the output layer.
• % Next the activation functions in the layers are defined.
• % In the first hidden layer there are 5 tansig functions.
• % In the output layer there is 1 linear function.
• % ‘learngd’ defines the basic learning scheme – gradient method
• % Define learning parameters
• net.trainParam.show = 50; % The result is shown at every 50th iteration (epoch)
• net.trainParam.lr = 0.05; % Learning rate used in some gradient schemes
• net.trainParam.epochs =1000; % Max number of iterations
• net.trainParam.goal = 1e-3; % Error tolerance; stopping criterion

• %Train network

• net1 = train(net, P, T); % Iterates gradient type of loop


• % Resulting network is strored in net1

• TRAINGD, Epoch 0/1000, MSE 765.048/0.001, Gradient 69.9945/1e-010


• ….
• TRAINGD, Epoch 1000/1000, MSE 28.8037/0.001, Gradient 33.0933/1e-010
• TRAINGD, Maximum epoch reached, performance goal was not met.

El objetivo está aún muy lejos después de 1000 iteraciones (épocas ) .


OBSERVACIÓN 1:
• No se puede observar exactamente los mismos números

• o el mismo rendimiento.

• Es que newff utiliza generador de números aleatorios

• En la creación de los valores iniciales de los pesos de la red.

• Por lo tanto la red inicial será diferente

• Incluso cuando se utilizan exactamente los mismos comandos

• La convergencia se muestra a continuación .


OBSERVACIÓN 1: convergencia
• Si se llevan a cabo más iteraciones

• Ninguna mejora está en el almacén .

• Comprobamos cómo la aproximación de redes neuronales se parece.

• % Simulate how good a result is achieved: Input is the same input vector P.

• % Output is the output of the neural network, which should be compared


with output data

• a= sim(net1,P);

• % Plot result and compare

• plot(P,a-T, P,T);

• grid;
% Aumentar el tamaño de la red : 20 nodos de la primera capa oculta .
• net=newff(P, T,20, {‘tansig’ ’purelin’},’traingd’);
% De lo contrario, aplicar los mismos parámetros del algoritmo e iniciar el
proceso de formación.
• net.trainParam.show = 50; % The result is shown at every 50th iteration
(epoch)
• net.trainParam.lr = 0.05; % Learning rate used in some gradient schemes
• net.trainParam.epochs =1000; % Max number of iterations
• net.trainParam.goal = 1e-3; % Error tolerance; stopping criterion
• %Train network
• net1 = train(net, P, T); % Iterates gradient type of loop
• TRAINGD, Epoch 1000/1000, MSE 0.299398/0.001, Gradient 0.0927619/1e-010
• TRAINGD, Maximum epoch reached, performance goal was not met.

El error de 0.001 no se alcanza, pero ha mejorado .


% Aumentar el tamaño de la red : 20 nodos de la primera capa oculta .
• De la curva de convergencia se deduce que se puede mejorar los parámetros
de la red al incrementar el número de iteraciones.
• El algoritmo backpropagation (gradiente ) es lento.
ALGORITMO DE ENTRENAMIENTO MÁS EFICIENTE
Levenberg - Marquardt - trainlm
• %Tamaño pequeño de la red - 10 nodos en la primera capa oculta .
• net=newff(P, T,10, {’tansig’ ’purelin’},’trainlm’);
• %Define parameters
• net.trainParam.show = 50;
• net.trainParam.lr = 0.05;
• net.trainParam.epochs =1000;
• net.trainParam.goal = 1e-3;
• %Train network
• net1 = train(net, P, T);
• TRAINLM, Epoch 0/1000, MSE 830.784/0.001, Gradient 1978.34/1e-010
• ….
• TRAINLM, Epoch 497/1000, MSE 0.000991445/0.001, Gradient 1.44764/1e-010
• TRAINLM, Performance goal met.
• La convergencia se muestra en el Gráfico
• El rendimiento es ahora de acuerdo con la especificación de la tolerancia.
• %Simulate result
• a= sim(net1,P);
• %Plot the result and the error
• plot(P,a-T,P,T)
• xlabel('Time (s)'); ylabel('Output of network and error'); title('Humps function')
• El algoritmo L-M es rápido y preferible método para propagación hacia
atrás .
• Depende de la inicialización del algoritmo converge más lento o más
rápido.
• Cuando la función es bastante plano, entonces la red percepción multicapa
tiene problemas .
Simular con datos independientes.
• x1=0:0.01:2;

• P1=x1;

• y1=humps(x1);

• T1=y1;

• a1= sim(net1,P1);

• plot(P1,a-a1,P1,T1,P,T)
Generar datos con modelo de SIMULINK

• Al utilizar bloques de espacio de trabajo


• Seleccione Matriz Guardar formato .
• Abierto el bloque espacio de trabajo
• Elegir Matrix en el menú y haga clic en Aceptar.
• De esta manera los datos están disponibles en el costado de comandos.
Generar datos con modelo de SIMULINK

• Los parámetros de simulación se eligen del menú de simulación, el método


de paso fijo, tamaño de paso = 0,2 .
• Observe el comienzo y los tiempos de parada.
• SIMULINK se usa para generar datos fácilmente.
Generar datos con modelo de SIMULINK
SOLUCIÓN:
Definir los vectores de datos de entrada y de salida para las redes neuronales.
• P=x;T=nonlin;
• plot(P,T,’+’)
• title(’Nonlinear mapping’);
• xlabel(’Input Vector P’);
• ylabel(’Output vector T’);
• grid;
• gi=input(’Strike any key ...’);
• % LEVENBERG-MARQUARDT:
• net=newff(P, T,20, {’tansig’ ‘purelin’},’trainlm’);
• %Define parameters
• net.trainParam.show = 50;
• net.trainParam.lr = 0.05;
• net.trainParam.epochs = 500;
• net.trainParam.goal = 1e-3;
• %Train network
• net1 = train(net, P, T);
• TRAINLM, Epoch 0/500, MSE 15.6185/0.001, Gradient 628.19/1e-010
• TRAINLM, Epoch 3/500, MSE 0.000352872/0.001, Gradient 0.0423767/1e-
010
• TRAINLM, Performance goal met.
• La figura muestra la convergencia, se ha alcanzado el objetivo de error.
• El resultado de la aproximación por la red perceptrón multicapa se
muestra junto con el error.
• a=sim(net1,P);
• plot(P,a,P,a-T,P,T)
• xlabel(‘Input x’);ylabel(‘Output y’);title(‘Nonlinear function f(x)’)
Resolver el problema híbrido en SIMULINK .
• Pasar de los comandos a Simulink use comando gensim.
• Esto transferirá la información de la red neuronal para Simulink y genera
automáticamente un archivo SIMULINK con el bloque de red neuronal.
• El segundo argumento se utiliza para definir el tiempo de muestreo.
• Para el muestreo continuo el valor es -1 .

• gensim(net1,-1)
Si abre el bloque de
red neuronal , se ver
más detalles.

Abra la capa 1 .
Se ve el e diagrama de
bloques de Neural
Network
Toolbox .
En el ejemplo,
bloque retrasos
es el mapa de la
unidad,
no hay retrasos en uso.
Abre el bloque de peso,
la cifra que aparece se
muestra a continuación.
El número de nodos
reducido a 5, de modo
que se adapte a la figura
en la página, en el
ejemplo tenemos 20 .
El bloque generado con gensim realmente se aproxima a los datos dados,
se alimentamos en los valores de x en el intervalo [ 5,5 ] .

Utilice la siguiente configuración SIMULINK .

Вам также может понравиться