NFSP

news/2025/2/28 16:09:27/文章来源:https://www.cnblogs.com/usersname/p/18743444

NSFP算法

论文名称:《Deep Reinforcement Learning from Self-Play in Imperfect-Information Games》

这是一篇博弈论和强化学习交叉的文章,网上的资料比较少,但是确实是对手建模的重要算法之一。虽然后面的PSRO算法指出NFSP是PSRO的一个特例,但是个人觉得还是很有学习的必要。

一、基本问题

在多智能体独立学习算法中,环境的非平稳性一直是一个非常大的问题。传统的强化学习算法直接应用于多智能体环境中,由于环境不符合马尔可夫过程,算法的收敛没有理论的保证。二在博弈环境中,传统的强化学习算法往往会过拟合对手的策略,进一步放大了环境的非平稳性。

纳什均衡,是博弈论中的术语,是指智能体在对手做出任何行动下,执行的策略依旧可以最大化收益的一种状态。在多智能体环境下,模型收敛的目标就是纳什均衡。

NFSP算法就是作者提出的一种端到端的算法,可以在没有任何先验输入的情况下,收敛到纳什均衡。

二、基础知识

  • 虚拟博弈算法(Fictitious play, FP

    FP算法是一个经典的博弈论算法。这个算法更具对手的策略计算只身的最佳响应策略,并保存到一个缓冲池中。然后取缓冲池中的平均策略(这里有说是按一定比例混合平均策略的,但是都差不多),作为下一轮的策略,不断迭代,最终可以收敛到纳什均衡。FP算法的流程图表示如下:

    img

    显然,FP算法有明显的缺点:

    1. 必须知道全局的动作和收益,因为如果不知道全局的动作和收益,就没有办法计算最佳响应策略。
    2. 不适用于扩展性博弈和重复博弈,并且FP算法只能处理两个智能体的情况。扩展性和重复博弈都要求智能体可以多次选择动作,但是FP算法只能求解一次博弈的均衡策略(迭代是为了求解这个均衡策略)。

    举个具体的例子来说:

    动作A 动作B
    动作A 1,1 1,1
    动作B 0,2 2,0

    上面的表格是一个进攻防御模型的收益矩阵,行表示进攻方,可以选择动作A和动作B。列表示防御方,可以选择动作A和动作B。表格中的数值表示收益,比如第一列,第二行中(0,2)表示如果防御方选择动作B,进攻方选择动作A。那么,防御方收益为0,进攻方收益为2。

    在这个模型中,进攻方选择动作A的收益分别为(1,2),大于等于动作B的收益(1,0),是一个弱优势策略。所以,如果进攻方绝对理性,就一定会选择动作A。防御方考虑到进攻方一定会选择动作A后也会选择动作A,应为动作A的收益1大于动作B的收益0。因此,在这个模型中动作A就是纳什均衡策略。

    但是以上只是理论分析,实际上适用FP算法迭代100次之后,进攻方和防御方选择各个策略的概率如下:

    动作A 动作B
    进攻方 0.995 0.005
    防御方 0.998 0.002

    可以看到,FP算法迭代后,选择动作A的概率逐渐逼近1。

  • 虚拟自博弈算法(Fictitious self play, FSP

    • 自博弈

      就是智能体和自己(也可以是以前的自己)互相对抗,使得只身的策略收敛到纳什均衡的一种方法。

    虚拟自博弈就是将自博弈的过程应用在了FP算法。同时FPS算法将求解最优策略的过程替换为了强化学习算法。

    虚拟自博弈的流程图如下:

    img

三、NFSP算法

NFSP算法就是引入了深度强化学习(DQN)的FSP算法。同时,NFSP算法使用监督学习学习纳什均衡策略,通过混合纳什均衡策略和强化学习策略的方式得到最终的策略。

具体来说,NFSP算法再求解最佳响应策略的时候使用了DQN,然后以保存的最佳响应的数据作为标签训练一个监督学习的网络拟合纳什均衡策略。

但是论文中还提到,由于监督学习的数据集是动态变化的,会导致模型的不稳定。所以在使用监督学习采样的使用了蓄水池采样技术(这里不多讲)。

论文中, NFSP算的伪代码如下:

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891204.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车载高性能计算平台HPC2.5

经纬恒润新一代高性能计算平台HPC产品选用TI TDA4及Infineon TC397两款高性能芯片,搭载Linux及RTOS两种操作系统,集成AutoSAR及自研应用框架(AF)两类中间件,可满足复杂运算、高实时等不同应用程序的需求。 高性能计算平台(HPC)是新一代智能汽车的核心技术,是支撑“…

FANUC法那科机器人保养的要点

每一台机器人均不可或缺地需要进行预防性保养,这是确保其于生产线上持续展现最佳性能与实现高度一致性的基石。若忽视了定期对机器人进行预防性保养检查,很可能会导致其零部件遭受损坏或突发故障,进而引发生产效率的减缓,乃至生产线的全面停机。恰当的保养措施,不仅能够显…

redis bind protected-mode

概要redis bind、protected-mode 配置 安装并启动 yum install -y redis systemctl enable --now redis # 使用 redis-server 命令会在前台启动运行,可以跟个 .conf 文件 根据配置文件启动修改配置文件 # 直接编辑配置文件 (本篇文章使用此方法) vi /etc/redis.conf# 同时redis…

看中国版“ADP”如何助力泰森等在华外企应对薪酬管理挑战

“工欲善其事,必先利其器”,用软件实现复杂经营环境下的薪酬管理提效提质,是包括外企在内所有企业释放人力价值、迈向精细化管理的重要手段;也是实现薪酬价值最大化,打造经营韧性、驱动增长的必经之路。调查表明,在全球化的浪潮中,71% 的企业将人力资源相关问题视为国际…

day08 作业

day08 作业 1.使用linux实现命令别名,实现如下效果,思考,如何生成la命令。 [root@yuanlai-0224 ~]# la /var/log/ total 1.9M drwxr-xr-x. 6 root root 4.0K Mar 6 03:33 . drwxr-xr-x. 19 root root 267 Feb 26 03:27 .. drwxr-xr-x. 2 root root 204 Feb 26 03:01 an…

ABP更换MySql数据库

原因:ABP默认使用的数据库是sqlServer,本地没有安装sqlServer,安装的是mysql,需要更换数据库 ABP版本:9.0 此处以官网TodoApp项目为例打开EntityFrameworkCore程序集,可以看到默认使用的是sqlServer,此处截图为已安装mysql依赖包步骤一、安装mysql依赖包 https://abp.io…

SimpleCalculator缺陷分析与二次开发

C语言计算器项目: 项目名称:Simple Calculator GitHub 地址: https://github.com/example/simple-calculator 项目简介 这是一个命令行计算器,支持加、减、乘、除运算。 代码结构简单,适合初学者阅读和修改。 主要功能 支持加、减、乘、除运算。 通过命令行交互输入运算符和数…

基于 Arria 10 FPGA 的 DP 接口开发板电路研制

1.引言物联网,智能汽车,云计算在我们生活中已经耳熟能详,随着FPGA的更新进步,在各类电子科技中不断发力,让我们的生活变得更加智能和便捷。下面给大家介绍一下来自Intel的FPGA Arria 10以及明德扬研发的一款Arria 10的开发板电路设计。 2.Arria 10 FPGAIntel Arria10 FPGA…

西数硬盘二次开盘数据恢复之国外损坏带回在北京恢复失败盘片划伤

这是一块西部数据2T的移动硬盘,北京客户寄过来的,用户在国外工作的时候就损坏不识别了,但当地修复不了,回国后就在北京找了一家数据恢复公司进行处理,但由于盘片有划伤,没能恢复出数据,后来客户找到我们,想再尝试一下,因为里面有海外工作时几百G的工程项目资料,比较重…

mysql多表

一、表格 员工表 sid:员工编号、name:姓名、age:年龄、woektime_start 入职时间,incoming工资 dept2 部门编号部门表 dept1 部门编号,dept_name 部门名称二、建表语句 CREATE table dept( dept1 VARCHAR(6), dept_name VARCHAR(20)) default charset=utf8; INSERT into d…

重磅 | Cloud Ace 推出 GenAIOps 服务:加速企业生成式 AI 商业落地

Cloud Ace 宣布推出 GenAIOps 服务,主要业务是面向国内外企业:提供与生成式 AI 运维支持相关的专业服务及运维服务 转售符合客户需求的高度创新产品及咨询服务该服务旨在以尖端技术赋能企业,为客户提供最优的 AI 解决方案,最大化生成式 AI 的商业价值与成果。联系我们—Clo…

SAP 中类的使用

一、事务代码:SE24 二、步骤 2.1、创建类:se24实例化类型public:该类可以在任何地方进行初始化Protected:只能在自身和或类的子类中进行初始化Private: 只能自身的类中进行初始化Abstract: 不可以创建实例。 2.2、创建属性 2.2.1、选择属性 在属性分页签中先按上图填写好属性…