文章快速检索     高级检索
  空气动力学学报  2018, Vol. 36 Issue (2): 294-299  DOI: 10.7638/kqdlxxb-2017.0098

引用本文  

陈海, 钱炜祺, 何磊. 基于深度学习的翼型气动系数预测[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.

基金项目

国家自然科学基金(11532016);中国博士后科学基金项目(2015M582810)

作者简介

陈海(1981-), 男, 四川梓潼人, 讲师, 研究方向:深度学习, 先进控制.E-mail:chenhai@mail.nwpu.edu.cn

文章历史

收稿日期:2017-05-31
修订日期:2017-07-04
基于深度学习的翼型气动系数预测
陈海 , 钱炜祺 , 何磊     
中国空气动力研究与发展中心, 四川 绵阳 621000
摘要:提出了一种基于深度学习的翼型气动系数预测方法,有效克服了以往方法依赖翼型设计参数以及算法复杂度随预测精度的提高呈指数级增长等缺点。首先,介绍了卷积神经网络(CNN)的基本原理、网络机构以及训练方法,给出了训练样本数、批量大小、批次数量、迭代次数、循环次数的关系;其次,设计了针对翼型图像处理的CNN结构,随机选择6000个样本对该网络进行了训练;最后,对561个翼型的法向力系数进行了预测,并与部分参数法方法的预测结果进行了比较。仿真结果表明,提出的图形化预测方法具有很高的预测精度。
关键词深度学习    卷积神经网络    翼型    气动系数    预测    回归    
Aerodynamic coefficient prediction of airfoils based on deep learning
CHEN Hai , QIAN Weiqi , HE Lei     
China Aerodynamics Research and Development Center, Mianyang 621000, China
Abstract: To prevent the dependence of prediction methods on design parameters and the exponential increase of algorithm complexity with increasing prediction accuracy, an aerodynamic coefficient prediction method of airfoils based on deep learning is proposed. First, the fundamental theory, network structure and training method of Convolutional Neural Networks (CNN) are introduced. Then, according to the characteristics of airfoil image processing, the structure of CNN model is designed and the parameters are trained by 6000 random samples. Finally, the normal force coefficients of 561 airfoils are predicted and compared with those prediction of some other parameterization methods. The simulation results show that the proposed graphical prediction method has high prediction accuracy.
Keywords: deep learning    Convolutional Neural Networks(CNN)    airfoil    aerodynamic coefficient    prediction    regression    
0 引言

机翼气动系数的计算是翼型设计与研究的主要内容,对提高飞行性能具有重要意义。传统方法通过计算流体力学(Computational Fluid Dynamics,CFD)计算或风洞试验得到翼型气动系数,这一方法虽然被证明是有效的,但却存在计算量大和试验成本高等缺点。近年来,随着神经网络和机器学习技术的发展,一种以智能学习为基础的预测方法逐渐进入人们视野。这一方法以翼型设计参数和气动系数作为学习对象,通过神经网络或支持向量机(Support Vector Machine,SVM)建立预测模型,对未知翼型的气动系数进行预测,从而避免了大量的数值运算和试验。文献[1]以雷诺数、迎角、马赫数为建模设计输入,建立了BP神经网络预测模型,对二维翼型NACA63-215的升力系数和阻力系数进行了预测。文献[2]建立了RBF神经网络模型,用来预测在特定的振幅下,从波谷到波峰运动中,减缩频率范围1~5下任意一位移点的机翼升力系数和阻力系数。文献[3]和文献[4]将迎角、马赫数、雷诺数、翼型几何形状为设计输入,建立了神经网络模型,对翼型的气动系数进行预测。文献[5]将进化规划算法与支持向量回归算法相结合,用于预测具有不同几何参数的机翼在不同迎角情况下的升力、阻力和滚转力矩系数。以上方法为参数化学习方法,在建立预测模型和对翼型气动系数进行预测时均需要翼型的设计参数,如果设计参数过多,将给预测模型的建立带来困难。并且当翼型设计方法发生变化时,即翼型参数的种类和数量等发生变化时,已建立起来的预测模型将失效。同时,以上方法为浅层学习方法,其算法复杂度将随着样本数量和模型精度的提高呈指数级增长。

2006年以来,随着机器学习和大数据的发展,深度学习作为机器学习的一个分支,得到了广泛的认可和蓬勃的发展[6]。深度学习包含多种模型,主要有基于受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)[7]的深度信念网络(Deep Belief Network,DBN)[8]、基于自动编码器(Auto-Encoder,AE)的堆叠自动编码器(Stacked Auto-Encoders,SAE)[9]、卷积神经网络(Convolutional Neural Networks,CNN)[10]、递归神经网络(Recurrent Neural Networks,RNN)[11]等。将深度学习应用于翼型气动系数预测,建立图形化的预测模型,能够克服上述方法的不足,提高预测精度。在各种深度学习模型中,CNN能够直接将图像作为输入,并且能够通过卷积核有效提取图像中的特征,因此,特别适合翼型图像处理。

本文以翼型图像作为输入,建立CNN预测模型,对翼型特征进行提取与分类,最后通过回归分析预测翼型的气动系数。该方法为非参数化方法,不受翼型设计方法和设计参数的影响,在迎角、马赫数和雷诺数一定的情况下,只要给出翼型图像,就能够利用预测模型预测出翼型的气动系数。并且,借助于深度学习技术,能够有效解决由于训练层数和样本数的增大而带来的算法复杂度急剧增加的问题。

1 CNN基本原理

作为神经网络领域的一个重要研究分支,CNN每一层的特征都由上一层的局部区域通过共享权值的卷积核激励得到,即通过提取输入数据的局部特征,并逐层组合抽象生成高层特征,这类似于生物神经网络的图像识别过程。同时,CNN模型的容量可以通过改变网络的深度和广度来调整,能够有效降低网络模型的学习复杂度,具有更少的网络连接数和权值参数。因此,CNN在图像处理、语音识别、特征提取等领域得到了广泛的应用。

1.1 CNN的结构

图 1所示,一个典型的CNN模型由输入层、卷积层、池化层、全连接层和输出层组成,根据具体问题的不同,CNN可能会有多个卷积层和池化层交替出现,并含有多个全连接层。


图 1 CNN的典型结构 Figure 1 Typical structure of CNN

1) 数据输入层(Data Input Layer)。在做图像分析时,CNN的输入为原始图像X,如果是彩色图则为三维RGB矩阵数据,如果是灰度图则为一维矩阵数据。数据输入层还需要对图像数据进行归一化和去均值化的处理。

2) 卷积层(Convolutional Layer)。卷积层是CNN的核心组成部分,通过不同的卷积核,来获取图像的特征。卷积核相当于一个滤波器,不同的滤波器提取不同特征。

本文用Hi表示CNN第i层的特征图(Feature Maps)(H0=X)。Hi的产生过程可以通过以下公式表示[12]

$ {\mathit{\boldsymbol{H}}_i} = f({\mathit{\boldsymbol{H}}_{i - 1}} \otimes {\mathit{\boldsymbol{W}}_i} + {\mathit{\boldsymbol{b}}_i}) $ (1)

其中,Wi为第i层卷积核的权值向量,bi为第i层的偏置,f(x)为非线性激励函数,运算符“⊗”表示第i层卷积核与第i-1层图像或者特征图进行卷积操作。对于一个大小为m×n的特征图,用一个大小为a×b、步长为l的卷积核对其进行卷积操作,得到输出特征图的大小为$\frac{{(m - a + l)}}{l} \times \frac{{(n - b + l)}}{l}$,特征图数量取决于卷积核的数量。

传统CNN中的非线性激励函数通常采用sigmoid、tanh或softsign等饱和非线性函数[13],近几年多采用不饱和非线性函数ReLU(Rectified Linear Units)[14-15]。在训练时,ReLU可以通过简单的阈值化的激活来实现参数稀疏化,比传统的饱和非线性函数有更快的收敛速度[16],因此在训练整个网络时,训练速度也比传统的方法快。

3) 池化层(Pooling Layer)。CNN通过卷积层提取输入图像的特征后,就可以使用这些特征训练网络。但是实际上训练CNN面临的重要问题是庞大的计算量,特别是对于尺寸很大的图像,网络的训练速度会很慢。为了进一步减少运算数据量,降低网络训练时间,CNN采用了在卷积层后面连接一个池化层(又称下采样层或次采样层,Sub-sample Layer)的方式来减少数据量。池化的基本原理是根据图像相对不变性的属性,对图像相邻区域的特征信息进行聚合统计。

如果选择图像中的连续范围作为池化区域,同时只对相同的隐含神经元产生的卷积特征使用池化,则这些池化后的特征单元具有平移不变性。也就是说,即使原始图像中的物体产生了一个较小的平移,依然可以得到相同的池化特征[17]。即图像具有相对静态性的属性,图像在某一个区域的统计特性与相邻另外一个区域的统计特性是相似的。池化除了使卷积层提取的数据特征维度变小以外,同时还能在一定程度上降低网络的过拟合程度,改善网络性能[18]。对于一个大小为m×n的特征图,选择池化区域大小为a×b、步长为l,则经过池化后得到输出特征图的大小为$\frac{{(m - a + l)}}{l} \times \frac{{(n - b + l)}}{l}$,特征图数量和上一卷积层的特征图数量相等。

常用的池化方法有平均池化和最大池化等。平均池化即对池化区域内的像素值求平均;最大池化即对池化区域内的像素值求最大值。特征提取时,平均池化通过保留图像背景信息能减少因池化区域的受限造成估值方差而产生的误差,而最大池化可以通过保留图像纹理信息来减少卷积层参数误差造成的估计均值偏移而产生的误差[19]

4) 全连接层(Full Connected Layer)。全连接层由多个神经元组成。通过CNN逐层提取到的特征输出到全连接层,这样使得整个CNN可以采用梯度下降法等算法进行全局训练。

5) 输出层(Output Layer)。输出层用于样本的预测输出,根据输出模型的不同,可以用作回归分析,也可以用作图像分类等。

1.2 CNN的训练过程

CNN的训练过程如图 2所示。


图 2 CNN的训练过程 Figure 2 Training process of CNN

CNN的训练过程包括前向计算和误差反向传播两大步骤。前向计算主要是通过图像的卷积和池化操作实现图像特征的提取和映射,根据问题的不同可以进行多次卷积和池化操作,多次的提取过程能够从图像中提取到更多的有用信息;其次,将提取到的特征传递到全连接层,构建常规的神经网络模型;最后,通过输出层对数据信息进行变换和计算,得到预测结果。误差反向传播主要是将预测结果与期望结果进行对比得到的预测误差,通过梯度下降等算法进行反向传递,更新网络权值和偏置。在完成前向计算和误差反向传播后,如果未达结束条件,则继续上述步骤对CNN进行训练。CNN训练是否结束是通过对误差阈值或迭代次数的判断来实现的,本文使用后者作为结束条件。

一般情况下,CNN输入图像的训练样本数量都很大,通用的处理方式是通过设定批量大小(batch size),将输入样本分成若干批次(batch),分批将图像数据送入CNN进行训练,训练完成之后即进行误差反向传播和权值更新。输入一批样本完成训练称为一次循环(iteration),输入所有样本完成训练称为一次迭代(epoch)。设训练样本数为ntrain,批量大小为mbatch,一次迭代的批次数量为nbatch,完成CNN训练的循环总次数为niteration,迭代次数为nepoch,则它们之间的关系可用如下两式描述:

$ {n_{{\rm{batch}}}} = \frac{{{n_{{\rm{train}}}}}}{{{m_{{\rm{batch}}}}}} $ (2)
$ {n_{{\rm{iteration}}}} = {n_{{\rm{epoch}}}} \cdot {n_{{\rm{batch}}}} $ (3)

一般情况下,迭代次数越多,网络拟合能力越强,预测精度越高,但也需要耗费更多的时间。

本文建立基于CNN的图形化预测方法对翼型气动系数进行预测,并与参数化方法进行比较的流程如图 3所示。


图 3 翼型气动系数预测流程 Figure 3 Prediction flow of airfoil aerodynamic coefficients
2 翼型气动系数预测模型 2.1 翼型图像输入

本文为图形化预测方法,输入数据为翼型图像。由于翼型图像的横坐标和纵坐标相差一个数量级,因此将纵坐标(即翼型厚度)放大10倍后进行作图和计算,以减小训练模型的拟合误差。图 4随机给出了12个翼型图像及其法向力系数CN


图 4 12个翼型图像及法向力系数(翼型厚度放大10倍) Figure 4 12 images and normal force coefficients of airfoil (airfoil thickness magnification 10 times)

本文中用于仿真的翼型图像通过翼型函数生成,选取的基准翼型为NACA0012,型函数为Hicks-Henne[20-21]函数,型函数数目为4。气动力系数在迎角为2°、马赫数为0.4、雷诺数为6.5×106的条件下,采用自主研发的流体计算软件MBNS2D[22]计算得到。

2.2 CNN结构设计

本文设计的CNN结构如图 5所示。


图 5 设计的CNN结构 Figure 5 Designed structure of CNN

1) 输入层。输入层为翼型图像,其分辨率越高,建立的预测模型越准确,但建模时间和预测时间都会相应的增加,因此需要选择适中的分辨率。本文输入翼型图像选取为85×85像素的灰度图像,即85×85的二维矩阵,取值在0~255之间。

2) 卷积层1。大尺寸的卷积核可以带来更大的局部感受区域,但也意味着更多的参数,会使网络速度变慢;卷积核数量越多,能够描述的特征也越丰富,但计算量也会相应的增加,同时存在过拟合的风险。因此,需要选择适当的卷积核大小和卷积数量。本文根据输入图像的分辨率,选取卷积核大小为6×6,卷积核数量为40,步长为1。经过卷积响应和非线性激励函数ReLU运算后,得到40个分辨率为80×80的特征图。其中,ReLU函数的计算公式为:

$ f\left( x \right) = {\rm{max}}\left( {0, x} \right) $ (4)

其函数曲线如图 6所示。


图 6 ReLU激励函数曲线 Figure 6 Curve of activation function ReLU

3) 池化层1。池化区域越大,步长越长,意味着特征图分辨率的降幅越大,运算速度越快,但也会丢失更多的信息,存在欠拟合的风险。因此,需要选择适当的池化参数。本文选取池化区域大小为2×2,步长为2,即相邻池化区域不重叠。经过池化处理后,得到40个分辨率为40×40的特征图。

4) 卷积层2。选取卷积核大小为5×5,卷积核数量为80,步长为1。经过卷积响应和非线性激励函数ReLU运算后,得到80个分辨率为36×36的特征图。

5) 池化层2。选取池化区域大小为2×2,步长为2。经过池化处理后,得到80个分辨率为18×18的特征图。

6) 全连接层。全连接层的神经元个数取决于池化层2中特征图的分辨率及数量,本文设置一个全连接层,其神经元个数为25 920个。

7) 输出层。本文的输出层用作回归分析,对翼型的气动系数进行预测,其采用的激活函数为均方差(Mean Square Error,MSE):

$ MSE = E\left( \theta \right) = \sum\limits_{i = 1}^{{m_{{\rm{batch}}}}} {\frac{{{{({t_i}{\rm{ - }}{y_i})}^2}}}{{{m_{{\rm{batch}}}}}}} $ (5)

其中,ti是期望值,yi是预测值。

3 仿真分析 3.1 CNN模型训练

本文生成的翼型图像及其气动系数样本集总数为6561个。将这6561个样本的顺序打乱,随机选择6000个图像作为训练样本,将法向力系数作为其期望值,对CNN进行训练;剩下的561个翼型图像及其法向力系数作为测试样本,对CNN的预测能力进行测试。训练方法选择动量随机梯度下降法(StochNastic Gradient Descent with Momentum,SGDM)[23],动量参数设置为0.9;图像输入的批量大小设置为10,即每批输入10个翼型图像样本进行训练;迭代次数设置为30次;学习率设置为1×10-5;L2正则化参数设置为1×10-4;卷积核初始化权值设置为满足均值为0,标准差为0.01的高斯分布随机数,偏置初始化为0。

