目录
AlphaZero 在训练中获得人类象棋概念
AlphaZero 的开局策略与人类不同
AlphaZero 掌握知识的过程
首页 科技周边 人工智能 AlphaZero的黑箱打开了!DeepMind论文登上PNAS

AlphaZero的黑箱打开了!DeepMind论文登上PNAS

Apr 12, 2023 pm 08:37 PM
ai 神经网络

国际象棋一直是 AI 的试验场。70 年前,艾伦·图灵猜想可以制造一台能够自我学习并不断从自身经验中获得改进的下棋机器。上世纪出现的「深蓝」第一次击败人类,但它依赖专家编码人类的国际象棋知识,而诞生于 2017 年的 AlphaZero 作为一种神经网络驱动的强化学习机器实现了图灵的猜想。

AlphaZero 无需使用任何人工设计的启发式算法,也不需要观看人类下棋,而是完全通过自我对弈进行训练。

那么,它真的学习了人类关于国际象棋的概念吗?这是一个神经网络的可解释性问题。

对此,AlphaZero 的作者 Demis Hassabis 与 DeepMind 的同事以及谷歌大脑的研究员合作了一项研究,在 AlphaZero 的神经网络中找到了人类国际象棋概念的证据,展示了网络在训练过程中获得这些概念的时间和位置,还发现了 AlphaZero 与人类不同的下棋风格。论文近期发表于 PNAS。

图片

论文地址:https://www.pnas.org/doi/epdf/10.1073/pnas.2206625119

AlphaZero 在训练中获得人类象棋概念

AlphaZero 的网络架构包含一个骨干网络残差网络(ResNet)和单独的 Policy Head、Value Head,ResNet 由一系列由网络块和跳跃连接(skip connection)的层构成。

在训练迭代方面,AlphaZero 从具有随机初始化参数的神经网络开始,反复与自身对弈,学习对棋子位置的评估,根据在此过程中生成的数据进行多次训练。

为了确定 AlphaZero 网络在多大程度上表征了人类所拥有的国际象棋概念,这项研究使用了稀疏线性探测方法,将网络在训练过程中参数的变化映射为人类可理解概念的变化。

首先将概念定义为如图 1 中橙色所示的用户定义函数。广义线性函数 g 作为一个探针被训练用于近似一个国际象棋概念 c。近似值 g 的质量表示层(线性)对概念进行编码的程度。对于给定概念,对每个网络中所有层的训练过程中产生的网络序列重复该过程。

图片

图 1:在 AlphaZero 网络(蓝色)中探索人类编码的国际象棋概念。

比如,可以用一个函数来确定我方或地方是否有「主教」 (♗) :

图片

当然,还有很多比这个例子更复杂的象棋概念,比如对于棋子的机动性(mobility),可以编写一个函数来比较我方和敌方移动棋子时的得分。

在本实验中,概念函数是已经预先指定的,封装了国际象棋这一特定领域的知识。

接下来是对探针进行训练。研究人员将 ChessBase 数据集中 10 的 5 次方个自然出现的象棋位置作为训练集,从深度为 d 的网络激活训练一个稀疏回归探针 g,来预测给定概念 c 的值。

通过比较 AlphaZero 自学习周期中不同训练步骤的网络,以及每个网络中不同层的不同概念探针的分数,就可以提取网络学习到某个概念的时间和位置。

最终得到每个概念的 what-when-where 图,对「被计算的概念是什么」、「该计算在网络的哪个位置发生」、「概念在网络训练的什么时间出现」这三个指标进行可视化。如图2。

图片

图2:从 A 到 B 的概念分别是「对总分的评估」、「我方被将军了吗」、「对威胁的评估」、「我方能吃掉敌方的皇后吗」、「敌方这一步棋会将死我方吗」、「对子力分数的评估」、「子力分数」、「我方有王城兵吗」。

可以看到,C 图中,随着 AlphaZero 变得更强,「threats」概念的函数和 AlphaZero 的表征(可由线性探针检测到)变得越来越不相关。

这样的 what-when-where 图包括探测方法比较所需的两个基线,一是输入回归,在第 0 层显示,二是来自具有随机权重的网络激活的回归,在训练步骤 0 处显示。上图的结果可以得出结论,回归精度的变化完全由网络表征的变化来决定。

