Regret Matching and Blotto Game

1 基本概念

2000 年,Hart 和 Mas-Colell 介绍了一个重要的博弈论算法 regret matching。博弈双方通过:

  1. 记录后悔值
  2. 根据后悔值的比例地选择下一步行动

达到纳什均衡 (Nash equilibrium)。这个能很好地解决正则形式的博弈(normal-form game),但是对扩展形式的博弈(extensive-form game)不适用。

所谓正则形式,是一种描述博弈的方式。正则形式用 n 维矩阵来描述博弈,而扩展形式使用图。正则形式只能描述玩家同时行动的博弈。

1.1 博弈的正则形式描述

正则形式的矩阵描述有以下几个要素:

  1. 玩家数量 n 即维度
  2. 维度 i 上的值是玩家 i 的行动
  3. 矩阵的元素是奖励( payoff )

例如,我们可以用如下矩阵来描述剪刀石头布游戏:

剪刀 石头
剪刀 (0, 0) (-1, 1) (1, -1)
石头 (1, -1) (0, 0) (-1, 1)
(-1, 1) (1, -1) (0, 0)

如果矩阵中所有 payoff 的值的和为 0,则称为零和博弈。

1.2 玩家策略

如果某个玩家以 100% 的概率采取一个行动 (例如德扑全程 all in),称为 pure strategy。如果一个玩家可能采取多种行动,就称为 mixed strategy。

我们使用 \sigma 表示 mixed strategy,\sigma_i(s) 表示玩家 i 选择行动 s 的概率,-i 表示 i 的对手。

我们可以通过以下方法计算玩家的期望 payoff:

u_i(\sigma_i, \sigma_{-i}) = \sum_{s \in S_i}\sum_{s' \in S_{-i}} \sigma_i(s) \sigma_{-i}(s')u_i(s, s')

其实就是加权求和。

2 Regret Matching and Minimization

Regret matching 算法只能用于正则形式的博弈。其基本思想为根据 payoff 对之前的行动作求反悔值。再利用累计的反悔值指导下一步行动。

以刚才的石头剪刀布游戏为例,我们出了石头,对手出了布,我们输掉了 1 块钱,payoff 是 -1。我们如果出布,是平局,payoff 是 0,如果出剪刀,就赢了,payoff 是 1。payoff 差值即反悔值分别是 (0,1,2)。将其 normalize,下一次出石头、布、剪刀的概率分别是 (0,1/3,2/3)。

假设第二次我们出了剪刀,对手出了石头。我们再次输掉了 1 块钱。这次我们对石头、布、剪刀的反悔值分别是(1,2,0)。累加到之前的 (0,1,2) 上为 (1,3,2)。下一次出石头、布、剪刀的概率为 (1/6, 3/6, 2/6)。

Exercise: Colonel Blotto

Colonel Blotto and his arch-enemy, Boba Fett, are at war. Each commander has S soldiers in total, and each soldier can be assigned to one of N < S battlefields. Naturally, these commanders do not communicate and hence direct their soldiers independently. Any number of soldiers can be allocated to each battlefield, including zero. A commander claims a battlefield if they send more soldiers to the battlefield than their opponent. The commander’s job is to break down his pool of soldiers into groups to which he assigned to each battlefield. The winning commander is the one who claims the most battlefields. For example, with (S,N) = (10,4) a Colonel Blotto may choose to play (2,2,2,4) while Boba Fett may choose to play (8,1,1,0). In this case, Colonel Blotto would win by claiming three of the four battlefields. The war ends in a draw if both commanders claim the same number of battlefields.

让两个使用 regret matching 的玩家进行对战,选定 S=5 和 N=3,找到 Nash Equilibrium。

要点:

  1. 列出所有分配方法,作为可能的 action set,从 0 开始依次编号
  2. 用一个 2 维矩阵存储 action 对 action 的胜负表,即得到 blotto 博弈的矩阵描述
  3. 各个玩家根据在具有正反悔值的 action 中,根据反悔值随机选择一个 action。若不存在正反悔值的 action(例如第一轮),则随机选择初始 action。
  4. 各个玩家在游戏结束时得到对手的 action,并更新自己的反悔值

代码实现见 https://github.com/double-free/cfr ,运行 10 万次结果如下(结果具有一定随机性)。

可能的分配方式:

                [0, 0, 5],
                [0, 1, 4],
                [0, 2, 3],
                [0, 3, 2],
                [0, 4, 1],
                [0, 5, 0],
                [1, 0, 4],
                [1, 1, 3],
                [1, 2, 2],
                [1, 3, 1],
                [1, 4, 0],
                [2, 0, 3],
                [2, 1, 2],
                [2, 2, 1],
                [2, 3, 0],
                [3, 0, 2],
                [3, 1, 1],
                [3, 2, 0],
                [4, 0, 1],
                [4, 1, 0],
                [5, 0, 0],

每个分配方式对应的反悔值:

player 1: for opponent 0, regret sum for each action [-55002, -10612, -45, -41, -11250, -55644, -10426, 25, -11075, 127, -11068, 109, -11107, -11009, 207, -74, -92, 20, -11636, -11640, -56029]

最终还具有正反悔值的 action:

player 1: for opponent 0, candidate strategy Allocation { soldiers: [1, 1, 3] } has positive regret 25
player 1: for opponent 0, candidate strategy Allocation { soldiers: [1, 3, 1] } has positive regret 127
player 1: for opponent 0, candidate strategy Allocation { soldiers: [2, 0, 3] } has positive regret 109
player 1: for opponent 0, candidate strategy Allocation { soldiers: [2, 3, 0] } has positive regret 207
player 1: for opponent 0, candidate strategy Allocation { soldiers: [3, 2, 0] } has positive regret 20

结果还是相对符合直觉的。

Reference

  1. 反事实后悔最小化
  2. An Introduction to Counterfactual Regret Minimization
  3. Game Basics
  4. Monte Carlo Tree Search
  5. Counterfactual Regret Minimization
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349