本文接着上一篇博弈论 之 1 什么是博弈论_水w的博客-CSDN博客

目录

回顾:

➢举例: AlphaGo

➢博弈表示方法

➢扩展型博弈

博弈树

➢举例: Tic-Tac-Toe

➢MAX纯策略

➢MIN纯策略

➢最优策略搜索

➢Minimax搜索算法

➢什么时候可以剪枝

➢Alpha-Beta剪枝算法

完美信息的扩展型博弈

举例: 分享博弈

➢博弈纯策略​编辑

➢扩展型转化为正则型

➢纳什均衡存在定理

➢扩展型博弈的纳什均衡

(1)One not-so-weak Nash equilibrium

(2)Two weak Nash equilibria

➢子博弈精炼均衡

➢逆向归纳法

举例: 蜈蚣博弈

➢信息集

不完美信息的扩展型博弈

举例: 囚徒困境

➢博弈纯策略

博弈混合策略与行为策略

➢博弈混合策略

➢行为策略

完美回忆博弈

➢序贯均衡


回顾:

博弈模型分类

➢举例: AlphaGo

一个完全信息广泛形式的博弈

  • 两名棋手按顺序移动,且每个棋手拥有相同的信息;
  • 以博弈树的形式展示和分析该博弈;
  • 一种常见的策略是逆向归纳法,即从博弈树的末端开始进行时间上的逆向推理;
  • 但该游戏有250^150种可能的走法;
  • AlphaGo利用基于卷积神经网络的深度强化学习,并结合蒙特卡洛树搜索;

➢博弈表示方法

人们需要对这个游戏有所了解:

  • 玩家是谁
  • 玩家可以采取哪些行动
  • 每个参与者对每个结果的重视程度
  • 每个玩家所知道的内容

以上信息的正式表示有两种方式:

  • 标准形式(或策略形式)表示形式,通过使用参与者的策略总结上述信息
  • 广泛形式表示,利用博弈树和信息集对上述信息进行明确描述

➢扩展型博弈

用树形图的形式表示一个博弈

  • 标准形式的游戏(矩阵)表示不包含任何顺序、时间和玩家行动的概念;
  • 规范形式的游戏代表静态游戏,玩家可以同时选择自己的行动;
  • 广泛形式游戏的表现可以,在树中也是如此;
  • 广泛型游戏代表动态游戏,即玩家在确定的时间顺序中选择自己的行动;

博弈树

考虑双人回合制游戏:一字棋、西洋跳棋、国际象棋、围棋等。将游戏描述为搜索问题,搜索树可以用来找到下一步行动吗?

两个人,MAX和MIN:

  • MAX先动,MIN先动;
  • 他们轮流行动,直到比赛结束;
  • 比赛结束时,胜者得积分,败者罚点球;
  • 初始状态、动作和结果函数为博弈定义博弈树,其中节点为博弈状态,边缘为移动;

➢举例: Tic-Tac-Toe

➢MAX纯策略

➢MIN纯策略

➢最优策略搜索

蛮力搜索策略

  • 构造了MAX的纯策略集S和MIN的纯策略集T;
  • 根据最大期望效用u(s,t)•复杂度分析选择最佳策略;
  • 空间/时间复杂度为,因为策略需要构建和存储,每个策略都是一棵节点树;

如果双方都采用最优策略,这场零和游戏将以平局结束

  • 每个参与人都有阻止另一个参与人获胜的策略;

➢Minimax搜索算法

  • MAX偏好最大值状态,而MIN偏好最小值状态
  • Minimax是一种回溯算法
  • 它对游戏树进行深度优先的探索
  • 递归一直到树的叶子,同时,极大极小值在树中备份

eg:

这个算法的问题在于,它需要检查的博弈状态的数量在树的深度上呈指数级增长

  • 然而,不需要查看树中的每个节点就可以计算出正确的极大极小决策;
  • 修剪的想法可以用来从考虑中消除树的许多分支;

➢什么时候可以剪枝

此时, MAX永远不会到f,因为MAX通过到b会得到更高的效用。

此时,我们不知道h比b好还是差,所以继续。

此时,我们还是不知道h比b好还是差,所以继续。

此时,我们可以得出结论,h比b差,并且没有进行修剪。

➢Alpha-Beta剪枝算法

Alpha-Beta剪枝是Minimax算法的一种优化技术

  • 它返回与标准算法相同的一步,但它删除了所有不影响最终决策的节点;
  • 假设树中的某个节点n,玩家可以选择移动到该节点;
  • 如果参与人有一个更好的选择m,要么在父节点n,要么在上面的任何一个点,那么节点n在实际游戏中永远不会到;
  • 一旦我们对n有了足够的了解(通过检查它的一些后代),得出这个结论,我们就可以修剪它;
  • 两个参数描述了备份值在路径上任意位置的边界:
    • α =目前为止我们在MAX路径上的任何一个选择点上所发现的最佳(即最高价值)选择的价值;
    • β =目前为止我们在最小值路径上的任何一个选择点上所发现的最佳(即最低值)选择的价值;
  • Alpha-Beta搜索在执行过程中更新α和β的值,并在已知当前节点的值小于MAX或MIN的α或β的当前值时,删除节点上的剩余分支(即终止递归调用);

伪代码:

一些要点:

  • 每个节点更新或复制三个值:节点值、α值和β值;
  • MAX只更新α,并试图使α变大。MIN只更新β,并尽量使其更小;
  • 如果某个节点α≥β,则修剪剩余的分支,因为最大化(或最小化)父节点可以保证在另一个分支上有更高(或更低)的值;
  • 在回溯树时,将节点的值传递给上级节点,而不是α和β的值;
  • α和β的值只传递给子节点;

eg:

 Alpha-Beta修剪受到探索分支的顺序的强烈影响,改进的分支顺序可以指数级地减少要搜索的节点数量。

  • 最坏的排序

    • 每个参与人的最佳移动发生在树的最右边,这样就不会修剪任何节点;
    • 时间复杂度,工作原理与标准Minimax算法相似;
  • 最好的排序
    • 每个参与人的最佳移动发生在树的最左边,这样许多节点被修剪;
    • 时间复杂度为

完美信息的扩展型博弈