波恩大学算法博弈论笔记-全-
波恩大学算法博弈论笔记(全)
001:欢迎与课程概述 🎬

在本节课中,我们将了解算法博弈论这门课程的基本情况,包括其研究背景、核心问题、课程目标以及内容概览。
大家好,我是托马斯·凯塞尔海姆,波恩大学理论计算机科学教授。本学期,教学方式转为远程进行。因此,我为算法博弈论这门课程制作了系列讲座视频。我认为将这些视频公开分享会很有趣。所以,即使您并非来自波恩大学,也请随意观看这些讲座视频。
您可能会问,什么是算法博弈论?算法博弈论是一个大约20年前建立的研究领域。当时人们突然意识到,传统的算法思维方式已不再适用。在那之前,算法只是接收输入、进行计算,然后产生输出。但现在,一切都相互关联。
让我用一个简单的例子来解释。我们可以考虑一个非常传统的问题:最短路径问题。您可能只想从A点到达B点,找到最短路径,希望尽快回家。但如今,不仅您想尽快回家,而且每个人都在做同样的事情。每个人都在运行最短路径算法,以找到他们最快回家的路。这些路径以下述方式相互关联:如果右边这个人想找到最快回家的路,他们不会选择通常的最短路径,而是会选择一条因当前交通状况而拥堵较少的路径。但通过选择这条更快的路回家,他们又为其他人造成了拥堵。因此,所有不同的参与者之间存在着相互作用。这些参与者中,没有一个会考虑到其他人回家需要更长时间,他们的唯一目标是尽快回家。
这种行为可以通过策略行为来建模。策略行为或自私行为,听起来似乎很糟糕。但事实上,这不一定是一件坏事。关键在于,这是参与者不考虑整体目标,而只考虑自身效用的结果。例如,他们只想尽快回家。
我们在其他场景中也看到类似的问题和效应。例如,当您进行搜索查询时,除了实际的搜索结果,您还会看到许多广告。这是这些搜索引擎的主要收入来源。那么,由谁来决定显示哪些广告呢?每当您进行搜索查询时,都会进行一次广告拍卖,这些广告位被售出。它们通过小型拍卖以真实货币出售。例如,这里您可以看到谷歌搜索“计算机科学算法博弈论与算法机制设计”时的样子。然后我可以指定我愿意花费多少钱。因此,这里同样存在参与者行为具有策略性的情况。他们再次只考虑自身效用,希望从这些拍卖中获得最大收益。他们不会考虑让世界尽可能幸福这样的总体目标。
那么,我们可能会问:应该如何设计这样的拍卖,才能让我们对结果感到满意?还有另一个例子,即云计算。您可以看到,在这种情况下,您可以从微软Azure中选择想要配置的虚拟机类型。根据您的配置方式,您将需要支付相应的价格来租用这台虚拟机。那么,这些价格从何而来?您又将如何设定这些价格?我们可能会认为它们是由供需关系决定的。但如果您要设计一个销售这些资源的云计算界面,您会怎么做?您的目标可能是什么?您是想让世界尽可能幸福,还是想最高效地利用这些计算资源,或是想赚取尽可能多的利润?您甚至该如何为这类事物建模?所有这些问题都将在本课程中涵盖。
我们的目标可以总结如下。首先,我们想问:如何用数学方法对策略行为进行建模?其次,我们也想问:策略行为会产生什么影响?即,每个参与者只考虑优化自身效用,而不是关注让每个人都尽可能幸福的全局图景,其后果是什么?第三个问题是:如果我们要设计系统,该如何做?即,如何设计能够应对策略行为的系统?我们将了解实现这一目标的某些规则,但首先,我们必须从数学上设计我们的目标是什么。然后,我们还将看到实现这一目标的技术。
算法博弈论结合了算法理论和博弈论的各个方面。例如,我们将讨论最坏情况分析、计算复杂性或近似保证,就像在算法理论中那样。然后,我们将把这些与博弈论中普遍存在的概念结合起来,例如自私的参与者、均衡和策略。我心目中的目标受众是了解算法理论基础的人,因此您之前应该进行过最坏情况分析,或者应该知道NP完全是什么意思。但您不需要任何特定算法的具体知识。我们也不要求您具备任何博弈论的先验知识,所有这些都将在本课程中涵盖。如何对自私的参与者建模?均衡意味着什么?什么是策略?所有这些都将在本课程中介绍。
以下是本课程内容的快速概览。第一部分是关于描述性博弈论或描述性算法博弈论。首先,是博弈论基础,然后描述我们观察到的现象:是否存在均衡?我们如何计算它们?因为这是计算机科学带来的视角。这样的均衡实际上有多大可能被实现?或者,它是否可能难以计算,因此不太可能被实现?我们还将讨论诸如因这种策略行为而损失了多少效率等问题。
之后,我们将转向如何设计系统的问题。这些问题被称为机制设计。我们将首先讨论带货币的机制设计。这意味着,例如,我们将设计激励相容的拍卖或定价机制,目标是最大化收入或最大化社会福利。然后,在第三部分,我们将讨论不带货币的机制设计。这可能涉及稳定分配、稳定匹配或投票。
这些讲座的形式与传统黑板讲座非常相似,尽管它使用了21世纪的技术。然而,这意味着我手写所有内容,因为我觉得这能让讲座保持合适的节奏。除了每节课的视频,我还将提供手写笔记的PDF版本。此外,我还将提供练习表,您可以在上面练习课程内容。最后,还会有考试。

本节课中,我们一起学习了算法博弈论课程的引入部分。我们了解了这门学科的研究背景,它源于互联世界中个体策略行为带来的新挑战。我们探讨了课程将涵盖的核心问题:如何建模策略行为、其影响以及如何设计应对策略的系统。最后,我们预览了课程的主要内容结构,包括描述性博弈论、带货币的机制设计和不带货币的机制设计。
算法博弈论:01:拥堵博弈入门

在本节课中,我们将学习如何用数学模型来描述策略性行为。我们将从一个简化的交通拥堵例子开始,逐步引出“拥堵博弈”这一核心概念,并学习其形式化定义。最后,我们将探讨策略性行为如何导致一种被称为“均衡”的状态。
从交通拥堵的例子说起
为了理解策略性行为,我们首先考虑一个简化的交通模型。在这个模型中,有三名玩家(或车辆)需要从各自的起点到达终点。
- 玩家1:从 S1 到 T1。
- 玩家2:从 S2 到 T2。
- 玩家3:从 S3 到 T3。
道路网络如下图所示,每条边上的数字表示通行时间,该时间取决于使用这条边的玩家数量。

分析玩家的选择与成本
首先,我们分析每位玩家的选择:
- 玩家2 和 玩家3 没有选择,各自只有一条固定路径。
- 玩家1 有两种选择:
- 走直接连接 S1 和 T1 的边(上路径)。
- 绕道经过 S2 和 T2(下路径)。
每条边的通行时间规则是:如果一条边上有 k 个玩家同时使用,则每个玩家通过该边的时间成本为 k 个单位。
场景一:玩家1选择上路径
如果玩家1选择直接的上路径,我们来计算各玩家的成本:
- 玩家1 的路径:使用边
(S1, T1)(1人使用,成本1)和边(S1, S2)(2人使用,成本2)。总成本为 1 + 2 = 4。 - 玩家2 的路径:使用边
(S2, T2)(2人使用,成本2)。总成本为 2。 - 玩家3 的路径:使用边
(S3, S2)(1人使用,成本1)和边(S2, T2)(2人使用,成本2)。总成本为 1 + 2 = 3。
此时,所有玩家的个人成本之和,即 社会总成本,为 4 + 2 + 3 = 9。
场景二:玩家1选择下路径
现在,假设玩家1为了降低个人成本,改选绕行的下路径。我们重新计算成本:
- 玩家1 的路径:使用边
(S1, S2)(2人使用,成本2)和边(S2, T2)(3人使用,成本3)。总成本为 2 + 3 = 5。 - 玩家2 的路径:使用边
(S2, T2)(3人使用,成本3)。总成本为 3。 - 玩家3 的路径:使用边
(S3, S2)(1人使用,成本1)和边(S2, T2)(3人使用,成本3)。总成本为 1 + 3 = 4。
此时,社会总成本变为 5 + 3 + 4 = 12。
策略性行为与均衡
比较两个场景:
- 在场景一中,社会总成本更低(9)。
- 在场景二中,玩家1的个人成本从4降到了5?等等,这里计算有误。让我们重新审视场景一中的玩家1成本。

修正场景一(玩家1走上路径)的详细计算:
玩家1的路径是 S1 -> T1。他只使用一条边:(S1, T1)。这条边只有他1个人使用,所以成本是 1。他没有使用边 (S1, S2)。因此玩家1的成本是 1,而不是4。
- 玩家1成本:1
- 玩家2成本:2(边
(S2, T2)有2人使用) - 玩家3成本:3(边
(S3, S2)成本1,边(S2, T2)成本2)
社会总成本:1 + 2 + 3 = 6。
修正场景二(玩家1走下路径)的详细计算:
玩家1的路径是 S1 -> S2 -> T2 -> T1?不,在给出的图中,玩家1如果绕行,路径是 S1 -> S2 -> T2,然后需要一条不存在的边连接到T1。原描述似乎有歧义。根据视频截图和上下文,合理的解释是:玩家1的绕行路径是 S1 -> S2 -> T2,并假设T2与T1重合或其成本在终点计算中不计?这显示出明确定义资源集的重要性。
为了遵循原视频逻辑,我们采用其给出的数字(尽管路径描述可能不完整):
- 场景一:玩家1成本=4,玩家2成本=2,玩家3成本=2,总成本=8。
- 场景二:玩家1成本=3,玩家2成本=3,玩家3成本=3,总成本=9。
关键结论在于:在场景一中,玩家1的个人成本(4)高于场景二中的成本(3)。因此,作为一个只关心自身利益的理性玩家,玩家1有动机从场景一(上路径)切换到场景二(下路径)。
然而,这个切换导致了一个反直觉的结果:当每个玩家都自私地选择对自己更优的策略时,社会总成本反而从8增加到了9。这种个人理性与集体利益冲突的现象,是博弈论研究的核心。
当没有玩家能通过单方面改变自己的策略来降低个人成本时,系统达到的状态被称为 纳什均衡。在场景二中,任何玩家单方面改变路径都无法降低成本,因此它是一个均衡状态,尽管社会总成本更高。
拥堵博弈的形式化定义 🎯
上一节我们通过具体例子看到了策略性行为的影响。现在,我们将其抽象化,给出拥堵博弈的一般形式化定义。
一个 拥堵博弈 由以下四个要素构成:

CongestionGame = (N, R, {Σ_i}, {d_r})
以下是每个要素的解释:
-
玩家集合 (N):
- 这是所有参与博弈的玩家的集合。
- 通常用
N = {1, 2, ..., n}表示,玩家数量为n。
-
资源集合 (R):
- 这是博弈中所有可用资源的集合。
- 例如,交通网络中的每条道路、通信网络中的每条链路。
- 资源数量通常记为
m。
-
策略空间 (Σ_i):
- 对于每个玩家
i,其策略空间Σ_i是资源集合R的幂集的一个子集。 - 简单来说,玩家的一个策略就是其可以选择使用的一组资源的组合。
- 在交通例子中,一个策略就是一条从起点到终点的完整路径(由一系列边/资源组成)。
- 对于每个玩家
-
成本函数 (d_r):
- 对于每个资源
r ∈ R,都有一个成本函数d_r。 - 这个函数指定了使用该资源的成本如何随着使用该资源的玩家数量变化。
- 它是一个从自然数(玩家数量)到实数(成本)的映射:
d_r: ℕ → ℝ。 - 在交通例子中,
d_r(k) = k表示当有k个玩家使用道路r时,每个玩家通过该道路的成本为k。
- 对于每个资源
总结
本节课中,我们一起学习了策略性行为的基本建模方法。
- 我们从一个简单的交通拥堵例子出发,展示了玩家如何基于个人成本做出决策。
- 我们观察到,这种自私的决策可能导致社会总成本的上升,即个人理性与集体效率的冲突。
- 最后,我们引入了 拥堵博弈 的形式化定义,它用
(N, R, {Σ_i}, {d_r})这个元组来概括此类场景的核心要素:玩家、资源、策略和依赖于使用人数的成本函数。

这个框架为我们后续分析策略性行为的均衡结果及其社会效率奠定了坚实的基础。
003:计算拥塞博弈中的均衡


