除了在深度学习模型前后端与优化阶段结合物理信息,直接使用物理信息修改深度学习模型结构能直接影响模型对物理机制的学习效果。合理运用理论知识可以很大程度上指导模型的结构设计,如Warren McCulloch基于大脑神经元信息交换传输的原理,提出了最早的人工神经网络;而由大脑记忆与遗忘机制启发的LSTM 网络,则改进了传统循环神经网络。
物理引导结构设计的主要思想是根据特定的物理知识修改模型的结构,从而保证模型本身在一定程度上反映物理知识。物理引导的模型结构有多种设计思路,如信息嵌入及结构定制等。
1)信息嵌入
信息嵌入指将物理信息以神经元节点、数据流等形式嵌入深度学习模型中,直接使物理信息在深度学习前向传播中耦合,强化模型输出与物理信息指导的相关性。
有学者基于LSTM网络预测时间序列的湖泊温度,在LSTM 数据流外额外添加湖泊能量数据流以结合物理信息,两路数据流共同影响最终输出的湖泊温度数据。其中湖泊能量数据流以模型输出的湖泊水温、气温、气压及湖泊气候环境变量等为输入变量,结合能量守恒公式计算湖泊系统能量净变化量,指导模型的最终输出在一定程度上符合能量守恒定律。融合模型相比于传统RNN 模型与基于物理的模型在湖泊温度预测的RMSE 方面分别实现了最高0.5℃与1.5℃的提升。在预训练任务中,这种融合模型还展现了平均0.5℃的精度优势,证明了其优异的泛化性能。
有学者基于RNN 构建模型以精确模拟高山流域径流对气候变化的响应,其中神经元的连接是通过系统动力学的显式离散表示来指定的(如描述土壤水分运动、融雪等的物理方程)。受Stefan 方程启发从序列中忘记、记忆和输出信息,使输出变量具有物理意义,成功地将物理可解释性和一致性与深度学习的强大学习能力结合,模型对日、月、年流量模拟的纳什-萨特克利夫效率系数均接近0.9。
因此将物理信息嵌入到深度学习模型架构中,可以增强模型对复杂问题的建模能力。这样不仅可以利用深度学习模型强大的非线性拟合能力来更全面地捕捉复杂系统的动态行为,还能指导模型更准确地预测关键变量,并确保输出更加符合物理定律。然而,这种方法可能会使模型参数变得更加复杂,优化过程更为困难,需要精细的超参数调整,致使训练和推理过程中计算成本的增加。此外,嵌入的物理信息的准确性至关重要,因为不准确的物理信息会导致预测偏差。信息嵌入的优势依赖于高质量且多样化的物理信息。
2)结构定制
以特定物理知识为灵感定制模型结构可抽象地结构化反映物理信息。
有学者使用基于图结构的LSTM 网络研究河网的流量与温度变化,将图神经网络与LSTM 网络结合,以真实河网的连接关系为图神经网络建立邻接矩阵,将河流流量数据添加到网络节点中,约束河流流量数值关系符合现实河道拓扑结构;同时以能量守恒定律约束河流水温,从多方面将物理信息立体结合入网络模型中在温度和流量预测的RMSE方面;
有学者采用物理引导的图卷积神经网络用于最优潮流计算,聚合局部邻域特征构建物理引导图卷积来提取拓补特征和物理关系,以使神经网络中的特征传播遵循物理定律。进一步,由于物理引导项的引入使得模型学习了通用的结构动力学物理规律,模型具有对包含部分未知物理关系的结构动力系统进行建模的能力。
因此,通过在结构上直接反映物理信息,可以使训练和优化过程更贴近真实的物理系统,从而为各种应用带来显著的优势。这种方法不仅大幅提升了模型效率,还增强了模型对复杂现象的可解释性,为处理复杂的科学和工程问题提供了一个可靠的工具,特别是在需要精确模拟物理现象的场景中展现出巨大的潜力。然而,在实施结构定制时,选择何种结构来反映物理信息以优化模型性能并无统一标准,这在实践中带来一定的不确定性。通常需要根据具体问题和场景特别定制模型结构,牺牲模型泛化性以提高其鲁棒性。尽管这种方法在优化模型性能上取得了进展,但关于结构定制的实用指南仍相对有限,因此模型结构的设计在很大程度上还是依赖于工程直觉和试错方法。总而言之,物理引导的结构设计方法紧密结合了物理信息,基于物理指导的模型结构切实参与了模型的计算与优化,通过观察物理信息数据流,研究者可以直观地研究理论引导项对模型的影响,有助于对模型机理的解释。由于不同领域拥有多样的物理定律或领域经验知识,每项不同领域的研究都对应着独特的定制模型,多样且复杂的物理信息导致构建模型的经验难以继承,因此,广泛的将物理定律映射到模型结构上仍具有挑战性。
学术咨询:
担任《Mechanical System and Signal Processing》《中国电机工程学报》等期刊审稿专家,擅长领域:信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测。
维纳滤波器及在信号降噪中的应用(MATLAB)
% 1. Wiener filter clear all; clc; % Data Construction load('idealECG.mat'); yi = idealECG; % ideal ECG signal M = length(yi); % Length of the signal Fs = 500; % sampling frequency(Hz) t = (0:M-1)/Fs; % Time vector for the signal SNR = 10; rng(0); n_wg = awgn(yi, SNR, 'measured') - yi; % white Gaussian noise n_50 = 0.2 * sin(2 * pi * 50 * t); % 50Hz noise n = n_wg + n_50; % Total noise x = yi + n; % Primary input signal % Plot the constructed signals figure(1); subplot(4,1,1); plot(t(1:500), yi(1:500)); title('Ideal ECG Signal yi(n)'); xlabel('Time (s)'); ylabel('Amplitude');
完整代码可通过学术咨询获得: