使用PyTorch实现简单的AlphaZero的算法(3):神经网络架构和自学习

news/2024/5/9 6:03:15/文章来源:https://blog.csdn.net/m0_46510245/article/details/128094045

神经网络架构和训练、自学习、棋盘对称性、Playout Cap Randomization,结果可视化

从我们之前的文章中,介绍了蒙特卡洛树搜索 (MCTS) 的工作原理以及如何使用它来获得给定棋盘状态的输出策略。我们也理解神经网络在 MCTS 中的两个主要作用;通过神经网络的策略输出来指导探索,并使用其价值输出代替传统的蒙特卡洛rollout算法。

在这一部分中,我们将从这个神经网络的架构开始,检查它的不同层、输入和输出。然后了解如何使用自我对弈训练网络和研究用于训练神经网络的损失函数。本文还将仔细研究训练的细节,包括特定于 Chain Reaction 游戏的数据增强技术和称为 Playout Cap Randomization 的方法提高训练效率。最后我们将可视化查看我们的工作成果。

神经网络架构

神经网络模型的输入形状为MxNx7,其中M和N分别为Chain Reaction游戏的行数和列数。图形中的数字“7”表示有7个通道,每个通道以二进制数据的形式存储的某些特定信息,如下面所示:

 Description of the encoded stateSize of the state: M*N*7channel 1 : stores the MxN map where red orbs are 1 in numberchannel 2 : stores the MxN map where red orbs are 2 in numberchannel 3 : stores the MxN map where red orbs are 3 in numberchannel 4 : stores the MxN map where green orbs are 1 in numberchannel 5 : stores the MxN map where green orbs are 2 in numberchannel 6 : stores the MxN map where green orbs are 3 in numberchannel 7 : MxN map of ones if it is red player's turn otherwise a map of zeroes

下面的图片展示了神经网络的架构。

我们的神经网络结构是一个resnet结构-它有conv2d, batchnorm2d和relu层,dropout层和两个任务头。

输出值的头有一个tanh激活函数,产生一个介于-1和+1之间的数字。策略头有一个softmax函数,它帮助我们得到板子上所有动作的概率分布。

基本块(small block)如上图所示与resnet类似,我们会将这些基本块进行组合。

输入通过的第一个块由conv2d、batchnorm2d和relu层组成

由基本块(conv2d和batchnorm2d层)和relu层组成我们上图所示的残差块(resnet)

五个resnet块组成了我们神经网络的中间块

dropout块接收前一个块的输出,其中的linear层起到控制维度数的作用

我们的网络结构中使用了两个dropout块

值头输出的是-1,1之间的动作价值(value)

策略头输出被用作棋盘上所有动作的概率分布(0,1之间)

下图显示了使用PyTorch在Python中实现该体系结构的代码。

完成了我们模型架构,下面就要看下如何进行训练了

自我对局

上图显示了在游戏中如何进行任何单个操作的流程。在自我对局框架中,我们有两个玩家(都是AI),红色和绿色。每个玩家使用上述步骤进行操作。如果红色赢了游戏。对于所有的红色移动,目标值+1,对于所有的绿色移动,目标值是-1。

我们获得策略目标将是使用蒙特卡洛搜索树获得的策略。

损失函数

因为我们有2个任务头,所以损失函数需要包含自价值损失和策略损失

AlphaZero的损失函数如下:

  • 价值损失:在游戏结束时使用价值分配获得的预测值和目标价值之间的均方损失。
  • 策略损失:在预测的策略和从MCTS演习中获得的策略目标之间计算交叉熵损失。

在AlphaZero中训练神经网络的损失就是这两个损失的总和。我们称之为“AlphaLoss”。

数据增强

为了提高训练效率,我们可以这样操作:如果我们知道一个棋盘状态的正确策略,那么我们就知道通过旋转、翻转或转置棋盘矩阵获得的其他七个棋盘状态的正确策略,这就是我们所说的棋盘的对称性。

