1.2 核心定义与基本要素 本节摘要:本节承接 1.1 的历史线索,把叙事里反复出现的词——参与者、策略、收益——钉成严格定义,并补上常被忽略的第四要素:共同知识。读完本节,你应当能把任何一段策略情境拆解成规范的形式结构,并准确判断理性假设在哪个环节开始发力、在哪个环节开始失真。这是全书所有推导通用的零件库。 学习目标 读完本节,你应当能够: 写出博弈的标准定义,并指出"策略"与"行动"的区别; 判断一个情境是否构成博弈:三要素缺一不可,缺了哪个就补哪个; 区分理性假设的三层含义,说明共同知识的递归结构; 用数据结构把一个双人博弈的收益表表达出来,为后续程序化求解做准备。 一、三要素:参与者、策略、收益 一个博弈的形式定义只需要三样东西。
本节摘要:本节承接 1.1 的历史线索,把叙事里反复出现的词——参与者、策略、收益——钉成严格定义,并补上常被忽略的第四要素:共同知识。读完本节,你应当能把任何一段策略情境拆解成规范的形式结构,并准确判断理性假设在哪个环节开始发力、在哪个环节开始失真。这是全书所有推导通用的零件库。
读完本节,你应当能够:
一个博弈的形式定义只需要三样东西。第一是参与者集合:做决策的主体,可以是人、公司、国家,也可以是基因、算法甚至"自然"这个虚拟玩家——只要它有可选的方案并对结果有偏好。第二是每个参与者的策略集:一份完整的行动说明书,规定他在任何可能出现的情况下做什么。注意策略不等于行动:行动是一次性的举手投足,策略是覆盖所有可能出现情形的完整计划,这个区分在动态博弈里性命攸关。第三是收益函数:把每个参与者的策略组合映射到一个数值,代表他在该结果下获得的效用。收益可以是钱,也可以是任何被偏好排序的东西——逃生的概率、连任的可能、基因被复制的次数。
三要素凑齐,博弈就定义完毕。反过来说,诊断一个情境时要逐项检查:一群邻居讨论要不要凑钱修路灯,参与者是各家,策略是出钱或不出钱,收益是照明减去出资——这构成博弈;而一个人独自决定带不带伞,若不引入"自然"作为随机方,就只是普通的优化问题,谈不上博弈。
教科书定义常在三要素处止步,但真正的分析还需要一个前提:规则本身是共同知识——我知道你知道收益结构,我知道你知道我知道,如此递归到任意深度。这个要求听起来苛刻,却恰恰标出了博弈论与普通决策理论的分界:决策理论处理"我对世界的不确定",博弈论处理"我对他人心智的不确定",而他人心智的推理必须踩着共同知识这级台阶才能启动。
理性假设可以拆成三层来理解。第一层是工具理性:给定信念,选择最能实现目标的手段——这是最弱也最稳的一层。第二层是明知:参与者对博弈结构、对手收益有准确认知。第三层是交互理性:我相信对手理性,且我知道对手相信我理性——纳什均衡的推演要踩到这一层。凯恩斯在《通论》里那个著名的选美类比说的就是第三层:不是选你觉得最美的人,而是猜"大家认为大家认为谁最美"。层级越高,假设越强,预测越脆——第三章和第九章会反复回到这句话。
定义的价值在于可操作。下面用极简的 Python 结构表达一个双人博弈:策略集是列表,收益是按"我的策略、对方策略"索引的二维表。后面第 2 章的求解代码会直接建立在这个结构上。
# 一个双人博弈的最小表示:囚徒困境 # 策略编号 0 = 抵赖(合作),1 = 认罪(背叛) players = ["甲", "乙"] strategies = {"甲": [0, 1], "乙": [0, 1]} # payoff[甲策略][乙策略] = (甲收益, 乙收益) payoff = { (0, 0): (-1, -1), # 都抵赖:各判较短刑期,记 -1 (0, 1): (-9, 0), # 甲抵赖乙认罪:甲重判,乙释放 (1, 0): (0, -9), # 甲认罪乙抵赖:甲释放,乙重判 (1, 1): (-6, -6), # 都认罪:各判较长刑期 } def best_response(me, other_action, payoff): """给定对方动作,返回我的最优动作(处理并列时返回首个)""" actions = [0, 1] return max(actions, key=lambda a: payoff[(a, other_action)][0 if me == "甲" else 1]) print(best_response("甲", 0, payoff)) # 输出 1:对方抵赖,我认罪更划算 print(best_response("甲", 1, payoff)) # 输出 1:对方认罪,我更得认罪
两次调用都返回 1,说明对甲而言无论乙怎么做,认罪都是最优反应——这就是占优策略,第 2 章的主角之一。短短十行代码已经能"预测"博弈结果,这正体现了形式定义的威力。
背景。校园东西两端各有一家奶茶店,同时决定本周特价款定价:高价 15 元或低价 9 元。两边客群重叠,价格差会驱动流动。当两家都卖 15 元时各得周利润 5000 元;都卖 9 元时薄利多销各得 4000 元;一家低价一家高价时,低价方吸走大半客流得 6500 元,高价方只剩 2500 元。
操作。按定义逐项建模:参与者是东西两店;策略集都是 15 元与 9 元;收益即上表利润。写成矩阵后逐格检查:给定对方高价,我低价得 6500 优于高价 5000;给定对方低价,我低价得 4000 优于高价 2500。两头比较,低价都是更优反应。
结果。若两家都按这个逻辑推演,唯一稳定的结果是双方都定价 9 元,各得 4000——明明存在都卖 15 元各得 5000 的更好结果,却谁也不敢单方面去高价。
解读。这个例子演示了定义的用法:先补齐三要素,再在矩阵上逐格比收益,"稳定结果"自然浮现。它同时暴露了工具的边界——矩阵告诉我们均衡在哪,却不告诉我们两家能不能通过每周轮流做会员日、共享配送等办法跳出低价陷阱;那需要把博弈从"只打一周"改写成"长期重复",也就是第 6 章的重复博弈。建模时选取什么时间结构,本身就是一个影响结论的决策。
变式。若两店定价有先后(比如东店是旗舰、西店跟随定价),同时行动的矩阵就不再适用,要换成博弈树;若西店不知道东店的成本,矩阵里的收益数字就成了东店的私人信息,需要第 4 章的贝叶斯工具。同一个情境,换表示、换信息假设,就通向了全书不同的章节。
初学者最常踩的三个坑。其一,把收益当金额:收益是效用序数,只要能排大小即可,古诺模型里的利润是特例而非通则。其二,把零和当"坏":零和只是说收益此消彼长,不蕴含道德判断;大多数现实博弈是非零和的,合作空间恰恰藏在正和结构里。其三,把参与者默认为"人":委员会、主权国家、演化中的基因型、一段自动竞价代码,都可以是合格的参与者。