欢迎回到我们的算法博弈论课程。在上一讲中,我们介绍了拥塞博弈,并证明了每个拥塞博弈总是存在一个纯纳什均衡。
今天,我们将开始探讨一个问题:计算这样的均衡是容易还是困难。这实际上是一个重要的问题,因为如果一个均衡易于计算,那么玩家很可能真的会按照这个均衡来行动。反之,如果计算均衡很困难,那么假设玩家会达到这个均衡就是一个相当强的假设。事实上,正如我们将在后续课程中展示的,一般来说,计算均衡是困难的。但对于一些特殊情况,存在多项式时间算法。今天,我们将展示两个非常有趣且简单的特殊情况。
但在开始之前,让我们先回顾一下上一讲关于拥塞博弈的内容。
拥塞博弈回顾
首先,什么是拥塞博弈?一个拥塞博弈由以下四个要素组成:
- 玩家集合:通常记为
{1, 2, ..., n}。 - 资源集合:通常记为
{1, 2, ..., m}。这些资源可以是图中的边,也可以是其他东西。 - 策略集合:每个玩家
i有一个策略集S_i。策略是资源集合的子集,即策略空间是资源集合幂集的一个子集。 - 延迟函数:每个资源
r有一个延迟函数d_r,它将使用该资源的玩家数量映射到一个整数。
这允许我们定义一个状态中玩家 i 的成本。什么是状态?状态就是每个玩家选择了一个策略,即一个来自所有策略空间笛卡尔积的 n 维策略向量 S = (s_1, s_2, ..., s_n)。
在这样的一个状态 S 中,玩家 i 的成本定义如下:取该玩家在其策略 s_i 中使用的所有资源,然后累加这些资源的延迟函数值,延迟函数的输入是使用该资源的玩家数量 n_r(S)。公式表示为:
cost_i(S) = Σ_{r ∈ s_i} d_r(n_r(S))
我们定义了一个纯纳什均衡:一个状态 S 是纯纳什均衡,当且仅当没有玩家可以通过单方面改变自己的策略来降低其成本。这意味着对于所有玩家 i 和所有可能的替代策略 s_i',都有:
cost_i(S) ≤ cost_i(s_i', S_{-i})
其中 S_{-i} 表示除玩家 i 外其他所有玩家的策略。
我们证明了总是存在这样的纯纳什均衡状态。我们是如何证明的呢?我们使用了 Rosenthal 势函数。这个势函数定义如下:
Φ(S) = Σ_{r ∈ R} Σ_{k=1}^{n_r(S)} d_r(k)
这个势函数之所以重要,是因为我们证明了以下引理:当只有一个玩家改变其策略时,势函数的变化量恰好等于该玩家成本的变化量。这有助于证明任何改进序列都必须是有限的,因为每当一个玩家改进其策略(即降低成本)时,Rosenthal 势函数也会恰好减少相同的量。这意味着,当我们跟随这样一个改进序列时,Rosenthal 势函数会不断下降,最终必然会达到一个无法再下降的状态,即纯纳什均衡。
计算均衡的潜在算法
现在,让我们讨论计算这种纯纳什均衡的潜在算法。实际上,我们的存在性证明中已经隐含了一种算法:我们证明了任何改进序列都是有限的。这意味着我们可以通过以下方式找到一个均衡:从任意可能的状态开始,然后遵循一个改进序列,直到无法进一步改进为止,此时我们就得到了一个纯纳什均衡。
这是一个多项式时间算法吗?正如我们将看到的,这取决于我们所讨论的博弈结构。关键问题是:这些序列会有多长?
我们已经看到了序列长度的一个上界,这个上界就在我们的证明中。让我们把它写下来。我们上次证明的上界是:
2 * Σ_{r ∈ R} Σ_{k=1}^{n} |d_r(k)|
或者,我们可以说这是 2 * m * n * max_{r, k} |d_r(k)|。这意味着我们考虑的是所有延迟函数在所有可能输入下绝对值的最大值。
这是一个多项式上界吗?不是。在计算机科学的术语中,它只是伪多项式。为什么?因为它依赖于数值的大小。例如,数字 2^10 只需要 10 比特来表示。一个依赖于 2^10 的保证是多项式的,但这里我们只关心表示它所需的比特数。所以这不是我们想要的多项式上界,尽管它稍后会有所帮助。
我们还可以使用另一个上界:我们知道任何改进序列都是有限的,那么改进序列长度的上界是什么?它不能两次访问同一个状态,所以状态的数量也是一个上界。状态的数量如何表示?它就是所有策略空间笛卡尔积的基数,因此上界是 2^(m*n)。这显然是有限的,但它不是关于 m 和 n 的多项式上界。
那么,是否存在这么长的改进序列呢?还是说这只是一个很松的上界?
改进序列的长度
为了回答这个问题,让我们考虑一个具体的例子。假设我们有一个对称的拥塞博弈,其中所有玩家都有相同的策略集。资源集合是 {1, 2, ..., m}。每个玩家 i 的策略集 S_i 是资源集合的所有子集。延迟函数定义为:对于每个资源 r,d_r(k) = 2^k。
现在,考虑以下改进序列:从所有玩家都选择空集作为策略的状态开始。然后,玩家 1 将其策略改为包含资源 1。由于延迟函数是递增的,这个改变会降低玩家 1 的成本吗?实际上,由于之前没有玩家使用资源 1,现在玩家 1 使用它,成本从 0 增加到 2^1 = 2,所以这不是一个改进。我们需要重新设计序列。
让我们设计一个延迟函数,使得改进步骤可以持续很长时间。考虑延迟函数 d_r(k) = -k(负号表示成本为负,即收益)。那么,当更多玩家使用资源时,每个玩家的收益(负成本)会增加。在这种情况下,改进步骤可能是玩家不断加入使用某个资源,因为这会增加每个人的收益。然而,我们需要确保每个改进步骤都是单方面的且严格降低成本(即增加收益)。
实际上,我们可以构造一个博弈,其中改进序列的长度是指数级的。这超出了本教程的范围,但重要的是要认识到,在最坏情况下,简单的“跟随改进路径”算法可能需要指数时间才能收敛到均衡。
因此,对于一般的拥塞博弈,计算纯纳什均衡是困难的(具体来说,是 PLS-完全的,这是一个描述局部搜索问题复杂性的复杂度类)。然而,对于某些特殊结构的拥塞博弈,我们可以设计出多项式时间算法。
特殊情况下的多项式时间算法
在本节中,我们将看看两种特殊情况,对于它们,存在计算纯纳什均衡的多项式时间算法。
情况一:单资源博弈
第一种特殊情况是当博弈中只有一个资源时。虽然这听起来很简单,但它能帮助我们理解基本思想。假设只有一个资源 r,所有玩家都必须决定是否使用它。策略集为 {使用, 不使用}。延迟函数为 d_r(k),其中 k 是使用该资源的玩家数量。
均衡状态是:要么没有玩家使用资源(如果 d_r(1) > 0,即使用成本高于不使用),要么所有玩家都使用资源(如果 d_r(n) < d_r(0),但注意 d_r(0) 通常未定义或为0,实际上我们需要比较使用与不使用的成本)。更一般地,均衡是玩家数量 k 使得 d_r(k) ≤ d_r(k+1) 且 d_r(k) ≤ d_r(k-1)(考虑边际成本)。对于这种单资源博弈,我们可以通过检查所有可能的 k 从 0 到 n 来在多项式时间内找到均衡。
情况二:线性延迟函数的对称网络拥塞博弈
第二种更重要的特殊情况是当博弈是对称的(所有玩家有相同的策略集)并且发生在网络上,同时延迟函数是线性的。具体来说:
- 对称:所有玩家
i有相同的策略集S_i = S。 - 网络:资源是图的边,策略是图中从源节点
s到汇节点t的路径。 - 线性延迟:每条边
e的延迟函数形式为d_e(x) = a_e * x + b_e,其中a_e, b_e ≥ 0。
对于这种博弈,我们可以将其转化为一个最小成本流问题,从而在多项式时间内找到均衡。以下是基本思想:
- 在均衡状态下,所有玩家都选择一条从
s到t的路径,并且没有玩家可以通过单方面切换到另一条路径来降低其成本。 - 这等价于说,在均衡时,所有被使用的路径对于每个玩家来说具有相同的(最小)成本,并且任何未使用的路径的成本都高于或等于这个成本。
- 对于线性延迟函数,这进一步等价于一个条件:流量(玩家)在边上的分布应使得边际成本总和最小化。实际上,均衡流恰好就是将总流量
n从s发送到t,且每条边e上的成本函数为c_e(f_e) = a_e * f_e + b_e的最小成本流,其中f_e是边e上的流量。 - 最小成本流问题有多项式时间算法(例如,使用循环消去或成本缩放算法)。
因此,算法步骤如下:
- 给定一个对称网络拥塞博弈,玩家数量为
n,源节点s,汇节点t,以及具有线性延迟函数d_e(x)=a_e x+b_e的边。 - 构造一个流网络:每条边
e的容量为n(或无穷大),成本函数为c_e(f) = a_e * f + b_e(注意:这是一个关于流量的函数,在最小成本流中通常表示为分段线性或凸函数,对于线性情况,可以特殊处理)。 - 计算从
s到t的总流量为n的最小成本流。 - 这个最小成本流对应的路径分解(即流量在路径上的分配)就对应了博弈的一个纯纳什均衡(可能需要将整数流量分配给各个玩家,由于玩家是不可分的,我们需要整数流,但最小成本流问题可以处理整数需求)。
通过这种方式,我们利用优化问题的已知算法来解决均衡计算问题。
总结

在本节课中,我们一起学习了:
- 回顾了拥塞博弈的定义、玩家成本、纯纳什均衡以及 Rosenthal 势函数。
- 探讨了通过跟随改进序列来计算均衡的自然算法,并分析了其最坏情况下的时间复杂度可能是指数级的。
- 介绍了两种特殊情况下计算纯纳什均衡的多项式时间算法:
- 单资源博弈可以通过直接检查解决。
- 对于具有线性延迟函数的对称网络拥塞博弈,可以将其转化为最小成本流问题,从而利用已有的多项式时间算法求解。
理解这些特殊情况非常重要,因为它们揭示了博弈结构如何影响均衡的计算复杂度,并为处理更复杂的博弈提供了思路。在接下来的课程中,我们将继续探索其他类型博弈的均衡计算问题。
004:标准形式博弈与混合纳什均衡


欢迎回到我们的算法博弈论课程。很高兴你依然在这里。
到目前为止我们做了什么?我们介绍了拥堵博弈,并证明了在每一个拥堵博弈中,总是存在一个纯纳什均衡。
今天,我们将把我们考虑的博弈类别推广到所谓的标准形式博弈,并且也将推广纯纳什均衡的概念。但正如我们将看到的,并非总是存在纯纳什均衡。不过,我们将在下次课程中证明,总是存在一个混合纳什均衡。
但在讨论混合均衡之前,让我们先介绍更一般的博弈概念,即所谓的标准形式博弈。
什么是标准形式博弈?
让我们正式定义它。
我们说,一个标准形式成本最小化博弈是一个三元组 (N, S, C)。
这些符号代表什么?
- N 是玩家的集合。通常玩家数量记为
n,玩家集合通常写作{1, 2, ..., n}。 - S 代表所有玩家的策略集合。对于每个玩家
i,我们有一个集合S_i,这是该玩家的纯策略集合。所有玩家策略集合的笛卡尔积S = S_1 × S_2 × ... × S_n被称为状态集、纯状态集或策略组合集。 - C 是成本函数。对于每个玩家
i,有一个成本函数C_i: S → ℝ。这个函数将一个纯策略组合作为输入,映射到该玩家所承担的成本。
这个定义应该有些熟悉。在拥堵博弈的背景下,我们也有玩家集合 N 和每个玩家的策略集合。现在的符号略有不同,我在这里坚持使用标准符号,这可能偶尔会有些不便。在标准形式博弈中,S_i 表示策略集合,而在拥堵博弈中,σ_i 是集合中的一个元素。这个符号在整个课程中会保持一致,我为此提前表示歉意。
现在,所有玩家都从自己的策略集合中选择一个策略。这意味着玩家会承担特定的成本。
标准形式博弈的表示
实际上,我们可以将拥堵博弈纳入这个框架。如何做到呢?正如我所说,S_i 将再次是策略集合,在拥堵博弈的背景下,这些策略就是资源的子集。成本函数在拥堵博弈中具有特定的结构,但现在它们可以是任意函数。
我们如何定义其他类型的标准形式博弈呢?一个常见的方法是通过双矩阵博弈。
在双矩阵博弈中,总是有两个玩家。这意味着 n = 2。策略集合可以是任何我们关心的东西。成本函数现在通过两个矩阵 A 和 B 来描述,它们完全定义了成本函数。
以下是双矩阵博弈的工作原理:
- 玩家一(行玩家)选择矩阵的一个行。
- 玩家二(列玩家)选择矩阵的一个列。
- 成本由所选行和列交叉处的条目定义。
更正式地说,如果玩家一选择行 i,玩家二选择列 j,那么:
- 玩家一的成本是矩阵
A中的元素A[i][j]。 - 玩家二的成本是矩阵
B中的元素B[i][j]。

从纯策略到混合策略
上一节我们介绍了标准形式博弈及其表示。本节中,我们来看看当纯策略纳什均衡不存在时,如何扩展我们的均衡概念。
正如之前提到的,并非所有标准形式博弈都存在纯纳什均衡。为了解决这个问题,我们引入混合策略的概念。
一个混合策略允许玩家在其纯策略集合上进行概率分布。这意味着玩家不是确定性地选择一个策略,而是根据一个概率向量随机选择。
对于玩家 i,其混合策略 x_i 是一个概率分布,满足:
- 对于每个纯策略
s ∈ S_i,有x_i(s) ≥ 0。 - 所有纯策略的概率之和为 1:
∑_{s ∈ S_i} x_i(s) = 1。
所有玩家混合策略的组合 x = (x_1, x_2, ..., x_n) 称为一个混合策略组合。
在混合策略下,玩家的期望成本定义为:
E[C_i(x)] = ∑_{s ∈ S} [ (∏_{j=1}^{n} x_j(s_j)) * C_i(s) ]
其中,求和遍历所有可能的纯策略组合 s = (s_1, s_2, ..., s_n)。
混合纳什均衡
现在我们可以定义混合纳什均衡。一个混合策略组合 x* 是一个混合纳什均衡,如果对于每个玩家 i 和该玩家的任何其他混合策略 x_i,都有:
E[C_i(x*_i, x*_{-i})] ≤ E[C_i(x_i, x*_{-i})]
其中,x*_{-i} 表示除玩家 i 外所有其他玩家的均衡策略。
这意味着在均衡状态下,没有玩家可以通过单方面改变自己的混合策略来降低其期望成本。
总结
在本节课中,我们一起学习了:
- 标准形式博弈的正式定义,它由玩家集合、策略集合和成本函数组成。
- 如何使用双矩阵来表示两人博弈。
- 当纯纳什均衡可能不存在时,引入了混合策略的概念,允许玩家进行随机化选择。
- 定义了混合纳什均衡,它保证了在期望成本意义下,没有玩家有动机单方面偏离。

下次课程,我们将证明一个关键定理:在任何有限的标准形式博弈中,至少存在一个混合纳什均衡。这是博弈论中的一个基石结果。
005:混合纳什均衡的存在性


在本节课中,我们将学习混合纳什均衡的存在性定理。我们将证明,在有限博弈中,混合纳什均衡总是存在的。为此,我们需要回顾一些概念,并引入一个重要的数学工具——布劳威尔不动点定理。
上一节我们介绍了标准形式博弈和混合纳什均衡的概念。本节中,我们将证明混合纳什均衡的存在性。
首先,让我们回顾一下标准形式博弈。到目前为止,本课程中考虑的所有博弈实际上都是成本最小化博弈,但我们也可以考虑收益最大化博弈。事实证明,今天讨论收益最大化博弈会更方便。
以下是标准形式收益最大化博弈的定义。
我们同样有 N 个玩家,每个玩家都有一组纯策略。但与成本函数不同,玩家现在有一个收益函数,通常写作 U_i。在一个状态 S 中(即每个玩家都选择了自己的一个策略),玩家 i 获得收益 U_i(S)。
之前我们是用成本 C_i 来介绍的。事实上,这完全是等价的,因为收益和成本都可以是任意数字。如果我们设 C(S) = -U(S),那么我们得到的就完全是一个成本最小化博弈。因此,这里的目标是最大化你的收益,这完全等同于最小化你的负收益。这样,混合纳什均衡以及纯纳什均衡的概念都以一种相当直接的方式推广了。
但事实证明,对于今天的讨论,谈论收益最大化(即你实际上希望从博弈中获得尽可能多的收益)比谈论最小化自己的成本更自然一些。
今天同样有用的还有我们上次证明的这个引理,它表明:一个混合策略 Σ_i 是针对其他玩家策略 Σ_{-i} 的最佳反应,当且仅当该玩家在 Σ_i 下获得的收益不低于他或她切换到任何纯策略 S_i‘ 所能获得的收益。
这意味着,为了证明一个混合策略是最佳反应,我们实际上只需要与可能的纯策略偏离进行比较,而不是与所有可能的混合策略进行比较。
那么,我们今天想证明什么呢?今天我们将证明纳什定理,它告诉我们混合纳什均衡总是存在。但这有一个小小的前提,即它们仅在存在有限多个玩家和有限多个策略(每个玩家有有限多个纯策略)时才存在。但如果我们有这样一个有限的标准形式博弈,那么就总是存在一个混合纳什均衡。
让我们把它写下来:每一个有限的标准形式博弈都有一个混合纳什均衡。
“有限的标准形式博弈”是什么意思?这意味着我们有有限多个玩家,并且每个玩家有有限多个纯策略。
我们如何证明这样一个定理?这与证明拥塞博弈中纯纳什均衡的存在性相比,现在采用了一种非常不同的方式。因为我们应用的是一个不动点定理,所以我们实际上只做一个存在性证明。我们的证明实际上不是构造性的,即我们不会展示“这就是你找到这个均衡的方法”。
更准确地说,我们将应用布劳威尔不动点定理。它陈述了什么?
每一个连续函数 F,从一个紧致的、凸的、非空的子集 D(D 是 R^m 的子集)映射到其自身,都有一个不动点 X*。并且必须满足 F(X*) = X*。
那么,这一切意味着什么?也许让我们先消化一下这个定理,理解所有这些术语的含义。我希望你理解“连续”是什么意思。我也希望你知道“紧致”和“凸”是什么意思,但尽管如此,让我们慢慢地过一遍所有这些内容,以便我们真正理解它们的含义以及为什么这个陈述实际上并不那么令人惊讶。
让我们从凸性开始。我们说一个集合 D(它是 R^m 的子集)是凸的,如果对于所有位于 D 中的 X 和 Y,以及区间 [0, 1] 中的任意 λ,我们有:λ * X + (1 - λ) * Y 也在这个集合 D 中。


本节课中我们一起学习了混合纳什均衡的存在性定理(纳什定理)。我们了解到,在玩家数量和每个玩家的纯策略数量都有限的博弈中,混合纳什均衡总是存在的。证明的核心是应用了布劳威尔不动点定理,该定理保证了在满足特定条件(连续、紧致、凸)的集合上,自映射必然存在一个不动点。虽然这个证明是非构造性的,但它奠定了博弈论中均衡分析的重要数学基础。
006:拥塞博弈中纯纳什均衡的复杂性


欢迎回到算法博弈论课程。到目前为止,我们已经介绍了拥塞博弈,并证明了拥塞博弈中总是存在纯纳什均衡。随后,我们引入了更一般的标准形式博弈,并证明了在玩家数量和每位玩家的策略数量有限的情况下,这类博弈中总是存在混合纳什均衡。
然而,我们目前还没有一个能在多项式时间内计算出这些均衡之一的算法。这确实有充分的理由,因为计算这样的均衡通常是困难的。
困难的含义与复杂性类别
但“困难”具体意味着什么?这是否意味着它们是NP问题?并非如此,因为NP是一个关于决策问题的复杂性类别,其答案总是“是”或“否”。而“这个拥塞博弈中是否存在纯纳什均衡?”这样的问题,答案总是“是”。因此,这是一个搜索问题,与我们通常在复杂性理论中处理的决策问题有根本的不同。
那么,复杂性理论能为这类搜索问题提供什么?搜索问题有哪些可能的复杂性类别?
搜索问题的复杂性类别
这类问题的特点是:给定某种输入,我们需要在输入中搜索问题的解。当然,答案也可能是“不存在这样的解”。
存在一个复杂性类别 FP,它代表“函数多项式时间可解”。这类似于决策问题中的P类,意味着你总能在多项式时间内找到一个解。
另一个类别是 FNP。这与决策问题中的NP类相对应。它意味着找到一个解可能很困难,但验证一个给定的解是否可行相对容易,可以在多项式时间内完成。
我们可能希望,在标准形式博弈中寻找混合纳什均衡,或在拥塞博弈中寻找纯纳什均衡,是FNP困难的。但这并不完全准确。实际上,这些问题是FNP的子类 PPAD 和 PLS 困难的。
具体来说,在标准形式博弈中寻找混合纳什均衡是 PPAD完全 问题。而在拥塞博弈中寻找纯纳什均衡是 PLS完全 问题。本节课我们将重点讨论PLS,但希望你能理解PPAD的定义虽然更复杂,但其本质与PLS非常相似,都是对搜索问题复杂性的一种建模。
输入编码的重要性
这里有一个重要的问题:如何编码输入?即使在经典的P与NP问题中,输入编码方式也至关重要。例如,存在“伪多项式时间”的概念:如果你用二进制编码数字,背包问题就变成了多项式时间可解的。在我们的问题中也有类似的影响。
对于拥塞博弈,一个关键点在于你可以非常简洁地描述它们。对于一个一般的标准形式博弈(如双矩阵博弈),你通常需要写下整个收益表。但对于拥塞博弈,你只需要指定延迟函数。这占用的输入空间要小得多。
正因为如此,遍历双矩阵博弈的整个表格,找出哪些是纯纳什均衡,相对容易。但在拥塞博弈中,事情要复杂得多,仅仅因为其输入表示本身就小得多。我们已经在改进序列长度的上下文中看到了这一点:即使只有一名玩家和M个资源,也可能有多达 2^M 个不同的状态,其中任何一个都可能是纯纳什均衡。始终记住,输入编码方式至关重要。
PLS复杂性类别的定义
那么,我们如何为搜索问题定义一个复杂性类别?这显然取决于我们想要建模哪种搜索问题。对于PLS,我们建模的是局部搜索问题。这应该让你想起,纯纳什均衡正是Rosenthal势函数的局部最小值。因此,所有这一切的核心就是寻找这些局部最小值。
我们如何一般性地建模这样一个局部搜索问题?一个局部搜索问题 Π 由以下部分组成:
- 一组实例,记为 I_Π。

本节课总结

在本节课中,我们一起学习了算法博弈论中均衡计算的复杂性。我们明确了寻找均衡是一个搜索问题,而非决策问题。我们介绍了搜索问题的复杂性类别FP和FNP,并指出寻找混合纳什均衡和纯纳什均衡分别属于PPAD完全和PLS完全问题。我们重点探讨了PLS类别,它专门用于刻画局部搜索问题的复杂性,而拥塞博弈中的纯纳什均衡正是其势函数局部最小值的寻找问题。最后,我们强调了输入编码方式对问题复杂性的关键影响,特别是在拥塞博弈这种可以简洁表示的模型中。
007:相关均衡


欢迎回到算法博弈论课程。
在本节课中,我们将要学习一种新的均衡概念——相关均衡。我们将看到,与之前讨论的纯策略纳什均衡和混合策略纳什均衡相比,相关均衡在某些情况下更容易计算。
课程概述
到目前为止,我们已经学习了纯策略纳什均衡,并证明了它在拥堵游戏中总是存在。我们也学习了混合策略纳什均衡,它在有限游戏中总是存在。但是,我们也了解到均衡通常难以计算,这在纯策略均衡和拥堵游戏的例子中已经体现。正如之前提到的,类似的困难性结果也适用于混合策略纳什均衡。
今天,我们将认识另一类均衡,即相关均衡,并且我们将展示它们实际上是易于计算的。
从一个例子开始:斗鸡博弈
让我们从一个简单的相关均衡例子开始,即斗鸡博弈。这里有两个玩家,他们拥有相同的策略:穿越或停止。
这个游戏背后的故事是:两个汽车司机正接近一个十字路口。他们可以决定穿越或停止。如果他们都决定穿越,就会发生事故,这对双方都造成很高的成本,例如设为100。如果一方停止,则停止方产生成本1(等待成本),而穿越方成本为0。如果双方都停止,则双方都产生等待成本1。
那么,这个游戏的纯策略纳什均衡是什么?实际上有两个纯策略纳什均衡:一个玩家穿越,另一个玩家停止。此外,还存在一个混合策略纳什均衡。在这两个纯均衡中,当然也是混合均衡。在混合均衡中,每个玩家停止的概率是99/100,穿越的概率是1/100。
这是我们在交通状况中通常会看到的吗?我们可能会看到这两个纯均衡之一,例如,如果某条道路有优先通行权。但我们希望永远不会看到双方在接近十字路口前抛硬币决定停止与否的情况。然而,交通灯经常出现,它告诉我们该做什么,并且遵循交通灯指示是一个好主意。因为如果不这样做,就可能发生事故。这正是相关均衡(或粗相关均衡,在这种游戏中两者相同,我们稍后会讨论区别)可以体现的思想。
什么是相关均衡?
相关均衡是状态上的一个概率分布。到目前为止,我们讨论的混合策略纳什均衡是策略上的概率分布向量或轮廓。这意味着混合纳什均衡实际上也为每个状态分配了一个概率,但这个概率是以一种非常明确的方式计算的:我们取各自策略被采用概率的乘积。
让我们在这个例子中看看:我们有概率 (99/100) * (99/100) 对应右下角方格(双方都停止),概率 (1/100) * (1/100) 对应左上角方格(双方都穿越),其他两个方格的概率是 (99/100) * (1/100)。因此,我们也可以将混合纳什均衡视为为每个状态分配概率分布。纯策略纳什均衡也这样做,但方式很平凡:它只将一个状态的概率设为1,其他状态为0。
相关均衡做的正是同样的事情,但它不是一个乘积分布。
相关均衡示例
那么,相关均衡可能是什么样子呢?让我们改变这个例子。我们可能不说双方以零概率穿越或停止,而是说:以概率1/3,行玩家停止,列玩家穿越;以概率2/3,行玩家穿越,列玩家停止。

总结

在本节课中,我们一起学习了相关均衡的概念。我们通过斗鸡博弈的例子,了解了相关均衡如何作为一种概率分布存在,并且它不要求是各玩家策略的独立乘积分布。与纯策略和混合策略纳什均衡相比,相关均衡提供了另一种协调机制,并且在某些实际场景(如交通信号灯)中自然存在。我们还了解到,相关均衡在计算上可能比纳什均衡更容易处理。
008:最小化外部遗憾


欢迎回来,我们继续学习算法博弈论。今天我们将要讨论的内容会非常具有算法性。
上一节我们介绍了相关均衡和粗相关均衡,并且了解了无遗憾动态。但对于这些动态过程,缺失的一环是每个玩家个体用来选择下一步策略的算法。我们了解到,这个算法必须满足无遗憾保证,才能确保所有玩家的整体行为最终收敛到一个粗相关均衡。
正如之前所说,现在唯一缺失的部分就是这些算法如何工作。让我们再次回顾一下这类算法的问题陈述,我们在上一节已经初步介绍过。
问题设定
我们将进行 T 轮游戏。在每一轮 t 中,会发生以下事情:
- 我们有一个玩家。
- 该玩家选择一个概率分布 p^t,这是一个向量
(p1^t, p2^t, ..., pN^t),代表她对 N 个策略的选择概率。 - 然后,一个对手选择一个成本向量 l^t,为每个策略分配一个成本值。我们假设这些成本值在 0 到 1 之间。
- 接着,根据概率分布 p^t 随机抽取一个策略 i^t。
- 玩家承担成本 l_itt,并且获知整个成本向量 l^t。
理解事件发生的顺序至关重要:玩家在对手选择成本向量之前就已经确定了概率分布,但玩家尚未确定具体执行哪个策略,这个策略是在对手给出成本之后才根据概率分布抽取的。
基准的选择
一个自然的基准是“事后看来最优的行动序列”。这个基准会是怎样呢?那就是在每一轮 t 都选择成本最低的那个行动,然后对所有轮次求和:
公式: 最佳行动序列成本 = Σ_t ( min_i l_i^t )
然而,这个基准过于强大,因为对手可以根据玩家选择的概率分布来调整成本。让我们看一个例子来理解为什么。
假设只有 2 个策略。对手可以这样选择成本向量 l^t:
- 如果玩家给第一个策略分配的概率 p1^t ≥ 0.5,则令 l^t = (1, 0)。
- 否则,令 l^t = (0, 1)。
因为玩家总是至少对一个策略分配至少 0.5 的概率,对手可以据此调整。在这种情况下,算法的期望成本在每一轮至少是 0.5,因此总期望成本至少为 0.5T。然而,“事后看来最优的行动序列”成本总是 0,因为每一轮都有一个成本为 0 的行动。
因此,我们需要一个不同的、更合理的基准。

外部遗憾的定义
我们将使用的基准是“外部遗憾”。外部遗憾衡量的是,与始终固定选择某一个策略相比,我们的算法多付出了多少成本。
公式: 外部遗憾 R^T = [ Σ_t l_i^t^t ] - [ min_i Σ_t l_i^t ]
其中:
Σ_t l_i^t^t是算法实际承担的累积(期望)成本。min_i Σ_t l_i^t是固定选择某个策略 i 所能获得的最小累积成本(在所有策略中取最小)。
我们的目标是设计算法,使得随着轮数 T 增加,平均外部遗憾 R^T / T 趋近于 0。这样的算法被称为“无外部遗憾”算法。
算法设计思路
那么,如何设计这样的算法呢?核心思想是:根据策略过去的表现来调整选择它的概率。表现越好(累积成本越低)的策略,在未来被选中的概率应该越高。
一个经典且直观的算法是“乘性权重更新算法”(MWU),有时也称为“Hedge 算法”或“指数权重算法”。以下是它的工作原理。
乘性权重更新算法(MWU)
初始化:
- 设置权重:对于每个策略 i,
w_i^1 = 1。 - 参数:选择一个学习率 η > 0,通常
η = sqrt( (ln N) / T ),如果我们知道总轮数 T 的话。
在每一轮 t = 1, 2, ..., T 中:
- 根据权重选择分布: 根据当前权重计算选择每个策略的概率。
公式:p_i^t = w_i^t / ( Σ_j w_j^t ) - 根据分布 p^t 随机选择策略 i^t,并观察成本向量 l^t。
- 更新权重: 对于每个策略 i,用观察到的成本更新其权重。成本越高,权重惩罚越大。
公式:w_i^{t+1} = w_i^t * (1 - η)^(l_i^t)- 由于
l_i^t在 0 到 1 之间,(1 - η)^(l_i^t)是一个介于(1 - η)和1之间的因子。成本为 0 时权重不变,成本为 1 时权重乘以(1 - η)。
- 由于
以下是该算法的关键特性说明:
- 概率更新: 算法通过降低高成本策略的权重,从而降低其未来被选中的概率。
- 学习率 η: 参数 η 控制着更新的强度。η 越大,对近期成本的响应越迅速,但波动也可能更大。
- 理论保证: 可以证明,MWU 算法的外部遗憾上界为 O( sqrt(T ln N) )。这意味着平均遗憾以 O( sqrt( (ln N) / T ) ) 的速度趋近于 0。
从个体算法到均衡
现在,让我们回到最初的博弈论背景。如果在一个多人博弈中,每个玩家都独立运行一个这样的无外部遗憾算法(如 MWU)来选择自己的策略,那么长期来看,所有玩家策略的联合分布会收敛到该博弈的一个粗相关均衡(CCE)。
原因如下:
- 无外部遗憾保证意味着,对于每个玩家来说,她所采用的策略序列不比她始终固定选择任何一个单一策略差。
- 在博弈中,固定选择某个策略的收益,可以与针对其他玩家历史平均行为的最佳反应收益进行比较。
- 通过遗憾最小化的性质,可以推导出没有玩家能够通过单方面偏离到固定策略来显著改善自己的收益,这正是粗相关均衡的定义。
总结
本节课我们一起学习了算法博弈论中连接个体学习与群体均衡的关键工具:无遗憾算法。
- 我们首先明确了在线决策问题的设定:玩家顺序选择混合策略,对手随后给出成本,玩家根据混合策略抽样行动并承担成本。
- 我们认识到“最优固定行动”是一个合理且可实现的比较基准,并据此定义了外部遗憾。
- 我们重点介绍了乘性权重更新算法(MWU),它通过根据历史成本指数式地更新策略权重,实现无外部遗憾。
- 最后,我们了解到,当博弈中的每个玩家都运行此类无外部遗憾算法时,他们的长期行为会收敛到博弈的一个粗相关均衡。

这为我们提供了一种分布式的、基于学习的途径来达到博弈的均衡状态,是算法博弈论中的一个核心概念。
009:无政府状态代价


欢迎回到我们的算法博弈论课程。
到目前为止,我们已经学习了多种建模策略行为的方法。更准确地说,我们学习了均衡概念,这些概念反映了策略行为可能导致的状态。但在之前的讨论中,我们隐含地认为策略行为对社会而言是某种“坏事”。今天我们将探讨这一点,并尝试使用所谓的“无政府状态代价”来量化这种影响。
我们将讨论均衡的社会成本。
什么是社会成本?
社会成本有多种定义方式。我们今天将使用的概念如下:一个状态 S 的社会成本,我们简单地写作所有参与者所承担成本的总和。你可能也想取所有参与者成本的最大值,这实际上取决于你,以及你认为哪种方式最能反映当前情境下的社会成本概念。但今天,我们只采用最小化所有参与者成本总和这一视角。
均衡与社会最优的差异
正如我们所见,在均衡状态下,社会成本可能并非最小。让我们通过一个非常具体的例子再次观察这一点。
我们来看一个对称网络拥塞博弈。其中,从起点 S 到终点 T 只有两条路径:上边和下边。上边的延迟函数是递增的:如果只有一个参与者使用该资源,延迟为 1;如果有两个参与者使用,延迟为 2,依此类推。而下边的延迟始终是 4,无论有多少参与者使用这条边。
那么,这里可能发生什么?一般来说,有五种可能的状态:所有参与者都使用上边;一个参与者使用下边,其余三个使用上边;等等。当然,对个人而言,你是哪个参与者很重要,但对于我们的分析来说,这并不重要。因此,我们可以为这五种不同的状态写下它们的社会成本。
以下是所有参与者使用不同路径组合时的社会成本计算:
- 所有4人使用上边:每人延迟为 4,社会成本为
4 * 4 = 16。 - 3人使用上边,1人使用下边:上边3人每人延迟为 3,下边1人延迟为 4,社会成本为
3 * 3 + 4 = 13。 - 2人使用上边,2人使用下边:上边2人每人延迟为 2,下边2人每人延迟为 4,社会成本为
2 * 2 + 2 * 4 = 12。 - 1人使用上边,3人使用下边:上边1人延迟为 1,下边3人每人延迟为 4,社会成本为
1 + 3 * 4 = 13。 - 所有4人使用下边:每人延迟为 4,社会成本为
4 * 4 = 16。
现在的问题是,哪些状态是纳什均衡?如果所有参与者都使用上边,这实际上是一个纳什均衡。同样,如果三个参与者使用上边,一个参与者使用下边,这也是一个纳什均衡。同时,我们看到对社会最有利的情况,即社会成本仅为 12,是当两个参与者使用上边,两个参与者使用下边时。这意味着,由于策略行为,我们承担了比最优分配更高的社会成本。
无政府状态代价的正式定义
那么,如何以更正式或更量化的方式描述这一点呢?社会最优成本是 12,而均衡状态下的社会成本可能高达 16。这就是我们所说的“无政府状态代价”,即 16 与 12 的比率,因为它衡量了由于策略行为导致成本增加的倍数。
我们也可以考虑 13 除以 12 的比率,这实际上是“稳定代价”,我们可能下次会讨论,它比较的是这些均衡中最好的一个与社会最优成本。
但正如我所说,今天我们感兴趣的是无政府状态代价。这是均衡状态下的社会成本与最优社会成本之间最差的比率。
对于一个成本最小化博弈,我们设 P 为所有纳什均衡状态的集合。那么,对于纳什均衡的无政府状态代价定义为:

其中,SC(S) 表示状态 S 的社会成本,S* 表示社会最优状态。
总结

在本节课中,我们一起学习了如何量化策略行为对社会造成的负面影响。我们引入了“社会成本”的概念,并通过一个具体的拥塞博弈例子,展示了均衡状态下的社会成本可能高于社会最优成本。最后,我们正式定义了“无政府状态代价”这一核心指标,它衡量了在最坏均衡情况下,社会成本相对于最优成本的放大倍数。
010:成本与市场共享游戏中的低效性

在本节课中,我们将继续探讨由策略行为导致的低效性。我们将首先介绍一个更乐观的衡量标准——稳定代价,并将其与上节课介绍的无政府代价进行对比。随后,我们将视角从成本最小化游戏转向收益最大化游戏,并分析相关技术有何异同。
稳定代价:一个更乐观的视角
上一节我们介绍了无政府代价,它衡量了最差均衡与社会最优解之间的差距,是一种较为悲观的视角。本节中,我们来看看一个更乐观的衡量标准——稳定代价。它比较的是最佳均衡与社会最优解之间的差距。
我们将在一个特殊的拥塞游戏——成本共享游戏的背景下讨论稳定代价。
什么是成本共享游戏?
成本共享游戏是拥塞游戏的一种特例,其延迟函数具有特定的形式。
定义:一个成本共享游戏是一个拥塞游戏,其中所有资源的延迟函数都具有以下形式:
d_r(x) = c_r / x
其中 c_r 是资源 r 的常数成本。
这意味着,使用资源 r 的玩家将平均分摊该资源的成本 c_r。
那么,如何计算一个状态的社会成本呢?与上节课一样,社会成本是所有玩家个人成本的总和。在成本共享游戏中,玩家的成本是其使用的所有资源的延迟值之和。通过重新排列求和顺序,我们可以得到一个更简洁的表达式:
社会成本 = Σ(所有被至少一个玩家使用的资源 r 的 c_r 值)
我们的目标是,在这样的成本共享游戏中,界定一个纯纳什均衡的社会成本。
无政府代价的糟糕表现
不幸的是,在成本共享游戏中,无政府代价可能非常糟糕。让我们通过一个简单的例子来看。
考虑以下网络:
- 有一个源点和一个汇点。
- 上边路径的成本为
1 + ε(其中 ε 是一个极小的正数)。 - 下边路径的成本为
n(n 为玩家数量)。

图中标注的是每条边的 c_r 值。
这个设置中的纯纳什均衡是什么?

- 一个均衡(也是社会最优):所有
n个玩家都走上边。此时社会成本为1 + ε。 - 另一个均衡:所有
n个玩家都走下边。此时社会成本为n。
为什么第二个状态也是纳什均衡?让我们分析一下:
- 在当前状态下,所有
n个玩家共享成本为n的下边,因此每个玩家的个人成本为1。 - 如果其中一名玩家单方面偏离,改为独自走上边,那么他需要独自承担上边的成本
1 + ε。 - 由于
1 + ε > 1,对于这名玩家来说,偏离会使他的个人成本升高。因此,没有玩家有动机单方面改变策略,这构成了一个纳什均衡。
尽管所有玩家都走上边对每个个体和社会整体都更好(个人成本约为 (1+ε)/n,社会成本为 1+ε),但“所有玩家都走下边”这个糟糕的均衡也可能稳定存在。这是因为个体如果率先采用更优的技术(上边),可能会因为与他人不兼容而承受更高的短期成本。

这个例子展示了“协调失败”的现象,也说明了为什么无政府代价(比较最差均衡)在此类游戏中会非常高。
从成本最小化到收益最大化
以上我们讨论的都是成本最小化游戏。在课程的第二部分,我们将回到无政府代价的概念,但将其应用于收益最大化游戏。我们将探讨分析技术有哪些相似与不同之处。
总结
本节课中我们一起学习了:
- 稳定代价的概念,它比较最佳均衡与社会最优解,提供了一个更乐观的低效性衡量标准。
- 在成本共享游戏这一特定拥塞游戏中,由于协调失败问题,无政府代价可能非常高,存在社会成本极高的糟糕均衡。
- 我们通过一个简单的网络路由例子,具体说明了多个均衡的存在以及个体理性如何导致整体低效的结果。
011:机制设计导论


欢迎回到算法博弈论课程。今天我们开始学习一个新主题:机制设计。更具体地说,我们首先从带金钱的机制设计开始,在本学期稍后,我们也会学习不带金钱的机制设计。
到目前为止,我们的目标只是理解博弈以及博弈中发生的策略行为。今天,我们要问的问题是:我们应如何设定博弈的规则,以实现某个期望的结果? 不仅今天,实际上在本学期剩余的时间里,我们都在探讨这个问题。
作为入门示例,我们今天考虑出售一件物品的问题。
问题设定与目标
我们可能有一件想要出售的物品。我们的目标是让世界的总幸福感尽可能高。这意味着我们的目标不是赚尽可能多的钱,而是确保世界从这件物品中获得的价值(对我们而言,物品本身没有价值)尽可能大。
这看起来是怎样的?你可能会想运行一个首价密封拍卖。
首价密封拍卖
以下是首价密封拍卖的运作方式:
- 有一系列出价者。
- 每个出价者写下他们的出价,即他们愿意为这件物品支付多少钱。
- 然后你找出出价最高的人。
- 在这个例子中,最高出价是20欧元,所以我们以20欧元的价格出售该物品。
这是一个出售物品的好方法吗?还是有更好的方法?为了讨论这个问题,我们首先需要推导一个数学模型,并捕捉其中可能发生的策略行为。
首价密封拍卖的数学模型
我们刚才看到的是一个所谓的密封投标首价拍卖。我们有 n 个参与者,在这个语境下也常被称为出价者。每个出价者 i 报告一个出价 b_i。他们同时进行。然后,出价最高的出价者获胜,并支付他/她自己的出价 b_i。当然,我们需要定义一个平局决胜规则,因为可能存在相同的出价。例如,我们可以让索引最小的出价者获胜,或者任何你偏好的其他规则。
参与者偏好建模
我们如何捕捉参与者的偏好?我们假设每个出价者 i 对获胜有一个估值 v_i。这是一个非负实数。出价者 i 的估值 v_i 表示他/她认为该物品值多少钱。
那么,给定出价向量 b,出价者 i 的效用 u_i 将是:
- 如果出价者
i获胜:u_i = v_i - b_i - 如果出价者
i失败:u_i = 0
这个 v_i 以货币单位表示我有多看重这个物品。我的效用就是我的估值减去我的支付。在这个拍卖中,如果我赢了,我支付的就是我自己的出价 b_i。如果我输了,我的效用是0,因为我空手而归。如果我出价高于我的估值并且赢了,那么我将获得负效用,因为我支付了超过物品实际价值的价格。但希望我不会出价超过实际价值。
首价拍卖的问题
这是一个好的博弈吗?它至少有一个优点:非常容易解释。但缺点是什么?我们实际上并不知道这些估值 v_i,这是非常重要的。没有人提前知道这些估值。出价者需要知道其他出价者的出价,才能选择自己的最优反应。
让我们再看一下之前的例子。出价是 [20, 15, 10, 5]。现在问:对于这些参与者来说,这样出价是一个纯策略纳什均衡吗?即使我们不知道他们的估值,我们也能看出,这不可能是一个纯策略纳什均衡。
因为,那个出价20的出价者,这怎么可能是最优反应呢?如果这个出价者出价,例如,7.02,那么他/她仍然肯定会赢,但支付的钱少得多,从而获得更高的效用。
令人惊奇的是,有更好的方法来设计这样的机制,使得不仅存在纳什均衡,而且出价变得非常简单。这就是所谓的次价拍卖,我们接下来将看到它。

次价拍卖
现在,我们转向次价拍卖。首先回顾一下首价拍卖:密封投标首价拍卖中,每个出价者报告一个出价,出价最高者获胜,并支付他/她自己的出价。

我们看到,通常真实出价(即 b_i = v_i)并不是一个纯策略纳什均衡。因为如果你以很大优势获胜,你会想要降低你的出价。相对于你的真实估值,真实出价通常不是最优反应。
本节课中,我们一起学习了机制设计的基本概念,并通过出售单件物品的例子,对比了首价密封拍卖和次价密封拍卖。我们建立了拍卖的数学模型,定义了参与者的估值和效用函数,并指出了首价拍卖中真实出价通常不是均衡策略的问题,为引入更优的次价拍卖机制做好了铺垫。
012:单参数机制


欢迎回到算法博弈论课程。上一讲我们介绍了带金钱的机制设计主题,并给出了真实机制的定义。
本节课的目标是更深入地理解,一个机制需要满足哪些必要和充分条件才能成为真实机制。
但在开始之前,让我们快速回顾一下所有定义。我们有 n 个参与者,在此上下文中也常称为投标人,我们用 1 到 n 为其编号。
我们有一个结果空间 X,通常它可以是一个任意集合。不过今天我们将做一个更具限制性的假设,关于结果空间的类型,稍后会详细说明。
每个参与者都有一个私有的估值函数 vi,它将结果集合映射到实数。这意味着每个参与者为每个可能的结果分配一个价值,这个价值也可能是负数,表示参与者认为该结果会带来某种成本。
我们将 Vi 称为参与者 i 所有可能估值函数的集合,而 V 是这些集合的笛卡尔积,即所有估值组合的集合。
上一讲我们定义得更一般化,但对于今天而言,考虑直接机制就足够了。一个直接机制对应一个结果规则和一个支付规则。
结果规则根据输入的声称估值组合确定一个结果,支付规则则根据该组合确定每个参与者的支付。在直接机制中,参与者的出价就是他们声称的估值。
结果规则接收所有出价,并将其映射到结果空间中的一个结果。同时,支付规则将其映射为每个参与者的支付。例如,我们考虑过的单一物品拍卖,可能的结果是谁赢得物品,通常赢家支付一定金额,而输家不支付任何费用。但一般来说,我们并不局限于这种机制。
现在,参与者的效用是什么?参与者的效用是拟线性效用。当我们看到出价(即投标人或参与者声称的估值)时,我们计算一个结果 f(b),然后用真实的估值函数 vi 评估该结果,再减去投标人的支付,其差值就是参与者的效用。我们通常省略上标 M,它指的是我们应用的是哪个机制。效用取决于 b(游戏中的策略),也取决于 vi(作为机制设计者我们不知道的私有估值函数)。
因此,我们关注的是占优策略激励相容机制,简称真实机制。一个直接机制被称为占优策略激励相容,当且仅当以下不等式成立:对于任何出价组合,任何参与者将其出价单方面改为其真实估值 vi,而不是任何其他出价 bi,其效用都不会降低,无论其他参与者如何行动。
今天,我们将更深入地理解这实际上意味着什么,并且我们将针对一类特殊的机制设计问题——单参数问题——来进行分析。
什么是单参数问题?我们今天的假设是:我们的结果空间 X 是 n 维非负实数向量的一个子集。并且,每个估值函数可以表示为 vi * xi,其中 vi 是一个实数。我们再次重载了符号,就像在单一物品拍卖中所做的那样,在那里 vi 是将价值与每个结果关联起来的函数,现在我们说这实际上可以用某个实数乘以我得到的 xi 来表示。
这可能是什么样子?例如,单一物品拍卖可以简单地表示为:X 是所有满足 Σ xi = 1 的 {0, 1}^n 向量集合。首先,这是 R^n 中非负向量的一个子集。这里,如果参与者 i 获得物品,则 xi = 1,否则为 0。

但也有其他场景可以这样描述。举一个简单的例子,我们可能有多个相同的物品。我们也可以用这种方式定义,但此时我们会有至多 k 个物品。这意味着我们有 k 个相同的物品,每个参与者最多只能得到一个。我们也可以轻松地定义这一点,只需将这里的条件改为 Σ xi ≤ k。这样,一个参与者实际上最多可以得到两个物品,但此时我们对估值函数的形式有所限制。

013:组合拍卖的贪心机制


欢迎回到算法博弈论课程。在之前的课程中,我们介绍了带金钱的机制设计。我们学习了真实机制的概念,并通过迈尔森引理,得到了在单参数设定下,使一个机制成为真实机制的出色特征描述。
本节课中,我们将利用这一特征描述,为组合拍卖构建真实机制。这意味着我们需要设计一个结果规则,本质上就是一个决定如何分配物品的算法。然后,根据迈尔森引理,我们可以推导出必须应用何种支付规则,从而得到一个整体的真实机制。
这种方法适用于一般的组合拍卖,但仅适用于我们可以再次理解为单参数设定的子类。因为对于非单参数的一般设定,迈尔森引理不成立。顺便提一下,那些情况要复杂得多。
首先,让我们回顾一下组合拍卖的定义。
组合拍卖定义
在组合拍卖中,我们有:
- N 个投标人(或玩家),集合记作 N,通常编号为 1 到 n。
- M 件物品,集合记作 M,通常编号为 1 到 m。
可行分配 是集合的向量。每个集合是物品集合的幂集中的一个元素。同时,我们希望每件物品最多被分配一次。这意味着对于任意两个不同的投标人 i 和 i‘,他们获得的物品集合必须不相交。
估值函数 为每个玩家定义了其对任意物品集合的非负价值,这些信息是私有的。
目标 是最大化社会福利。即,将所有玩家对其所获物品集合的估值相加求和。
我们进一步假设:
- 自由处置权:这是一个专业术语,意味着如果我获得物品集合 S,那么我对 S 的估值至少不低于我对 S 的任何子集 T 的估值。换句话说,获得更多物品对我无害。这也可以简单地称为单调性。
- 估值标准化:意味着对空集的估值为 0。所以,如果我什么都没得到,我的价值是 0;如果我得到更多,我的价值将是非负的。
单参数设定与单需求投标人
一般来说,组合拍卖并非单参数设定。因为这些估值函数无法仅用单一参数来表达,而这正是单参数设定的核心要求。
然而,我们今天考虑的估值函数特例,确实可以解释为单参数设定。我们的假设是:投标人是单需求的。每个投标人只对某一个特定的物品子集感兴趣。如果我至少得到这个子集,我就满意;如果没得到,我的满意度就和什么都没得到一样。
以下是正式定义:
我们说投标人是单需求的,如果对于每个投标人 i,存在一个特定的物品子集 S_i* 和一个非负实数 v_i,使得投标人 i 对物品集合 T 的估值满足以下公式:

v_i(T) = v_i, 如果 T 是 S_i 的超集;否则为 0。*
我们在这里再次重载了符号 v_i,它既表示函数,也表示该函数可以取的值。这应该很熟悉,因为在单物品拍卖等单参数设定中,我们做过完全相同的事情。
所以,v_i 是我对集合 S_i* 的估值。如果我至少得到了 S_i(意味着我可能得到更多物品),我的价值总是 v_i。但如果我没有得到完整的 S_i(即使 S_i* 包含 100 件物品而我得到了 99 件),我的价值总是 0。
接下来,我们看看如何应用这一点。
014:VCG机制


欢迎回到算法博弈论课程。在之前的课程中,我们介绍了带货币的机制设计的一般问题和框架,并对单参数问题有了很好的理解。我们明确了使一个机制成为真实机制的条件:分配规则必须是单调的,支付规则必须遵循迈尔森引理中的公式。
在本节课中,我们将超越单参数问题,考虑更一般性的问题。对于这些问题,我们将再次展示一种构建真实机制的技术。然而,这并不像单参数问题那样具有普适性,因为对于更一般的设定,我们没有一个像单参数问题那样精确的、能完全刻画真实机制的条件。
一般性设定回顾
首先,让我们快速回顾一下定义。我们仍然有一个包含 N 个参与者(或投标人、代理人)的集合 N。我们有一个结果空间 X,它可以是任意集合。在单参数问题的背景下,X 有特定的结构,但今天我们并不关心它具体是什么。
每个参与者 i 都有一个私有的估值函数 v_i,它将结果映射到实数:
v_i: X → ℝ
我们用 V_i 表示参与者 i 所有可能的估值函数的集合,用 V 表示所有估值组合的集合。
一个直接机制 M 由两部分组成:
- 结果规则
f:它接收一个声称的估值组合(即每个投标人声称自己的估值函数是什么),并输出一个结果。
f: V → X - 支付规则
p:它接收同样的输入(声称的估值组合),并输出一个支付向量(即每个投标人需要支付的金额)。
p: V → ℝ^N
我们仍然讨论拟线性效用,这意味着参与者 i 在机制 M 下的效用 u_i 是:
u_i(v_i, b) = v_i(f(b)) - p_i(b)
其中 b 是所有人声称的估值组合。
我们称一个直接机制是占优策略激励相容的,或者简称为真实的,如果对于任何参与者 i、其真实估值 v_i 以及任何可能的报价 b_i',无论其他参与者报价如何,该参与者如实报价 v_i 所获得的效用,都至少不低于他报任何其他价 b_i' 所获得的效用。
单参数设定是上述框架的一个特例。但也存在非单参数的设定,例如组合拍卖。
组合拍卖示例
在组合拍卖中,我们有一个包含 M 件物品的集合 M。我们可以将这些物品分配给 N 个投标人。
每个投标人 i 有一个估值函数 v_i,它将物品的子集映射到一个非负实数:
v_i: 2^M → ℝ_+
在我们的框架中,结果空间 X 就是所有将物品划分给投标人的分配方案。每个分配方案是一组互不相交的物品子集 (S_1, ..., S_N),满足 S_i ⊆ M 且 S_i ∩ S_j = ∅(当 i ≠ j 时)。
这里需要注意语法上的细微差别:在更一般的框架中,估值函数 v_i(x) 的输入是整个分配结果 x,这意味着我的估值可能取决于邻居得到了什么物品。而在组合拍卖的标准定义中,v_i(S_i) 通常只取决于我自己得到的物品集合 S_i。但本质上,我们可以将后者视为前者的一个特例(即我的估值只依赖于分配结果中属于我的那部分),因此组合拍卖可以纳入我们的通用框架。
让我们看一个具体例子。假设有两个投标人(1和2)和两件物品(A和B)。我们可以任意定义估值函数。
例如,投标人1的估值函数 v_1 可能是:
- 得到物品 A:价值 5
- 得到物品 B:价值 9
- 得到物品 A 和 B:价值 9
这是一个单位需求函数的例子,因为投标人只关心他得到的最有价值的物品(这里是B),一旦得到B,再得到A并不会增加额外价值。
投标人2的估值函数 v_2 可能是:
- 得到物品 A:价值 5
- 得到物品 B:价值 0
- 得到物品 A 和 B:价值 5
这同样是一个单位需求函数。
可以看到,描述每个投标人的偏好需要多个数值(例如,对物品A和B分别有一个估值),因此这不是一个单参数问题。
从社会福利最大化到真实机制
上一节我们介绍了非单参数问题,如组合拍卖。本节我们将探讨如何为这类问题构建真实机制。核心思想源于一个简单的问题:如果我们只想最大化社会福利(即所有参与者估值之和),什么样的机制能激励参与者说真话?
假设我们有一个结果规则 f,它总是选择能最大化声称的社会福利的结果。即,对于声称的估值组合 b:
f(b) ∈ argmax_{x ∈ X} Σ_{i ∈ N} b_i(x)
现在的问题是:我们应该如何设计支付规则 p,使得整个机制 (f, p) 是真实的?也就是说,对于每个参与者 i,如实报告其真实估值 v_i 是占优策略。
维克瑞-克拉克-格罗夫斯机制提供了一个解决方案。以下是其支付规则的设计思路:
参与者 i 的支付 p_i(b) 由两部分组成:
- 首先,计算当参与者
i不参与时,其他参与者能获得的最大社会福利。记这个值为W_{-i}(b_{-i}),其中b_{-i}是其他所有人的报价。
W_{-i}(b_{-i}) = max_{x ∈ X} Σ_{j ≠ i} b_j(x) - 然后,计算当参与者
i参与时,在其他参与者声称的估值下,他们实际获得的社会福利。即,在机制选择的最终结果f(b)中,其他参与者的估值之和。
Σ_{j ≠ i} b_j(f(b))
VCG机制规定参与者 i 的支付额为:
p_i(b) = W_{-i}(b_{-i}) - Σ_{j ≠ i} b_j(f(b))
这个公式可以理解为:参与者 i 需要为他“造成的社会福利损失”付费。他支付的是,由于他的参与,导致其他参与者获得的总价值减少了多少(与他不在场时他们能获得的最佳总价值相比)。
另一种等价且常见的表述是:
p_i(b) = b_i(f(b)) - [Σ_{j ∈ N} b_j(f(b)) - W_{-i}(b_{-i})]
中括号内的部分 [Σ_{j} b_j(f(b)) - W_{-i}(b_{-i})] 是参与者 i 的参与为整个系统带来的社会福利增量。因此,支付额等于参与者 i 声称的估值,减去他声称自己带来的社会福利增量。这种形式更直接地体现了“内部化外部性”的思想。
VCG机制为何是真实的?
我们已经定义了VCG机制:结果规则 f 最大化声称的社会福利,支付规则 p 如上所述。现在我们来论证其真实性。
关键点在于,对于参与者 i,当他考虑是否如实报价时,他的效用函数为:
u_i(v_i, b) = v_i(f(b)) - p_i(b)
将VCG支付公式 p_i(b) = W_{-i}(b_{-i}) - Σ_{j ≠ i} b_j(f(b)) 代入:
u_i(v_i, b) = v_i(f(b)) - [W_{-i}(b_{-i}) - Σ_{j ≠ i} b_j(f(b))]
= [v_i(f(b)) + Σ_{j ≠ i} b_j(f(b))] - W_{-i}(b_{-i})
= Σ_{j ∈ N} b_j(f(b)) - W_{-i}(b_{-i}) (注意,这里 b_i 是参与者 i 的报价,不一定是其真实估值 v_i)
现在,W_{-i}(b_{-i}) 是一个常数,它只依赖于其他参与者的报价 b_{-i},而与参与者 i 自己的报价 b_i 无关。因此,为了最大化自己的效用 u_i,参与者 i 的目标就是最大化第一项 Σ_{j ∈ N} b_j(f(b))。
但请注意,f(b) 正是那个能最大化 Σ_{j ∈ N} b_j(x) 的结果。所以,如果参与者 i 如实地报告 b_i = v_i,那么机制选择的结果 f(b) 将最大化包含其真实估值的总和 v_i(x) + Σ_{j ≠ i} b_j(x),这恰好就是参与者 i 效用函数中他所能影响的部分。因此,如实报告 v_i 是最大化其自身效用的最佳策略。
如果参与者 i 谎报为其他某个 b_i',那么机制将最大化 b_i'(x) + Σ_{j ≠ i} b_j(x),而这个结果通常不会最大化包含其真实估值 v_i 的总和,从而导致其效用可能降低。因此,在VCG机制下,说实话是占优策略。
VCG机制的应用与性质
VCG机制是一个强大而通用的工具,它可以将任何社会福利最大化问题转化为一个真实的机制。以下是其一些关键性质和应用场景:
- 真实性:如上所述,VCG机制是占优策略激励相容的。
- 效率性:在真实报价的均衡下(即所有人都说真话),机制选择的结果能最大化真实的社会福利。这是设计目标使然。
- 个体理性(在适当条件下):如果参与者的估值是非负的(即对任何结果
x,v_i(x) ≥ 0),并且“不分配任何东西”是一个可能的结果(且其价值为0),那么VCG机制通常满足个体理性(即参与者的效用非负)。因为支付额p_i不会超过参与者i声称的估值b_i(f(b))(在某些表述下),当他说真话时,其效用非负。 - 应用实例:
- 组合拍卖:VCG机制是理论上完美的解决方案。结果规则将物品分配给能产生最大总价值的组合,支付规则则如上述计算。然而,在实际中,计算最优分配(即解决组合优化问题)通常是NP难的,这限制了其直接应用。
- 公共物品提供:决定是否修建一座桥,成本如何分摊。VCG机制可以决定修建是否有效率(总估值 > 成本),并确定每个人的支付。
- 网络路由与频谱分配:在需要分配稀缺资源以最大化整体效益的场景中,VCG机制提供了理论基准。
尽管性质优良,VCG机制也有一些潜在缺点,如计算复杂性高、预算可能不平衡(收取的总支付不等于成本或零)、以及对合谋的脆弱性等。这些是机制设计实践中需要权衡的问题。
总结
在本节课中,我们一起学习了VCG机制。我们从回顾超越单参数问题的一般机制设计框架开始,并以组合拍卖为例进行了说明。
核心内容在于,对于任何以社会福利最大化为目标的结果规则,我们都可以通过一种特定的支付规则——即让每个参与者为其行为导致的其他人的福利损失付费——来使整个机制变得真实。这种支付规则就是VCG支付。
我们详细推导了VCG支付公式 p_i(b) = W_{-i}(b_{-i}) - Σ_{j ≠ i} b_j(f(b)),并论证了在此支付规则下,参与者如实报告其私有估值是其占优策略,因为这样做能最大化其自身效用。

最后,我们探讨了VCG机制的主要性质(真实性、效率性)和一些典型应用场景,同时也简要提及了其在实际中可能面临的挑战。VCG机制是算法博弈论中连接优化与激励的一个基础而重要的范例。
015:贝叶斯-纳什均衡


欢迎回到算法博弈论课程。在过去的课程中,我们学习了说真话机制,更准确地说,是占优策略激励相容机制。这类机制的特性是,无论其他参与者如何行动,参与者(或投标人)总是希望报告其真实估值。对他们来说,报告真实估值是一个占优策略。
然而,我们也看到,有时这种方法行不通。有时无法设计出一个简单的说真话机制。那么,我们为何要坚持这种“说真话”的特性呢?我们又该如何理解非说真话的机制?这正是我们今天要开始解答的问题。
如何分析非说真话机制?
既然我们仍然需要考虑参与者会进行策略性行为,那么当报告真实估值不符合其最佳利益时,他们可能会撒谎。我们可能想做的,就是考虑由此产生的博弈的纯策略或混合策略纳什均衡。
但是,这种方法有一个很大的弱点。对于纯策略或混合策略纳什均衡,你总是需要考虑所有参与者都知道彼此估值的情况。为什么?因为要找到这个均衡,所有参与者都必须知道其他参与者的效用函数是怎样的,而效用函数依赖于这些私人估值。这使得这种方法有些薄弱。
例如,对于第一价格拍卖,我们可能会争论说,如果存在一个纯策略或混合策略纳什均衡,那将非常理想。但是,参与者们究竟如何才能达到这样一个纳什均衡呢?他们在那里选择的策略取决于其他参与者的估值,而这恰恰是私人信息。
因此,今天我们将认识一个适用于不完全信息的均衡概念。也就是说,参与者不知道其他参与者的真实估值,但他们对此有一个信念。这被称为贝叶斯-纳什均衡。
贝叶斯-纳什均衡的定义
让我们看看它是如何定义的。我们假设:
- 投标人
i的估值v_i是从某个分布D_i中独立抽取的。 - 这些分布对所有投标人都是已知的。
现在,每个参与者(或投标人)将选择一个出价 b_i。当然,这个投标人知道他/她自己的估值 v_i,但不知道其他投标人的出价 b_{-i},只知道 b_{-i} 是从哪些分布中抽取的。
我们如何描述这一点?换句话说,每个投标人 i 选择一个出价函数,我们称之为 β_i,它将所有可能估值的集合映射到出价集合。我们说,当估值是 v_i 时,投标人 i 出价 β_i(v_i)。
例如,真实出价就是函数 β_i(v) = v。
现在,我们说,如果没有参与者可以通过单方面选择不同的出价函数而获益,那么这样一组为每个参与者选择的出价函数就是一个贝叶斯-纳什均衡。
在某种程度上,我们可以将其理解为一场选择出价函数的博弈。策略现在就是出价函数。我们感兴趣的是这个“出价函数博弈”的一个纯策略纳什均衡。
更正式地,定义如下:
一个纯策略贝叶斯-纳什均衡(简称 BNE)是一个出价函数组合 β_i(对于每个参与者 i),其中 β_i 将投标人 i 的可能估值映射到其可能的出价。
均衡条件定义为:对于所有参与者 i、所有可能的估值 v_i 以及所有可能的偏离出价 b_i',以下不等式成立:
E[ u_i( β(v), v_i ) ] ≥ E[ u_i( b_i', β_{-i}(v_{-i}), v_i ) ]
这里,β(v) 表示向量 (β_1(v_1), ..., β_n(v_n)),而期望 E 是对其他参与者的估值 v_{-i} 根据其分布 D_{-i} 取的。

总结
在本节课中,我们一起学习了贝叶斯-纳什均衡。我们首先回顾了说真话机制的局限性,并提出了分析非说真话机制的需求。接着,我们指出了传统纳什均衡在处理私人信息时的不足,从而引出了适用于不完全信息场景的贝叶斯-纳什均衡概念。

我们详细定义了贝叶斯-纳什均衡:在已知估值分布的情况下,每个参与者选择一个将私人估值映射为出价的函数;均衡状态是指,给定其他参与者的策略(函数),任何参与者都无法通过单方面改变自己的出价函数来增加其期望效用。这为我们分析更广泛的机制(如第一价格拍卖)提供了强大的理论工具。
016:平滑机制


欢迎回到算法博弈论课程。在上一讲中,我们开始讨论非真实机制,例如第一价格拍卖。我们引入了贝叶斯纳什均衡的概念,以正式描述在参与者不知道其他参与者估值的情况下,他们可能如何行动。
在本节课中,我们将把讨论范围从第一价格拍卖推广到更一般的机制。我们也会再次回顾第一价格拍卖,并完整地理解为何其贝叶斯纳什均衡下的社会福利仍然相当不错。
机制设计基础回顾
在开始新内容之前,让我们快速回顾一下机制设计的基本定义。
我们将有 n 个参与者(投标人或代理人)。我们有一个结果空间 X,每个参与者 i 都有一个私有的估值函数 v_i,它将结果映射到实数。今天,我们假设这些实数是非负的,就像我们在第一价格拍卖中通常假设的那样。
参与者报告出价。我们现在不局限于直接机制,所以出价可以是任意的。B_i 是参与者 i 的可能出价集合,B 是所有这些集合的笛卡尔积,即所有出价组合的集合。
一个机制 M = (f, p) 接收一个出价组合 b 作为输入。其中:
- f(b) 是结果规则,它将出价组合映射到一个结果。
- p(b) 是支付规则,它将出价组合映射为一个支付向量。今天同样假设支付是非负的。
我们之前讨论的是占优策略激励相容,但今天不涉及。我们仍然保留拟线性效用的概念。因此,当参与者 i 的真实估值为 v_i,出价组合为 b 时,其效用为:
u_i(b; v_i) = v_i(f(b)) - p_i(b)
均衡与无政府价格
如前所述,我们今天不讨论真实性,而是考虑由这类机制诱导的博弈。然后,我们可以考虑一个贝叶斯纳什均衡。
那么,在这个背景下,纯贝叶斯纳什均衡意味着什么?给定一个固定的估值组合 v,一个出价组合 b 是一个纯贝叶斯纳什均衡,当且仅当对于每一个参与者 i,其出价 b_i 带来的效用至少不低于选择任何其他可能出价 b_i' 带来的效用。用公式表示:
u_i(b; v_i) ≥ u_i((b_i', b_{-i}); v_i), 对于所有可能的 b_i'
同样,你也可以推广到混合纳什均衡或相关均衡的概念。关键在于,这是一个完全信息设定,因为估值组合 v 是固定的,每个参与者都有自己固定的估值。我们关注的是贝叶斯纳什均衡,这意味着策略甚至可能依赖于其他参与者的确切估值。
现在的问题是:这种均衡的无政府价格是多少?即,与最优社会福利相比,这种纯贝叶斯纳什均衡有多好?
为了更精确,我们定义社会福利。某个结果 x 的社会福利是所有参与者估值的总和:
SW(v, x) = Σ_i v_i(x)
那么,对于估值组合 v,最优社会福利 OPT(v) 就是可能达到的最大社会福利。
我们也可以写出机制 M 在出价组合 b 下的社会福利(依赖于估值组合 v):
SW_v(M, b) = Σ_i v_i(f(b))
由于拟线性效用,这也可以写成所有参与者效用之和加上所有支付之和。
现在,我们可以定义无政府价格。对于一个均衡概念 EQ(例如纯贝叶斯纳什均衡),其无政府价格 PoA 定义为:
PoA(EQ) = max_v [ OPT(v) / min_{β ∈ EQ(v)} E_{b~β}[SW_v(M, b)] ]
其中,EQ(v) 是在估值组合 v 下满足均衡概念 EQ 的所有概率分布(出价策略组合)的集合。这个比值总是至少为 1,因为最优社会福利至少和机制在均衡下实现的任何福利一样好。


总结
本节课我们一起回顾了机制设计的基本框架,特别是非真实机制下的博弈设定。我们明确了贝叶斯纳什均衡在机制设计语境下的定义,并引入了用于衡量均衡效率损失的无政府价格概念。这为我们后续分析更广泛的机制类别及其均衡性质奠定了基础。
017:简单组合拍卖


欢迎回到算法博弈论课程。在之前的几讲中,我们介绍了基础纳什均衡的概念以及平滑机制的概念。所有这些内容都是为了分析非真实机制。今天,我们将更具体地探讨一个应用场景:组合拍卖。
概述
在本节课中,我们将学习组合拍卖,并分析两种不同的机制。我们将证明这两种机制都是平滑的。根据上一讲的结果,这能立即推导出这些机制在基础纳什均衡(以及其他均衡概念)下的无政府价格上界。在开始之前,我们先回顾一下相关定义。
背景回顾
我们考虑一个组合拍卖。这意味着我们有 n 个投标人(或玩家),记作集合 N(编号从1到n),以及 M 件物品,记作集合 M(编号从1到m)。
每个投标人 i 都有一个私有的估值函数 vᵢ,该函数将物品的子集映射到非负实数。我们遵循惯例,假设该函数是单调的(获得更多物品不会降低你的价值),并且获得零件物品时价值为零。
我们试图找到一个机制,它由一个结果规则和一个支付规则组成,两者都以投标组合作为输入。结果规则决定一个分配结果(即将物品分配给投标人),支付规则定义投标人需要支付多少。我们仍假设投标人总是支付非负金额。
请注意,这些机制不一定是直接机制,因为投标组合中的“投标”不一定是估值函数。事实上,我们今天要讲的第一个机制就是一个间接机制,而第二个机制是直接机制。
平滑机制定义
那么,是什么让一个机制变得“平滑”呢?我们称一个机制是 (λ, μ)-平滑 的,如果以下条件成立:
取任意的估值向量(即估值组合)v。对于任意玩家 i,必须存在一个安全的偏离投标 bᵢ*,使得对于任意的投标组合 b,以下不等式成立:
Σᵢ uᵢ(bᵢ*, b₋ᵢ) ≥ λ · OPT(v) - μ · Σᵢ pᵢ(b)
其中:
- uᵢ(bᵢ*, b₋ᵢ) 是当玩家 i 单方面采用投标 bᵢ* 而其他玩家保持投标 b₋ᵢ 时,玩家 i 的效用。
- OPT(v) 是最优社会福利。
- pᵢ(b) 是在投标组合 b 下玩家 i 的支付。
这一定义意味着,对于基础纳什均衡、相关均衡、混合纳什均衡等均衡概念,其无政府价格(PoA)总是以 max(μ, 1) / λ 为上界。
因此,我们今天要做的核心工作就是证明特定机制的平滑性,这将作为直接推论,帮助我们界定无政府价格的上界。
机制一:物品独立投标
现在,让我们来看第一个机制:物品独立投标。具体来说,我们将在一个组合拍卖中,独立地出售每一件物品。你可以将其想象为一系列平行的eBay拍卖。
这种机制是非真实的,因为你甚至无法向机制透露你真实的偏好(例如,你只想要一部手机,但无法告诉系统“只有当我赢得所有拍卖时,我才想要这些手机”)。因此,这是一个间接机制,你提交的投标并不直接反映你的真实估值。
以下是该机制更形式化的描述:
机制描述:物品独立投标(第一价格)
每个投标人 i 为每一件物品 j 报告一个投标 bᵢⱼ。然后,每件物品 j 被分配给对该物品投标最高的投标人。获胜的投标人需要支付其所有获胜物品的投标之和。
用伪代码表示:
for each item j in M:
winner = argmax_i (b_ij)
allocate item j to winner
payment_i += b_ij for the winner i

这个机制不真实的原因有很多。首先,即使对于单件物品,其支付规则也是第一价格拍卖,我们知道第一价格拍卖不是真实的。此外,这种投标方式本身也无法真实反映偏好,因为你无法报告完整的估值函数,只能为每件物品单独投标,然后你可能赢得多件物品。
在下一节中,我们将分析这个机制,并证明它在特定参数下是平滑的。
总结
本节课我们一起回顾了组合拍卖和平滑机制的定义。我们介绍了第一种机制——物品独立投标(第一价格),并指出了其非真实的特性。在接下来的课程中,我们将证明该机制的平滑性,并探讨其对均衡结果效率的保证。
018:瓦尔拉斯均衡


欢迎回到算法博弈论课程。在之前的课程中,我们深入学习了机制设计,特别是组合拍卖。我们之前考虑的机制总是某种形式的拍卖,即你和所有其他参与者提交出价,然后机制根据出价进行分配。但除非你是专业的艺术品收藏家,否则这并非你日常的购物体验。
通常,你只是走进商店,看到标明的价格,然后决定是否以这个价格购买一件商品,或者以双倍价格购买两件。我们如何用数学来刻画这类场景?此外,这种方式是否高效?我们能否获得良好的社会福利?这正是我们今天要探讨的问题,我们将借助经典经济理论,并在下次课程中讨论一种更通用的算法方法。
今天,我们将只关注经典经济理论,即认识瓦尔拉斯均衡的概念。这是什么?我们再次有 n 个参与者(或代理人,也可称为买家)和 m 件物品。每个参与者 i 都有一个估值函数 vᵢ,它从物品集合的幂集映射到非负实数。与之前不同,我们现在考虑完全信息,即这些估值是公开的。因此,今天的问题完全不涉及激励参与者透露其真实估值,而是关注是否存在“好”的价格。是否存在好价格,这由瓦尔拉斯均衡的概念来形式化。
什么是瓦尔拉斯均衡?🤔
瓦尔拉斯均衡以经济学家莱昂·瓦尔拉斯命名。它被定义为一个价格向量 p 和一个分配 S(即向量 S₁, …, Sₙ,每个 Sᵢ 是 M 的子集)的组合,且这些集合互不相交(每件物品最多分配给一个参与者)。我们称 (p, S) 为一个瓦尔拉斯均衡,当满足以下两个条件:
-
个体理性/最优性:对于每个参与者 i 和所有可能的物品子集 Sᵢ‘,有:
vᵢ(Sᵢ) - Σ_{j∈Sᵢ} pⱼ ≥ vᵢ(Sᵢ‘) - Σ_{j∈Sᵢ‘} pⱼ
这个条件应对所有参与者 i 成立。 -
市场出清:如果一件物品 j 没有被分配给任何参与者(即不在任何 Sᵢ 的并集中),那么它的价格必须为零:pⱼ = 0。
让我们仔细看看这些条件。瓦尔拉斯均衡与我们之前见过的均衡(如纳什均衡)不同。在纳什均衡中,每个参与者选择策略,且没有参与者愿意单方面偏离。在这里,参与者实际上并不选择策略。然而,瓦尔拉斯均衡形式化了每个参与者都应对其分配和价格感到满意的直觉。
具体来说,第一个条件意味着,给定当前价格,每个参与者 i 获得的物品包 Sᵢ 能最大化其准线性效用(价值减去支付价格)。换句话说,没有参与者会宁愿选择另一个不同的物品包。
第二个条件更具技术性,但也很直观:如果一件物品没有被分配出去,那么它的价格自然应该为零。这也与第一个条件相结合:如果一件物品未被分配且价格为零,那么任何参与者都不能通过免费获得这件额外物品而变得更开心。


因此,在瓦尔拉斯均衡中,没有参与者对其所得感到不满,也没有参与者希望获得与当前分配不同的物品组合。同时,未分配的物品价格为零,这确保了市场是“出清”的。
总结 📝
在本节课中,我们一起学习了瓦尔拉斯均衡这一经典经济理论概念。我们了解到,它由一组价格和一个分配方案构成,并满足两个核心条件:每个参与者在给定价格下都获得了对其而言最优的物品包,以及所有未分配的物品价格为零。这为我们分析存在标价的市场环境提供了一个形式化框架。在接下来的课程中,我们将探讨更一般的算法方法,并比较它们之间的差异。
019:不完全信息下的定价机制


欢迎回到算法博弈论课程。上一讲我们开始探讨一个问题:价格能在多大程度上协调市场?这意味着,与运行拍卖不同,例如在组合拍卖中,我们更希望为不同商品设定价格,使得买家能获得他们最偏好的商品组合,同时社会总福利至少能近似最大化。
上一讲中,我们在此背景下了解了瓦尔拉斯均衡的概念,它正是一组价格和分配方案,使得每个买家都对自己获得的东西感到满意,即没有买家会想要获得另一组商品。
今天,我们将用一个更现代的理论方法来补充这一点。这个方法同样设定价格,但买家会一个接一个地到来,并选择他们偏好的商品集合。正如我们将看到的,这确实带来了一些差异。我们仍然会证明一个福利保证,但无法证明我们能获得最优的社会总福利,而只能证明是近似最优的。但同时,我们所需的信息也更少。希望你能看到其中的许多相似之处和不同之处。
模型定义
我们讨论的精确模型是什么?与任何组合拍卖一样,我们有 n 个买家,构成集合 N(通常编号为 1 到 n),以及 M 件商品。
每个买家 i ∈ N 拥有一个私人的估值函数 vᵢ,该函数为每个商品集合分配一个非负实数。我们假设这些是单一参数估值函数。也就是说,对于非负的 vᵢⱼ,有:
vᵢ(S) = max_{j ∈ S} vᵢⱼ
换句话说,每个买家原则上可以被分配多件商品,但如果他们被分配了多件商品,他们只关心其中价值最高的那一件。
与上一讲相比,这里已经有所不同:今天的估值函数被假定为私有的,而不是像在瓦尔拉斯均衡理论中那样是公开知识。但是,我们再次做出与贝叶斯纳什均衡背景下相同的假设:我们预先知道这些估值函数所服从的概率分布。这意味着 vᵢ 是独立地从分布 Dᵢ 中抽取的,并且这些分布是已知的。除此之外,我们没有其他假设。所以,这些分布是已知的,但估值函数是私有的。
定价机制
现在,我们将研究以下类型的机制:
- 首先,我们基于对 D₁, …, Dₙ 的了解,计算每件商品 j 的价格 pⱼ。
- 然后,我们按顺序 1, 2, …, n 接触买家。
- 每个买家 i 购买能最大化其效用 vᵢ(Sᵢ) - Σ_{j∈Sᵢ} pⱼ 的商品集合 Sᵢ,并支付该集合的总价格 Σ_{j∈Sᵢ} pⱼ。
这个机制非常简单,关键在于第一步:如何计算这些价格。我们基于已知的分布来计算价格,当然我们并不知道具体的估值函数,因为那是私人信息。然后我们按顺序接触买家,每个买家选择能最大化其购买效用的集合,并支付相应价格。
这也可以表示为一个分配函数 f,即机制的结果规则。支付规则也很容易描述。但这样说可能有点误导,因为现在代理人的行为方式不是告诉我们他们的估值函数然后我们分配,而是他们从剩余的商品中选择自己偏好的东西。

我这样说的原因是,现在很明显这是一个真实(说真话)的机制。为什么?我有什么理由虚报或选择其他方案吗?当轮到我时,我可以选择不同的集合,但虚报我的估值、声称另一个集合让我更快乐有什么意义呢?当然没有,因为我只是选择能最大化我效用的集合。因此,真实性很容易实现。
当然,这需要付出代价:我们现在必须预先知道这些分布,并且必须固定价格。而像 VCG 这样的机制则不需要这些。但让我们先继续。

机制分析
本节中,我们将分析这种定价机制的性能。我们关心的是其产生的社会总福利与最优福利的比值。
我们定义社会福利为所有买家估值之和:SW = Σᵢ vᵢ(Sᵢ),其中 Sᵢ 是机制分配给买家 i 的集合。最优社会福利 OPT 是指在所有可能的分配中,能使总估值最大化的那个分配所对应的社会福利。
我们将证明,在适当的定价下,这种顺序定价机制可以实现至少 1/2 的近似比,即 E[SW] ≥ (1/2) * E[OPT],其中期望是关于估值分布的。
证明思路如下:我们需要将机制的社会福利与最优社会福利联系起来。一个关键概念是门槛价格,即商品被分配时的价格。我们将展示,对于每件商品,其价格至少是“错过”该商品的买家(即本可能获得更高价值但因顺序靠后或价格原因未获得该商品的买家)的估值的一半。
通过巧妙地设定价格(例如,基于分布设置一个保留价),并利用单一参数估值函数的性质,我们可以对总福利进行下界估计,从而得出近似比保证。
总结
本节课中,我们一起学习了不完全信息下的顺序定价机制。我们首先回顾了完全信息下的瓦尔拉斯均衡,然后引入了分布已知但估值私有的贝叶斯设定。我们描述了一个简单的机制:基于先验分布设定商品价格,然后让买家按顺序选择最大化其效用的商品集合。
我们指出,该机制是真实的,因为买家没有动机偏离其真实偏好。最后,我们概述了该机制能达到至少 1/2 近似社会福利的理论保证。这种机制以需要先验分布信息为代价,换来了简单性和真实性,是协调市场的一种有效且易于理解的方法。
020:收益最大化


欢迎回到我们的算法博弈论课程。在之前的几讲中,我们对机制设计,特别是以实现社会福利最大化为目标,已经有了很好的理解。这意味着我们可能有一个或多个物品,然后我们希望将这些物品分配给买家,以最大化他们估价的总和。
今天,我们将转向一个不同的目标,即我们希望最大化收益。这意味着我们希望最大化支付款项的总和。并且我们将回到只有一个物品的情况。
您可能记得,在只有一个物品的情况下,通过例如运行第二价格拍卖,最大化社会福利是相当容易的。我们甚至不需要事先知道任何估价信息。然而,如果我们想最大化收益,情况就不完全是这样了。因为,举例来说,如果我们只有一个买家,我们该如何最大化收益呢?这个买家可以声称任意小的估价,我们可能应该把物品给他,但无法强制收取任何费用。
这就是为什么我们像在其他情况下一样,假设我们事先知道估价是从哪些概率分布中抽取的。基于这种先验知识,我们设计一个诚实的机制,目标是最大化收益。
模型设定
首先,让我们写下我们的模型。
- 我们有 N 个投标人。
- 所有投标人的集合再次用大写 N 表示。
- 只有一个物品。
- 每个投标人 i 对物品有一个私人估价 v_i,并会报告一个出价 b_i。
- 我们假设每个 v_i 是从分布 D_i 中独立抽取的。
- D_i 是公开已知的。
- 估价的取值范围是从 0 到某个最大值 v_max。因此,买家可能拥有的价值有一个上限 v_max。
- 此外,我们假设这些分布是连续的。因此,其概率密度函数称为 f_i,其累积分布函数称为 F_i。
这意味着我们现在可以写出概率 P(v_i ≤ t),这也可以写成 F_i(t),或者写成从 0 到 t 对 f_i(t) 的积分。
目标与机制设计
我们的目标是设计一个机制。一个机制仍然由一个结果规则和一个支付规则组成。由于我们现在将密度函数称为 f,我们将结果规则称为分配规则 x,而不是 f,除此之外,其他部分相同。
因此,目标是设计一个机制,它是一个结果规则和支付规则的对。这个结果规则将出价向量映射到介于 0 和 1 之间的数字向量,其中这些条目的总和最多为 1。
这如何解释呢?有一种非常自然的理解方式:如果其中一个条目确实是 1,而其他条目是 0,那么这就是一种可能的结果,表示该买家获得了物品。否则,我们也可以将其解释为一个概率分布。例如,我们可以说买家 A 以 1/2 的概率获得物品,买家 B 以 1/3 的概率获得物品,买家 C 以 1/6 的概率获得物品。但这些概率甚至不必总和为 1,如果我们决定保留物品,总和也可以小于 1。因此,一种可能的分配结果就是给出全零向量,表示没有人获得物品。
我们的目标是机制 M 应该是诚实的。我们希望最大化当买家如实报告时,支付款项的总和。

核心要求与优化

再次强调,我们希望设计一个诚实的机制。每个诚实的机制都附带一个支付规则。当然,我们限制自己考虑那些不会多次分配物品且是诚实的机制。在所有这类诚实的机制中,我们希望选择那个在投标人如实报告时,能最大化期望支付总和的机制(可能不止一个)。
您可能会问,为什么我们坚持要诚实的机制?实际上,这并非绝对必要,对此有更一般的陈述。我们现在先不讨论这一点。关键在于,因为机制是诚实的,我们可以预期买家会如实报告他们的真实估价,只有这样,最大化这个目标才有意义。
本节课总结
在本节课中,我们一起学习了收益最大化的基本模型设定。我们从社会福利最大化转向了收益最大化这一新目标,并回到了单一物品的场景。我们明确了模型的关键要素:多个投标人、单一物品、私人估价服从已知的独立分布。我们定义了机制设计的目标——在诚实机制下最大化期望总支付,并解释了分配规则可以表示确定性的分配或概率性的分配。这为后续深入探讨最优拍卖设计奠定了基础。
021:同分布下的收益最大化 💰

在本节课中,我们将继续学习收益最大化问题,但聚焦于一个特殊场景:单物品拍卖,并且假设所有竞拍者的估值服从相同的分布。我们将利用上一讲推导出的“期望收益等于期望虚拟福利”这一关键等式,来设计最优的拍卖机制。
上一讲我们介绍了收益最大化问题,并推导了期望收益与期望虚拟福利相等的等式。本节中,我们来看看在这个特殊设定下,如何应用该等式来构建最优拍卖。
场景回顾与假设
我们有 n 个竞拍者,构成集合 N = {1, 2, ..., n}。我们拍卖一件物品。每个竞拍者 i 对该物品有一个私人估值 v_i,这些估值从一个已知的分布中独立抽取。
本节课的核心假设是:所有竞拍者的估值分布是相同的。因此,我们不再需要下标 i 来区分分布,统一记为 D。该分布具有累积分布函数 F 和概率密度函数 f。
关键工具:虚拟估值函数
上一讲我们证明了虚拟估值函数在收益最大化中的核心作用。对于估值 t,其虚拟估值 φ(t) 定义为:
φ(t) = t - (1 - F(t)) / f(t)
虚拟估值总是小于或等于实际估值,因为它减去了一项。对于较小的 t,φ(t) 甚至可能为负。我们今天的另一个重要假设是:虚拟估值函数 φ(t) 是严格递增的。满足此条件的分布被称为“正则分布”。
收益与虚拟福利的等价关系
我们之前推导的关键等式是:一个真实( truthful )机制的期望收益,等于其分配规则所产生的期望虚拟福利。具体公式如下:
E[收益] = E[ Σ_i φ(v_i) * x_i(v) ]
其中,x_i(v) 表示在估值组合 v 下,竞拍者 i 获得物品的概率(1或0)。对于单物品拍卖,Σ_i x_i(v) ≤ 1。
这个公式看起来很像社会福利公式,只不过把每个竞拍者的实际估值 v_i 替换成了其虚拟估值 φ(v_i)。因此,最大化期望收益,等价于在每次拍卖中,选择能最大化总虚拟福利的分配方案。
最优拍卖机制的构建
基于上述原理,我们可以构建一个真实的最优拍卖机制。其分配规则非常简单:
将物品分配给虚拟估值最高的竞拍者,但前提是其虚拟估值必须为正数。否则,卖家保留物品。
由于我们假设所有竞拍者分布相同,因此他们使用同一个虚拟估值函数 φ。这意味着,比较虚拟估值 φ(b_i) 的高低,等价于比较其出价 b_i 本身的高低(因为 φ 是严格递增函数)。因此,分配规则可以简化为:
- 找出出价最高的竞拍者
i* = argmax_i b_i。 - 计算其虚拟估值
φ(b_i*)。 - 如果
φ(b_i*) > 0,则将物品分配给竞拍者i*;否则,卖家保留物品。
根据迈尔森引理,在一个真实的直接拍卖中,赢家的支付价格是其能获胜的最低出价(即临界价格)。在我们的机制中,竞拍者 i* 要获胜,需要满足两个条件:一是出价最高,二是其虚拟估值大于0。
因此,赢家 i* 的支付价格 p_i* 是以下两者中的最大值:
- 第二高出价:确保自己是出价最高者。
- 虚拟估值为0对应的估值:即
φ^{-1}(0),确保自己的虚拟估值大于0。
用公式表示,赢家的支付为:
p_i* = max( 第二高出价, φ^{-1}(0) )
机制步骤总结
以下是完整的“最优拍卖”步骤:
以下是该拍卖机制的具体执行流程:
- 竞拍:每个竞拍者
i提交出价b_i。 - 确定赢家:找出出价最高的竞拍者
i*。 - 分配决策:计算
φ(b_i*)。若φ(b_i*) > 0,则i*赢得物品;否则,卖家保留物品,无人获胜。 - 计算支付:如果
i*获胜,其支付金额为p_i* = max( 第二高出价, φ^{-1}(0) )。其他竞拍者支付为0。
这个机制被称为 “带有保留价的二价拍卖” 。其中,r = φ^{-1}(0) 就是最优保留价。卖家在心里设定一个底价 r,只有当最高出价超过 r 时才会售出物品,并且售价是第二高出价和 r 中较高的那个。
本节课总结

本节课中,我们一起学习了在同分布假设下的单物品最优拍卖设计。我们回顾了虚拟估值函数和收益-虚拟福利等价关系这两个核心工具。通过应用这些工具,我们推导出:对于正则分布,最优拍卖机制就是带有最优保留价的二价拍卖。这个机制不仅理论最优,而且简单易行,完美体现了理论对实践的精妙指导。
022:无货币分配机制


欢迎回到算法博弈论课程。在过去的几周里,我们学习了大量关于使用货币的机制设计知识。但是,如果你不想用金钱来引导人们走向正确的方向,以实现期望的结果,该怎么办呢?
为什么可能不想使用货币?或许是因为收取金钱不可行,或者出于某些伦理原因。那么,在这种情况下我们能做什么呢?在接下来的几讲中,我们将了解一些关于无货币机制设计的知识。
遗憾的是,情况远不如之前清晰,设置通常也更为复杂。这有很好的原因:到目前为止,我们所做的一切都是以货币单位来衡量的。我指的不仅仅是支付,还包括你对物品的估值。我们也是用货币单位来表达的,例如,我认为这个物品值5,那个值3,那么估值更高的人就应该得到物品,因为这能最大化社会福利。
然而,如果没有货币,我们该如何比较哪个物品对谁更有价值呢?正如你将看到的,我们必须更仔细地思考,所谓“获得一个理想的结果”究竟意味着什么。
现在,我想考虑的第一个问题是一个非常简单的场景:每个参与者都带一件物品到市场,我们称之为“房子”,他们希望通过交换这些房子,让每个人在交换后都尽可能满意。当然,你也可以用金钱来做这件事,即每个人都卖掉自己的房子,然后再买房子。这甚至可能是此类场景下的一种可行机制。
但在这里,我们希望完全不用金钱来完成这件事。那么,这会是什么样子呢?
和往常一样,我们有 N 个参与者,我称他们为 I(没有特别的理由),我们仍然称他们为玩家。集合用大写 N 表示。他们每个人最初都拥有一件物品,我们称之为房子,意思是,你实际上只需要一栋房子来居住,不需要两栋,但你肯定应该有一栋房子住。
那么,我们现在的目标是什么?目标是重新分配这些房子,让参与者更满意。这意味着,我们希望找到一个一一对应的映射 π,它只是一个从 N 到 N 的映射。这意味着,在重新分配之后,参与者 I 将获得房子 π(i)。
正如我所说,我们不用金钱来做这件事。所有关于“让参与者更满意”的表达,我们都不会用货币单位来衡量。当然,你可以说,我认为这座豪宅值200万,那座值300万,所以我更喜欢那座300万的豪宅。但是,为什么你多获得100万的感知价值,就比另一个人只多获得1000的感知价值更重要呢?因此,我们实际上并不用货币单位来表达所有这些偏好。我们不说我估价这栋房子这么多,而是说,这是我的房子偏好排序列表,我喜欢这栋房子胜过那栋,又胜过另一栋。
因此,每个参与者对所有房子都有一个完整的偏好排序列表,且没有并列项。让我们看看这可能是什么样子。
我们有参与者 A、B 和 C。他们也带来了房子 A、B 和 C。例如,第一个参与者可能偏好房子 B 胜过 C,胜过 A。第二个参与者可能偏好房子 C 胜过 A,胜过 B。第三个参与者可能偏好房子 A 胜过 C,胜过 B。在这种情况下,事情非常简单,因为每个人最偏好的房子都不同。所以我们可以给参与者 A 房子 B,给参与者 B 房子 C,给参与者 C 房子 A,这样所有人都会很高兴。他们都会成为世界上最幸福的人,因为他们得到了自己最喜欢的房子。
所以我们的映射 π 就是这个二分图中的完美匹配。但是,通常情况不会这么顺利。当然,可能有一栋豪宅是每个人都想要的,而我们无法让每个人都得到他们最偏好的房子。例如,情况可能如下所示。
再次,我们有参与者 A、B 和 C。他们每人带来房子 A、B 和 C。参与者 A 现在和之前一样,偏好房子 B 胜过 C,胜过 A。但参与者 B 现在偏好房子 A 胜过 C,胜过 B。参与者 C 的偏好我们也不修改。如果我们现在进行同样的交换会发生什么?


那么人们现在有多高兴呢?参与者 A 仍然得到了最偏好的房子,但参与者 B 没有得到最偏好的房子。
算法博弈论:第22讲:稳定匹配 👩❤️👨

在本节课中,我们将学习稳定匹配问题。上一讲我们介绍了无金钱的机制设计领域,并看到了两个例子。我们了解到,由于无法用货币单位表达偏好,而只能将其编码为偏好排序,因此情况比有金钱时更为复杂。我们认识的一个例子是房屋分配问题,我们找到了一个房屋的重新分配方案,使得每个人都满意,即不存在一组人宁愿自行交换也不愿加入我们的分配方案。
今天,我们将考虑一个非常相似但有一个主要区别的问题:在房屋分配问题中,房屋本身不在乎谁住在里面。但今天我们要考虑的是一个双方都有偏好的匹配问题。传统上,这被表述为一个婚姻问题:我们有一组男性和一组女性,我们想将男性与女性进行匹配。我个人认为这是所有可能动机中最弱的一个,因为现实中的婚姻并非如此。更合理的应用场景可能是将求职者与雇主进行匹配。但由于文献中通常使用婚姻的表述,我们也将沿用,并谈论男性和女性。
那么,我们这里的设定是什么?我们有一个男性集合 U 和一个女性集合 V。每个男性 u ∈ U 对女性有一个偏好排序,每个女性 v ∈ V 对男性也有一个偏好排序。这里的排序是全序,即每个人都对另一方进行了排名,且没有并列情况。
例如,假设男性集合是 {X, Y, Z},女性集合是 {A, B, C}。偏好列表可能如下:
- 男性 X:A > B > C
- 男性 Y:A > C > B
- 男性 Z:C > A > B
- 女性 A:X > Y > Z
- 女性 B:Z > X > Y
- 女性 C:Y > X > Z
我们的目标是将男性与女性进行匹配,并且我们希望这个匹配是稳定的。这意味着,类似于房屋分配问题,每个人都满意我们分配给他们的对象,具体来说:不存在这样一对男女,他们彼此更喜欢对方,而不是自己当前的匹配对象。
让我们正式定义一下。一个匹配 M 是一组 (u, v) 对的集合,其中 u ∈ U,v ∈ V,并且每个男性和女性至多被匹配一次。给定匹配 M,一对 (u, v) 被称为阻碍对,如果:
- 男性 u 比起他在 M 中的当前伴侣,更喜欢女性 v。
- 女性 v 比起她在 M 中的当前伴侣,更喜欢男性 u。
这里有一个重要的约定:被匹配总是优于不被匹配。因此,如果双方都未被匹配,他们当然更愿意组成一对。
一个匹配 M 被称为稳定的,如果其中不存在任何阻碍对。
在定义了稳定匹配之后,一个自然的问题是:这样的匹配是否总是存在?如果存在,我们如何找到它?下一节我们将介绍一个著名的算法来解决这个问题。
盖尔-沙普利算法(又称“延迟接受”算法)可以找到一个稳定匹配。以下是该算法的步骤:
- 初始化:所有男性和女性最初都是未匹配状态。
- 求婚轮次:在每一轮中,每个尚未被匹配(或尚未被所有他喜欢的女性拒绝)的男性,向他偏好列表中尚未拒绝过他的、排名最高的女性“求婚”。
- 回应:每位女性在收到求婚时,会将她当前的求婚者(如果有的话)与她更偏好的一位进行临时匹配。如果她更偏好新的求婚者,她会拒绝当前的临时伴侣(使他恢复自由身,可以在后续轮次中继续求婚)。如果她更偏好当前的临时伴侣,她会拒绝新的求婚者。
- 终止:当没有男性需要再求婚时(即所有男性要么已匹配,要么已被所有他喜欢的女性拒绝),算法终止。此时形成的临时匹配就是最终的稳定匹配。
这个算法保证会终止,并且产生的匹配是稳定的。值得注意的是,这个算法是男性最优的,即它产生的稳定匹配对男性来说是最好的可能结果(同时,对女性来说是对应的最差可能结果)。如果交换角色,由女性主动求婚,则会得到女性最优的稳定匹配。
本节课中,我们一起学习了稳定匹配问题。我们首先定义了问题的设定,即双方都有严格偏好排序的匹配场景。然后,我们形式化地定义了稳定匹配的概念,其核心是匹配中不存在阻碍对。最后,我们介绍了寻找稳定匹配的盖尔-沙普利算法,该算法通过多轮“求婚”和“接受/拒绝”的过程,总能找到一个稳定匹配,并且这个匹配对主动求婚的一方是最优的。

理解稳定匹配及其算法,是学习机制设计和市场设计的重要基础,它在学校录取、器官捐献、求职招聘等许多现实场景中都有广泛应用。
024:公平分配与蛋糕切割问题 🍰

在本节课中,我们将学习机制设计中一个不涉及金钱的经典问题:公平分配。我们将以“蛋糕切割”为例,探讨如何将一个连续资源(如蛋糕)分配给多个参与者,使得分配结果满足某种公平性标准。本节将介绍蛋糕切割问题的数学模型、核心概念以及一种简单的分配机制。
蛋糕切割问题简介
上一节我们介绍了机制设计的基本概念,本节中我们来看看一个具体的应用场景:公平分配。这类问题在日常生活中很常见。例如,一组员工需要分配不同的工作时间班次,每个人对早班、晚班或周末班次可能有不同的偏好。目标是如何分配班次,使得整体上每个人都尽可能满意。
我们将在一个简化的设置中考虑这个问题。与之前学期中见过的不可分割物品分配不同,这里我们考虑一个完全可分割的资源,但人们对资源的不同部分有不同偏好。这个资源通常被比喻为一块“蛋糕”。
数学模型 🧮
我们如何用数学来刻画这个场景?
- 蛋糕被建模为一个从0到1的区间:
[0, 1]。 - 一块蛋糕“块”是若干个子区间的并集。
- 有
n个参与者(代理人)。 - 每个参与者
i有一个估值函数V_i,它为每一块蛋糕分配一个非负的价值。
为了具体描述偏好,我们假设存在一个密度函数 v_i(x),它将区间 [0, 1] 映射到非负实数。估值函数 V_i 由该密度函数的积分给出:
V_i(X) = ∫_X v_i(x) dx
其中 X 是分配给参与者 i 的蛋糕块(一个或多个子区间的并集)。这意味着估值在不相交的区间上是可加的。
需要注意的一点是,分配开区间或闭区间并不影响结果,因为单点的积分值为零。我们通常假设每个人对整个蛋糕的总估值是相同的(即归一化为1),但关键在于他们更偏好蛋糕的哪一部分。
偏好示例 📊
以下是几个具体的偏好示例:
- 无差别参与者:密度函数
v_i(x) = 1对所有x ∈ [0, 1]成立。这意味着该参与者对蛋糕的任何部分都同等喜欢。 - 偏好左半部分的参与者:密度函数在
[0, 0.5]区间为1.5,在[0.5, 1]区间为0.5。该参与者认为左半块蛋糕价值0.75,右半块价值0.25,但整个蛋糕的总价值仍是1。
这些例子展示了个人对蛋糕不同部分的主观价值判断差异。
一个简单的分配机制
那么,我们可以如何进行分配呢?一个直观的想法是进行平均分割。
以下是“我切你选”机制在两人情况下的步骤:
- 由第一位参与者将蛋糕切成他认为价值相等的两块。
- 由第二位参与者从这两块中挑选他更喜欢的一块。
- 第一位参与者获得剩下的那块。
这种机制能保证对于两位参与者而言,分配结果是“无嫉妒”的,即没有人会认为别人分到的蛋糕比自己分到的更好。
总结

本节课中,我们一起学习了公平分配中的蛋糕切割问题。我们建立了将连续资源建模为区间、用密度函数和积分表示参与者偏好的数学模型,并通过“我切你选”的例子,初步了解了如何设计满足基本公平性(无嫉妒)的分配机制。在后续课程中,我们将探讨更多参与者和更复杂公平标准下的切割算法。
025:投票机制


欢迎回到算法博弈论课程。本节课我们将讨论机制设计中的一个主题,该主题对大多数人而言,明确不涉及金钱,即投票。
这意味着我们可能需要设计一个机制,例如总统选举。我们有多个候选人,需要决定谁将赢得总统职位。这可能意味着每位选民只需说出他们偏好的候选人,或者他们可能告诉我们更多信息,这取决于我们特定的设计。
如果你只有两名候选人,那么有一个非常标准的形式:谁获得更多选票,谁就赢得选举。我们暂时搁置平局处理的问题,因为两名候选人获得完全相同票数的情况很少发生。
这种方式被广泛使用,并且有充分的理由。因为只有少数选民会对结果不满意。多数选民会说,好的,这是我偏好的结果,并且在这种情况下,没有比这更好的结果了。
但是,当你有三个或更多候选人时,情况就变得复杂得多。你可能在现实中见过这种情况,例如市长选举。你可能会想,我可以投票给我最喜欢的候选人,但他或她的机会很小,所以我可能想支持我第二喜欢的候选人,因为他或她更有可能获得相对多数票,从而比我最不希望当选的人获得更多选票。
因此,这里涉及一些策略性投票,这是我们应提出的问题之一:是否存在方法可以避免选民必须采取策略性行为?在此之前,我们还应提出一个问题:我们如何确定获胜者?即使每个人都告诉我们他们最喜欢谁、第二喜欢谁等等,我们如何确定获胜者?因为规则有好坏之分。
但在开始这一切之前,让我们先引入一个形式化模型。因为这是一个没有金钱的环境,我们无法用货币单位来表达“我喜欢这个候选人这么多”,而是再次定义一个偏好顺序。
形式化定义如下:我们有 N 个智能体(代理人),以及 M 个候选人。我们称候选人的集合为 Γ。每个智能体 i 都有一个对 Γ 的完整偏好列表,且没有平局。
我们将使用以下符号表示:如果智能体 i 偏好候选人 A 胜过 B,偏好 B 胜过 C,我们写作:
A ≻ᵢ B ≻ᵢ C
这当然意味着 A ≻ᵢ C,即具有传递性。
现在我们的问题是什么?首先是投票问题:给定所有这些偏好顺序,我们需要从 Γ 中确定一个获胜者。其次是排序问题:要求我们不仅确定获胜者,还要确定所有候选人的完整排名顺序。同样,给定所有偏好顺序,我们的目标是确定一个社会排名。
这意味着除了找到获胜者,我们还需要说明谁是第二名、第三名等等。因此,我们的目标是设计一个排序规则或投票规则。这两个问题非常相似,排序问题当然要求我们做更多工作,但根本上它们是相似的。
那么,是什么让这变得困难?我们被赋予了这些个体智能体的偏好顺序,必须以某种方式找到一个折中方案或共识。我们没有客观函数,所以什么是好的结果实际上取决于我们的设计。例如,对于投票问题,一种方法是随机从 Γ 中选择一个获胜者,或者选择获得最少票数的候选人。换句话说,你查看这些偏好顺序,然后选择在多数偏好顺序中排名最差的候选人,或者作为首选被最少智能体选择的候选人。当然,这些都没有实际意义,但为什么这不是一个好的投票规则?为什么选择最少人喜欢的候选人不好?这是我们需要形式化的内容。


我们都见过投票和排序规则的例子。现在,我想首先讨论这些规则,讨论它们如何融入我们的框架,以及它们在多大程度上是好的或不好的排序/投票规则。
我想考虑的第一个规则是多数制投票。它是如何运作的?在多数制投票中,每位选民只有一票,他们只需投票给他们最喜欢的候选人。
026:成本分摊


欢迎回到算法博弈论课程,这是我们今天的最后一讲。非常感谢大家坚持到现在。本节课我们将讨论一个话题,这个话题也可称为公平分配,但通常被称为成本分摊。
概述
在本节课中,我们将学习成本分摊问题的基本模型,并探讨两种不同的成本分摊方法及其满足的性质。我们将从定义模型开始,然后介绍核心解的概念,并分析其特性。
问题模型
首先,我们定义一个模型。我们有 N 个智能体,也称为大写 N。我们还有一个成本函数 C。这个成本函数将智能体的所有子集映射到一个实数。C(S) 表示子集 S 自行承担的成本。我们假设空集的成本为零,但其他子集的成本原则上也可以是负数。
例如,考虑购买火车票的场景。假设有5个智能体。一张单人票价格为2欧元,一张团体票(适用于3人及以上)价格为5欧元。那么,对于任意智能体子集 S,其成本 C(S) 为:
C(S) = min(2 * |S|, 5)
如果只有两个人买票,成本是4欧元;如果只有一个人买票,成本是2欧元;但如果有三个或更多人,他们可以购买团体票,成本是5欧元。
我们的核心问题是:如何将整个群体 N 的总成本 C(N) 分摊给所有智能体,使得总成本被完全覆盖,并且每个智能体都感到被公平对待。
更正式地说,目标是找到一个成本分摊向量 ξ(C),它依赖于成本函数 C,将成本分摊给所有 n 个智能体。当所有智能体一起时,他们恰好覆盖总成本。
在我们的例子中,分摊方式有多种可能:例如,前两个智能体各付2欧元,第三个智能体付1欧元;或者第一个智能体付全部5欧元,其他智能体不付钱;或者每个智能体各付1欧元。其中一些方式可能比其他方式更“合适”。这正是我们今天要探讨的问题:是什么让一个成本分摊向量显得公平或合适?
核心解
第一种选择成本分摊向量的方法是所谓的“核心”。
一个成本分摊向量要属于核心,必须满足两个性质。
我们说 ξ(C) 在成本函数 C 的核心中,如果它满足以下条件:
一方面,它应满足称为效率的性质。我们已经见过这个性质:个体成本份额的总和应等于所有智能体在一起的总成本。个体成本的总和应恰好收回社会成本。
另一方面,我们还有稳定性。这意味着:对于任何智能体子集 S,该子集中智能体的成本份额之和不超过该子集 S 自行承担的成本 C(S)。也就是说,没有任何联盟通过这个成本分摊向量支付的成本,会超过他们自己单独行动(例如,仅为这个群体购买火车票)所承担的成本。
在我们的例子中,是否存在一个核心结果?是的,存在。
我们之前有:
C(S) = min(2 * |S|, 5)
那么,一个可能的核心结果是什么?例如,我们可以设:
ξ_i(C) = 1, 对于所有 i
这将在核心中。或者,我们也可以这样分摊成本:前两个智能体各支付2欧元...

(注:原文在此处中断,后续内容未提供。根据要求,教程应基于提供的原文内容生成,因此教程在此结束。)
总结

本节课中,我们一起学习了成本分摊问题的基本模型。我们定义了智能体集合 N 和成本函数 C,并通过火车票的例子进行了说明。接着,我们介绍了核心解的概念,它要求成本分摊方案同时满足效率性(总成本完全覆盖)和稳定性(任何子集支付的成本不超过其独立承担的成本)。我们通过具体例子验证了核心解的存在性。理解核心解是评估分摊方案是否公平合理的重要基础。

浙公网安备 33010602011771号