本文用于建模和仿真的计算机配置为:Intel Core i7-4470 3.7GHz CPU、16GB内存、NVIDIA Quadro K620显卡。通过以上训练参数,采用显卡GPU运算,建立CNN预测模型的时间大约为10分钟,比利用CPU建立预测模型的时间快大约20倍。训练过程中,每批样本的均方根误差(Root Mean Square Error,RMSE)随循环次数的变化曲线如图 7所示。其中,RMSE通过下式计算得到:

$ RMSE = \sqrt {\sum\limits_{i = 1}^{{m_{{\rm{batch}}}}} {\frac{{{{({t_i}{\rm{ - }}{y_i})}^2}}}{{{m_{{\rm{batch}}}}}}} } $ (6)

图 7 CNN训练过程中均方根误差变化曲线 Figure 7 RMSEs of CNN training process

为了便于观察,图 7中只给出了200次循环(即1/3次迭代)内的RMSE变化情况。从图中可以看出,经过200次循环后,RMSE已下降到0.01以下,并且还有继续下降的趋势。

3.2 CNN预测

CNN训练完成后,将561个测试翼型的图像输入CNN模型,即可得到其法向力系数,预测时间不到1 s。图 8为测试翼型法向力系数的预测值与期望值示意图。从图中可以看出,预测值与期望值几乎重合,预测精度非常高。


图 8 预测结果 Figure 8 Prediction results

图 9为测试翼型的法向力系数误差曲线。从图中可以看出,最大误差不超过1.25×10-3


图 9 预测误差曲线 Figure 9 Prediction errors

为了进一步验证本文提出的图形化方法,将该方法与线性回归、支持向量机等参数化方法进行了对比,其对比情况如表 1所示。

表 1 预测结果对比 Table 1 Comparison of prediction results

表 1中,RMSE为总的测试样本均方根误差,将式(9)中的mbatch更换为测试样本数ntest即可计算得到;EP为误差百分比,通过下式计算得到:

$ EP = \sum\limits_{i = 1}^{{n_{{\rm{test}}}}} {\frac{{\left| {{t_i}{\rm{ - }}{y_i}} \right|}}{{{t_i}{n_{{\rm{test}}}}}} \times 100\% } $ (7)

表 1中可以看出,参数化方法中效果最好的线性回归方法,其EPRMSE均大于本文提出的图形化方法,其他参数化方法的EPRMSE则更大。从而进一步说明了本文提出的图形化方法具有更好的拟合和预测效果。

4 结论

本文提出了一种基于深度学习的翼型气动系数预测方法。该方法不依赖于翼型的设计方法和设计参数,能够在只给出翼型图像的基础上预测出翼型气动系数,并且具有很高的预测精度。

通过本文的研究,说明深度学习在翼型气动系数预测方面具有很好的应用前景,可以通过增加网络层数、卷积核数量、迭代次数、全连接层数量、Dropout技术等措施,增加网络的拟合能力,适应更加复杂的翼型。

参考文献
[1]
Huang J H, Su H L, Zhao X H. Aerodynamic coefficient prediction of airfoil using BP neural network[J]. Advances in Aeronautical Science and Engineering, 2010, 1(1): 36-39. (in Chinese)
黄继鸿, 苏红莲, 赵新华. 基于BP神经网络的翼型空气动力系数预测[J]. 航空工程进展, 2010, 1(1): 36-39. (0)
[2]
Liu X. Simulation of airfoil plunging aerodynamic parameter prediction based on neural network[J]. Computer Simulation, 2015, 32(12): 61-71. (in Chinese)
刘昕. 基于神经网络的机翼气动参数预测仿真研究[J]. 计算机仿真, 2015, 32(12): 61-71. (0)
[3]
Wallach R, Mattos B S, Girardi R M, et al. Aerodynamic coefficient prediction of transport aircraft using neural network[C]//44th AIAA Aerospace Sciences Meeting and Exhibit. Reno: AIAA, 2006: 658-675. (0)
[4]
Santos M C, Mattos B S, Girardi R M. Aerodynamic coefficient prediction of airfoils using neural networks[C]//46th AIAA Aerospace Sciences Meeting and Exhibit. Reno: AIAA, 2008: 887-902. (0)
[5]
AndréS E, Salcedo-Sanz S, Monge F, et al. Efficient aerodynamic design through evolutionary programming and support vector[J]. Expert Systems with Applications, 2012, 39(12): 10700-10708. DOI:10.1016/j.eswa.2012.02.197 (0)
[6]
Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313(5786): 504-507. DOI:10.1126/science.1127647 (0)
[7]
Hinton G E. A practical guide to training Restricted Boltzmann Machines[EB/OL]. http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf. 2010-08-02/2017-05-01. (0)
[8]
Hinton G E, Osindero S, Teh Y W. A fast learning algorithm for deep belief nets[J]. Neural Computation, 2006, 18(7): 1527-1554. DOI:10.1162/neco.2006.18.7.1527 (0)
[9]
Vincent P, Larochelle H, Lajoie I, et al. Stacked denoising AutoEncoders:learning useful representations in a deep network with a local denoising criterion[J]. Journal of Machine Learning Research, 2010, 11(6): 3371-34. (0)
[10]
Lecun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324. DOI:10.1109/5.726791 (0)
[11]
Sutskever I. Training recurrent neural networks[D]. Toronto: University of Toronto, 2013. (0)
[12]
Li Y D, Hao Z B, Lei H. Survey of convolutional neural network[J]. Journal of Computer Applications, 2016, 36(9): 2508-2515. (in Chinese)
李彦冬, 郝宗波, 雷航. 卷积神经网络研究综述[J]. 计算机应用, 2016, 36(9): 2508-2515. DOI:10.11772/j.issn.1001-9081.2016.09.2508 (0)
[13]
Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural networks[C]//International Conference on Artificial Intelligence and Statistics. Brookline, MA: 2010: 249-256. (0)
[14]
Nair V, Hinton G E. Rectified linear units improve restricted Boltzmann machines[C]//Proceedings of the 27th International Conference on Machine Learning. Haifa, ILMS: 2010: 807-814. (0)
[15]
Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in Neural Information Processing Systems. NY: Curran Associates, 2012: 1097-1105. (0)
[16]
Yin B C, Wang W T, Wang L C. Review of Deep Learning[J]. Journal of Beijing University of Technology, 2015, 41(1): 48-59. (in Chinese)
尹宝才, 王文通, 王立春. 深度学习研究综述[J]. 北京工业大学学报, 2015, 41(1): 48-59. (0)
[17]
Lu H T, Zhang Q C. Applications of deep convolutional neural network in computer vision[J]. Journal of Data Acquisition and Processing, 2016, 31(1): 1-17. (in Chinese)
卢宏涛, 张秦川. 深度卷积神经网络在计算机视觉中的应用研究综述[J]. 数据采集与处理, 2016, 31(1): 1-17. (0)
[18]
Wu W Z. Application research of convolution neural network in image classification[D]. Chengdu: University of Electronic Science and Technology, 2015. (in Chinese)
吴正文. 卷积神经网络在图像分类中的应用研究[D]. 成都: 电子科技大学, 2015. (0)
[19]
Boureau Y, Bach F, Lecun Y, et al. Learning mid-level features for recognition[C]//IEEE Conference on Computer Vision and Pattern Recognition. San Francisco: IEEE, 2010: 13-18. (0)
[20]
Hicks R M, Henne P A. Wing design by numerical optimization[J]. Journal of Aircraft, 1978, 15(7): 407-412. DOI:10.2514/3.58379 (0)
[21]
Wang J J, Gao Z H. Analysis and improvement of HicksHenne airfoil parameterization method[J]. Aeronautical Computing Technique, 2010, 40(4): 46-49. (in Chinese)
王建军, 高正红. HicksHenne翼型参数化方法分析及改进[J]. 航空计算技术, 2010, 40(4): 46-49. (0)
[22]
Wang J T, Yi X, Xiao Z Y, et al. Numerical simulation of ice shedding from ARJ21-700[J]. ACTA Aerodynamica Sinica, 2013, 31(4): 430-436. (in Chinese)
王建涛, 易贤, 肖中云, 等. ARJ21-700飞机冰脱落数值模拟[J]. 空气动力学学报, 2013, 31(4): 430-436. (0)
[23]
Murphy K P. Machine learning:a probabilistic perspective[M]. Cambridge: the MIT Press, 2012. (0)