Bridging Decision Problems, Vol. I 界定问题
Back to SDA site →

第1章:框定的基本原理

架起决策问题之桥,第一卷 —— 问题的构建 · Warren B. Powell

人类由各种各样的过程组成,每一个过程都涵盖一系列可以用一个或多个绩效指标来评估的活动。人们似乎总是有一个基本特征,就是永远希望做得更好。运动员想要更快或更强;企业想要更盈利;医疗卫生专业人员想要挽救更多生命;电网想要以更低的成本提供电力。

本书将以下述陈述为核心:

If you want to run a better {anything} you have to make better decisions.

我们从这样一个前提出发:我们总是在努力改进事物,而我们只能通过操纵我们所控制的要素来做到这一点,这些要素也就是所谓的决策

表 1.1. 一些问题情境的示例及其能够体现绩效的目标示例。
应用领域目标
能源系统降低成本,最小化停电
公共卫生最小化死亡人数,最大化生产力
商业应用最大化利润,最小化成本
供应链管理最小化成本,最大化收入/生产力
制造业最小化成本,最大化良品率,最小化次品率
经济学最小化通货膨胀,最大化增长与就业
金融最大化收益,最小化风险
交通系统(公共)最大化覆盖范围,最小化成本
货运最小化成本,最大化服务水平,满足司机需求
工程最大化强度,最小化成本,最大化性能
药物研发最小化死亡人数、负面健康结果和成本
体育最大化胜场数,最小化球员薪资,最大化上座率
娱乐最大化观看量,最小化成本

表 1.1 列出了一系列人类活动,每项活动后面附有一份可能用于评估绩效的简短指标清单(实际指标清单可能相当长)。这些应用领域暗示了一个广阔的问题世界,人们在其中”想要做得更好”,但挑战在于如何创建一条能够逐步引向绩效提升的路径。

所有现实世界中的问题情境都需要从一个非结构化的”通俗英语”描述开始。相比之下,任何数学模型都假定该问题已经被结构化为一种可以被计算机理解的形式。而缺失的正是那些真正理解该问题的人的输入,这就造成了本书封面上那座未完工的桥所描绘的鸿沟。

当今标准的建模实践通常涉及某位熟悉某种”决策技术”的人士,这种技术可能是整数规划或非线性规划,也可能是机器学习,或蒙特卡洛模拟(如今我们还可以加上大语言模型,从技术上讲它也是机器学习的一种形式)。当一家公司向某位专家(无论来自业界还是学术界)求助时,这位专家会立刻倾向于从自身专业知识的角度来看待问题。

技术专家随后会提出符合其技能范围的问题。整数规划专家会询问决策变量和成本函数;机器学习专家会关注需要估计或预测的未知量;模拟专家则可能识别出需要通过模拟来评估的设计决策。

这种行为是一种偏见形式,我们称之为专业知识过滤:以反映自身专业知识的方式来了解问题。这种情况几乎发生在每一个项目中,因为领域专家往往不具备识别最合适技术专家的专业知识。技术专家总是假定自己的专业知识与问题相关,并透过自身所受训练的视角来看待问题。这并非欺骗行为,而只是人之常情。

我们认为,所有的”问题”都源于希望以某种方式改进某个过程的愿望。改进一个过程需要做出改变,而这些改变正是决策的结果,我们希望能够做出更好的决策。这种视角似乎将每一个问题都变成了一个优化问题,因为我们总是想做出最好的决策。但这并不意味着我们一定要使用优化工具。我们甚至不预先假定要进行任何形式的正式分析,但我们始终会为此敞开大门。

我们将采用一种更为整体化的方式来改进一个过程。我们首先用一个称为”问题构建”的步骤取代优化领域中熟悉的最初步骤——”建模”(将现实问题转化为数学模型),而”问题构建”步骤先于”建模”。”构建(Framing)”是商业问题解决领域中一个用得很滥的术语,但我们将赋予它更为精确的含义。

我们所说的”构建”是一个过程,需要训练人们提出正确的问题,这些问题更容易被领域专家(商业人士、卫生专业人员、科学家、工程师)理解,并且能够填补数学模型中的具体要素——如果确实需要用数学模型来求解该问题的话。”构建”环节不应由技术专家来完成,正是因为存在专业知识过滤的风险。然而,我们的方法将能够回答在使用任何分析工具时都需要回答的问题。我们相信,对于许多应用场景而言,我们的构建过程将带来清晰性,甚至可能在不借助计算机的情况下就有助于解决问题。

什么是”问题”?

在我们求解一个问题之前,我们所说的”问题”究竟是什么意思?虽然问题有许多种类,但从做决策的角度来看,我们将区分两种类型:

以指标为中心的问题通常更加复杂,因为陈述目标要比确定实现目标所需的决策容易得多。我们往往甚至不知道可以用哪些决策来帮助改善这些指标。事实上,识别对绩效指标影响最大的决策,正是问题构建中的一个重要步骤。

与此同时,确定正确的指标本身也可能是问题构建中的一个重要步骤。事实上,在存在多个决策者的情境中(这在任何组织中都会发生),管理者的一项重要决策类型,就是为组织层级中较低层次的人员和业务单元选择评估指标。

决策问题的情境

决策问题可能以多种方式出现:

以上任何一种情境,都构成了识别待解决问题或改进机会的完全合理的动机。一个重大挑战在于确保你关注的是正确的指标,然后找出所有能够影响这些指标的方式。任何你能够控制的事物,都属于决策的范畴。

决策自动化的三个阶段

A medieval cathedral.
图 1.1. 一座中世纪大教堂。