此外,许多 what-when-where 图的结果都显示了一个相同的模式,即整个网络的回归精度一直都很低,直到大约 32k 步时才开始随着网络深度的增加而迅速提高,随后稳定下来并在后面的层中保持不变。所以,所有与概念相关的计算都在网络的相对早期发生,而之后的残差块要么执行移动选择,要么计算给定概念集之外的特征。

而且,随着训练的进行,许多人类定义的概念都可以从 AlphaZero 的表征中预测到,且预测准确率很高。

对于更高级的概念,研究人员发现 AlphaZero 掌握它们的位置存在差异。首先在 2k 训练步骤时与零显著不同的概念是「material」和「space」;更复杂的概念如「king_safety」、「threats」、「mobility」,则是在 8k 训练步骤时显著得变为非零,且在 32k 训练步骤之后才有实质增长。这个结果与图 2 中 what-when-where 图显示的图片急剧上升的点一致。

另外,大多数 what-when-where 图的一个显著特征是网络的回归精度在开始阶段增长迅速,随后达到平稳状态或下降。这表明目前从 AlphaZero 身上所发现的概念集还只是检测了网络的较早层,要了解后面的层,需要新的概念检测技术。

AlphaZero 的开局策略与人类不同

在观察到 AlphaZero 学习了人类国际象棋概念后,研究人员进一步针对开局策略探讨了 AlphaZero 对于象棋战术的理解,因为开局的选择也隐含了棋手对于相关概念的理解。

图片

研究人员观察到,AlphaZero 与人类的开局策略并不相同:随着时间的推移,AlphaZero 缩小了选择范围,而人类则是扩大选择范围。

如图 3A 是人类对白棋的第一步偏好的历史演变,早期阶段,流行将 e4 作为第一步棋,后来的开局策略则变得更平衡、更灵活。

图 3B 则是 AlphaZero 的开局策略随训练步骤的演变。可以看到,AlphaZero 的开局总是平等地权衡所有选择,然后逐渐缩小选择范围。

图片

图 3:随着训练步骤和时间的推移,AlphaZero 和人类对第一步的偏好比较。

这与人类知识的演变形成鲜明对比,人类知识从 e4 开始逐渐扩展,而 AlphaZero 在训练的后期阶段明显偏向于 d4。不过,这种偏好不需要过度解释,因为自我对弈训练是基于快速游戏,为了促进探索增加了许多随机性。

造成这种差异的原因尚不清楚,但它反映了人类与人工神经网络之间的根本差异。一个可能的因素,或许是关于人类象棋的历史数据更强调大师玩家的集体知识,而 AlphaZero 的数据包括了初学者级别下棋和单一进化策略。

那么,当 AlphaZero 的神经网络经过多次训练后,是否会出对某些开局策略显示出稳定的偏好?

研究结果是,许多情况下,这种偏好在不同训练中并不稳定,AlphaZero 的开局策略非常多样。比如在经典的Ruy Lopez 开局(俗称「西班牙开局」)中,AlphaZero 在早期有选择黑色的偏好,并遵循典型的下法,即 1.e4 e5,2.Nf3 Nc6,3.Bb5。

图片

图 4:Ruy Lopez 开局

而在不同的训练中,AlphaZero 会逐渐收敛到 3.f6 和 3.a6 中的一个。此外,AlphaZero 模型的不同版本都各自显示出对一个动作的强烈偏好,且这种偏好在训练早期就得以建立。

这进一步证明,国际象棋的成功下法多种多样,这种多样性不仅存在于人与机器之间,也存在于 AlphaZero 的不同训练迭代中。

AlphaZero 掌握知识的过程

那么,以上关于开局策略的研究结果,与 AlphaZero 对概念的理解有什么关联呢?

这项研究发现,在各种概念的 what-when-where 图中有一个明显的拐点,与开局偏好的显著变化正好相吻合,尤其是 material 和 mobility的概念似乎与开局策略直接相关。

material 概念主要是在训练步骤 10k 和 30k 之间学习的,piece mobility 的概念也在同一时期逐步融入到 AlphaZero 的 value head 中。对棋子的 material 价值的基本理解应该先于对棋子 mobility 的理解。然后 AlphaZero 将这一理论纳入到 25k 到 60k 训练步骤之间开局偏好中。