通过翻转、旋转和换位可以产生7种以上的棋盘状态。对于所有这些状态,我们可以很容易地获正确的政策。

为了在代码中实现这一点,我们需要一个其中存储了棋盘状态和策略目标的缓存区,在游戏结束获得实际奖励值时,目标值分配给临时缓冲区中的每个元素。

下图是构造这个缓存的代码

Playout Cap Randomization

我们还可以引入了Playout Cap Randomization,因为它有助于提高培训效率。

AlphaZero的自我游戏训练过程,它得到的唯一真正奖励是在游戏结束时,所以获得的奖励是非常少的,而价值头专注于预测这个奖励,如果我们想改善价值训练,就需要增加AlphaZero的游戏的次数。

如果我们想提高策略训练,我们则可以关注更多的蒙特卡洛回放。

这里我们可以只增加一些随机选择的动作而不是增加游戏中所有动作的使用次数,只使用一些特定的动作的数据进行训练。在其他动作中,我们可以减少其选择次数。这种技术被称为Playout Cap Randomization。

结果展示

最后让我们看看我们的训练成果

对阵一个随机的代理

随机的代理没有任何策略,只是在棋盘上随机的进行可用的操作。以下是在3x3, 4x4和5x5棋盘上对随机代理的胜率。

可以看到对于一个3 x 3的棋盘,即使没有MCTS,在80个回合后至少可以达到75%的胜率

对于一个4 x 4的棋盘,训练在500个回合后就会饱和,然后就会变成振荡,但在1300回合附近,没有MCTS的代理的胜率超过80%

对于一块5 x 5的棋盘来说,训练在1000个周期左右就饱和了

可视化

每一场比赛都包括棋盘上的一系列动作。对于一块5x5的棋盘,第一步有25种可能。随着训练的进行,神经网络的值头输出不断提高,从而改进了蒙特卡罗搜索。以下是这些动作的可视化。可视化是针对一个5 x 5的棋盘,所以有25种可能性。这25种可能被映射到一个圆(在开始)或一个弧(后面经过训练)。

在1000次蒙特卡洛演练中使用未经训练的值网络所采取的行动。(5 × 5-> 25动作)。25个动作被映射到圆/圆弧中的角度。搜索最多只能到达4步的深度。

25个动作被映射到圆/圆弧中的角度。由于价值网络启发式的存在,搜索甚至深入到20步。

未来的发展方向

Chain Reaction的游戏有一个人类精心设计的启发式策略[2]。训练一个简单AlphaZero代理并试着让它与这样的策略竞争是很有趣的。

有一种称为hidden queen chess”/ “secret queen chess”的国际象棋变体,其中每个玩家在游戏开始时选择他们的一个棋子作为皇后,并且该选择不会向对手透露。但是 AlphaZero 适用于完美信息博弈和实施训练代理在信息不完善的状态下策论的论文会很有趣 [3]。

如果能够超越离散动作空间[4]将是有趣的。连续动作空间将在机器人或自动驾驶汽车应用中更为常见。[4]接受beta分布并学习它的参数。然后使用这个分布的一个缩放版本来近似有界连续空间。

我们有一个在3x3的Chain Reaction棋盘上训练一个效果非常好的代理。如果我们能将这些知识转移到4x4大小或其他大小的棋盘上,那就太好了。这项工作的重点也是一个方向[5]。如果没有这样的传输机制,在更大的棋盘上上进行训练在计算上是非常昂贵的,例如:15x15或20x20棋盘。

本文代码:https://github.com/BentouAI/AlphaZero-Chain-Reaction

引用参考

  1. Wu, D.J. (2020) Accelerating self-play learning in go, arXiv.org. Available at: https://arxiv.org/abs/1902.10565v5.
  2. Chain Reaction (Game). Brilliant.org. Retrieved 17:59, November 27, 2022, from https://brilliant.org/wiki/chain-reaction-game/
  3. https://www.deepmind.com/blog/alphastar-grandmaster-level-in-starcraft-ii-using-multi-agent-reinforcement-learning
  4. Moerland, T.M., Broekens, J., Plaat, A. and Jonker, C.M., 2018. A0c: Alpha zero in continuous action space. arXiv preprint arXiv:1805.09613.
  5. Ben-Assayag, S. and El-Yaniv, R., 2021. Train on small, play the large: Scaling up board games with alphazero and gnn. arXiv preprint arXiv:2107.08387.

https://avoid.overfit.cn/post/d2e6352cf0104473ba896d198f8277bc

作者:Bentou

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

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

相关文章

xss-labs/level9

这一关界面感觉跟上一关很像 所以我们注入上一关的为编码的答案 javascript:alert(xss) 没能弹窗 查看源代码 他说我输入的链接不合法 我压根没有输入链接 我觉得后台应该是做了一个条件的判断 应该是要有链接才会在第二处输出点回显我们的输入 根据上面的猜测 我们构造如下…

Java.Integer.bitCount(int)源码解析

bitCount前言一、由易到难,头脑热身二、简单优化,一题多解三、分治优化四、bitCount(int)源码优化总结参考文献前言 如何求解一个二进制中1的个数?有常规的O(N)法,还有基于分治的O(logN),即Java的bitCount(int)方法。…

我们为什么喜欢看疯狂科学家开飞艇?

很多人可能不是科幻迷,也在日常生活中接触过蒸汽朋克。为什么呢?很简单——蒸汽朋克几乎无处不在。相比其他科幻流派,蒸汽朋克可能算是最“出圈”的一种。简单地说,蒸汽朋克是一种科幻小说类型,由“蒸汽 ”(steam)和“…

《论文阅读》DeepSFM: Structure From Motion Via Deep Bundle Adjustment

留个笔记自用 DeepSFM: Structure From Motion Via Deep Bundle Adjustment 做什么 首先是最基础的,Structure-from-Motion(SFM),SFM可以简单翻译成运动估计,是一种基于dui8序列图片进行三维重建的算法。简单来说就…

移动跨平台开发跨家选型参考建议

从 iPhone 诞生至今,智能手机风靡全球已将近20年,智能手机操作系统 iOS 和 Android 也成为当仁不让的顶流般的存在,而作为其背后的灵魂,移动应用也随着技术的发展已经越来越丰富。如果从技术层面来讲,移动 App 也从最开…

(1)点云库PCL学习——点云的格式、PCD文件的打开和显示

1、主要参考 (1)格式说明: 点云库PCL学习——点云的格式、PCD文件的打开和显示 ROS知识:点云文件.pcd格式_无水先生的博客-CSDN博客_pcd文件 (2)点云滤波,对nan的滤波 Python点云数据处理(三)滤波与RANSAC分割 - …

省 市 县 三级联动

大纲 一、导入省市县数据表(t_region) 二、引入jar包 三、导入所需util类(整体框架) 四、编写代码 1、配置数据库相关信息(数据库名、用户名、密码) config.propreties #oracle9i #driveroracle.jdbc.driver.OracleDriver #urljdbc:oracle:thin:loca…

jsp393学生宿舍管理系统mysql