《今日美国》(USA Today)在新冠疫情期间的一篇文章中,将疫苗分发问题描述为”复杂得令人头晕目眩”。之所以有这样的说法,是因为人们不知道该如何思考复杂问题。有时值得记住的是,中世纪的大教堂是由没有受过正规教育的人设计并建造的;疫苗分发的问题并不在于复杂性本身——问题在于是否懂得如何去思考它。

一直以来所缺失的,是一种用于思考如何随时间推移做出决策的结构化方式。我们的方法涉及将决策自动化的过程分解为以下三个阶段:

阶段一:构建(Framing) —— 在这一阶段,我们识别决策问题的核心要素,首先要回答以下三个问题:

  1. 绩效指标是什么?
  2. 正在做出什么类型的决策,由谁来做?我们用一种称为策略的方法来做决策。
  3. 影响绩效的不确定性来源有哪些?

阶段二:建模 —— 下一步是填补通用建模过程的细节。这从回答以下问题开始:

  1. 我们如何做出决策?这是通过一个我们称之为”策略”的函数来完成的。这些策略将从四类策略中设计得出(在第三卷中给出)。
  2. 需要哪些信息?这些构成了我们状态变量(也称为”知识状态”)的要素,其中包含以下所需的信息:
    • 做出决策(这取决于所采用的策略)。
    • 计算任何绩效指标。
    • 在未来计算 (a) 和 (b)。

    信息可以分为以下几类:

    • 我们对物理和金融资源数量的完全已知信息。
    • 用于各种目的的参数和函数。
    • 我们必须加以估计并以信念形式表示的内容。
  3. 状态变量如何随时间演化?

阶段三:实施 —— 这涵盖从获取所需信息,到实施并评估决策的整个范围。这包括:

  1. 我们如何获取所需的信息?有些信息是即时可用的,有些信息必须从其他来源获取,还有些信息必须进行估计(或预测)。
  2. 我们如何实施利用策略所做出的决策?
  3. 我们如何评估这些决策在实际应用中的表现?

我们将在接下来的几节中描述这三个阶段。

阶段一:问题构建

我们将自动化过程的初始阶段称为”问题构建”,它包括回答以下问题:

  1. 绩效指标是什么?
  2. 正在做出哪些类型的决策(以及由谁做出)?
  3. 影响决策实施和系统绩效的不确定性来源是什么?

这三个问题不足以解决一个问题,但它们是任何涉及决策制定与实施的过程的起点。

下棋可能很难,但建模起来非常简单。
图 1.2。 下棋可能很难,但建模起来非常简单。

用有史以来最具挑战性的游戏之一——国际象棋——来说明这些问题会很有帮助(见图 1.2)。回答我们的三个构建问题如下:

  1. 绩效指标 – 赢得比赛。
  2. 决策 – 允许的走法。
  3. 不确定性 – 对手的走法。

当然,建模简单并不意味着下棋容易,但国际象棋长期以来一直被用作展示诸如”强化学习”之类算法策略威力的基准。

解决问题出现在第4步(阶段二),虽然这相当困难,但其余步骤同样也不简单。

现在考虑一些我们将在第2章中识别的问题:

对于这些问题回答我们的三个构建问题并非易事。因此,我们用三章专门讨论回答每个问题的过程:

这些问题将通过第2章中的应用来加以说明。我们在下面的小节中通过描述不同类型的指标、决策和不确定性,对这三个核心要素做一个简要的介绍。

指标的类型

指标种类繁多,完全取决于具体情境。

无论是用来指导计算机模型的行为,还是指导人的行为,选择正确的指标本身就是一项挑战。

与指标衡量什么内容不同的是,它如何被用来指导系统的表现。指标可以以三种不同的方式使用:

决策的类型

不同类型决策的初步清单如下:

决策的第二个维度涉及现在做出的决策在未来何时得以实施的时间安排。例如:

决策的第三个维度涉及识别谁来做出决策。

不确定性的形式

可以说,决策制定中最微妙的方面涉及理解在实地实施决策时不可避免会出现的不确定性。不出所料,出现的不确定性形式在很大程度上取决于具体情境。以下是一些例子:

上述每个例子都涉及多种不确定性来源。这些不确定性呈现出不同的形式,例如:

对不确定性的考量必须结合其如何影响绩效指标来进行。当我们在不确定性存在的情况下做出决策时,我们必须做出诸如如何做决策之类的选择,这些选择要在我们不知道未来会发生什么的情况下,平均而言表现良好。

然而,某些形式的不确定性引入了一个称为风险的新维度,它捕捉了在不存在不确定性的情况下绩效指标中不会出现的因素。风险是金融、供应链管理和健康等领域中非常热门的话题。有许多书籍谈论风险,也有许多非常复杂的论文对风险进行建模,却从未给出风险的正式定义。我们将在第3章提供这一定义。

阶段二:建模

我们最初的三个问题(绩效指标、决策、不确定性)为我们将要称之为通用建模框架(Universal Modeling Framework,简称UMF)的内容奠定了基础。UMF可用于对任何决策问题进行建模,尤其是当我们使用扩展版本来处理多智能体问题时。目前,我们着重于捕捉决策和信息随时间的演变。在第二卷中,我们将使用完整的数学符号来描述UMF(这并不像听起来那么糟糕),但目前,我们将用通俗易懂的语言来勾勒它。

通用建模框架由五个要素组成:

  1. 状态变量捕捉我们做出决策和计算绩效指标所需的全部信息。理解状态变量的组成要素有助于明确做出决策所需要的信息。
  2. 决策变量表示我们可能做出的决策(建立在我们在问题构建时所描述的决策类型之上)。请注意,我们假设我们使用某种”策略”来做出决策,该策略将在后面进行设计
  3. 外源信息是指在我们做出一个决策之后、做出下一个决策之前到达的任何新信息。
  4. 转移函数描述了在给定我们所做出的决策以及决策做出之后到达的外源信息的情况下,状态变量是如何变化的。
  5. 目标函数描述了如何使用我们所选择的决策制定方法来评估系统的表现。