作者进一步分析了 AlphaZero 网络关于国际象棋的知识的演变过程:首先发现棋力;接着是短时间窗口内基础知识的爆炸式增长,主要是与 mobility 相关的一些概念;最后是改进阶段,神经网络的开局策略在数十万个训练步骤中得到完善。虽然整体学习的时间很长,但特定的基础能力会在相对较短的时间内迅速出现。

前国际象棋世界冠军 Vladimir Kramnik 也被请来为这一结论提供佐证,他的观察与上述过程一致。

最后总结一下,这项工作证明了 AlphaZero 网络所学习的棋盘表示能够重建许多人类国际象棋概念,并详细说明了网络所学习的概念内容、在训练时间中学习概念的时间以及计算概念的网络位置。而且,AlphaZero 的下棋风格与人类并不相同。

既然我们以人类定义的国际象棋概念来理解神经网络,那么下一个问题将会是:神经网络能够学习人类知识以外的东西吗?

以上是AlphaZero的黑箱打开了!DeepMind论文登上PNAS的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何检查CentOS HDFS配置 如何检查CentOS HDFS配置 Apr 14, 2025 pm 07:21 PM

检查CentOS系统中HDFS配置的完整指南本文将指导您如何有效地检查CentOS系统上HDFS的配置和运行状态。以下步骤将帮助您全面了解HDFS的设置和运行情况。验证Hadoop环境变量:首先,确认Hadoop环境变量已正确设置。在终端执行以下命令,验证Hadoop是否已正确安装并配置:hadoopversion检查HDFS配置文件:HDFS的核心配置文件位于/etc/hadoop/conf/目录下,其中core-site.xml和hdfs-site.xml至关重要。使用

centos关机命令行 centos关机命令行 Apr 14, 2025 pm 09:12 PM

CentOS 关机命令为 shutdown,语法为 shutdown [选项] 时间 [信息]。选项包括:-h 立即停止系统;-P 关机后关电源;-r 重新启动;-t 等待时间。时间可指定为立即 (now)、分钟数 ( minutes) 或特定时间 (hh:mm)。可添加信息在系统消息中显示。

centos安装mysql centos安装mysql Apr 14, 2025 pm 08:09 PM

在 CentOS 上安装 MySQL 涉及以下步骤:添加合适的 MySQL yum 源。执行 yum install mysql-server 命令以安装 MySQL 服务器。使用 mysql_secure_installation 命令进行安全设置,例如设置 root 用户密码。根据需要自定义 MySQL 配置文件。调整 MySQL 参数和优化数据库以提升性能。

docker原理详解 docker原理详解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

vscode怎么定义头文件 vscode怎么定义头文件 Apr 15, 2025 pm 09:09 PM

如何使用 Visual Studio Code 定义头文件?创建头文件并使用 .h 或 .hpp 后缀命名在头文件中声明符号(例如类、函数、变量)使用 #include 指令在源文件中包含头文件编译程序,头文件将被包含并使声明的符号可用

centos8重启ssh centos8重启ssh Apr 14, 2025 pm 09:00 PM

重启 SSH 服务的命令为:systemctl restart sshd。步骤详解:1. 访问终端并连接到服务器;2. 输入命令:systemctl restart sshd;3. 验证服务状态:systemctl status sshd。

docker使用yaml docker使用yaml Apr 15, 2025 am 07:21 AM

YAML 被用于配置 Docker 的容器、映像和服务。要配置:对于容器,在 docker-compose.yml 中指定名称、镜像、端口和环境变量。对于映像,在 Dockerfile 中提供基础镜像、构建命令和默认命令。对于服务,在 docker-compose.service.yml 中设定名称、镜像、端口、卷和环境变量。

在 visual studio code 中使用 c 吗 在 visual studio code 中使用 c 吗 Apr 15, 2025 pm 08:03 PM

在 VS Code 中编写 C 语言不仅可行,而且高效优雅。关键在于安装优秀的 C/C 扩展,它提供代码补全、语法高亮和调试等功能。VS Code 的调试功能可帮助你快速定位 bug,而 printf 输出是老式但有效的调试方法。此外,动态内存分配时应检查返回值并释放内存以防止内存泄漏,调试这些问题在 VS Code 中很方便。虽然 VS Code 无法直接帮助进行性能优化,但它提供了一个良好的开发环境,便于分析代码性能。良好的编程习惯、可读性和可维护性也至关重要。总之,VS Code 是一

See all articles