Modelado de sistemas no lineales de la red neuronal BP (implementación de Matlab)

 Obtenga el código completo de este blog:

Estudios de casos de MATLAB Neural Network 43-Libros MATLAB y Simulink

1Antecedentes del caso

        En las aplicaciones de ingeniería, a menudo nos encontramos con algunos sistemas no lineales complejos, cuyas ecuaciones de estado son complejas y difíciles de modelar con precisión mediante métodos matemáticos. En este caso, se puede establecer una red neuronal BP para expresar estos sistemas no lineales. El método considera el sistema desconocido como una caja negra, primero usa los datos de entrada y salida del sistema para entrenar la red neuronal BP para que la red pueda expresar la función desconocida y luego usa la red neuronal BP entrenada para predecir la salida del sistema.
        La función no lineal incluida en este capítulo es

        La imagen de esta función se muestra en la Figura 2-1:

Figura 2-1 Imagen de función

2 Establecimiento del modelo

        El proceso del algoritmo de ajuste de funciones no lineal basado en la red neuronal BP se puede dividir en tres pasos: construcción de la red neuronal BP, entrenamiento de la red neuronal BP y predicción de la red neuronal BP, como se muestra en la Figura 2-2.


        La construcción de la red neuronal BP determina la estructura de la red neuronal BP en función de las características de la función no lineal ajustada. Dado que la función no lineal tiene dos parámetros de entrada y un parámetro de salida, la estructura de la red neuronal BP es 2--5-1, es decir, la La capa de entrada tiene 2. Hay 5 nodos en la capa oculta y 1 nodo en la capa de salida.
        El entrenamiento de redes neuronales BP utiliza datos de entrada y salida de funciones no lineales para entrenar la red neuronal, de modo que la red entrenada pueda predecir la salida de la función no lineal. Se obtuvieron aleatoriamente 2000 conjuntos de datos de entrada y salida de la función no lineal, se seleccionaron aleatoriamente 1900 conjuntos como datos de entrenamiento para el entrenamiento de la red y se utilizaron 100 conjuntos como datos de prueba para probar el rendimiento de ajuste de la red.
        La predicción de la red neuronal utiliza la función de predicción de la red entrenada para generar y se analizan los resultados de la predicción.

3 implementación de MATLAB

        Según la teoría de la red neuronal BP, la programación del software MATLAB se utiliza para implementar el algoritmo de ajuste no lineal basado en la red neuronal BP.

3.1 Función de caja de herramientas de red neuronal BP

        El software MATLAB incluye MATLAB Neural Network Toolbox. Se basa en la teoría de redes neuronales artificiales y utiliza el lenguaje MATLAB para construir la mayoría de las subrutinas involucradas en la teoría, como operaciones de fórmulas, operaciones matriciales y resolución de ecuaciones para el diseño y entrenamiento de redes neuronales. Los usuarios solo necesitan llamar a las subrutinas relevantes según sus necesidades para completar una serie de tareas que incluyen el diseño de la estructura de la red, la inicialización del peso, el entrenamiento de la red y la salida de resultados, etc., eliminando la molestia de escribir programas enormes y complejos. En la actualidad, la caja de herramientas de redes neuronales de MATLAB incluye perceptrones, redes lineales, redes neuronales BP, redes de base radial, redes autoorganizadas y redes de regresión. La red neuronal BP utiliza principalmente tres funciones de red neuronal: newff, sim y train, cada función se explica a continuación.

3.1.1 newff: Función de configuración de parámetros de la red neuronal BP Función: Construir una red neuronal BP.

Forma de función:

net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)P: matriz de datos de entrada.
T: Matriz de datos de salida. S: Número de nodos de capa ocultos.
TF: función de transferencia de nodo, incluida la función de transferencia de limitación estricta hardlim, función de transferencia de limitación estricta simétrica hardlims, función de transferencia lineal purelin, función de transferencia sigmoidea tangente tansig, función de transferencia sigmoidea logarítmica logsig BTF: función de entrenamiento, incluida la función de entrenamiento del algoritmo BP de descenso de
gradiente , función de entrenamiento del algoritmo BP de descenso de gradiente traingdm para la propagación hacia atrás del impulso, función de entrenamiento del algoritmo BP de descenso de gradiente traingda para la tasa de aprendizaje adaptativo dinámico, función de entrenamiento del algoritmo BP de descenso de gradiente traingdx para la propagación hacia atrás del impulso y la tasa de aprendizaje adaptativo dinámico Función de entrenamiento del algoritmo BP de Levenberg_Marquardt trainlm.
BLF: función de aprendizaje en red, que incluye reglas de aprendizaje de BP learngd y reglas de aprendizaje de BP learngdm con elementos de impulso.

PF: Función de análisis de rendimiento, incluida la función de análisis de rendimiento del error absoluto medio mae y la función de análisis de rendimiento del error cuadrático medio mse.

IPF: función de procesamiento de entrada.
OPF: Función de procesamiento de salida.
DDF: función de partición de datos de verificación.
Generalmente, los primeros 6 parámetros se configuran durante el uso y los últimos 4 parámetros adoptan los parámetros predeterminados del sistema.

3.1.2.train: función de entrenamiento de la red neuronal BP

Función: utilice datos de entrenamiento para entrenar la red neuronal BP.
Forma de función: [net,tr] =train(NET,X,T,Pi,Ai)NET: La red a entrenar.
X: Matriz de datos de entrada.

T: Matriz de datos de salida.
Pi: inicializa las condiciones de la capa de entrada.

Ai: inicializa las condiciones de la capa de salida.

net: red entrenada.

tr: Registro del proceso de formación.
Generalmente, los primeros tres parámetros se configuran durante el uso y los dos últimos adoptan los parámetros predeterminados del sistema.

3.1.3.sim: función de predicción de la red neuronal BP

Función de función: utilice la red neuronal BP entrenada para predecir la salida de la función.

Forma de función: y=sim(net,x)
net: red entrenada.
x: datos de entrada.
y: datos de predicción de la red.

3.1.4 Código matlab completo

        Primero, obtenga aleatoriamente 2000 conjuntos de datos de entrada y salida de la función de acuerdo con la ecuación de la función no lineal y almacene los datos en el archivo data.mat. La entrada son los datos de entrada de la función y la salida son los datos de salida de la función. Se seleccionan aleatoriamente 1900 conjuntos de datos de los datos de entrada y salida como datos de entrenamiento de la red, se utilizan 100 conjuntos de datos como datos de prueba de la red y se normalizan los datos de entrenamiento.

        En segundo lugar, utilice los datos de entrenamiento para entrenar la red neuronal BP para que la red tenga la capacidad de predecir la salida de funciones no lineales.

        Finalmente, utilice la red neuronal BP entrenada para predecir la salida de la función no lineal y prediga la salida y la salida esperada a través de la red neuronal.

Analizar la capacidad de adaptación de la red neuronal BP.
%% 该代码为基于BP神经网络的预测算法
%% 清空环境变量
clc
clear

%% 训练数据预测数据提取及归一化
%下载输入输出数据
load data input output

%从1到2000间随机排序
k=rand(1,2000);
[m,n]=sort(k);

%找出训练数据和预测数据
input_train=input(n(1:1900),:)';
output_train=output(n(1:1900));
input_test=input(n(1901:2000),:)';
output_test=output(n(1901:2000));

%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);

%% BP网络训练
% %初始化网络结构
net=newff(inputn,outputn,5);

net.trainParam.epochs=100;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004;

%网络训练
net=train(net,inputn,outputn);

%% BP网络预测
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
 
%网络预测输出
an=sim(net,inputn_test);
 
%网络输出反归一化
BPoutput=mapminmax('reverse',an,outputps);

%% 结果分析

figure(1)
plot(BPoutput,':og')
hold on
plot(output_test,'-*');
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
%预测误差
error=BPoutput-output_test;


figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)

figure(3)
plot((output_test-BPoutput)./BPoutput,'-*');
title('神经网络预测误差百分比')

errorsum=sum(abs(error));

4Análisis de resultados

        Utilice la red neuronal BP entrenada para predecir la salida de la función. Los resultados de la predicción, el error entre la salida de predicción de la red neuronal BP y la salida esperada se muestran en la siguiente figura .

        Como se puede ver en la figura anterior, aunque la red neuronal BP tiene una alta capacidad de ajuste, los resultados de la predicción de la red todavía tienen ciertos errores y los errores de predicción de algunos puntos de muestra son grandes. En los siguientes casos, se discutirá el algoritmo de optimización de la red neuronal BP para obtener mejores resultados de predicción.

5 extensiones de caso

5.1 Red neuronal BP de múltiples capas ocultas

        La red neuronal BP consta de una capa de entrada, una capa oculta y una capa de salida. La capa oculta se puede dividir en una sola capa oculta y en varias capas ocultas según el número de capas. La capa oculta múltiple consta de varias capas ocultas únicas. En comparación con la capa oculta única, la capa oculta múltiple tiene una gran capacidad de generalización y una alta precisión de predicción, pero el tiempo de entrenamiento es más largo. La elección del número de capas ocultas debe considerarse de manera integral en términos de precisión de la red y tiempo de entrenamiento. Para relaciones de mapeo más simples, cuando la precisión de la red cumple con los requisitos, puede elegir una sola capa oculta para acelerar el proceso; para mapeos complejos , relación, puede elegir múltiples capas ocultas para mejorar la precisión de la predicción de la red.
        La función newff en la caja de herramientas de redes neuronales MATLAB puede construir fácilmente una red neuronal BP que contiene múltiples capas ocultas. Su función de llamada es la siguiente:

net = newff(inputn,outputn,[5,5]);
        Compare el rendimiento de la red neuronal BP de capa oculta única y la red neuronal BP de capa oculta doble en términos de tiempo de ejecución y precisión de predicción. La estructura de la red es la misma, las iteraciones de entrenamiento son 100 veces y se compara el promedio de los 10 resultados de predicción. Los resultados de la comparación son los siguientes, enumerados en la Tabla 2-1.

 

        Se puede ver en la Tabla 2-1 que, en comparación con la red neuronal BP de una sola capa oculta, la precisión de la predicción de la red neuronal BP de doble capa oculta mejora, pero aumenta el tiempo de ejecución.

5.2 Número de nodos de capa ocultos

        Al construir una red neuronal BP, se debe prestar atención a la selección del número de nodos en la capa oculta. Si el número de nodos en la capa oculta es demasiado pequeño, la red neuronal BP no puede establecer relaciones de mapeo complejas y la predicción de la red el error será grande. Sin embargo, si hay demasiados nodos, el tiempo de aprendizaje de la red aumentará y puede ocurrir el fenómeno de "sobreajuste", es decir, la predicción de la muestra de entrenamiento es precisa, pero el error de predicción de otras muestras es mayor. Los errores de predicción de la red neuronal BP con diferentes números de nodos de capa oculta se enumeran en la Tabla 2-2.

        Dado que la función no lineal ajustada en este caso es relativamente simple, el error de predicción de la red neuronal BP continúa disminuyendo a medida que aumenta el número de nodos. Sin embargo, para problemas complejos, el error de predicción de la red generalmente muestra una tendencia de primero disminuir y luego aumentar a medida que El número de nodos aumenta.

5.3 Impacto de los datos de entrenamiento en la precisión de la predicción

        La precisión de la predicción de la red neuronal está estrechamente relacionada con la cantidad de datos de entrenamiento. Especialmente para una red con múltiples entradas y múltiples salidas, si faltan suficientes datos de entrenamiento de la red, el valor de predicción de la red puede tener grandes errores.
        Una vez, el autor hizo un ejemplo de predicción de red neuronal BP, que predijo los resultados experimentales estableciendo una red neuronal BP de 4 entradas y 5 salidas. Los datos de entrenamiento de la red provienen de experimentos reales. Debido a la complejidad del proceso experimental, solo se obtuvieron 84 conjuntos de datos. Se seleccionaron 80 conjuntos de datos como datos de entrenamiento de la red neuronal de BP y los 4 conjuntos de datos restantes se utilizaron como prueba. datos Los resultados de predicción de la red neuronal BP después del entrenamiento son los siguientes: se enumeran en la Tabla 2-3.
        Como se puede ver en la Tabla 2-3, debido a la falta de datos de entrenamiento, la red neuronal de BP no se ha entrenado completamente y el error entre el valor predicho y el valor esperado de la red neuronal de BP es grande.
        Una vez, el autor resolvió un problema de predicción similar. El propósito de este problema era construir la salida del sistema de predicción de una red neuronal BP de 4 entradas y 4 salidas. Los datos de entrenamiento provienen de los resultados de la simulación del modelo. Dado que el modelo se puede simular mediante software, se obtienen múltiples conjuntos de datos y se seleccionan 1500 conjuntos de datos para entrenar la red. Finalmente, el valor de predicción de la red es relativamente cercano al valor esperado.

5.4 Función de transferencia de nodo

La función newff en la caja de herramientas de redes neuronales MATLAB proporciona varias funciones de transferencia de nodos, incluidas principalmente las tres siguientes.

        Cuando la estructura, los pesos y los umbrales de la red son los mismos, la relación entre el error de predicción de la red neuronal BP, el error cuadrático medio y la función de transferencia de nodos de la capa de salida es la que se enumera en la Tabla 2-4.

        Se puede ver en la Tabla 2-4 que la selección de funciones de capa oculta y capa de salida tiene un gran impacto en la precisión de la predicción de la red neuronal BP. Generalmente, la función de transferencia de nodos de la capa oculta usa la función logsig o la función tansig, y la función de transferencia de nodos de la capa de salida usa la función tansig o purelin.

5.5 Limitaciones del montaje de redes

        Aunque la red neuronal BP tiene una buena capacidad de ajuste, su capacidad de ajuste no es absoluta. Para algunos sistemas complejos, los resultados de predicción de la red neuronal BP tendrán grandes errores. Por ejemplo, para

        Su gráfico de funciones se muestra en la Figura 2-6.

        Seleccione aleatoriamente 2000 conjuntos de datos de entrada y salida de esta función, tome 1900 conjuntos de datos de ellos para entrenar la red y 100 conjuntos de datos para probar la capacidad de ajuste de la red. Se utiliza una red neuronal BP de una sola capa oculta, con una estructura de red de 2-5-1. Después de 100 entrenamientos de red, se genera la función de predicción. Los resultados de la predicción se muestran en la Figura 2-7. Como puede verse en la Figura 2-7, para sistemas no lineales complejos, el error de predicción de la red neuronal BP es relativamente grande. Este ejemplo ilustra las limitaciones de la capacidad de adaptación de la red neuronal BP.

Supongo que te gusta

Origin blog.csdn.net/weixin_44209907/article/details/131787697
Recomendado
Clasificación