识别状态变量需要先选定做决策的方法(称为策略),因此这一步必须先行完成。然而,如果我们要使用模拟器,评估和调优策略又需要整个通用建模框架。归根结底,策略的设计(它在很大程度上决定了状态变量中需要哪些信息)与策略的评估,是一个迭代的过程。

通用建模框架将在第二卷中详细阐述,届时我们会引入非常基础的数学符号。

如果通用建模框架听起来显而易见,那确实如此。它不过是一个描述我们所知(状态变量)如何在决策(我们所控制的)和外源信息(我们不能控制的)作用下演变的框架。也许令人惊讶的是,这在研究文献中并不是标准做法,尽管在某些领域确实可以见到。

可以说,最困难的一步是设计做决策的策略。我们将评估策略的过程与设计策略的过程分离开来,这使我们的方法有别于几乎所有关于随机优化的著作中所采用的方法。幸运的是,我们有一套应对这种复杂性的策略。

第三阶段:实施

在优化模型的设计与求解中,最容易被忽视的方面莫过于实施过程。学术文献完全忽略了这样一个事实:真正重要的不是我们在计算机中把问题解决得多好,而是决策被实施之后所产生的影响。

实施的关键维度涵盖三个方面:

  1. 获取填充状态变量所需的数据,也就是我们做决策以及计算绩效指标所需的信息(更多细节将在第二卷中介绍)。
  2. 实施决策,这可能意味着让人们遵照指令行事,或以电子方式传达指令。
  3. 评估绩效。对于复杂系统而言,理解系统的运行状况——这显然会受到所做决策的影响——可能相当困难。

对于产业界中的复杂问题,实施可能是一个异常具有挑战性的过程。即便这被视为超出建模过程的范畴,建模者仍有必要思考这些步骤。有些决策可能永远都不会由计算机来做出。例如,在公共卫生场景中分配资源,涉及州、地区和地方各组织之间的协商,而这些组织各自都有其隐藏的优先事项。

三种类型的信息

我们首先要认识到,任何可以在计算机上表示的量都是某种形式的信息。从信息随时间演变的角度看,我们可以识别出三种类型的信息:

  1. 我们在做决策时所知道的信息,它构成了我们系统的状态(更准确地说是知识状态)。这是做决策和/或计算绩效指标(无论是现在还是将来)所需的信息。
  2. 我们所控制的新信息。我们将在第4章正式定义决策,并描述10种不同类型的决策,这有助于识别决策。
  3. 来自我们系统之外、超出我们控制范围的新信息,尽管它可能受到我们当前状态和/或所做决策的影响。我们称之为外源信息,它可能来自多种来源:
    • 自然现象,如天气和地震。
    • 市场,如产品需求、股票价格和利率。
    • 人口动态,如疾病的传播。
    • 其他公司或组织的行为。
    • 来自我们系统之外的人(更广泛地说是主体)所做的决策,例如:
      • 制造工厂的原料供应商所做的生产决策。
      • 公司内部的其他部门(例如,如果我们从事制造或库存规划,那就是定价和营销部门)。
      • 患者的行为(如果你是医生)。
      • 总统竞选中对立候选人所投放的广告。

    外源信息将在第5章中更深入地阐述。

决策制定作为一个过程

有大量文献专注于构建由以下内容组成的”优化问题”:

真实的决策制定是一个过程,理解这一过程对于设计更好的决策方法至关重要。我们首先识别以下要素:

  1. 序贯决策问题,它描述了单个主体随时间做出一组特定决策的过程。
  2. “信息链”,它描述了创建做决策所需信息的过程。
  3. 实施决策所涉及的步骤。
  4. 评估绩效的过程。

超出本专著范围的是跨多个决策者进行协调这一挑战。

序贯决策问题

现在我们可以用英语写出一个序贯决策问题,可以这样表述:

状态、决策、信息;状态、决策、信息;……,状态、决策、信息。

每个三元组{状态、决策、(外源)信息}代表与某个特定时间段相关联的信息:

  1. “状态”是我们在时间段开始时所知道的信息。
  2. “决策”是我们内生可控的信息。
  3. “(外源)信息”是在我们做出决策之后、下一次决策之前到达的信息。

在我们做出决策之后(有时是在观察到外源信息之后),我们停下来计算绩效指标。

当然,并非所有决策问题都是序贯决策问题,尽管绝大多数决策都是随时间反复做出的。不过,从决策与信息的顺序关系角度,我们可以识别出序贯决策问题的几个类别:

  1. 做决策,停止。
  2. 做决策,看到外源信息,停止。
  3. 做决策,看到信息,再做一个决策,停止。
  4. 做决策,看到信息,做决策,看到信息,……,重复$T$次,停止。
  5. 做决策,看到信息,无限重复。

一些说明:

从优化决策到策略

在求解静态、确定性优化问题时,几乎每位作者都将决策表示为一个变量(通常是一个向量)”$x$”,我们必须设计一种算法来找到最优的”$x$”。相比之下,当我们面对的是序贯决策问题时,人们对我们究竟在优化什么这一问题从根本上缺乏理解。简而言之,对于确定性问题,我们寻找的是最优决策$x$,而对于序贯决策问题,我们寻找的是最优函数(也就是策略),它代表了一种做决策的方法。

寻找做决策的最优函数这一想法在优化文献中似乎显得陌生。相比之下,这恰恰是机器学习所做的事情,其中的挑战是找到一个函数(通常称为统计模型),使其能最好地拟合数据。今后,我们将把用于做决策的函数称为策略,这一主题我们将在第二卷中做更详细的探讨。

信息链

做决策与制造实物产品之间存在某种相似之处。例如,要制造一辆汽车,就必须先制造各种零部件,而这往往需要多个步骤。然后,在制造出汽车之后,我们还必须把它分销给客户。

决策是由信息”做出”的,而信息本身可能也需要通过一系列步骤来创建(收集或估计)。决定要制造多少辆、以及哪些类型的汽车,可能需要一份综合了历史数据、经济预测以及销售团队估计的预测报告。这些数据随后必须经过一套方法处理,从而生成预测结果。

展示信息从最初来源流出,经过处理和估计的各个阶段,直至被用于做决策这一过程的示意图。
图 1.3. 展示信息从最初来源流出,经过处理和估计的各个阶段,直至被用于做决策(另一种形式的信息)这一过程的示意图。

信息流如图 1.3 所示。“信息”可能是观测到的库存、根据历史数据生成的预测、通过市场调研收集信息这一决策的结果,或者是生产计划过程的结果。处理节点是数学函数——即作用于输入以产生输出的一组方程。这些函数可以完成各种任务,从简单的数字求和,到生成预测,再到通过求解优化问题来做出决策。

与物理过程一样,信息处理过程通常既包含人工步骤(如录入库存数据),也包含在计算机上完成(因而是自动化的)的步骤,例如运行预测。

由于计算机的广泛应用,人们很容易认为信息处理过程应当几乎完全自动化。然而,目前仍有大量白领工作者,他们既不装卸卡车,也不在装配线上工作。

人工智能

归根结底,以形式化方式思考复杂问题的目标,是利用计算机的力量来改进这一过程。大多数人会立即想到使用“人工智能”(常简称为“AI”)。问题在于,“AI”这一术语自20世纪50年代以来一直被使用,并随着时间的推移不断演变,通常被用来指代计算机科学领域最新出现的发明。

人工智能的七个层次。
图 1.4。 人工智能的七个层次。

我们将人工智能的主要形式划分为七个层次,如图 1.4 所示。在描述完这七个层次后,我们将把它们归纳为四类根本不同的智能。

人工智能的七个层次

层次 1:基于规则的逻辑 —— 这最早于20世纪六七十年代发展起来,并在80年代(随着计算机首次变得更加普及)以“专家系统”的形式出现。这些系统由人类指定的规则组成,形式为“如果{条件}则{行动}”。例如,条件可能是“食用红肉”,行动则可能是“饮用红酒”。或者条件可以是患者的属性(症状、性别、年龄、体重、是否吸烟、血压……),而行动则是相应的医疗处置。

这种形式的人工智能经历了所谓的“炒作周期”,人们幻想计算机将如何接管世界。

基于规则的系统的问题在于,随着构成条件的元素数量增加,可能的条件/行动组合数量呈指数级增长(这种现象被称为“维度灾难”)。到20世纪90年代,这种早期形式的人工智能被普遍视为一次失败,但事实上,基于规则的系统至今仍被广泛使用。唯一的“失败”之处在于它们未能达到最初炒作所描绘的高度。如今,基于规则的系统仍被广泛使用。

层次 2 —— 统计学/机器学习 —— 统计学(在计算机科学中称为机器学习)自20世纪初以来一直在发展,是利用数据来估计模型的科学。我们可能会利用某酒店客房不同价格的观测数据来估计需求,或利用历史需求来预测未来。这一领域在20世纪八九十年代(随着计算机的普及)呈爆发式增长。

机器学习的每种函数类型都落在三个相互重叠的圆圈之中。
图 1.5。 机器学习的每种函数类型都落在这些相互重叠的圆圈之中,包括1)查找表函数、2)参数化函数,以及3)非参数化函数(局部参数化)。

机器学习模型有多种形式,但可归纳为图 1.5 所示的三大类:

层次 3 —— 模式识别 —— 人工智能的下一个层次于2010年从研究界兴起,旨在解决模式识别问题。模式识别只是我们在层次2中所见的机器学习的另一种形式,涉及使用神经网络。然而,这些神经网络远比20世纪90年代使用的神经网络庞大。它们的参数数量不再是数千到一百万个,而可能达到一千万到一亿个。这些被称为“深度神经网络”。

展示神经网络识别向日葵图片或识别说出'Take me home'的语音模式的能力示意图。
图 1.8。 展示神经网络识别向日葵图片,或识别说出“Take me home”的语音模式的能力示意图。

其输入是图像中的像素(或语音模式的信号),这是维度高得多的输入。困难之处在于创建足够大的训练数据集以进行参数调优。训练数据集必须由数百万张图像(这在互联网上很容易找到)以及与之关联的“标签”组成,这些标签用于标识图像,例如图 1.8 中的“向日葵”或“Take me home”。困难之处在于获取这些标签,而这些标签必须由人来生成。

训练方法上的突破出现在普林斯顿大学计算机科学教授李飞飞意识到,亚马逊创建的一个名为“土耳其机器人”(Mechanical Turk)的软件环境,使得能够接触到全球各地愿意以极低工资工作的人来创建这些标签。换句话说,这一突破与其说在于底层的分析方法(神经网络早在20世纪70年代就已发展出来),不如说在于能够以低成本获取足够多的数据。

层次 4 —— 大语言模型 —— 层次4只是在图像识别基础上更进一步:神经网络不再是估计(或“预测”)图像的身份,而是将一串词语(从几个词到成百上千个词不等)作为输入,来预测下一个词(这些模型作用于被称为“标记”(token)的词片段)。它通过在给定一串词语(可能是用户提供的初始提示)的情况下,生成可能出现的下一个词的概率分布来实现这一点。

