2. 中国空气动力研究与发展中心 空气动力学国家重点实验室,绵阳 621000
2. State Key Laboratory of Aerodynamics of China Aerodynamics Research and Development Center, Mianyang 621000, China
数值模拟技术可以替代部分风洞试验建立相应流场的数学模型,在降低实验成本的基础上更便捷地预测流场结果,相应的对数值模型的可信度也有一定的要求。
数值模型中涉及了一系列参数,有的由观测仪器间接计算或直接获得,有的无法测量只能通过经验推导估计。为了提高数学模型可信度使其能正确再现流场变化,有必要结合流场实测数据对参数进行辨识,目前工程上普遍采用优化算法。
优化算法通过建立目标函数表示数值模型的输出与实测数据之间的距离,查找目标函数极小时数值模型中的参数组合,实现参数辨识。水文预报领域中陆续引入了遗传算法[1-3]、下坡单纯形法[4]、粒子群算法[5-6];气动力领域中广泛应用了最大似然法[7]。由于最大似然法依赖目标函数梯度以及参数初值的选取,有一定的局限性,张天姣等[8]也将粒子群算法引入到气动力领域中求解参数辨识问题。优化算法在求解过程中需要对目标函数或目标函数梯度进行大量迭代计算,而目标函数中又包含了流场复杂的数值模型,因此参数辨识过程十分耗时。
随着深度学习的发展,数值模拟与神经网络技术的结合逐渐成为一项研究热点,尤其是在气动力建模领域之中。Miyanawala等[9]通过卷积神经网络(Convolutional Neural Networks,CNN)对气动载荷实现准确预测。陈海等[10]利用CNN和翼型图像建立气动模型。王超等[11]基于参数辨识数据利用人工神经网络建立气动模型。这些研究都表明深度学习应用在气动建模中的潜力。
鉴于上述研究背景,本文考虑用深度学习实现参数辨识,克服传统方法计算量大耗时长这一缺陷。提出利用CNN从数值模拟结果中提取状态时间序列和模型参数之间的映射关系,建立参数辨识模型,这种参数辨识模型可在实际应用中直接通过一段时间的实测数据对一系列数值模型参数进行快速估计。
1 Lorenz63混沌系统 1.1 数值模型本文使用Lorenz63对提出的参数辨识方案进行具体的实验和讨论。Lorenz63是Lorenz于1963年建立的一个简单的大气对流数学模型[12],是混沌系统最早的数值表示。混沌系统是指确定性系统中存在看似随机的不规则运动。混沌的特征在于不确定性,不可重复性和不可预测性。其模式控制方程由非线性系统给出,具体如下:
$\begin{array}{l} \dfrac{{{\rm{d}}x}}{{{\rm{d}}t}} = - \sigma x + \sigma y \\ \dfrac{{{\rm{d}}y}}{{{\rm{d}}t}} = \gamma x - y - xz \\ \dfrac{{{\rm{d}}z}}{{{\rm{d}}t}} = xy - \beta z \end{array} $ | (1) |
其中,
实验中采用龙格-库塔数值积分方法求解方程的解
我们使用三维空间表示Lorenz63系统的状态变化,每个维度对应每个状态变量的值,见图1。图1是Lorenz63在参数
本文讨论的是混沌模式下的Lorenz63系统,根据前人的总结,首先参数
我们可以看Lorenz63在
在该状态的Lorenz63系统状态变量会在刚开始的时间区间中不断震荡然后不断某个点趋近,最后稳定在不动点上。从左图中可以看到系统状态只会在最外圈呈现出蝴蝶吸引子,之后不断收缩到右边的不动点上。这样的物理状态一是和我们需要的混沌模式不一致,二是不符合训练数据的基本要求。我们需要的数据是一小段连续时间步的状态变量,用于输入到CNN中提取运动特征,如果我们输入上述结果的[60,61]之间的状态矢量,那么输入的数据在时间序列上实际是定值,对于神经网络来说,虽然输入的原始特征是一个二维矩阵,但其实只有三个特征值,要单从这三个特征中学习到隐藏的运动特征,并预测三个参数,十分困难,再加上状态变量
通过手动实验,我们基本可以确定好三个参数的范围:
$\begin{array}{l} 5.0 \leqslant \sigma \leqslant 15.0 \\ 1.1 \leqslant \beta \leqslant 8/3 \\ 24.0 \leqslant \gamma \leqslant 28.0 \end{array} $ | (2) |
在上述取值范围下,不同的参数组合还是会导致产生不动点的可能,因此我们对各种参数组合分别进行了Lorenz63数值实验,实验结果见表1,其中区间的选取是手动尝试结果。
本文的参数辨识模型可以依据多个连续时间步的实测系统状态逆推出流场数值模型的参数。因此,模型的输入数据是状态时间序列,输出数据是参数估计结果。我们用神经网络提取输入数据中的隐藏特征,构建参数和状态时间序列的映射关系。
2.1 状态时间序列输入首先向神经网络输入多个时间步的状态矢量,每个状态矢量含有多个状态变量,以Lorenz63系统的3个状态变量为例,假设输入5个时间步的数据,后文相同,因此有如下的数据格式,见图3。
输入数据是一个二维矩阵,类似一张单通道图像。矩阵上的行向量表示一个时刻的状态矢量,列向量表示特定状态变量的多个连续时刻的数值。我们将行向量和列向量上的数据分别称作横向数据和纵向数据。
从每条纵向数据上看,一条数据表示对应状态变量在该5个时间步下的数值。我们将数据输入到CNN中希望网络能够根据变量变化的趋势提取系统的运动特征。然而状态变量在不同时间区间上会在不同数值范围上变化,在不同初始场的驱动下也会有不一样的结果,因此纵向数据需要弱化数值对神经网络提取特征的影响,使其更关注仅仅在5个时间步下的数值变化趋势的特征。我们选择基于原始数据均值以及标准差的标准差标准化方法,对每个输入数据的每条纵向数据进行单独标准化,以X列数据为例,将原始值
$\begin{array}{l} {x_i}' = \dfrac{{{x_i} - \overline x + \delta }}{{s + \delta }} \\ \overline x = \dfrac{1}{5}\displaystyle\sum\limits_{i = t}^{t + 4} {{x_i}} \\ s = \sqrt {\dfrac{1}{5}\displaystyle\sum\limits_{i = t}^{t + 4} {({x_i} - } \overline x {)^2}} \end{array} $ | (3) |
其中,
纵向数据的标准化处理将每列状态变量进行单独处理,在数值上仅由单列数据决定。因此,从单条横向数据上看,每个位置上的状态变量在数值上有不同的取值范围,大小不相同。这些状态变量在神经网络中也被称为特征。这些特征如果不处理直接使用原始数据输入模型中,那么不同特征对模型训练过程将会产生不同程度的影响,梯度下降过程会更受某些数值大的特征的引导,忽略那些数值小的特征。因此我们需要使不同的特征具有相同的尺度,这样在训练神经网络的时候,不同特征对参数的影响程度就可达成一致。我们通过数据标准化以实现这个目的。同样采用标准差标准化方法,对横向数据进行由
$\begin{array}{l} {x_i}'' = \dfrac{{{x_i}' - \overline x + \delta }}{{s + \delta }} \\ \overline x = \dfrac{1}{3}({x_i}' + {y_i}' + {z_i}') \\ s = \sqrt {\dfrac{1}{3}[{{({x_i}' - \overline x )}^2} + {{({y_i}' - \overline y )}^2} + {{({z_i}' - \overline z )}^2}]} \end{array} $ | (4) |
最后将纵向和横向的结果相加,作为我们双向数据标准化的最终结果,输入到神经网络中去。
2.2 CNN结构我们的参数辨识模型输入的是经过上述双向标准化后的时间序列数据,数据格式见图3,输出的是参数估计的结果,格式为一维向量。由于输入数据格式类似于单通道图像,每个单元位置可以看作图像中的像素点,因此选择常被用作图像特征提取的CNN[13-14]。典型的CNN在输入层后由多个交替执行的卷积层、池化层和全连接层构成。故针对本文任务的模型图如图4所示。
1)卷积层
使用多个卷积层从原始特征中提取隐藏特征。由于系统状态变量之间不像图像像素,不单单是相近的像素点之间彼此有联系,头尾状态变量之间也由于物理模型的控制方程而存在着相互影响的制约关系,因此进行卷积运算时需要将对应横向数据上的所有状态变量包含在内。我们使用“一维卷积”(卷积完后的数据呈一维)进行卷积操作,沿着时间步移动来提取系统在当前时间区内的运动特征,见图5。
“一维卷积核”设置的维度大小和数据横向上的大小相同。其中,输入特征中圈出来的区域为局部感受野。因此“一维卷积”只需要在原始输入的多通道特征中垂直移动,提取更深层次的特征。
以第一个卷积层为例,输入特征只有一个通道,因此使用大小为3的卷积核执行卷积运算,通过垂直滑动获得3×1的特征图,第一个位置的特征值为:
$\left(\sum\nolimits_{j = 1}^3 {\sum\nolimits_{i = 1}^3 {{\omega _{ij}}{x_{p + i,j}}} } \right) + b$ | (5) |
其中,
2)池化层
池化层通过最大池化或平均池化等来减小输出维的大小,其主要目的是通过压缩卷积层的输出来简化网络的计算复杂性。每个卷积层之后可以跟随一个池化层,根据数据特征的维数大小适度添加。
3)全连接层
我们的任务是估计参数,即要输出一维向量,向量中每个数表示对应参数的值。因此我们需要将卷积操作输出的二维或三维数据展平,该操作由全连接层进行。直观来说,就是讲原本的三维矩阵展平重新排列变成一个全连接层的各个神经元。
4)输出层
在多个全连接层的映射之后输出参数预测结果。由于数值模型的每个参数有不同的物理意义和单位,由真实物理环境决定。因此,为了使得目标输出数据(也可称为标签)符合正态分布,在训练神经网络时,我们不仅要对输入数据进行双向标准化,标签也要进行标准化,采用同样的标准差标准化方式。假设为了得到这个参数辨识模型,生成了
$\begin{array}{l} {\sigma _i}' = \dfrac{{{\sigma _i} - \overline \sigma }}{s} \\ \overline \sigma = \dfrac{1}{a}\displaystyle\sum\limits_{i = 1}^a {{\sigma _i}} \\ s = \sqrt {\dfrac{1}{a}\displaystyle\sum\limits_{i = 1}^a {({\sigma _i} - } \overline \sigma {)^2}} \end{array} $ | (6) |
使用标准化后的数据作为标签训练网络,因此输出层的预测结果
${\sigma ^o} = {\sigma ^o} \times s + \overline \sigma $ | (7) |
构建好网络结构后采用反向传播方式对网络进行训练。
3 方法验证 3.1 CNN模型训练Lorenz63的CNN参数辨识模型训练过程由图6给出。
在进行数值实验时,多组实验的初始状态矢量均为
将数值实验生成的数据处理成模型需要的格式。比如一次实验中,设定初始特征图的维度为5×3,采用长度为5的滑动窗口将每次窗口内的5个时间步的状态变量合成一个二维矩阵,滑动步长为1。格式处理好后进行标准化操作,即准备好了模型训练需要的样本数据,进行网络的训练。
实验是在Nvidia Tesla P100 GPU上进行的,使用Keras框架搭建神经网络。本文的CNN模型包含三个卷积层,每个卷积层分别设置了大小为3的一维卷积核,padding方式选择了‘valid’(不在外圈补0);由于Lorenz63系统简单,维数不高,因此当输入时间步较少时可不添加池化层进行降维操作,如果输入时间步较大(如100,1000···),则适当添加池化层;之后,跟随着3个全连接层,神经元的激活函数选择了‘Relu’[15],
$f(x) = \max (0,x) = \left\{ {\begin{array}{*{20}{c}} {0,x \leqslant 0} \\ {x,x > 0} \end{array}} \right.$ | (8) |
损失函数为平均绝对误差(Mean Absolute Error,MAE),
${\rm{MAE}}({{\boldsymbol{P}}^o},{{\boldsymbol{P}}^{ta}}) = \frac{1}{3}\sum\limits_{i = 1}^3 {\left| {p_{_i}^o - p_{_i}^{ta}} \right|} $ | (9) |
其中,
我们将样本数据随机打乱,以避免时间序列的影响。取80%的数据作为训练集,余下的20%为测试集;batch的大小为512,表示每次取512条数据来计算损失函数的平均值,进行梯度下降的训练;epoch为100,表示最多进行100次重复训练,其中当损失函数降到最低时停止训练。
3.2 实验分析使用神经网络对系统参数进行估计的主要目的是减少参数辨识的计算量,缩短计算时间,但前提是要保证参数预测结果的准确度,必须在验证这种辨识方法的准确可行之后才能进一步讨论其对于效率的提升。
因此,实验结果主要关注准确度和时间两个方面。同时,为了更好的讨论本文方法的优劣,在进行上述实验的同时,还分别做了一些比较实验。
1)输入不同数量时间步的结果
在实验中我们尝试改变输入的时间序列数据的长度,查看了向CNN输入不同数量特征的结果,见表3。训练的超参数均与上一节实验设计的描述相同。
表中
首先从输入时间步为10、50、100的结果来看,可以得到一个初步结论:当输入时间步数量越多时,模型精度越高。这是由于向模型输入更多时间步的数据,等于使模型能得到更多原始特征,因此我们能认为这种结果是自然现象。
然而当输入时间步大于100之后,平均误差并没有如预期继续降低,保持在0.04不变。由此我们可以认为神经网络能从100个时间步的状态变量中提取到Lorenz63系统的运动特征,再向其输入更多的状态变量是没有必要的。
同时还需要注意一点,由于系统所处的物理场景经常是瞬息万变的,我们需要参数逆推模型能根据当前的系统状态变化来估计参数,如果输入过长时间区间的系统状态,则会导致参数估计不准确。因此不认为输入过多时间步的数量是好的选择。
结合以上,基于CNN-时间序列的参数辨识方法,在针对具体任务时需要综合考量以确定输入数据格式。针对Lorenz63实验,输入100时间步是较好的选择。
2)实验预测结果
用图7抽样展示实验结果,更直观的体现模型预测的准确度。图中[0,200]区间的参数为
由于实际问题中观测中存在噪声,因此向这两段状态变量数据添加标准差为对应量值的1%的噪声扰动,再次查看结果,见图8。结果表明,模型依旧能近似估计真实参数。
3)同类实验比较
有研究工作者也在进行通过神经网络估计Lorenz63模型参数的实验(
本课题进行了同类实验的对比分析。
该实验使用到的神经网络为多层感知机(Multi-layer Perceptron,MLP),输入数据为展平成一维向量的状态时间序列。本文对MLP的实验方案和模型进行了改进:采用我们CNN实验相同的数据,输入50/100个时间步的状态变量,输入层的神经元数量为150/300,添加了三个隐藏层,神经元数量分别为128/256、64/128、16/64,激活函数选择‘Relu’。结果见表4。
表中
4)与PSO参数辨识方法的时间比较
本文选用粒子群算法[17]也进行了实验,展示了基于神经网络的参数辨识在时间上带来的优势。
我们设置了粒子群法的惯性权值因子为0.8,学习因子c1、c2为2,群体大小为40,在合适范围内随机初始化,最后输入上一时间步的系统状态变量(数值模型输出)以及当前的实测值(添加了1%噪声扰动的状态变量),对目标函数进行全局最优化,最大迭代次数为200,并同时计算了10个结果取平均。
选用CNN-100与粒子群算法的结果进行比较,两个程序均运行在Inter(R) Core(TM) i5-6200U CPU上,结果见表5。
从准确度上看,两种方法都能估计出系统参数的近似解,传统的粒子群算法并没有更胜一筹。
从时间上看,我们的模型在通过逆推参数实现参数辨识的过程中只耗费了0.09 s(包括了对输入数据进行双向标准化并对输出数据进行还原的时间),比粒子群算法2.23 s少了96%。从该点上看,使用神经网络的参数辨识方法能够大大的缩短参数辨识过程的时间,从而使参数辨识工作能够更快的完成。
另外,神经网络模型在进行参数辨识之前需要耗费一定时间进行数据生成和网络学习,不过这些工作并不发生在参数辨识阶段,不会耽误原本工程的开展;且一旦构建好模型,便可以反复使用,无需在每次参数辨识时都进行神经网络训练。因此从整体上看,本文方法耗费的时间依旧较少。
4 结 论本文基于卷积神经网络对数值模拟的参数进行估计,结合双向数据标准化的方式提取系统变量在时间上的运动特征。通过Lorenz63混沌系统的验证,本文的参数辨识模型在具有高精度的同时,比粒子群参数辨识法的计算时间降低了96%。
总的来说,本文的研究可以节省参数辨识过程耗费的大量计算时间,实现快速估计参数的目标。
[1] |
WANG Q J. The genetic algorithm and its application to calibrating conceptual rainfall-runoff models[J]. Water Resources Research, 1991, 27(9): 2467-2471. DOI:10.1029/91WR01305 |
[2] |
CHENG C T, OU C P, CHAU K W. Combining a fuzzy optimal model with a genetic algorithm to solve multi-objective rainfall-runoff model calibration[J]. Journal of Hydrology, 2002, 268(1-4): 72-86. DOI:10.1016/S0022-1694(02)00122-1 |
[3] |
ZHOU Y J, CHEN Y F, DAN J J, et al. Parameter calibration of xin'anjiang model based on complex genetic algorithm[C]//Proceedings of the 2017 6th International Conference on Energy and Environmental Protection (ICEEP 2017), Zhuhai, China. Paris, France: Atlantis Press, 2017. doi: 10.2991/iceep-17.2017.218
|
[4] |
DUAN Q Y, SOROOSHIAN S, GUPTA V. Effective and efficient global optimization for conceptual rainfall-runoff models[J]. Water Resources Research, 1992, 28(4): 1015-1031. DOI:10.1029/91WR02985 |
[5] |
GILL M K, KAHEIL Y H, KHALIL A, et al. Multiobjective particle swarm optimization for parameter estimation in hydrology[J]. Water Resources Research, 2006, 42(7): W07417. DOI:10.1029/2005WR004528 |
[6] |
YANG Q D, WU J, LI Y Q, et al. Using the particle swarm optimization algorithm to calibrate the parameters relating to the turbulent flux in the surface layer in the source region of the Yellow River[J]. Agricultural and Forest Meteorology, 2017, 232: 606-622. DOI:10.1016/j.agrformet.2016.10.019 |
[7] |
王贵东, 崔尔杰, 陈则霖. 喷流控制飞行器气动参数辨识方法研究[J]. 空气动力学学报, 2011, 29(4): 433-438. WANG G D, CUI E J, CHEN Z L. Study on aerodynamic parameter identification method for aircraft with jet thruster control[J]. Acta Aerodynamica Sinica, 2011, 29(4): 433-438. DOI:10.3969/j.issn.0258-1825.2011.04.006 (in Chinese) |
[8] |
张天姣, 汪清, 何开锋. 粒子群算法在气动力参数辨识中的应用[J]. 空气动力学学报, 2010, 28(6): 633-638. ZHANG T J, WANG Q, HE K F. Application of particle swarm optimization for aerodynamic parameter estimation[J]. Acta Aerodynamica Sinica, 2010, 28(6): 633-638. DOI:10.3969/j.issn.0258-1825.2010.06.003 (in Chinese) |
[9] |
MIYANAWALA T P, JAIMAN R K. An efficient deep learning technique for the Navier-Stokes equations: application to unsteady wake flow dynamics[J]. arXiv preprint arXiv: 1710.09099, 2017.
|
[10] |
陈海, 钱炜祺, 何磊. 基于深度学习的翼型气动系数预测[J]. 空气动力学学报, 2018, 36(2): 294-299. CHEN H, QIAN W Q, HE L. Aerodynamic coefficient prediction of airfoils based on deep learning[J]. Acta Aerodynamica Sinica, 2018, 36(2): 294-299. DOI:10.7638/kqdlxxb-2017.0098 (in Chinese) |
[11] |
王超, 王贵东, 白鹏. 飞行仿真气动力数据机器学习建模方法[J]. 空气动力学学报, 2019, 37(3): 488-497. WANG C, WANG G D, BAI P. Machine learning method for aerodynamic modeling based on flight simulation data[J]. Acta Aerodynamica Sinica, 2019, 37(3): 488-497. DOI:10.7638/kqdlxxb-2019.0024 (in Chinese) |
[12] |
LORENZ E N. Deterministic nonperiodic flow[J]. Journal of the Atmospheric Sciences, 1963, 20(2): 130-141. DOI:10.1175/1520-0469(1963)020<0130:dnf>2.0.co;2 |
[13] |
GOODFELLOW I, BENGIO Y, COURVILLE A. Deep learning ,Vol. 1[M]. Cambridge: MIT press, 2016: 326-366.
|
[14] |
GU J X, WANG Z H, KUEN J, et al. Recent advances in convolutional neural networks[J]. Pattern Recognition, 2018, 77: 354-377. DOI:10.1016/j.patcog.2017.10.013 |
[15] |
Joint Photographic Experts Group committee. Digital compression and coding of continuous-tone still images: requirements and guidelines[S]. ISO/IEC, Feb. 1994: 10918-1.
|
[16] |
KINGMA D P, BA J L. A method for stochastic optimization[J]. arXiv preprint arXiv: 1412.6980, 2014.
|
[17] |
SHI Y, EBERHART R. A modified particle swarm optimizer[C]// 1998 IEEE International Conference on Evolutionary Computation Proceedings. IEEE World Congress on Computational Intelligence (Cat. No. 98TH8360), Anchorage, AK, USA. IEEE, 1998: 69-73. doi: 10.1109/ICEC.1998.699146
|