近日看到CFD界推送的一篇关于Autodesk利用机器学习加速CFD计算的文章,正巧这阵子项目需要利用机器学习进行模型预测及优化,学习机器学习大概两三个月了,有感而发也来聊点儿浅薄的看法。
宣传视频在这里:
1 人工智能、机器学习与深度学习
近年来,人工智能(AI)一直是媒体大肆炒作的热点话题。机器学习、深度学习及人工智能都出现在不计其数的文章中。下面简单了解一下什么是人工智能、机器学习与深度学习。
1.1 人工智能
注:本节内容部分参考自:《Python机器学习》
人工智能、机器学习与深度学习的关系如下图所示。
人工智能诞生于20世纪50年代,可以简洁地定义人工智能为:努力将通常由人类完成的智力任务自动化。因此人工智能是一个综合性的领域,不仅包含机器学习和深度学习,还包含更多不涉及学习的方法。如早期的国际象棋程序仅包含程序员精心编写的硬编码规则,这其实并不属于机器学习。在相当长的时期内,许多专家相信,只要程序员精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工只能,这一方法被成为符号主意人工智能,从20世纪50年代到80年代末是人工智能的主流范式,在20世纪的80年代的专家系统热潮中,这一方法的热度达到了顶峰。
虽然符号主义人工智能适合用于解决定义明确的逻辑问题,如下国际象棋,然而其难以给出明确的规则来解决更加复杂、模糊的问题,如图像分类、语音识别和语言翻译等。于是出现了一种新的方法来替代符号主意人工智能,这就是机器学习。
1.2 机器学习与深度学习
机器学习的的概念来自于图灵的问题:对于计算机而言,除了”我们命令它做的任何事情“之外,它能否自我学习执行特定任务的方法?计算机能否让我们大吃一惊?如果没有程序员精心编写的数据处理规则,计算机能否通过观察数据自动学会这些规则?
图灵的这一问题引出了一种新的编程范式。在经典的程序设计中,人们输入规则和需要根据这些规则进行处理的数据,系统输出的是答案(如下图所示)。利用机器学习,人们输入的是数据和从这些数据中预期得到的答案,系统输出的是规则,这些规则随后可以应用于新的数据,并使计算机自主得到答案。
机器学习的规则是训练出来的,而不是明确地用计算机程序编写出来的。
机器学习过程就是从已有的样本数据中提取规则的过程。人们已经创造出来许多的方法用于规则的提取,比较著名的机器学习算法如决策树、K-均值、支持向量机、Apriori、AdaBoost、K-近邻、朴素贝叶斯、最大期望算法、分类回归树、PageRank、神经网络方法等。
深度学习其实是层次较深的神经网络方法,是机器学习的一种。当然随着计算机性能的提高,深度学习方法在机器学习诸多方法中得到了人们的重视。机器学习的方法众多,各种方法适合于不同的场景,就像湍流模型一样,需要在实际应用中选择最合适的机器学习方法。
1.3 机器学习的目的
前面说机器学习是为了从数据中提取规则,事实上可以更准确的说,机器学习主要用于两个方面:
-
预测
所谓预测,就是从已有数据中找出自变量与因变量之间的数学模型关系,之后可以在已有模型的基础上提供出任意自变量对应的因变量的值。比如说通过历史数据预测天气,通过股票行情预测价格走向等,预测在现实生活中应用很普遍。
最常见的预测方法是回归。一说大家都明白,其实我们在日常的科研过程中经常这么做,中学的时候就学过,比如说给定平面上的两个点,让求取这两个点所决定的直线方程,这就是回归。当然工程问题要稍微复杂一点,数据点可能更多一点,要想用画一条穿过所有点的直线或曲线并不容易,因此存在误差,所以回归的好坏可以用直线与所有点之间的距离和来度量。
如下图所示:
如图所示,已知点集数据,通过线性拟合可得到方程:
在得到方程之后只要输入x值即可直接得到y的值。
上面看起来自然很简单,但回归其实还涉及到其他非常多的问题,尤其对于工程中的数据。当然,回归也只是预测的一种方式而已,其实机器学习还有其他的预测方法。这里就不细讲了,有兴趣的可找专业资料查看。
-
分类
分类是机器学习的另一个重要用途,在现实生活中应用也非常的普遍。最常见的分类应用如图像识别、语音识别等。很简单的例子,如数字识别,实际上是将图片中的像素信息进行分类,预测该数字在0~9中概率最大,从而识别出数字来。一个简单的机器学习分类案例如下图所示。通过机器学习,计算机从数据中提取出数据特征,将具有类似特征的数据归到同一类中。
1.4 三种机器学习
按照机器学习的应用场景,机器学习可以分为三类:
-
有监督机器学习(Supervised Learning)
-
无监督机器学习(Unsupervised Learning)
-
强化学习(Reinforcement Learning)
给定数据集及其对应的标签:x-y,训练模型并预测输出,这是有监督的机器学习。从本质上来讲,机器学习模型只是在机械地拟合数据内在关系的表达式,赋予模型应用层面的是y值。比如说给定一个物体的颜色、形状、尺寸等信息,当我们设置y值为物体的种类时,这就成了一个分类任务,而当y值设置为物体的重量时,此时变成了一个预测物体重量的回归任务。
当数据集没有标签,或者不关心有没有标签y,只是挖掘数据集x的一些内在规律,这是无监督机器学习。实际上就是从一堆数据中发觉出数据之间的联系。
在一些固定的场景下,机器在环境中学习到策略,按策略选择一个动作,目标是让对应的回报最大,这是强化学习。
关于机器学习,更多的内容可以查阅相关专业文献。
2 CFD中应用机器学习
回到主题中,机器学习在CFD中实际上可以应用的场景非常的多。下面简单的描述几个。
2.1 参数优化
当前的常规CFD计算得到的是一堆数据,后处理程序将数据以图形图表的形式表达出来以便于数据分析与处理。在这过程中,正是机器学习大展伸手的好时机。
分析上面宣传视频中的内容,事实上我们一直在使用,只不过没有像视频中的展示那么美观连贯罢了。仔细想想,以前利用CAE进行产品开发的步骤是怎样的?无非是下面几步:
-
模型分析,获取特征参数。这里的特征可能是几何特征,也可能是工艺条件特征。如要改善流体通道内的流动特性,降低压力损失,首先得分析物理模型,找到影响压力损失的参数,这些参数可能是流体通道的几何尺寸,也可能是流动参数,如流速,压力条件等。
-
实验方案设计。根据特征参数设计实验。实验设计的方法很多,常见的如正交设计、均匀设计等,复杂点儿的如中心复合设计、拉丁方设计等。不管采用何种实验设计方法,其目的都是为了尽可能的减少实验次数,且同时不至于过多的牺牲模型细节。
-
实验数据处理。根据实验目标的不同,采用的数据处理手段也有很多种。最常用的方法如方差分析、敏感性分析、相关度分析、模型回归等,还包括利用实验方法进行参数优化的相关算法(比较典型的如响应面法)。
看上面视频中的介绍,Autodesk公司分析了提取了影响车辆空气动力学性能的影响因素,并计算了超过800组实验数据作为样本,利用机器学习方法获取这些影响因素与车辆空气动力学性能之间的关系(可能是采用回归,也可能是别的机器学习方法),之后遇到新的车辆参数即可快速的获取其性能数据,这是机器学习在CFD中的最常规的应用场景。
事实上很多优化软件已经具备此类功能,如Isight、ANSYS DX等都有实验优化功能,只不过采用的学习算法有所不同罢了。
2.2 自动前处理
类似于无人驾驶,利用计算机自动识别现实世界,并将现实世界复杂场景简化为计算机可以处理的数学物理模型,似乎是个值得努力的方向。当然现在看起来还相当的复杂,也未见有应用先例。
2.3 后处理图形识别
这方面实际上有不少的应用,尤其是在医学领域。比如说医学病灶识别,据说识别率比普通的医生还要高。当然如果有朝一日能够移植到CFD领域,对于后处理得到的各种花花绿绿的图片进行识别,那该是一件多么惬意的事情。
3 不足
事实上在CFD计算中应用机器学习并非一件容易的事情,主要存在几个方面的缺陷:
-
缺少有效的数据集。机器学习建立在大量有效数据之上,很遗憾的是,利用CFD得到有效的流场数据并非一件容易的事情。以前一直在说CAE或CFD成功与否,取决于数据积累。个人认为未来若干年,企业仿真数据积累是创新的源泉。
-
计算资源消耗高。机器学习模型训练所需要的计算资源并不比CFD计算少,有时候还要远大于CFD计算。所以挑选最为合适的机器学习算法似乎也是一件很有意义的事情。
哎呀,词穷写不下去了,有空再结合案例来补充吧,总之我觉得机器学习已经在很多行业得到了广泛应用,童鞋们如果觉得CFD领域薪资上升空间比较小的话,不妨引入机器学习进来,没准有突破呢,还在上学的童鞋如果可以尝试着将机器学习与CFD交叉应用,绝对是发paper的好思路呢,哈哈~
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册