像ChatGPT这样的大语言模型使用训练数据集来构建可能跟随在一串词语之后的词语分布。
图 1.9。 像ChatGPT这样的大语言模型使用训练数据集,构建可能跟随在一串词语之后的词语分布,该过程由一个提示语启动,但会在大语言模型生成的序列基础上不断延续。

图 1.9 展示了这一过程,从提示语“提高供应链稳健性的最佳方法是……”开始。神经网络随后根据训练数据集,生成可能出现的下一个词的概率分布。大语言模型(LLM)随后按照该分布的比例从中采样。如果它选择了“设计”这个词,那么序列“提高供应链稳健性的最佳方法是设计……”就会被输入到神经网络中,神经网络随即生成另一个词的分布。这种采样一个词、将其加入先前的词序列以生成新序列的过程会被反复重复。这正是该过程被称为“生成式人工智能”的原因。

用于生成跟随在先前序列之后的“下一个词”分布的神经网络规模极其庞大。用于模式识别(层次3)的深度神经网络可能拥有一千万到一亿个参数,而用于大语言模型的神经网络参数量则可能在一百亿到一万亿之间。

由此描述应当可以清楚地看出,大语言模型本质上并不具备智能;它们只是在模仿训练数据集中的词语模式。它们之所以听起来很智能,是因为它们模仿的词语模式来源于一个智能的源头(假设这些词是人写的)。

层次 5 —— 确定性优化 —— 这涵盖了用于求解困难决策问题的大量工具库。这些问题被称为线性规划、整数规划和非线性规划,它们都具有这样一个特点:“决策”是一个向量,也就是说,它是一组不同决策的集合(数量非常庞大的集合)。举例如下:

通常这些问题可以用图形化的方式描绘,如图 1.10 左侧所示,但存在一种以数学方式书写它们的标准方法,通常从右侧的符号开始。虽然这种数学符号通常并不为人所熟知,但大学每年培养出成千上万接受过以此格式建模问题训练的学生。此外,还有许多计算机软件包——有些可以商业获取,有些则免费提供——能够高效地求解甚至大规模的问题。

Graphical illustration of an assignment problem and its mathematical representation as a linear program.
图 1.10。 一种决策问题类型(将资源分配给任务)的图形化说明,以及其作为线性规划的数学表示。

第 6 层——序贯决策问题 ——绝大多数决策是随时间反复做出的,无论是每隔几秒、几分钟或几小时,还是每天、每周、每季度或每年。即便是我们上面第 5 层中的确定性优化问题,通常也会随时间反复求解,但大多数决策要简单得多。以下是一些序贯决策问题的例子:

序贯决策问题在人类活动的各个过程中广泛存在。一个决策可能是二元的(持有或出售)、离散的(选择哪种药物),也可能是离散和连续变量组成的向量。在一组离散(或离散化)的选择中挑选最优者,无疑是最常见的序贯决策问题,但许多问题涉及在商业物流、能源系统和医疗分配问题中出现的复杂运营问题。

第 7 层——创造力、推理与判断 ——第 7 层代表智能的最高层次。例如,虽然第 5 层和第 6 层中的许多问题可能相当复杂,但它们始终涉及结构良好的问题,具有明确定义的决策和目标。第 7 层则是我们可以提出诸如减少二氧化碳排放、减少疾病、创造新产品等复杂问题的层次。

我们坚信,尽管许多作者会以取代人类的方式来谈论”人工智能”的未来,但现实是计算机将无法超越结构良好定义的问题。我们认为超出计算机智能能力范围(包括大型语言模型被过度炒作的能力)的一项活动,就是构建复杂决策问题的框架。因此,我们将第 7 层称为科幻小说——一个谈论起来很有趣,但永远不会真正实现的层次。

三类计算机智能

人工智能的前六个层次代表了可以在计算机上实现的不同形式的智能,而第七层,在我们看来,仍然是人类的专属领域。前六个层次可以分为三个不同的类别:

第 1 类——人为指定的行为 ——这一类别包括人工智能七个层次中的第 1 层,它可以用于两种不同的目的:

基于规则的逻辑并不区分该规则是在陈述世界的状态,还是在陈述应采取的行动。规则背后的条件及其结果(无论是状态陈述还是决策)都必须由人工指定。

第 1 类人工智能的一个重要特征在于它不使用什么:

规则必须由人直接指定,尽管规则也可以在数据集中被指定。例如,我们可能有一个列出医疗方案的数据集,其中针对每种患者病症指定了相应的治疗方法。然而,设想我们汇编了一个由实际医生决策组成的数据集,其中可能存在冲突:不同的医生在面对病症完全相同的患者时,可能会开出相互冲突的治疗方案。如果我们利用这个数据集来学习治疗方法,那就是机器学习的一个例子。

第 2 类——机器学习 ——这一类别包括第 2、3 和 4 层。机器学习是指使用由输入和一组可调参数构成的数学函数,通过调整这些参数使函数最佳地匹配一组响应(也称为标签,此外还有许多其他名称)。机器学习需要用户指定的函数,以及由输入和响应(标签)组成的训练数据集。

基于规则的逻辑在处理输入的复杂程度方面存在局限,而机器学习可以利用具有大量参数的模型处理非常复杂的输入。线性模型的变量数量可以从几十个到几十万个不等。神经网络已被训练用于大型语言应用,其变量数量超过一万亿。当然,更大的模型需要庞大的数据集,而这已被证明是限制神经网络在语言处理这一高度复杂任务中应用的主要障碍。

第 3 类——优化 ——这一类别包括第 5 层和第 6 层,它们处理从一组选择中挑选最佳决策的问题,这组选择可能是离散集合,也可能是高维向量空间。第 5 层局限于静态(确定性)问题,其中所有数据都是已知的,我们寻求最佳决策(通常是一个向量)。第 6 层则处理随时间选择最佳决策这一复杂问题,其涉及范围极为广泛。

