【博弈】非完全信息博弈基础与CFR算法简介

2023-11-07 14:20

本文主要是介绍【博弈】非完全信息博弈基础与CFR算法简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

非完全信息博弈基础

0 非完全信息扩展式博弈

信息集:玩家无法区分的博弈状态集合,在这些状态下可选择的动作必须遵循同一分布。

有限的非完全信息扩展式博弈 < N , H , P , f c , I i , u i > <N, H, P, f_{c}, I_{i}, u_{i}> <N,H,P,fc,Ii,ui>

  • 参与者集合 N N N N = { c , 1 , 2 , … , n } N=\{\mathrm{c}, 1,2, \ldots, \mathrm{n}\} N={c,1,2,,n} c c c 为机会玩家,其余为普通玩家。
  • 博弈状态集合 H H H:每个博弈状态 h ∈ 𝐻 ℎ∈𝐻 hH 由动作的历史序列组成,即从根节点到当前决策节点的路径中经过的决策的序列(有序集)。在根节点处序列为空,ℎ的所有前缀序列也属于 𝐻 𝐻 H 𝑍 ⊆ 𝐻 𝑍⊆𝐻 ZH​ 是博弈终止状态集合,代表博弈结束胜负已分。 A ( h ) = a : h . a ∈ H A(h)={a:h.a∈H} A(h)=a:h.aH 为在非终止状态 h ∈ 𝐻 ℎ∈𝐻 hH 处可供选择的合法动作集合,其中, h . 𝑎 ℎ.𝑎 h.a 代表在 h ℎ h 状态处选择动作 𝑎 𝑎 a 后能到达的状态。显然,在 𝑍 𝑍 Z 处没有可选择的动作。
  • 决策者函数 P P P:函数 𝑃 𝑃 P 为每个非终止状态分配一个决策玩家。 P ( h ) = i P(h)=i P(h)=i 代表在博弈状态 h ℎ h 处做出决策的玩家为 𝑖 𝑖 i。如果 P ( h ) = c P(h)=c P(h)=c,此时在博弈状态 h ℎ h 处做出决策的玩家为机会玩家。
  • 机会概率分布 f c f_c fc:如果状态 h h h 处做出决策的玩家是机会玩家 c c c,那么 c c c 选择的动作的概率分布服从于 f c f_c fc
  • 信息集 I i I_i Ii:一个信息集是 H H H 的子集,当其他玩家通过观测历史 h h h 时,只知道玩家处于集合 I I I 上,但是并不清楚该玩家具体在 I I I 的哪一个状态上。每个玩家的所有信息集组成一个信息分割。对于每个玩家 i ∈ N i \in N iN 都存在一个信息分割, I i = { I i ∣ I i ⊂ H , P ( I i ) = i } \mathcal{I}_{i}=\left\{I_{i}\right.\left.\mid I_{i} \subset H, P\left(I_{i}\right)=i\right\} Ii={IiIiH,P(Ii)=i}。信息集 I i I_i Ii 中的状态 h , h ′ ∈ I i h,h^{'} \in I_i h,hIi 是不可区分的,且有 A ( h ) = A ( h ′ ) A(h) = A(h^{'}) A(h)=A(h)
  • 收益函数 μ i \mu_i μi:对于玩家 i ∈ N i \in N iN,收益函数 μ i : Z → R \mu_i :Z \rightarrow R μi:ZR 在终止状态 Z Z Z 处根据结局输赢为玩家 { 1 , 2 , … , N } \{1,2, \ldots, N\} {1,2,,N} 分配各自的收益。

1 博弈策略

在完全信息博弈中,策略是限制在博弈状态中的,它规定了在每个博弈状态下玩家选择合法动作的概率;在非完全信息博弈中,策略与信息集有关,玩家在不同信息集上进行决策。

定义:对于玩家 i i i 来说,当他处于信息集 I i I_i Ii 时,他在动作集合 A ( I i ) A(I_i) A(Ii) 中选择的动作的概率分布遵循策略 σ i \sigma_i σi。用 ∑ i \sum_{i} i 来表示玩家 i i i 的策略空间。一个策略组 σ \sigma σ 包含了每个玩家的策略, σ = { σ 1 , σ 2 , … , σ n } \sigma = \left\{\sigma_{1}, \sigma_{2}, \ldots, \sigma_{n}\right\} σ={σ1,σ2,,σn} σ − i \sigma_{-i} σi 表示策略组中除了策略 σ i \sigma_i σi 之外的所有策略。