两个权限 管理员和 学生 1. 学生信息管理 添加学生信息(学生号,姓名 院系 班级入学日期 )修改学生信息 学生退宿舍(可以删除指定的学生也可以成批删除) 2. 宿舍信息管理 宿舍的基本信息(公寓数 宿舍…

第五届“强网”拟态防御国际精英挑战赛——特邀战队篇

第五届“强网”拟态防御国际精英挑战赛即将在南京隆重开赛!本届大赛面向全球顶尖CTF战队,在创新应用场景与技术的基础上,拓展升级赛道,全面覆盖典型网络设备。大赛汇集国内外60支精英战队,参赛阵容、数量再创新高。 本…

科普下抖音的规则,为什么别人的内容很容易火,而我的很难?

今天给大家科普下抖音的规则,为什么别人的内容很容易火,而我的很难? 上一篇给大家讲了现在做抖音还来得及么?肯定的回答,一直都来得及。 既然来得及,那么我们怎么才能做好抖音呢? 在我看来&a…

5 - 2 单选题

1.下列线索二叉树中(用虚线表示线索),符合后序线索树定义的是:B 后序线索二叉树的构建流程就是: 1.后序遍历二叉树:d b c a 2.第一个结点的前驱是NULL,即d的前驱,d的左孩子为NULL …

web表单(详解)

目录 1. 表单的概述 1.1 表单组成 2. 表单标记 2.1 input标记 2.2 select标记 2.3 textarea标记 3.HTML5新增标记 3.1 datalist标记 3.2 date 输入类型 3.3 color输入类型 3.4 button标记 3.5 details标记和summary标记 3.6 progress标记 3.7 meter标记 4 综合…

云原生微服务治理技术朝无代理架构的演进之路

摘要:本文基于对微服务治理技术从SOA, 微服务框架,到云原生架构的历史发展总结,提出了一种新的基于Javaagent技术的新一代无代理架构的服务治理技术,并介绍了其相关的代表性开源项目Sermant。本文分享自华为云社区《云原生微服务治…

Docker安装Redis集群失败经历汇总

在程序员的开发过程中,Redis可以说基本上是必不可少的缓存中间件。不管是二进制包还是docker安装Redis的文章在网上都是数不胜数。我之前自己玩Redis的时候基本不是二进制包安装就是docker安装,也没有尝试过集群方式。每次需要的时候,网上百度…

Cloud-computing 实验镜像 chinaskills_cloud_iaas.iso chinaskills_cloud_paas.iso

Cloud-computing 实验镜像 最近因新项目再次进行云计算环境的搭建, 找这两个镜像( 找chinaskills_cloud_paas.iso chinaskills_cloud_iaas.iso)颇为费劲,用尽九牛二虎之力总算找到了,该大侠还分享了诸多系统镜像和完…

Centos7搭建SVN代码控制服务器

Centos7搭建SVN代码控制服务器检查SVN是否安装创建SVN版本库配置代码库设置允许访问远程仓库的用户帐号密码设置权限控制设置SVN服务配置启动svn与停止启动SVN关闭SVN访问拉取远程仓库代码检查SVN是否安装 1、centos7系统自带SVN rpm -qa subversion2、如果没有则通过yum安装 …

Day15--加入购物车-初始化vuex

1.加入购物车: 我的操作: ************************************************************************************************************* 2.购物车里面的商品数据在多个页面都会用到。所以把购物车里面的商品数据存储在vuex里面, 我的…

Windows10安装配置allure

1、allure官方文档: https://docs.qameta.io/allure/#_about 官方文档中,windows部署allure步骤: 奈何提示scoop不是內部命令 2、安装scoop scoop官方文档:https://scoop.sh/ 需要打开power shell,执行提示的两条…

外汇天眼:英国研究人员与南非合作应对气候变化

随着南非对气候变化的担忧加剧,英国卫生部已同意与南非就九个不同项目组建一个合作研究团队,旨在拯救生命。 南非总统西里尔拉马福萨 (Cyril Ramaphosa) 与英国卫生大臣在克里克研究所会面后达成了合作协议,克里克研究所如今被称为欧洲最大的…

BUUCTF Misc 来首歌吧 荷兰宽带数据泄露 面具下的flag 九连环

来首歌吧 下载文件 使用Audacity打开 可以发现框出来的一串,放大查看 有长有短有空格,大概率是摩斯密码 ...../-.../-.-./----./..---/...../-..../....-/----./-.-./-.../-----/.----/---../---../..-./...../..---/./-..../.----/--.../-../--.../-----/----./.…