优化这一类别不使用训练数据集。相反,需要指定一个性能指标(通常称为目标函数),以及一组描述哪些决策是允许的方程。对于序贯决策问题,我们还需要能够告诉我们信息如何随时间演变的方程。

小结

第 2 类方法——机器学习,旨在训练数学函数使其表现得像训练数据集一样。如果训练数据集由诸如乳腺 X 光片之类的图像,以及人工生成的关于该乳腺是否显示癌症证据的”标签”组成,那么训练出的模型永远无法表现得比提供这些标签的放射科医生更好。因此,可以说第 2 类方法(机器学习)教会计算机表现得像人类(更准确地说,是表现得像训练数据集)。

相比之下,第 3 类方法(优化)旨在产生优于人类的决策。这种更高层次性能的代价是,我们必须提供所谓的问题模型。具体而言,这些方法需要一个数学模型,其包括:

本书聚焦于第 3 类,因为这涵盖了处理决策制定的方法。特别地,我们将重点关注序贯决策问题,因为这类问题最为普遍——几乎每个人都在做决策,而我们是随时间推移做出这些决策的,这使它们成为序贯决策。静态(确定性)问题只是序贯决策问题的一种特殊情况,而求解序贯决策问题将在很大程度上借助于为静态确定性问题所开发的工具。

序贯决策问题代表了一个极其丰富的问题类别。这些工具无一例外地依赖于人工智能前五个层次中的方法。与第 5 层工具(确定性优化)一样,我们需要一个针对底层问题的模型。然而,由于序贯决策问题远比第 5 层中的静态问题丰富得多,因此这些模型也需要更加丰富和复杂,而这正是经典数学建模一直存在不足的领域。

传统建模框架

将用于决策制定的建模框架划分为两大类会有所帮助:

在本卷中,所有序贯决策问题都明确捕捉了信息的流动,这意味着我们是在每个时间点上,在我们知晓未来可能到来的信息之前做出决策。因此,序贯决策问题本质上是随机的(这是一个用来表示未来信息是随机的专业术语)。

静态确定性模型

用于静态确定性问题建模的文献相当成熟,围绕一个优化模型的各种变体建立了大量的软件基础,该模型可以写成:

\[\begin{align} \min_{x,y} \quad & C(x,y) \tag{1}\\ \text{subject to:}\\ & g(x,y) = 0, \tag{2}\\ & x \geq 0, \tag{3}\\ & y \in \{0,1\}. \tag{4} \end{align}\]

我们已经考虑到了连续变量 $x$(其可能取如 0.56 这样的值)以及必须为 0 或 1 的离散变量 $y$ 的存在。

在对确定性优化问题(第 5 层)进行建模时所发生的情况是,我们采用由方程 (1)–(4) 给出的数学模型,然后转向实际的物理问题,填入模型的各个要素,这需要识别出决策变量、目标函数以及约束条件。设想手里拿着一把锤子,四处寻找钉子。这个工具很有用,但这个过程需要将问题嵌入到该建模框架之中。

确定性优化长期以来一直强调设计工具以在给定模型的情况下找到最优决策这一挑战,而对于创建模型本身则给予了次要的关注。请注意,该建模框架并未提供任何机制来捕捉决策与信息的演变,也未涉及与决策如何组织相关的任何内容。

序贯决策模型

传统上,关于序贯决策问题的文献一直试图遵循同样的方法,但这种做法已经彻底失败了。与方程 (1)–(4) 所代表的确定性优化的明确定义的建模框架不同,优化文献并没有为序贯决策问题采用一个标准的建模框架。截至本文写作之时,有十几个不同的学术群体使用八种不同的符号体系,其表达所求解问题或所求解目标的方式存在根本性的差异。例如,有些群体像确定性优化那样写出目标函数,另一些则写出策略,还有一些则写出最优性条件。

我们的方法依赖于上一节所勾勒的通用建模框架,该框架可用于对任何序贯决策问题进行建模。这一建模框架在《Reinforcement Learning and Stochastic Optimization》[第9章]中有详细描述。该书在描述用于做出决策的策略(这在第11章完成)之前先阐述了模型(第10章则专注于对不确定性建模)。

本系列的第二卷也将比本卷更详细地涵盖通用建模框架的各个维度,但仍会使用适度的符号体系。然而,若不解答本卷所讨论的三个问题,通用建模框架便无法使用。

A decision problem with discrete choices, and uncertainty about the value of each choice.
图 1.11。 一个具有离散选择的决策问题,且每个选择的价值都存在不确定性。

最常见的决策问题

决策问题,尤其是序贯决策问题,是一个极其丰富的问题类别。然而,在优化文献中常被忽视的一点是,绝大多数决策问题都可以用图 1.11来描述,在这些问题中,我们可能面临两个选择(采取行动或不采取行动),或一小组选择(使用哪种药物、从哪里采购某个零件),或大量的选择(为哪种产品做广告、在研制新药时使用哪种分子)。

这类问题的一个显著特征是:尽管我们可能对每个选择的表现有一个估计,但通常我们对做出选择后所呈现的实际表现是不确定的。我们可能只有一次机会做出最佳选择,但很多时候我们会反复做出这一决策,并能从过往经验中学习。这一问题存在许多变体:

人们在从一组离散选择中做出决定时最常用的方法,就是简单地选择那个看起来最好的选项。这种做法忽略了从该选择中学习以便在未来做出更好决策的能力。当下学习对未来决策的价值,很大程度上取决于我们将面对同一组选择的次数。它也可能忽略了做出某个可能表现极差的选择所伴随的风险。

