在上一期雷锋网AI掘金志硬创公开课《十大场景案例详解:人工智能如何提升商业效益》中,我们通过案例详细介绍了AI用于商业实战中的场景和效益。而为了真正帮助推动AI落地,我们将带来更多场景单点技术干货分享,以飨读者。
因此,本期公开课,雷锋网邀请到杉数科技CTO王子卓博士来进行主题为“如何利用机器学习做运筹优化与智能决策”的分享。
以运筹优化与智能决策为例,王子卓表示,大数据要产生实质价值,必须真正提升决策质量。规律性分析能够从海量数据中发掘出规律,但是找到规律并不自然而然带来决策方案,所以运筹优化学和机器学习,就是将实际中决策问题转化为数学模型,并用高效的优化算法求解。因此,本次公开课,王子卓博士将分享他在解决实际问题过程中的建模、算法优化实践经验。
王子卓,杉数科技CTO、明尼苏达大学工业与系统工程系助理教授,曾就职于IBM Watson研究中心及Janestreet capital等机构,担任分析/研究员;清华大学数学与应用数学系学士,斯坦福大学金融数学硕士,斯坦福大学管理科学与工程博士,主要研究方向为定价与收益管理,电子商务、网络经济学,随机优化与鲁棒优化及其在管理科学与金融中的应用。
杉数科技是一家专注于打造人工智能决策的初创公司,杉数科技旨在通过人工智能算法构建企业在大数据时代下的决策闭环——从数据收集、规律分析、到最终的决策,主要服务客户领域为电商零售、物流、金融。
以上是王子卓博士公开课视频,强烈建议先看视频!
以下是本次公开课实录,雷锋网做了不改变原意的编辑:
我今晚分享的内容主要有运筹优化的背景;什么是运筹优化;运筹优化能解决的问题;运筹优化和机器学习之间的关系;最后展示几个运筹优化在实际中的应用以及和机器学习共同解决实际问题的场景。
如今是大数据的时代,公司都希望能利用数据做更好的决策。我认为从数据到决策主要有三个步骤:
第一是数据的采集与管理,这是大数据时代的根本,这部分更多是由计算机技术实现的,包括硬件技术和软件技术,可以认为是数据驱动决策的原材料;
第二是对数据进行规律性分析,找到数据背后的规律,以预测未来,这一步是由统计技术或者机器学习技术完成的;
但在实际的场景中,并不是简单地对数据规律性分析,想要创造实际价值,我们需要根据分析结果进行决策,即第三步,利用数据进行决策建模与求解,这一步用到的技术是我们接下来讨论的运筹优化技术。
数据是数据时代的原材料,规律性分析或机器学习把原材料加工成一些更精细内容,之后经过决策引擎,将这些材料转化成于公司有益的知识。具体到底什么是运筹优化呢?简单来说,我们可以将实际生活中的决策转化成数学模型,并且用运筹优化方法进行求解。
从广义上讲,优化运筹是非常古老的学科,可以追溯到人类有生产生活之后的非常久远的历史。著名的数学家欧拉有一句话:“Nothing at all takes place in the Universe in which some rule of maximum or minimum does not appear。"意思是,世间万物无非都是优化过程,企业生产、普通人的生活,甚至一些重要的自然规律,实际上都是某种优化的问题。给大家举个简单的例子,物理学中的光折射定律或者光反射定律,实际上都可以认为是光线在寻找一条路径以最短的时间达到某一点的某种优化问题。
通常认为,现代的运筹优化起源于大约上世纪的四五十年代,大约在第二次世界大战期间,那个时候很多应用都集中于军事领域,盟军发现他们在作战时有很多数学问题需要解决,比如说雷达部署问题、运输船的护航问题、炸弹的投掷问题等,这些问题都是某种非常复杂的具体场景中的优化问题或者说数学问题。当时盟军雇佣了大量数学家及计算机学家,像冯诺依曼等。在这期间,人们系统地发展出一套解决这类问题的方法,这就是运筹学最初的背景。
值得一提是,1947年,运筹学的泰斗George Dantzig发明了一个数学里最经典问题——线性优化问题的解法。如果大家对这种算法比较感兴趣,可以在网上找一找,这个算法被评为20世纪的十大算法。战争结束之后,运筹学更多的被用到民用场景中,包括企业、政府、经济发展等,并且也产生了大量的新算法以及运筹学的各个分支。
在大约二三十年之前,由于计算机的发展,运筹学得到革命性突破,计算机的发展使得很多研究的算法得以真正实现,使得其能真正帮助企业进行优化和决策。过去十几年里,大数据的发展又给运筹学带来了更大的舞台,刚才也说到,运筹学可以认为是把实际中的数据转化成企业所需要的决策。大数据时代到来,我们有了大量的数据支撑,那我们就可以通过这一套方法帮助更多的企业进行更优决策。
运筹优化有两大重要的工具,第一是所谓的优化工具,我们说运筹优化,自然的优化本身是最核心的内容。优化问题有三个组成部分。
首先是决策。在很多实际场景中,我们都是针对特定的某件事或特定的目的进行决策。比如公司会经常面临着库存方面问题,要决策每天订多少货物;电商可能面临着价格的决策、定价问题,在这个场景下,决策就是每一件商品的价格;在其他场景中,我们可能需要设计最优路线,比如快递公司以最快的速度投递每天的信件,决策就是投递的路线,路线的整体就是决策。
第二是目标或目标函数,即我们做决策时希望达到的目的。比如刚才提到的有关库存的决策,目标通常是减少库存堆积、降低库存成本等;有关定价的决策目的是增加企业收入或者销量;路径优化的目的是使完成路线所需时间或者所需要的成本最小化。
第三是约束,实际场景中,决策往往受到客观条件的约束,比如库存可能受到满足用户需求的约束;路径优化可能会有道路上的限制;或有时候我们希望尽量少左转,左转的次数就成为约束。
优化问题便是要寻找在满足这些约束的条件下最好地达到目标的决策。
在解决实际问题时,有两个关键的步骤:
第一是建模,将实际问题通过最有效的数学形式来表达出来,建立数学模型。
第二是求解,有了数学模型型之后,通过算法找到最优的决策、能够达到最优的目标的且满足约束条件的决策。
这两步是整个优化问题中核心的两部分,缺一不可。
首先,我们需要好的模型简洁有效地刻画实际问题。有效很容易理解,我们希望模型能够尽可能地和实际问题吻合,即考虑实际问题的各个因素;简洁是为了更好求解,另外也可以让人们更好地理解优化模型。算法或求解也是非常重要的。好的算法可以更有效地求解更大规模的问题,现在遇到的问题经常是非常大规模的,好的算法能保证在有效的时间内找到最优化目标的决策。
第二个工具是随机建模。主要的目的是科学刻画不确定性,并且基于不确定性环境分析,比如分析事物的发展规律及如何做出较优的决策。其中有很多具体的模型,比如随机优化模型、鲁棒优化模型、随机模拟方法以及像马尔可夫决策过程这样更加复杂的优化和决策模型。在复杂场景中,通常通过优化加随机建模的方法刻画问题,再通过优化的算法进行求解,最终得到在复杂问题场景之下的决策建议。
以上就是运筹学两大核心内容,即优化和随机建模方法。
这几年,人工智能有非常大的发展,比如图像识别、语言识别等技术,应用领域包括自动驾驶、智能诊断等。但机器学习或人工智能的本质到底是什么呢?这个问题有很多角度,但在我看来,机器学习或人工智能应用到具体问题中的话,它的核心也是两部分,一部分是模型,另一部分是算法。比如在自动驾驶中,我们需要通过模型判断如何识别障碍物或路况,有模型之后,我们需要通过算法求解这个模型。
这里的算法包括两个部分,首先模型中存在大量参数,我们需要通过算法找到模型中的参数,使得模型能最好地刻画想刻画的场景。另外,通过算法求解最优决策。在自动驾驶中,我需要决定车往左走多少度或往右走多少度;在游戏里要决定我下一步做什么。算法的第二部分就是在模型基础上做出最优决策。
我认为,机器学习和人工智能在解决实际问题的任何场景中,核心部分仍然是模型和算法两部分,虽然不同的场景有可能有不同模型和算法,这与上面介绍的运筹优化是一致的。
很多时候,机器学习本身的核心也是运筹优化的一部分。机器学习中一个非常经典的问题:支持向量机问题,简称SVM问题。
这个问题的背景是这样的:我有很多数据点,我知道一些数据属于某种类别,另一些不属于,我需要找到方法区分这两类数据点,如果有新数据点进来,我就可以判断其是否属于某个类别,这可以用到智能诊断中。数据点对应病人的病历,通过历史数据,我们知道某些病人患有哪些疾病,通过这样的分类,我们对未来病人自动诊断。
这类问题的应用场景非常广泛,除去刚才提到的智能诊断之外,还比如垃圾邮件自动分类、模式识别等,甚至一些图像识别都可以用类似方法处理。这是非常基本、也是非常核心的机器学习问题,从数学角度来看,这个问题无非就是优化问题。
上面PPT的右上角坐标系中,我们希望找到一种分割方式,把红点和蓝点尽可能地区分开。假设先考虑简单的划分方法,比如找到一条直线尽可能将红点和蓝点区分,那么,决策就是找到这条线,这条线对应运筹优化中的决策。有了决策,即我们找到了这条线之后,未来有一个新的点,只需判断其在线上还是线下,就能判断它是红色还是蓝色。
我们的目标是尽可能使这条线把不同类别的数据点能够分开。在实际情况,显然不可能有一条线数据点彻底分开,必然存在误差,这种情况下,我们就要尽量减小误差。除此之外,实际中对于这些线也有约束,比如参数要满足特定条件。
这样,我们可以把这个问题写成优化问题,通过求解找到最优参数。如今,通过一些先进的优化算法,可以非常有效地求解这类优化问题,把这类问题转化线性规划问题或凸优化问题,现在算法可以非常有效地求解。对于上述问题,哪怕存在几百万变量求解也可以很容易,在笔记本电脑上求解可能只需要几秒或者几分钟。其中的核心是优化算法。
刚才我们是用直线划分,其实我们也可以用其他形状划分,比如椭圆、圆形等。不同情况对应不同的模型,不同的模型对应不同的优化问题,写优化问题的时候需要修改,修改后又会面临求解问题,其中会涉及到优化问题求解算法。其中,优化模型和算法是机器学习问题的关键。
实际上,基本所有机器学习问题都可以归类成优化问题,我们需要选择的是机器学习模型下的参数,用x表示;历史的数据用D表示,我们要寻找最优参数使其可以最好描述历史数据。f表示x和D的拟合程度,通常对于x,我们会加一些惩罚函数使得x满足某种条件,甚至有时对x加一些约束条件。
从这个角度来讲,所谓的机器学习问题,本质上都是优化问题,如果我们有优化算法方面的优势,意味着我们也有机器学习算法的优势。
研究机器学习或讨论机器学习时,一方面模型的选取非常重要,另外一方面,背后的优化算法也很重要,这些才是使你在面对新模型或复杂场景时都找到好的解决方案的基础。
一、在线匹配问题
静态匹配的问题
我简单介绍一下静态匹配问题,在很多场景中我们都会面临这样的问题,即将供给和需求进行匹配,比如打车软件需要将出租车司机和乘客进行匹配;搜索引擎需要把搜索关键词和广告商进行匹配;在线交友网站需要把男生和女生进行匹配,其中每一个匹配都有其分数,即两端匹配程度。
在静态的匹配问题中,我们的目标是供给与需求如何匹配以最大化匹配总分数,这样的问题实际上就是典型的优化问题。我们按照刚才说的决策目标和约束,把它写成优化问题。
在实际场景中会存在一些约束,比如一个供给只能匹配给一个需求,一个需求只能配给一个供给,以及一些更复杂约束都有需要考虑,但是不管怎样,我们把这个问题写成优化问题,有好的算法之后就可以高效求解。
在线匹配问题
上面讲的是静态匹配问题,即假设匹配的两端都是在确定的情况下进行匹配的。但在实际场景中,我们通常面临动态或在线的问题,比如在打车过程中,车和乘客都是动态出现的;在搜索引擎场景下,匹配一端比如广告商是固定的,但关键词是逐个出现的,每出现一个关键词的时候都要决定把它匹配给哪个广告商。这些问题涉及不确定性,我们在匹配这个需求的时候,并不知道未来可能还会产生哪些需求或者供给,但目标仍是使得最终匹配分数最大,在某个时间段或长时间维度上获得最大价值。这就是一个不确定性下的优化问题。
这个问题就比静态匹配问题复杂不少,但我们仍然可以把它写成优化问题形式,只不过在这类优化问题中,系数不是事先给定而是动态生成的,我们可以用多种方式假设,比如这些系数可能是按某种概率分布生成的,甚至我们可能都不知道这些系数分布,只知道出现的顺序是随机的。我们可以有不同的假设,但在每一个点产生之后,我们要决定如何进行分配,是分配给某资源?或不匹配这个点,这就是实际中做决策的问题。
实际上,对于做运筹优化的人来说,我们要对这个问题设计一系列算法,即如何决策才能达到最优目标。经过一系列研究之后,人们提出一些算法。其中一种算法是,观察少量样本,求得每个右端资源j的“合理”价格,在优化里称之为“对偶变量”。当新的需求或匹配产生之后,将匹配分数和所需消耗资源的价值进行比较,看这个匹配是否带来了应有的价值,如果匹配的价值比计算出的合理价格高的化,我们就进行这个匹配,而且选择其中最有匹配使得价值比价格高最多。否则,就拒绝这个匹配请求,这就形成了可以实际运行的算法。
另外, 做运筹优化的人不仅是提出一个算法,还希望能证明一个算法确实能够达到最优的决策,实际上,通过一些数学方法也可以证明。
从某方面看,这个问题也有一个机器学习的成分,比如通过不断观察样本,机器可以学习每件商品的价值。本质上,这也是优化结合随机建模的问题,我们刚才讲到优化和随机建模是运筹学的两大核心内容,通过这样的算法和模型,我们可以面对这种实际的场景,达到长期最优的策略。
二、收益管理
第二个是关于收益管理的场景。简单来说,收益管理就是定价和销售问题,商家要决定其商品以什么形式什么价格卖给消费者,或者说希望以正确的时间将正确的商品以正确的价格卖给正确的人,通常在进行收益管理的决策的时候会有这样的过程。
首先是数据采集;然后根据数据对消费者进行分析,比如客户挖掘、对消费者进行标注、分析消费者对价格的敏感程度等;在此基础上进一步决策,比如用什么样的价格买哪些商品、什么时间卖等。实际上这部分与我们开始说的从数据到决策的链条是一致的。
组合定价
其中一个很重要的问题叫组合定价问题。商家要管理很多商品,商品之间可能会有需求的关联性,比如同时销售可乐和百事的话,一种商品的价格可能会影响另一种商品的销量,在这种情况下,商家需要决定如何对多种商品进行组合定价。其中的决策就是每一种商品的具体价格,目标是未来最大化整体收益,这个过程也涉及建模和求解两个步骤。
这里也有很多模型,比如通过消费者选择模型刻画消费者对商品的选择,其中用到优化和机器学习选择最好的模型。有了模型之后,我们要决定如何定价以最大化利润或销量等,这就变成了非常经典的优化问题。除定价以外,商家还面临着像选品、商品展示区等问题,仍然需要考虑到商品之间互相影响情况,这些问题均可以写成优化问题,同样需要优化算法对这类问题求解。
三、动态定价
上述组合定价问题可以看做静态问题,在实际中我们经常遇到动态问题。一开始,我们对消费者的偏好不是非常了解,希望通过动态定价、数据收集来了解消费者对商品的偏好、或学习消费者的行为,这就涉及如何动态定价的问题。我们要确定到底要通过多少数据点、怎么设计这些价格以学习消费者行为,同时不能由于定价波动太大造成收益损失、或对消费者产生负面影响,我们要确定什么样的方案是长期最优方案,既能学习到消费者对商品的偏好,又能够获得最大收益,这个可以认为是机器学习问题,也可以看做运筹优化和机器学习结合问题。
同样,关于这类问题有大量算法,但重要的是,我们不仅要提出算法,还要证明这个算法是所有算法中最好的。
四、路径优化
我们之前也提到过,像电商、物流公司等企业在经营过程中都会面临这样的问题:比如每天要把货物送达几个消费者,想要设计一条在最短的时间或路程内完成任务的路线,这就是路径优化问题的基本形式。
有许多优化模型或算法可以求解这个模型,但实际生活中,基于这个基本的场景还有很多非常复杂的变化或需求,比如不仅要送货,还要取货;不仅是一个人送货,可能有很多人或车要送货或取货,这就涉及到车辆和人员的分配问题;或有些需求不是事先确定的,还有一些实时需求,比如快递员突然接到上门取件的订单;另外,在送货路途上花费的时间也有很大不确定性,这些情况下,就需要在线算法应对这样的需求。现在比较火的自动化仓库管理,机器人管理仓库时会遇到货物摆放问题、机器人如何取货问题等,这里要平衡不同机器人之间任务以及优化每一个机器人路径,其中也会面临复杂的建模和求解问题。
实际场景中的问题是非常复杂的,而把这些场景的要求转化为数学模型,之后进行求解,这是运筹优化最擅长的。
说了这么多,我希望大家能了解这几点:
对运筹优化有基本了解。什么是运筹优化,对于实际问题能产生什么价值,运筹优化和机器学习的关系。两者之间更多是一种相互支持的关系,在很多场景下,优化运筹和机器学习结合才能提高好的解决方案。
运筹优化的一些基本方法。包括优化和随机建模。
最后,我想谈一下国内运筹优化的发展情况。
总的来说,国内运筹优化的发展比美国要落后一些,美国很多的大企业,像亚马逊、谷歌或者一些物流企业,内部都有一大批运筹学背景的团队来解决公司生产可能面临的问题,比如亚马逊中有50~200个的运筹学博士做定价、库存、物流等方面的决策支持。这方面,国内要落后一些,但我认为,未来几年,国内很多企业会在这方面转型,过程中正需要运筹优化的技术,这些技术帮助企业将大数据转换为真正的决策。
相关文章: