阿尔法狗与机巧围棋的网络结构

阿尔法狗(AlphaGo)的意思是“围棋王”,俗称“阿尔法狗”,它是世界上第一个打败人类围棋冠军的AI。2015年10月,阿尔法狗以5 : 0战胜了欧洲围棋冠军樊麾二段,在2016年3月,阿尔法狗以4 : 1战胜了世界冠军李世石九段。2017年,新版不依赖人类经验完全从零开始自学的零狗(AlphaGo Zero)以100 : 0战胜阿尔法狗。

阿尔法狗使用策略网络和价值网络辅助蒙特卡洛树搜索,以降低搜索的深度和宽度。机巧围棋落子策略完全基于零狗算法,本文将用强化学习的语言描述围棋游戏的状态和动作,并介绍阿尔法狗和机巧围棋中构造的策略网络和价值网络。

1. 动作和状态

围棋的棋盘是19 X 19的网格,黑白双方轮流在两条线的交叉点处放置棋子。一共有19 X 19 = 361个可以放置棋子的位置,同时可以选择PASS(放弃一次当前落子的权利),因此动作空间是 A = { 0 , 1 , 2 , ⋯ , 361 } \mathcal{A}=\{0,1,2,\cdots,361\} A={0,1,2,,361},其中第 i i i种动作表示在第 i i i个位置(从0开始)放置棋子,第361种动作表示PASS。

机巧围棋是基于9路围棋的人工智能程序,即棋盘是9 X 9的网格。相应地动作空间 A = { 0 , 1 , 2 , ⋯ , 81 } \mathcal{A}=\{0,1,2,\cdots,81\} A={0,1,2,,81}

1

阿尔法狗2016版本使用19 X 19 X 48的张量(tensor)表示一个状态,零狗使用19 X 19 X 17的张量表示一个状态。如图一所示,零狗中使用的状态张量的意义如下:

  • 状态张量的每个切片(slice)是19 X 19的矩阵,对应19 X 19的棋盘。一个19 X 19的矩阵可以表示棋盘上所有黑色棋子的位置,如果一个位置上有黑色棋子,则矩阵对应位置的元素为1,否则为0。同样的道理,可以用一个19 X 19的矩阵表示棋盘上所有白色棋子的位置。
  • 在零狗的状态张量中,一共存在17个矩阵。其中8个矩阵记录最近8步棋盘上黑子的位置,8个矩阵记录最近8步白子的位置。还有一个矩阵表示下一步落子方,如果接下来由黑方落子,则该矩阵元素全部等于1,如果接下来由白方落子,则该矩阵的元素全部都等于0。

为了减少计算量,机巧围棋对状态张量做了一定的简化。在机巧围棋中,使用9 X 9 X 10的张量表示一个状态,其中4个9 X 9的矩阵记录最近4步棋盘上黑子的位置,4个矩阵记录白子的位置。一个矩阵表示下一步落子方,如果接下来由黑方落子,则该矩阵元素全部等于0,由白方落子则等于1。还有最后一个矩阵表示上一步落子位置,即上一步落子位置元素为1,其余位置元素为0,若上一步为PASS,则该矩阵元素全部为0。

阿尔法狗2016版本的状态张量意义比较复杂,本文不详细展开,具体可参加下图:

2

2. 策略网络

策略网络 π ( a ∣ s ; θ ) \pi(a|s;\theta) π(as;θ)的结构如图三所示。零狗策略网络的输入是19 X 19 X 17的状态 s s s,输出是362维的向量 f f f,它的每个元素对应动作空间中的一个动作。策略网络的输出层激活函数为Softmax,因此向量 f f f所有元素均是正数,而且相加等于1。

3

3. 价值网络

在阿尔法中还有一个价值网络 v π ( s ; ω ) v_\pi(s;\omega) vπ(s;ω),它是对状态价值函数 V π ( s ) V_\pi(s) Vπ(s)的近似,价值网络的结构如图四所示。价值网络的输入是19 X 19 X 17的状态 s s s,输出是一个 [ − 1 , + 1 ] [-1, +1] [1,+1]的实数,它的大小评价当前状态 s s s的好坏。

4

策略网络和价值网络的输入相同,都是状态 s s s。而且它们都用卷积层将 s s s映射到特征向量,因此零狗中让策略网络和价值网络共用卷积层。

零狗中策略网络和价值网络共用卷积层,但是在阿尔法狗2016版本中没有共用。因为零狗中策略网络和价值网络是一起训练的,而阿尔法狗2016版本中是先训练策略网络,然后用策略网络来训练价值网络,二者不是同时训练的,因此不能共用卷积层。后续会详细介绍阿尔法狗中神经网络训练方法。

4. 机巧围棋网络结构

零狗训练用了5000块TPU,在机巧围棋中为了减少计算量,大幅简化了策略网络和价值网络。在机巧围棋中,使用了3个卷积层从状态 s s s中提取特征,分别是:

  • 3 X 3步长1的32通道卷积;
  • 3 X 3步长1的64通道卷积;
  • 3 X 3步长1的128通道卷积。

