DeepStack算法笔记

  • Deep Stack 中游戏树介绍:
  • 游戏规则
  • 整体算法
  • 网络结构
  • 伪代码

Deep Stack 中游戏树介绍:

  1. Deep Stack 的re-solving需要保留自己的range和对手的遗憾值这两个值
  2. Deep Stack 的核心是不保留记忆,采用局部搜索,将游戏分成一个个的子博弈,这样是为了省空间且加速算法。
  3. 下面介绍该算法的游戏规则、核心算法、网络、伪代码。

游戏规则

  1. 蓝色结点表示玩家一的动作选择结点;
  2. 红色结点表示玩家二的动作选择结点;
  3. 绿色结点表示发牌者的机会结点(chance);
  4. 最后的筹码值表示执行该动作玩家的收益。

游戏开始时,玩家一(庄家)下注(small blind)¥50,玩家二下注(big blind)¥100。第一轮( pre-flop)每人发两张牌,玩家一先做决定。第二轮(flop)在桌面放三张公共牌,玩家一先做决定。第三轮(turn)桌面放一张,玩家二先做决定。第四轮(river)桌面放一张,玩家二先做决定。

整体算法

deepstack核心是subgamesubgame就是将不能拆解的非完美信息博弈安全的拆解为一个个小游戏,并且要保证小游戏求解的可利用度低于原来的策略(可利用度越低越好,如果不懂私聊我再解释)。sungame就是将游戏分成一个T和一个F,并保存对手的原来策略的遗憾值为RT,F是子博弈,对手的遗憾值为RF。每次更新子博弈后F会更新RF,如果RF的大于RF,则不更新;如果RF的小于RF,则将F的策略保存为T,然后继续改进F。这样能保证可利用度是一直降低的。

(A)当博弈进行时,它自己的range在它采取行动后计算更新。对手遗憾值按照“Continual re-solving”中的讨论进行更新。它使用其range和对手遗憾值 re-solving,计算最终采取行动时的行动概率。
(B) 评估函数由一个神经网络表示,该神经网络以公共状态和当前迭代的范围作为输入,并为两个参与者输出遗憾值(下图)。
(C) 神经网络在游戏前通过生成随机扑克情境(pot size,board cards,and ranges)进行训练,并解决它们以生成训练示例。

网络结构


Deep counterfactual value network:该网络的输入:池大小、公共牌、player ranges,这些首先会被处理成 hand clusters。来自这 7 层全连接隐藏层的输出还要经过后处理(post-processed),从而保证该值(values)满足零和约束(zero-sum constraint),然后这些值又会回过来被映射为遗憾值。

伪代码

其实有时候弄懂一个算法,看伪代码比看论文要简单。论文讲述的非常晦涩难懂,而伪代码则一目了然

  1. 主代码

    DeepStack就是将整个游戏根据re-solving思想分解为子博弈(必须有自己的range和对手的遗憾值两个参量),根据子博弈的规则向下扩展,通过网络返回的V值根据CFR+算法更新遗憾值。
    代码介绍:
    假设自己是玩家一:
    2:随机初始化双方策略(因为没有策略,所以只能随机初始化一个)
    3:随机初始化对手的range
    4:0初始化小游戏和子树参数
    6:代码2value:就是拿当前的状态,自己的range(第1行),之前的双方策略和上一次的对手range 来更新自己和对手的遗憾值
    7:代码3:根据遗憾匹配公式,利用v值更新双方策略和遗憾值
    8:更新对手的range和小游戏参数
    10:取平均策略
    11:根据策略采样执行动作a(return)
    12-13:根据执行的动作a的收益来更新自己的range(return)
    14:更新自己的value值(return)

代码2

VALUE函数利用CFR+算法迭代计算当前状态S和后续状态S’下双方各手牌的V值,
S的value是后续状态value的数学期望

If s是终端结点
return V1,V2值
Else if 到了设置的搜索深度(设置了两个网络,分别为flop和turn轮)
网络return V1,V2值
中间正常拓展情况:
根据策略更新玩家的range
选择动作
VALUE = 向下扩展并返回得到的
return V1,V2值
计算每个状态的遗憾值并更新策略

代码3
利用CFR+算法运行过程中计算的v1,v2值累加入后悔值R中,并计算策略

DeepStack算法笔记相关推荐

  1. 《算法笔记》中文版 - 包括数组,链表,树,图,递归,DP,有序表等相关数据结构与算法的讲解及代码实现...

    来源:专知本文为资源,建议阅读5分钟本文为你分享<算法笔记>中文版. https://github.com/Dairongpeng/algorithm-note 目录概览 第一节 复杂度. ...

  2. 数据结构与算法笔记 - 绪论

    数据结构与算法笔记 - 绪论 1. 什么是计算 2. 评判DSA优劣的参照(直尺) 3. 度量DSA性能的尺度(刻度) 4. DSA的性能度量的方法 5. DSA性能的设计及其优化 x1. 理论模型与 ...

  3. 数据结构与算法笔记(十六)—— 二叉搜索树

    一.二叉搜索树定义 二叉搜索树(Binary Search Tree),又名二叉排序树(Binary Sort Tree). 二叉搜索树是具有有以下性质的二叉树: 若左子树不为空,则左子树上所有节点的 ...

  4. 数据结构与算法笔记(十五)—— 散列(哈希表)

    一.前沿 1.1.直接寻址表 当关键字的全域U比较小时,直接寻址是一种简单而有效的技术.假设某应用要用到一个动态集合,其中每个元素都有一个取自全域U={0,1,-,m-1)的关键字,此处m是一个不很大 ...

  5. 《algorithm-note》算法笔记中文版正式发布!

    无论是做机器学习.深度学习.自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理.掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版 ...

  6. 【算法】《algorithm-note》算法笔记中文版正式发布!

    无论是做机器学习.深度学习.自然语言处理还是其它领域,算法的重要性不言而喻!吃透算法底层原理.掌握算法数学推导和代码实现,对提高自己的硬核实力来说非常重要!今天给大家推荐一个超赞的开源算法笔记!中文版 ...

  7. c++ string 删除字符_算法笔记|(5)第二章C、C++的快速入门字符数组的存放方式string.h文件...

    字符数组的存放方式 由于字符数组是由若干个char类型的元素组成的,因此字符数组的每一位都是一个char字符,除此之外,在一维字符数组或者二维字符数组的第二维的末尾都有一个空字符\0表示存放的字符串的 ...

  8. 算法笔记(JavaScript版)——排序

    算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...

  9. 三维重建7:Visual SLAM算法笔记

    VSLAM研究了几十年,新的东西不是很多,三维重建的VSLAM方法可以用一篇文章总结一下. 此文是一个好的视觉SLAM综述,对视觉SLAM总结比较全面,是SLAM那本书的很好的补充.介绍了基于滤波器的 ...

最新文章

  1. Opencv imshow显示不出来图片
  2. java环境配置——配置tomcat用户
  3. VSCode运行Python教程
  4. Android Studio创建签名文件,打包apk,多渠道打包
  5. 禁止迅雷:迅雷服务器地址大全+ISA计算机集(xml)
  6. 企业库第4版最后版本下载
  7. cf(聚簇因子)调优,计划调优,SQL改造
  8. 3.12 - Tuples in Python
  9. 嵌套组合图echarts
  10. mysql 创建和查询数据库和表格
  11. Windows Server 2012搭建文件服务器
  12. 一个关于淘宝评论,从输入指定商品信息,直接得到评论+图片的一次经验
  13. 思科网院计算机应用基础答案,计算机应用基础试题及答案
  14. mysql数据库常见分页实现思路_各种常见数据库分页实现(转)
  15. 三角函数 公式【和差化积、积化和差】最简记忆口诀
  16. Java版本企业电子招投标采购系统源码——功能模块功能描述+数字化采购管理 采购招投标
  17. 最小二乘法--通俗解释
  18. 生信笔记:系统进化树的分类
  19. js实现搜索关键字高亮
  20. go grpc 健康检查

热门文章

  1. android内核网络缓存,Android WebView cache 缓存 腾讯X5内核在线视频播放
  2. 用友软件报服务器文件日志已满,用友T3软件查询明细账提示文件组已满问题解决方法...
  3. 教你用Matlab进行系统仿真 - Matlab仿真详细教程
  4. 传奇GOM引擎配置PAK密码补丁教程
  5. 计算机组成原理求地址范围,计算机组成原理,寻址范围是什么意思?
  6. TuShare Pro 股票期货数据提取神器(Python)
  7. 企业级 MySQL数据库的搭建及管理
  8. 中国手机号段分部情况
  9. swf to html5 movie maker,SWF to Video Converter Pro(Flash转换视频格式)
  10. 安卓开发环境搭建和手动打包总结