π σ ( h ) \pi^{\sigma}(h) πσ(h) 表示如果所有玩家根据策略组 Font metrics not found for font: . 来选择动作,能到达状态 h ℎ h 处的概率。可将 π σ ( h ) \pi^{\sigma}(h) πσ(h) 分解为每个玩家对于能够到达状态 h h h 处所做的贡献,即 π i σ ( h ) = ∏ i ∈ N ∪ { c } π i σ ( h ) \pi_{i}^{\sigma}(h)=\prod_{i \in N \cup\{c\}} \pi_{i}^{\sigma}(h) πiσ(h)=iN{c}πiσ(h)。用 Font metrics not found for font: . 来表示当所有玩家都根据策略组 Font metrics not found for font: . 来行动时,在已经到达状态 𝑔 𝑔 g 的前提下,到达状态 h ℎ h 处的概率。由此得到,玩家 𝑖 𝑖 i 在依据策略组 Font metrics not found for font: . 来行动时,在终止节点处所得到的的整体收益为 u i ( σ ) = ∑ h ∈ Z u i ( h ) π σ ( h ) u_{i}(\sigma)=\sum_{h \in Z} u_{i}(h) \pi^{\sigma}(h) ui(σ)=hZui(h)πσ(h)

平均策略:假定在 T T T 次博弈过程中,参与者 i i i 在第 t t t 次博弈所使用的策略为 σ i t \sigma_i^t σit,那么平均策略 σ ˉ i T = 1 T ∑ t = 1 T σ i t \bar{\sigma}_{i}^{T}=\frac{1}{T} \sum_{t=1}^{T} \sigma_{i}^{t} σˉiT=T1t=1Tσit 是策略 σ i 1 , σ i 2 , … , σ i T \sigma_{i}^{1}, \sigma_{i}^{2}, \ldots, \sigma_{i}^{T} σi1,σi2,,σiT 在每个信息集 I I I 上概率 σ i t ( I ) \sigma_{i}^{t}(I) σit(I) 的简单加权平均。

最佳反应(best response,BR)策略:如果玩家 i i i 的对手策略组保持不变,那么玩家 i i i 可以在策略空间 ∑ i \sum_{i} i 中寻找一个最大化自身收益的策略。给定一个策略组 σ = ( σ 1 , σ 2 , … , σ n ) \sigma=\left(\sigma_{1}, \sigma_{2}, \ldots, \sigma_{n}\right) σ=(σ1,σ2,,σn) μ i ( σ ) \mu_i(\sigma) μi(σ) 表示在策略组 σ \sigma σ 下参与者 i i i 的期望收益,当对手策略组是 σ − i \sigma_{-i} σi 时,参与者 i i i 为应对 σ − i \sigma_{-i} σi 所选择的最佳反应策略 B R ( σ − i ) BR(\sigma_{-i}) BR(σi) 为:
B R ( σ − i ) = argmax ⁡ σ i ′ u i ( σ i ′ , σ − i ) B R\left(\sigma_{-i}\right)=\operatorname{argmax}_{\sigma_{i}^{\prime}} u_{i}\left(\sigma_{i}^{\prime}, \sigma_{-i}\right) BR(σi)=argmaxσiui(σi,σi)
纳什均衡:对于所有博弈方而言,只要其他人不做出改变,那么每个博弈方都不可能通过改变己方当前所选择的策略,而达到比现在更高的收益目标。纳什均衡是当所有参与者的策略都是最佳反应策略时的策略组 σ i ∗ \sigma_i^* σi
∀ i , u i ( σ i ∗ , σ − i ∗ ) = max ⁡ σ i ′ ∈ Σ i u i ( σ i ′ , σ − i ∗ ) \forall i, u_{i}\left(\sigma_{i}^{*}, \sigma_{-i}^{*}\right)=\max _{\sigma_{i}^{\prime} \in \Sigma_{i}} u_{i}\left(\sigma_{i}^{\prime}, \sigma_{-i}^{*}\right) i,ui(σi,σi)=σiΣimaxui(σi,σi)
可利用度(Exploitability):衡量某一个策略与纳什均衡策略的偏离程度。在二人零和博弈中,策略 σ i \sigma_i σi 的可利用度 e ( σ i ) e(\sigma_i) e(σi) 指当对手的策略是最佳反应策略 B R ( σ − i ) BR(\sigma_{-i}) BR(σi) 时,策略 σ i \sigma_i σi 跟纳什均衡策略相比,其劣势有多少:
e ( σ i ) = u i ( σ i ∗ , B R ( σ − i ∗ ) ) − u i ( σ i , B R ( σ − i ) ) e\left(\sigma_{i}\right)=u_{i}\left(\sigma_{i}^{*}, B R\left(\sigma_{-i}^{*}\right)\right)-u_{i}\left(\sigma_{i}, B R\left(\sigma_{-i}\right)\right) e(σi)=ui(σi,BR(σi))ui(σi,BR(σi))
一个策略组的平均可利用度为 e ( σ ) / ∣ N ∣ e(\sigma) /|N| e(σ)/N。若 e ( σ ) / ∣ N ∣ < ϵ e(\sigma) /|N|<\epsilon e(σ)/N<ϵ,则称 σ \sigma σ ϵ − 纳 什 均 衡 \epsilon-纳什均衡 ϵ