在策略网络部分,首先使用1 X 1的8通道卷积对信息进行夸通道整合,再接一个全连接层将特征向量维度压缩成256,最后再接入输出层;在价值网络部分,首先使用1 X 1的4通道卷积对信息进行夸通道整合,再接入两个全连接层,最后接入输出层。具体代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2021/3/29 21:01
# @Author  : He Ruizhi
# @File    : policy_value_net.py
# @Software: PyCharmimport paddleclass PolicyValueNet(paddle.nn.Layer):def __init__(self, input_channels: int = 10,board_size: int = 9):""":param input_channels: 输入的通道数,默认为10。双方最近4步,再加一个表示当前落子方的平面,再加上一个最近一手位置的平面:param board_size: 棋盘大小"""super(PolicyValueNet, self).__init__()# AlphaGo Zero网络架构:一个身子,两个头# 特征提取网络部分self.conv_layer = paddle.nn.Sequential(paddle.nn.Conv2D(in_channels=input_channels, out_channels=32, kernel_size=3, padding=1),paddle.nn.ReLU(),paddle.nn.Conv2D(in_channels=32, out_channels=64, kernel_size=3, padding=1),paddle.nn.ReLU(),paddle.nn.Conv2D(in_channels=64, out_channels=128, kernel_size=3, padding=1),paddle.nn.ReLU())# 策略网络部分self.policy_layer = paddle.nn.Sequential(paddle.nn.Conv2D(in_channels=128, out_channels=8, kernel_size=1),paddle.nn.ReLU(),paddle.nn.Flatten(),paddle.nn.Linear(in_features=9*9*8, out_features=256),paddle.nn.ReLU(),paddle.nn.Linear(in_features=256, out_features=board_size*board_size+1),paddle.nn.Softmax())# 价值网络部分self.value_layer = paddle.nn.Sequential(paddle.nn.Conv2D(in_channels=128, out_channels=4, kernel_size=1),paddle.nn.ReLU(),paddle.nn.Flatten(),paddle.nn.Linear(in_features=9*9*4, out_features=128),paddle.nn.ReLU(),paddle.nn.Linear(in_features=128, out_features=64),paddle.nn.ReLU(),paddle.nn.Linear(in_features=64, out_features=1),paddle.nn.Tanh())def forward(self, x):x = self.conv_layer(x)policy = self.policy_layer(x)value = self.value_layer(x)return policy, value

5. 结束语

本文介绍了阿尔法狗中的两个深度神经网络——策略网络和价值网络,并讲解了机巧围棋中的网络实现。在阿尔法狗或者机巧围棋中,神经网络结构并不是一层不变的,可以依据个人经验或喜好随意调整。总的来说,浅的网络能够减少计算量,加快训练和落子过程,深的网络可能更有希望训练出更高水平狗。

最后,期待您能够给本文点个赞,同时去GitHub上给机巧围棋项目点个Star呀~

机巧围棋项目链接:https://github.com/QPT-Family/QPT-CleverGo

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

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

相关文章

围棋智能机器人阿法狗,阿尔法狗机器人围棋

第一个战胜围棋世界冠军的人工智能程序是什么? 阿尔法狗(AlphaGo)是第一个击败人类职业围棋选手、第一个战胜围棋世界冠军的人工智能程序,由谷歌(Google)公司的团队开发。其主要工作原理是“深度学习”。 人工智能围棋项目:小发猫 2017年5月…

阿尔法围棋击败人类是计算机在那方面的应用,阿尔法围棋战胜人类:人工智能又一胜利...

计算机下棋的思考模式 现在主流弈棋计算机的基本“思考模式”很简单,就是对当前局面下的每一种合法走法所直接导致的局面进行评估,然后选择“获胜概率”最高的局面所对应的那个走法。也就是说,“准确评估给定局面的胜率”是主流弈棋计算机的核…

spring-boot3 重定向(状态码:302)问题(无论访问那个接口都会被重定向到 【/login】登录界面)

问题描述 今天使用spring-boot做了热重载以后出现了一个问题,我无论访问那个接口都会导致接口被重定向到下面这个界面 地址是 :“localhost:/login” chatGPT解决方式 问了一下 chatGPT,下面是他给我的答案(没能解决)&#xf…

Linux 创建文件的12种方法总结

在Linux中,可以使用多种方法来创建文件。以下是一些常见的方法: 1. touch命令 touch filename,用于创建一个空文件。如果文件已存在,则只更新其访问时间和修改时间。 touch 命令通常用于将文件的访问和修改时间更新为当前时间。…

【Linux】云服务器Centos 7安装nginx,设置二级域名转发端口

这里写目录标题 一、 Nginx 安装1.1 安装Nginx1.2 使用1.3 自启动配置 二、Nginx详细2.1 相关命令2.2 二级域名转发 三、 SSL配置3.1 确保Nginx安装了SSL模块3.2 下载证书其它 一、 Nginx 安装 1.1 安装Nginx 下载网址为http://nginx.org/en/download.html,如下当…

网络爬虫有什么用?怎么爬?手把手教你爬网页(Python代码)