在许多情境下,决策相当重要,我们必须在一段时间内承受该决策的后果。例如决定研发某种特定药物,或选择一个我们至少要合作一年的供应商。对于这些问题,花些时间就每个选择的可能表现建立一套最佳信念体系尤为重要。

信念模型通常会因相关性而变得复杂。选择研发哪种药物,可能需要比较服务于类似市场的不同类型的癌症药物。我们可能需要在按国家聚类的若干供应商中做出选择,而这些供应商共同承担着关税上升、疾病爆发和货币变动等相同的风险。

静态决策问题与序贯决策问题

在学术文献中,从事确定性优化的群体与从事不确定性下优化的分散群体之间存在强烈的竞争意识。大多数确定性优化模型都是随机问题的确定性近似,其副产品是,使用确定性优化的人在面对不确定性对其问题产生影响的方式时,往往会表现出相当的防御性。

我们敦促读者牢记以下几点:

在使用确定性优化模型时最常犯的错误,就是忽视了该问题需要随时间反复求解这一事实。这方面的一个例子出现在一类被称为“指派问题”(assignment problem)的问题中,在该问题中我们把“资源”(人员、卡车、机器)分配给“任务”(工作分配、待运送的负荷、待完成的作业)。这类问题从来都不是只求解一次;随着时间推移,资源在完成任务上取得进展,新任务不断出现,而机器可能出现故障,从而改变完成任务所需的时间。

图 1.12(a) 将该问题描绘为一个静态的确定性问题。当乔治·丹齐格(George Dantzig)在20世纪50年代首次求解这一问题时,这被视为一项伟大的突破(事实也的确如此)。然而,即使过了70年,顶尖的专业人士仍然忽视了该问题绝不会只求解一次这一事实;它必须随时间反复求解,而且几乎总是这样一种情形:某一时点的解会影响到(不确定的)未来需要求解的问题。

Static assignment problem.
(a)
Dynamic assignment problem.
(b)
图 1.12。 (a) 静态指派问题;(b) 动态指派问题。

真正的问题如图 1.12(b) 所示,图中展示了该问题是如何随时间被序贯求解的。我们要指出,仅凭观察模型的数学表达,是不可能判断出一个确定性优化问题是否需要被序贯求解的;这需要通过英文(自然语言)理解该问题本身。

建模的各个阶段

我们首先认识到看待一个问题的三种不同方式:

上文关于问题界定的讨论中,我们描述了理解决策问题不同维度所涉及的三个阶段。在本节中,我们将专门聚焦于(在需要时)开发一个计算机模型。

  1. 问题界定: —— 任何对决策问题进行建模的尝试都需要我们界定过程中所确立的要素:
    • 一份通俗易懂的英文叙述 —— 务必始终先用一位未接受过任何建模流程训练的领域专家的语言来进行描述。
    • 回答三个界定性问题:
      • 绩效指标是什么?如果你无法阐明可量化的绩效指标,那么你面对的可能是那种复杂的、非结构化的问题,不适合采用正式的分析流程。
      • 正在做出哪些类型的决策(以及可能由谁来做出)?此时,仅仅列出可能的决策,是否就能让你清楚应该做出什么选择?
      • 可能影响系统表现的不确定性类型有哪些?这可能是一个复杂的问题,需要花时间去阐明,然后加以分析,以理解这些不确定性对不同决策表现的影响。

    在此时,你可能会觉得应做的选择已显而易见。如果不是,请继续下一步。

  2. 通用建模框架 —— 理解通用建模框架(在上文描述)的不同要素,可以让你对自己的问题有更全面的理解。具体而言:
    • 你需要汇集做出决策以及计算绩效指标所需的信息(也称为状态变量)。由于这取决于你打算如何做出决策(即策略),你通常无法一开始就确定状态变量的所有要素。

请注意那些您希望获得但无法直接观察到(至少无法准确观察)的信息。这些可能代表使用统计估计/机器学习的机会。

捕捉不确定性有不同的方法:

我们将在第5章更深入地讨论不确定性,届时我们将识别出若干不同的不确定性来源,以此作为指导来命名适用于您特定应用的不确定性。

  1. 设计策略 – 在这里,我们将解决设计决策制定方法这一非常丰富的挑战。第4章描述了四类策略,它们捕捉了制定决策的根本不同方法,但关于设计策略的完整讨论我们留待第三卷进行。

    请注意,虽然我们在通用建模框架中引入了状态变量的概念,但状态变量部分是由策略所需的信息定义的。

  2. 计算机实现 – 一旦我们设计了策略,我们就必须决定如何测试它们。可供选择的方式有:
    • 现场测试 – 在这种情况下,我们所要做的就是在计算机上实现该策略,这也意味着要汇集做出决策所需的数据。
    • 计算机仿真 – 我们如何在计算机上测试策略取决于系统的复杂性。通常我们是在以下选项中做出选择:
      • 电子表格实现 – 大多数问题相对简单,使我们能够在电子表格中测试想法。电子表格甚至可以成为生产系统的基础。
      • 通用编程环境 – 如果问题过于复杂而无法用电子表格处理,我们将需要转向各种编程环境中的任何一种。这需要专业程序员的技能。
  3. 评估和校准模型与策略 – 此时我们必须决定是开发一个模拟器来评估策略,还是需要实现该策略以便在现场使用:
    • 开发基于计算机的模拟器 – 此时我们已经拥有模拟策略性能所需的一切。计算机模拟器只是通用建模框架中各要素的软件实现。然后我们可以在历史数据或数学模型生成的数据上运行这个模拟器。
    • 现场测试 – 我们常常没有时间或资源来开发模拟器。相反,我们实现该策略,然后监测它在实践中的表现。

    创建一个基于计算机的模拟器提供了显著的优势,但引入了模型校准这一困难的维度。相比之下,直接在现场实现策略意味着我们是在一个不需要校准的环境中测试它。现场实现的问题在于,在不同类别的策略中进行搜索,尤其是调整任何参数,可能会非常缓慢。在研究文献中,现场调整策略受到的关注非常少。