2 遗憾最小化与遗憾值匹配

根据对过去博弈中行为动作的遗憾程度来对将来动作进行选择

遗憾值:考虑 T T T 次重复博弈,令 σ i t \sigma_i^t σit 表示参与者 i i i 在第 t t t 次博弈过程中使用的策略,参与者 i i i 在第 T T T 次博弈后的 平均总体遗憾值 为:
R i T = 1 T max ⁡ σ i ∗ ∈ Σ i ∑ t = 1 T ( u i ( σ i ∗ , σ − i t ) − u i ( σ t ) ) R_{i}^{T}=\frac{1}{T} \max _{\sigma_{i}^{*} \in \Sigma_{i}} \sum_{t=1}^{T}\left(u_{i}\left(\sigma_{i}^{*}, \sigma_{-i}^{t}\right)-u_{i}\left(\sigma_{t}\right)\right) RiT=T1σiΣimaxt=1T(ui(σi,σit)ui(σt))
上式中, u u u 为收益函数。单次博弈的遗憾值是最佳应对策略与实际策略的收益的差值,它反应了没有采取最佳应对策略的遗憾程度。令 R i T , + = max ⁡ ( 0 , R i T ) R_{i}^{T,+}=\max \left(0, \mathrm{R}_{i}^{T}\right) RiT,+=max(0,RiT),随着博弈次数 T T T 趋近于无穷大,若 R i T , + R_{i}^{T,+} RiT,+ 趋近于0,称之为 遗憾值最小化

当一个算法通过选择策略 σ i t \sigma_i^t σit 使得参与者的平均总体遗憾值随着博弈次数 T T T 的增长而趋近于 0 时,称该算法为遗憾值最小化算法。在二人零和扩展式博弈问题中,使用遗憾值最小化算法并进行自我博弈,最终可以求解出近似的纳什均衡。

遗憾值匹配:正则博弈中的遗憾匹配是使遗憾最小化的简单的迭代过程。首先,我们随机选择策略 σ 1 \sigma^1 σ1,对于可选动作集 A i A_i Ai 中的每一个动作 a a a,我们计算并存储其遗憾值:
R i T ( a ) = ∑ t = 1 T ( μ i ( a , σ − i t ) − μ i ( σ i t , σ − i t ) ) R_{i}^{T}(a)=\sum_{t=1}^{T}\left(\mu_{i}\left(a, \sigma_{-i}^{t}\right)-\mu_{i}\left(\sigma_{i}^{t}, \sigma_{-i}^{t}\right)\right) RiT(a)=t=1T(μi(a,σit)μi(σit,σit))
下一次迭代时候,我们采取的策略通过下式计算出:
σ i T + 1 ( a ) = R i T , + ( a ) ∑ b ∈ A i R i T , + ( b ) \sigma_{i}^{T+1}(a)=\frac{R_{i}^{T,+}(a)}{\sum_{b \in A_{i}} R_{i}^{T,+}(b)} σiT+1(a)=bAiRiT,+(b)RiT,+(a)
当分母为0时,随机选择下一个动作。最直观的理解就是我们会选择过去最让自己感到遗憾(后悔没有选的)动作。遗憾值匹配算法的流程图:

image-20220711150806070

遗憾值最小化技术是通过计算平均 整体 最小遗憾(average overall regret)得到游戏中的行为策略,因此该技术 只致力于解决正则博弈游戏。在扩展式博弈游戏中,游戏状态是呈指数增长的,如最简单的2人限制性德州扑克扩展式游戏,都有着多达 1 0 17 10^{17} 1017 的游戏状态。首先要计算如此规模博弈树的整体最小遗憾是不切实际的,而且扩展式博弈是按次序做动作的,因而通过遗憾值最小化技术不能立即得到下一动作的可选策略。所以在扩展式博弈中Martin Zinkevich等人引进了虚拟遗憾(counterfactual regret)的概念。

3 虚拟遗憾最小化(CFR)

反事实遗憾,即虚拟遗憾,指故意地使玩家 i i i 的策略被限定在信息集 I i I_i Ii。CFR 算法通过多次迭代,将整体遗憾分解到各个独立的信息集中计算局部最小遗憾值。CFR 算法的形式化定义如下:

Z Z Z 表示博弈树中所有的叶子结点, z ∈ Z z \in Z zZ h h h 表示博弈树中的非叶子结点, μ i ( z ) \mu_i(z) μi(z) 表示玩家 i i i 在叶子结点 z z z 的效用。定义在非叶子节点 h h h 处的 虚拟价值(counterfacter value)
v i ( σ , h ) = ∑ z ∈ Z , h ∉ z π − i σ ( h ) π σ ( h , z ) u i ( z ) v_{i}(\sigma, h)=\sum_{z \in Z, h \notin z} \pi_{-i}^{\sigma}(h) \pi^{\sigma}(h, z) u_{i}(z) vi(σ,h)=zZ,h/zπiσ(h)πσ(h,z)ui(z)
在节点 h h h 处采用动作 a a a虚拟遗憾值(counterfactual regret)
r ( h , a ) = v i ( σ I → a , h ) − v i ( σ , h ) r(h, a)=v_{i}\left(\sigma_{I \rightarrow a}, h\right)-v_{i}(\sigma, h) r(h,a)=vi(σIa,h)vi(σ,h)
在信息集 I I I 处采取动作 a a a 的虚拟遗憾值:
r ( I , a ) = ∑ h ∈ I r ( h , a ) r(I, a)=\sum_{h \in I} r(h, a) r(I,a)=hIr(h,a)
T T T 次迭代中累加的虚拟遗憾值:
R i T ( I , a ) = ∑ t = 1 T r i t ( I , a ) R_{i}^{T}(I, a)=\sum_{t=1}^{T} r_{i}^{t}(I, a) RiT(I,a)=t=1Trit(I,a)
则对于信息集 I i I_i Ii,通过遗憾匹配得到当前的策略:
σ i T + 1 ( I , a ) = { R i T , + ( I , a ) ∑ a ∈ A ( I ) R i T , + ( I , a ) if  ∑ a ∈ A ( I ) R i T , + ( I , a ) > 0 1 ∣ A ( I ) ∣ otherwise.  \sigma_{i}^{T+1}(I, a)=\left\{\begin{array}{cc} \frac{R_{i}^{T,+}(I, a)}{\sum_{a \in A(I)} R_{i}^{T,+}(I, a)} & \text { if } \sum_{a \in A(I)} R_{i}^{T,+}(I, a)>0 \\ \frac{1}{|A(I)|} & \text { otherwise. } \end{array}\right. σiT+1(I,a)=aA(I)RiT,+(I,a)RiT,+(I,a)A(I)1 if aA(I)RiT,+(I,a)>0 otherwise. 
CFR 通过一次迭代,在被访问到的每个信息集上计算虚拟价值和虚拟遗憾值,当下一次迭代开始时,将会带入上次迭代的结果通过遗憾匹配计算新的策略。

这篇关于【博弈】非完全信息博弈基础与CFR算法简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/364207

相关文章

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法