作为基于种群的全局优化算法,进化算法(Evolutionary Algorithm)不需要目标函数的可解释性,这些年在计算代价昂贵优化问题,多目标优化问题,鲁棒优化问题等领域获得了广泛的应用和发展。
金耀初教授 英国萨里大学“计算智能”首席教授,是进化算法研究领域的国际领军人物,在进化算法方面发表论文200余篇,Google Scholar引用8800余次。【运筹OR帷幄】的小编王源博士,很荣幸在金教授访问东北大学流程工业综合自动化国家重点实验室时与金教授进行了面对面的深度学术交流,谈一谈“进化算法” 在人工智能研究领域的潜力以及未来发展。
嘉宾介绍
金耀初(Yaochu Jin)目前为英国萨里大学“计算智能”首席教授,IEEE Fellow。曾任中国教育部“长江学者奖励计划”讲座教授,芬兰国家创新局“Finland Distinguished Professor”,IEEE计算智能学会副主席(2014-2015)。目前是IEEE Transactions on Cognitive and Developmental Systems 主编,Complex & Intelligent Systems 共同主编,IEEE 杰出演讲人(2013-2015,2017-2019)。在进化算法、机器学习等领域方面发表论文300余篇,Google Scholar引用15000余次,先后在近30个国际会议上作特邀大会或主题报告。荣获2017年度“IEEE进化计算汇刊优秀论文奖”,2014、2016年度“IEEE 计算智能杂志优秀论文奖”,“2017年世界进化计算大会最佳学生论文奖”以及“2014年计算智能理论国际研讨会最佳学生论文奖”。他指导的博士学位论文获“2018年度IEEE计算智能学会优秀博士论文奖”。研究方向涉及人工智能的多个领域,包括进化计算,多目标优化与决策,大数据、稀疏数据驱动的进化优化,多目标机器学习、安全机器学习,分布式机器学习等及其在复杂工业过程、健康医疗及群机器人等方面的应用。
访:很多同学对进化算法(EA)或多或少都有了解,您觉得EA和传统的数学优化方法相比,其优势是什么?或者说什么样的问题,EA的效果比较好。
金:进化算法和传统的数学优化方法相比有什么优势,首先需要知道进化算法与传统优化方法有什么区别。进化算法跟传统优化方法最大的区别有两个:一,进化算法是基于种群的搜索;二,进化算法是随机的搜索算法,它不需要梯度,也不需要解析的目标函数。所以它们主要的优势有以下几个方面:一、进化算法适用于处理那些没有解析目标函数和无法得到目标函数梯度信息的优化问题;二、因为进化算法是基于种群的搜索方法,它们在一次运行中可以得到一组解,所以相对于传统数学规划方法,进化算法在求解多目标优化问题时具有优势;三、因为进化算法是随机搜索方法,所以它们搜索全局最优解的能力比较强;四、进化算法的另一个优势是它们可以并行计算;五、进化算法还适用于解决同时有整数和连续变量的混合优化问题;六、进化算法处理不确定性的能力也要比传统的方法有优势。比如找鲁棒最优解,由于基于种群的方法有着隐式的平均在里面,哪怕不做特殊的处理,也有能力找到鲁棒解。
访:传统的数学规划方法对于多目标优化问题有没有什么解决方法?
金:传统的数学规划方法在解决多目标问题一般需要通过特定的方法将其转换成单目标问题,一次求解也只能获得一个帕累托解。
访:基于GPU的并行计算为大数据,深度学习的兴起提供了硬件保障。计算工具的革新不单是计算速度加快,也会为新的算法在实际中的应用提供可能。多数EA先天就具备很好的可以并行的特性。您如何看待并行计算的发展对EA会产生什么样的影响?
金:十多年前我在本田工作时,我就用进化算法解决图像处理方面的问题,但计算时间很长。如果能够并行处理,包括CPU和GPU,它的速度就会增加很多,使得进化算法用于解决这类的问题更具可行性。但是另一方面,往往有的时候是人的观念问题。比如以前做图像处理,人们觉得用进化计算解决这类问题时间很长,但是现在我们用深度学习解决图像处理问题时间也很长;再比如每每谈到进化计算就会被问有没有理论证明,但是大部分深度学习算法和机器学习方法也无法在理论上证明,它们一定能够找到全局最优。但是人们却马上接受了深度学习。所以这更多是需要一种观念上的突破。还有进化计算领域的研究者没有进行有效的宣传,公众对进化计算的了解远远低于对一般机器学习的了解。最近有一个很好的变化,包括像OpenAI这些早期做进化计算的人,他们现在把进化计算用在机器学习里面解决各种问题。所以进化计算在人工智能的角色正慢慢被接受,其绝大的潜力也慢慢会显现。
访:这是一个普遍现象,比如对基于数学规划的优化的关注度远远低于机器学习。大家都知道机器学习,但只有少部分人知道数学规划的优化。
金:没错,其实机器学习算法说到底大部分都是梯度法及其变形,像牛顿法,梯度下降法,爬山法等等。另外,增强学习其实质就是一种动态规划方法。
访:数据驱动的优化是进化优化的一个重要方向,那么数据驱动优化问题主要有哪些难点?带有约束的多目标数据驱动优化问题是怎么解决的?存在哪些难点?
金:虽然做进化计算的研究者都知道进化算法适合解决没有解析目标函数的优化问题(也叫黑箱优化问题),但大多数进化算法在设计时,往往假设目标函数是已知的。相对而言,我们在数据驱动的进化优化方面的研究及应用是做的比较多并且比较早的。为什么做数据驱动的优化?因为在现实世界中有很多优化问题无法用解析的数学公式来描述,其性能的优劣只能做仿真或实验来验证。一般的进化优化算法需要解决的挑战主要在于问题中含有很多局部极优、大规模、多目标、强约束以及不确定量,而数据驱动的优化首先必然面对来自数据方面的挑战。比如数据有各种类型,如小数据、大数据、异构数据,数据可能包含很多噪声,还有数据缺失、流数据、数据保密等问题,所以数据科学所涉及的主要挑战在数据驱动的优化中也必然会涉及,而机器学习中有很多处理这些数据挑战的有效方法。但必须要强调的是,我们拿这些数据是用来解决优化问题的,不是做建模的。优化和建模之间的区别在于建模是为了拟合数据,而优化是为了引导优化算法更快的找到最优解。所以两者的目的不完全一样,由于这个不同,数据驱动的优化也给机器学习带来了一些新的挑战。所以,数据驱动的进化优化是一个涉及数据科学、机器学习和进化计算的交叉学科,它的挑战既有来自数据本身的一些挑战,也有为解决优化问题给机器学习带来的一些新的挑战。
访:离线数据优化是您最先提出来的,这类问题它有什么重大的意义?
金:做研究一般可以分为两类,即问题驱动的研究和理论驱动的研究。从整体做研究来说,两个都是必要的,一方面研究的问题要从应用中来,要提炼问题。有什么样的问题,才做什么样的研究。另一方面,研究要到实际问题中去,实际应用有什么问题我们解决什么问题。离线数据驱动的优化更多的是问题驱动的优化,是数据驱动优化问题中比较特殊的一类问题。为什么要做离线数据优化?因为有一类像生产过程的优化这样的优化问题,我们无法边优化边做验证,因为做验证会打乱工厂的生产过程;还有一类资源优化问题也只能做离线数据优化,因为资源优化问题的数据是来源于日常生活,并且是独立于优化过程而产生的,无法在优化过程中采集想要的数据。这两类问题都必然需要考虑离线数据驱动优化的问题和挑战。
访:您和本田公司有过合作,将多目标优化应用到汽车的设计上去,这类问题往往是多目标的,而且还需要进行计算流体力学仿真,传统的数学优化很难求解。EA在解决这类问题有什么优势,同时EA在解决这类实际问题的时候有什么难点?
金:有很多实际问题涉及空气动力学优化,像汽车优化、一级方程式赛车的优化、飞机发动机的优化、机翼的优化,以及飞机机体的优化。此外大型码头的设计也会涉及到流体动力学仿真,因为需要模拟海浪以及气候情况。还有像智能建筑,也需要使用空气动力学模拟大气的流动以及温度的变化等情况。在现实中有一大类需要涉及复杂的流体动力学(包括空气动力学)的优化,这一类优化问题的特点是没法用解析的数学公式来描述这些优化问题的目标函数,需要用基于数据驱动的方法来求解。它的难度在于一方面没有明确的目标函数,另一方面做仿真和做实验都很耗时或耗钱,所以只能用少量的数据来做优化,即小数据驱动的优化。基于小数据驱动的优化具有很大的挑战性,需要将进化算法与先进的机器学习方法(如半监督学习、迁移学习等)进行有机结合。另外,迁移优化方法也是解决小数据驱动优化的有效方法。还有一点我要强调的是优化问题的描述。在解决实际问题时,问题描述本身往往是很复杂的。我们在做飞机喷气式发动机优化时,就曾经面临过这样的问题。发动机叶片优化中,最重要的目标函数是压力损失最小化。我们当时就用进化计算将压力损失最小化,结果很好,于是就交给空气动力学专家。可他们说我们获得的优化设计没法用,因为虽然它的压力损失很小,但由于它的空气出口每个点上空气压力变化非常大,很不均匀,在实际使用时很容易损坏叶片。为解决这个问题,我们又增加了一个目标,即出口空气压力的差异最小化。再比如车辆的设计,在产品设计过程是分很多阶段的,不可能在优化设计的时候,一开始就把所有的设计变量和设计目标都考虑进去,这不现实。一般说来,在不同的设计阶段需要考虑不同的变量和目标函数。比如在概念设计阶段,把大的框架定下来,把某些设计参数定好,这时所使用的仿真工具的精度可以相对低一些,然后对每个部件进行优化,这时设计变量可能会发生改变,目标也可能会发生变化,所选择的仿真工具的精度需要高一些。而第三阶段涉及每个零件的设计,相比第二阶段更细微,所关注的自变量和目标函数又会改变。相比解决实际问题,目前进化优化领域的基准测试问题(benchmark)都比较笼统的,不管是大规模优化测试问题或高维多目标测试问题,往往会假设有几千个决策变量,有几十个目标一起优化。这都是比较理想化、简单化的描述,而在实际中,问题怎么描述,在什么阶段用什么决策变量和目标函数,哪些作为约束条件来处理都需要针对具体情况考虑。所以问题描述本身在求解实际复杂优化问题中有着非常重要的作用。
访:EA和现在很火的机器学习,深度学习有哪些交叉研究。EA可否做为机器学习优化问题的求解算法?深度神经网络是否可以替代进化计算常用的高斯模型或代理模型(使用深度神经网络)?
金:首先这是个很好的问题,我先回答后面的问题。就是说,机器学习在优化中的作用。因为把机器学习和进化计算相结合会有两个方向,有两种可能的结合。我先讲第二种可能性,即怎么用机器学习帮助进化计算。其实我们前面讲的基于数据驱动的优化,几乎都是这个方向的。比如用深度学习可以用来处理大数据,半监督学习,迁移学习可以拿来解决小数据驱动的优化问题,增量学习可以用来解决时变数据驱动的优化问题等等,这些都是使用机器学习技术帮助进化计算来更快、更好的的求解优化问题。现在在回答另一个问题, 及如何用进化计算来提升机器学习的性能,甚至对传统的机器学习的方法进行革命性的变革?首先,我既从事进化计算的研究,也做了很多机器学习方面的研究。我经常强调机器学习本质上就是一个优化问题,机器学习中的误差函数或损失函数就是目标函数。大家也都知道,在机器学习中,为了考虑其他目的,比如正则化,稀疏化等等,就分别会把正则化或稀疏的要求有一个超参数累加到损失函数中去。总而言之就是使用加权的方法把不同的目标合成一个目标。所以,机器学习就是一个优化问题,且本质上是一个多目标优化问题。为了解决这个优化问题,机器学习大多采用梯度法及其变形算法。所以把进化算法用在机器学习有以下三方面的优势。
第一、进化算法更适合解决非凸问题。比如机器学习中采用加权法把不同的学习目标加在一起,如果是凸优化问题,梯度法的效果比较好。但如果是非凸问题,通过加权以后其实是解决不了的。这种情况下,进化计算有其独特优势。
第二、传统的机器学习算法只能够用于参数优化。用梯度方法来进行神经网络的结构优化就比较难了。虽然说可以通过各种变换,梯度法也能在一定程度上解决神经网络的结构优化问题,但是它不是最有效的方法。相比之下,进化计算做结构优化很有效。事实上,为了解决大规模深度网络的结构优化问题,还可以借鉴生物发育机制,将进化算法与发育模型相结合。
第三、进化算法可以实现多目标学习。传统机器学习往往把不同的目标整合成一个单目标问题。但是进化计算非常适合解决多目标优化问题。如果我们把多目标优化引入机器学习就可以实现多目标学习。早在2006年的时候我就编辑过一本书,叫作《Multi-Objective Machine Learning》, 是斯普林格出版社出版的,就是将多目标优化的思想引入到机器学习。
要理解多目标学习的好处是什么,首先需要理解传统机器学习方法的局限性在哪里,传统机器学习中将多个目标整合成一个目标,必须要用到超参数。而超参数又需要用户去确定,所以很难确定一个最优的超参数。。把多个目标组合成单个目标至少有两个局限性:一是你只能得到一个模型。而这个模型是好还是不好,你事先是不知道的。 二是如果这个问题是非凸问题,那你调超参数是没有用的。相反,如果我们采用多目标学习, 用帕累托优化的思想,我们就可以得到不同的模型。而不同的模型就能满足用户不同的需求。 比如,我们想得到可解释性好且精度高的模型,这个可能很难。如果我们把精度高看成一个是目标,把可解释性好看成另外一个目标,也就是把精度和可解释性作为两个不同的目标,然后我们用进化多目标算法同时优化机器学习模型的结构和参数,最后我们就可以得到一系列的模型。这些模型中有些是可解释性好的模型,虽然说他的精度不一定非常高。但它可以解释,可以描述数据里所蕴含的知识,对于要求解释性强的用户来说这个就足够了。如果我们要求是精度高的模型,我们就去挑那些精度特别高的模型。其实最精确的模型就是模型的复杂性跟问题的复杂性是最匹配的那个模型。总之,当我们用进化多目标算法解决机器学习问题是就可以得到一系列的模型,这些模型中有些可能是可解释性最好的,有些可能是精度最高的,而有一些可能就是过拟合的。当你看到所有的不同模型的时候你就可以挑选其中若干个。这个就是用进化算法来解决机器学习带来的一大优势。总的来说把进化运算用来帮助机器学习不仅仅是说我能够让它学的更好,而且是给它提供了更多的可能性。同时可以用来做参数优化,结构优化,还能考虑模型的可解释性、安全性等。
访:其实加正则化项就是防止一些过拟合,它会产生一些稀疏的特性,如果产生一些稀疏的特性,是不是就意味着说这个模型有一定的可解释性。
金:对,就这个意思啊。就是前面讲到的那些有一些模型是可解释的,而那些模型往往就是复杂度相对比较低的模型。
访:但就是精度稍微低了一点?
金:对,因为这些模型抓住事情的本质,抓住了主要矛盾。数据中包含了一大堆的信息,有些是主要的,有些是次要的,有些甚至是噪音。一个高精度的模型必然是学习数据中的所有东西。反而,一个精度不是太高、复杂度低一些的模型就可以抓住问题本质。比如之前我们使用多目标学习方法做过一个乳腺癌诊断的问题。这个问题有9个变量,而我们用多目标学习获得的模型中其中最最简单的一个只用到其中一个变量(病理指标),它却能正确地对90%的数据进行分类,那就足够了,何况从这个简单的模型中我们可以提取两条非常简单、可以解释的规则。
访:那我们试验中怎么知道这个模型是不是可解释性的?
金:回答这个问题就涉及到可解释性的定量问题,也就是我们怎么定义可解释性。我在90年末的时候做过模糊系统的可解释性。因为最早的模糊是人总结出来的,很容易解释。后来出现了神经网络,进化计算,就有了数据驱动的模糊规则生成方法。也就是说用数据来产生模糊规则,而不是像过去一样靠专家总结。但后来发现用数据驱动的方法产生的这些模糊规则用户不能理解,因为这些纯粹是使用数据进行自适应的。 为了解决这个问题,我们提出“模糊规则的可解释性问题”。通过提出了一些模糊规则可接受性的量化指标,然后采用多目标进化方法来产生可解释的模糊规则。
访:一些不了解进化计算的研究者和初入这个方向的研究者可能会产生“EA就是在一大堆benchmark上跑跑,实际上没有什么用”,“EA的研究就是使劲做实验然后结果比别人好0.001就开始灌水”等观点。如何看待这些观点?EA的研究未来的发展趋势是什么?希望能给想进入EA研究领域的人一些建议。
金: 个人觉得,讨论这个问题时,我们要公平。什么叫公平?不要只盯着着说进化计算这样,因为机器学习也一样,很多其他领域也一样。其实很早就有学者批评机器学习中的这种情况,比方说拿了一组数据,然后开始拼性能。所以如果说只有计划计算领域才有这个问题,我觉得不公平。那为什么大家对机器学习感觉没有那么明显?因为机器学习中的测试问题大都是图像,如人脸识别问题,会给人感觉是在解决一个真实的问题。相反,进化计算的测试问题全是一堆目标函数。人脸识别是一种看得见的问题,但说到底他也是测试问题。而进化计算中的测试问题是抽象的问题,所以给人的感觉不是一个真实的问题。所以,大部分机器学习和进化计算解决的问题都是测试问题,都是benchmark。另一个方面,我们进化计算的研究者也需要更多的倾听这种批评的声音,做更“看得见、摸得着”的测试问题。进化计算领域的研究应该更多的以实际应用为驱动。比如做数据驱动的优化。但做数据驱动的优化就没有做纯粹benchmark问题那么简单了。而且有时候没办法验证解的好坏。我们现在正往这方面努力,希望能从实际问题中提炼出一些数据,比如空气动力学优化的例子。因为你让每个学生都运行这个很耗时的计算流体力学仿真是不现实的,那么能不能事先用仿真工具产生一些数据供大家使用?同时,我们应该设计一些更接近现实问题benchmark。
访:benchmark还是很有意义的,不可能完全抛弃,在各领域其实都有类似的benchmark,这个也不单单只是进化计算的一个特殊的问题。
金:对。之所以大家都在说进化计算的主要原因,在于进化计算的benchmark太抽象了。
总之,进化计算在人工智能研究中的巨大潜力还没有被开发出来,公众对进化计算的认知度仍然不高。其实现实生活中是存在很多进化计算典型的应用场景的。
最后谢谢你的采访。