分析方法的类型

如果我们求解确定性优化问题,可以利用大量的求解器系列,从Gurobi或FICO Xpress等商业软件包到各种可以免费下载的软件包。例如,谷歌免费提供其”OR Toolbox”,即使是商业用户也可以使用。

对于序贯决策问题所需要的那种随时间优化决策,几乎没有什么商业工具可用。然而,在为特定问题构建定制系统时,我们通常会借鉴多个工具箱。这些包括:

这些工具通常被描述为来自不同的社区,其中只有一个(确定性优化)被视为解决决策问题的工具。然而,理解每一种工具在决策制定中的作用是很重要的。

例如,仿真模型几乎总是为了帮助理解某个过程的行为而构建的,这个过程可能是从制造工厂到疾病在人群中传播的任何事物。在这两个例子中,我们都在寻求了解系统的设计(工厂布局、疫苗库存存放的位置)或系统的控制(工作如何路由、下达疫苗补货订单)会如何影响结果。我们也可能模拟飓风的路径,虽然我们无法改变它们的路径,但这些信息可用于帮助指导疏散工作,而疏散工作本身也需要被模拟。

简而言之,将仿真模型视为目标函数,或用于制定决策的未来事件预测,是有帮助的。

那么统计估计/机器学习又如何呢?虽然这些领域使用优化来拟合模型,但其目标仅仅是估计某个量或参数。但我们为什么要创建这些估计呢?

我们可能在估计肿瘤的性质,或有多少人支持总统的表现,或电路能够正常工作的概率。或者我们可能在估计未来的事件,比如有多少人可能购买某种产品,或者风电场的发电量。在所有这些案例中,我们创建估计或预测都是为了帮助现在做出决策。

这些工具中的每一种也可能提供超越帮助做出更好决策的内在价值服务。这一点在撰写本文时正在迅速发展的大语言模型上最容易看出。例如,大语言模型可以帮助完成越来越多的任务,如进行研究、处理请求和创建图像,但不能制定决策。

结语

本章为思考被称为序贯决策问题的复杂问题群奠定了基础。我们从以下前提出发:

“如果您想更好地经营{任何事物},您就必须做出更好的决策。”

绝大多数涉及决策制定的场景都属于序贯决策问题这一广泛类别,在这类问题中,我们随着新信息的到来而反复做出决策(请注意,序贯决策问题的一个特例是我们只做一次决策的问题)。

本卷的目标是在任何有兴趣表现得更好(大概是通过做出更好的决策)的问题与能够帮助这些决策的计算机软件之间架起桥梁。计算机需要能够捕捉问题的数学模型,而这些模型需要理解用英语表达的问题,但要使用能以可转化为模型语言的方式捕捉问题的术语。

这一过程的一个关键特征是使用我们称之为通用建模框架的通用建模策略。基于数十年来在众多领域中处理极其广泛的一类问题的经验,我们的主张是:这个建模框架能够捕捉任何计算机可能有用的问题的特征。这是一个重要的附加说明,因为存在一些指标定义不清或不存在的问题:是否要与某人结婚?大学专业该选什么领域?招待访客时该选哪家餐厅?

通用建模框架将诸如如何做出决策(称为策略)之类的选择形式化,这反过来有助于回答需要什么信息的问题。UMF还提供了一个基础,用于比较不需要预测的策略(金融中的低买高卖、库存中的补货至某水平策略)与需要预测的策略,并评估更准确预测的价值。

使用计算机做出决策为”人工智能”的应用打开了大门,这个术语在公众媒体中被广泛使用,却没有得到恰当的定义。我们涵盖了人工智能的七个层次,它们清楚地区分了基于机器学习的工具,如大语言模型(如ChatGPT),与用于制定决策的工具,如确定性优化(第5层)和序贯决策问题(第6层)。

习题

复习题

  1. 决策自动化的三个阶段是什么?
  2. 在问题构建的第1阶段提出的三个问题是什么?请用您选择的问题场景来说明这些内容。
  3. 通用建模框架的五个要素是什么?
  4. 决策的定义是什么?请举出您在个人活动中遇到的三个不同场景的例子。
  5. 简要描述人工智能的七个层次,按照本章组织的四个不同类别进行划分。
  6. 统计模型的三个类别是什么?
  7. 基础模型和前瞻模型之间有什么区别?请以使用谷歌地图进行长途汽车旅行为背景来说明这两者。
  8. 建模的六个阶段是什么?

建模题

  1. 请举出一个你在日常活动中遇到的序贯决策问题的例子,并完成以下工作:
    1. 确定至少一个你希望改进的绩效指标。
    2. 给出至少一个会影响该绩效指标的决策。
    3. 描述在该决策实施时可能干扰其表现的任何不确定性。
  2. 请举出三个涉及实物资源的问题的例子,并指出每种情形中出现的决策。
  3. 你将进行15局井字棋游戏,目标是迫使对方连成三子(此时你获胜)。你们双方都从未玩过这个游戏,你想要捕捉对方如何学习你的策略。请记住井字棋通常以平局收场,因此有必要让对手相信你即将犯错。请用英文回答以下问题(不允许使用数学表达)。
    1. 设计一个能够捕捉这15局比赛结果的绩效指标。
    2. 你必须做出哪些决策?
    3. 有哪些不确定性?
    4. 描述在下完几局之后,你希望获得哪些信息以便设计一个策略。