导读:本文主要分为两个部分:一部分是网络爬虫的概述,帮助大家详细了解网络爬虫;另一部分是HTTP请求的Python实现,帮助大家了解Python中实现HTTP请求的各种方式,以便具备编写HTTP网络程序的能力。 作者&…

微软也搞起了开源小模型!利用OpenAI的ChatGPT和GPT-4 训练,实力碾压当前最强开源模型...

来源:AI前线 整理:核子可乐,褚杏娟 Chatbot Arena 等排行榜已经反复证明,数十亿美元支撑起来的 ChatGPT 仍然是聊天机器人领域无可争辩的王者。而人们只能调用其 API ,无法私有化部署,无法自己训练调整。…

创新案例|专注在线 协作平台 设计产品中国首家PLG独角兽企业蓝湖如何实现98%的头部企业渗透率

蓝湖起步于2015年,是一款服务于产品经理、设计师、工程师的产品设计研发在线协作工具, 2021年10月,蓝湖宣布完成C轮融资,融资额高达10亿人民币,称为中国2B市场中首家采用PLG发展的独角兽企业,并实现了从100…

OpenAI发布人工智能安全路径报告

2023年4月5日,OpenAI在其官网上发布了**《我们迈向人工智能安全的路径》(Our approach to AI safety)** 一文,对包括ChatGPT在内的AI产品安全问题进行回应。这一公告内容从六个角度对其AI产品的安全愿景进行了声明。此前,韩国三星称ChatGPT导…

网安业绩疲软,云计算生变,深信服造血能力成谜

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 深信服的转型,难以看到终点。 作为网安巨头的深信服,其业务体量曾度过一段高速增长的阶段。近五年,网络安全行业都处于持续增长的阶段,深信服也保持着整体业绩的增速。 但不能…

AI智能课程:第九节:让chatGPT当你的面试官

后续课程安排 面试官能力分析 专业打造各类面试官 设定初步结构 向chatGPT提问 最终呈现的效果 设定面试范围 面试管打造-分步法 练习 linux端 插件推荐:如何让自己的world更智能 拓展知识 创意玩法

使用ChatGPT 当回运营面试官,他真的好会,被震撼到了

使用移动端,多端都能体验ChatGPT,被震撼到了,这是我问的运营面试 使用 ChatGPT

ChatGPT4.0:让他扮演面试官

分享一下使用ChatGPT4.0的一些场景: 我的提问:我应聘高级JAVA开发工程师职位,你是技术面试官,请问我10个问题,并给出详细的参考答案 它的回答: 问题1:请解释一下什么是JVM(Java虚…

GPT面试官

使用ChatGPT模仿面试官,问我做过的项目! 1.关键词部分 需要让CHatGPT有一个准确的角色定位,以下是我给它的角色定位词: 请你作为一个Java后端面试官,请你基于我的项目,问我一些由项目扩展到专业知识的问题&#xff…

重磅!CPOS、VISA、Facebook、摩根大通杀入跨境支付市场

随着时间的推移,越来越多悄悄布局区块链的金融、科技巨头开始浮出水面。除了CPOS,VISA、摩根大通、Facebook也将区块链和加密金融作为接下来的重要业务。 和CPOS一样,VISA、摩根大通、Facebook同样看中了全球跨境支付的巨大市场。摩根大通的…

ICCV 2021口罩人物身份鉴别全球挑战赛冠军方案分享

1. 引言 10月11-17日,万众期待的国际计算机视觉大会 ICCV 2021 (International Conference on Computer Vision) 在线上如期举行,受到全球计算机视觉领域研究者的广泛关注。 今年阿里云多媒体 AI 团队(由阿里云视频云和达摩院视觉团队组成&a…

使用VISA编程(转)

概述 下图示出对具有VISA的仪器进行控制的流程。当用可视Basic语言(Visual Basic languagee)开发VISA程序时,必须回顾一个特殊的编程注意事项(在下面列出的自述文本文件中)。 有关VISA程序库的利用以及利用带有E5071A宏…

IC卡(银行卡)APDU数据格式TLV解析

前言 隔离上篇文章IC卡(智能卡)APDU通讯总结太久了,这次整理一下TLV数据解析的教程,供大家参考。有时候发送指令读取到IC卡数据,直接转 ASCII码就可以拿到自己想要的数据,和业务交互。但是银行卡读取到的报…

使用VISA编程入门教程

概述 下图示出对具有VISA的仪器进行控制的流程。当用可视Basic语言(Visual Basic languagee)开发VISA程序时,必须回顾一个特殊的编程注意事项(在下面列出的自述文本文件中)。 有关VISA程序库的利用以及利用带有E5071…

Zebec联合Visa推出实体借记卡持续利好生态,$ZBC表现强劲

Zebec联合Visa推出实体借记卡持续利好生态,$ZBC表现强劲 Zebec生态从今年年初开始,持续的释放利好提振市场信心。此前,Zebec曾以 10 亿美元的完全稀释估值筹集了 850 万美元,该轮融资投资者包括 Circle Ventures、Shima 和 Resolu…