热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无需人类知识,DeepMind新一代围棋程序AlphaGoZero再次登上Nature

选自DeepMind机器之心编译在今年五月击败柯洁之后,AlphaGo并没有停止自己的发展。昨天,DeepMind在《自然》杂志上发表了一篇论文

选自DeepMind

机器之心编译

在今年五月击败柯洁之后,AlphaGo 并没有停止自己的发展。昨天,DeepMind 在《自然》杂志上发表了一篇论文,正式推出 AlphaGo Zero——人工智能围棋程序的最新版本。据称,这一版本的 AlphaGo 无需任何人类知识标注,在历时三天,数百万盘的自我对抗之后,它可以轻松地以 100 比 0 的成绩击败李世乭版本的AlphaGo。DeepMind 创始人哈萨比斯表示:「Zero 是迄今为止最强大,最具效率,最有通用性的 AlphaGo 版本——我们将见证这项技术很快应用到其他领域当中。」

人工智能研究已经在多个领域取得飞速进展,从语音识别、图像分类到基因组学和药物研发。在很多情况下,这些是利用大量人类专业知识和数据的专家系统。


但是,人类知识成本太高,未必可靠,或者只是很难获取。因此,AI 研究的一个长久目标就是跨国这一步,创建在最有难度的领域中无需人类输入就能达到超人性能的算法。在我们最近发表在 Nature 上的论文中,我们展示了通往该目标的关键一步。


这篇文章介绍了 AlphaGo Zero,AlphaGo 的最新版本。AlphaGo 曾打败围棋世界冠军,Zero 甚至更强大,可以说是历史上最强的围棋选手。


之前的 AlphaGo 版本首先基于数千场人类围棋比赛来训练如何学习围棋。但 AlphaGo Zero 跳过了这一步,从自己完全随机的下围棋开始来学习围棋。通过这种方式,它快速超越了人类棋手的水平,并且以 100:0 的比分打败了之前战胜世界冠军的 AlphaGo。


AlphaGo Zero 利用新型强化学习完成这样的壮举,在训练过程中它是自己的老师。该系统的神经网络最初对围棋一无所知,然后它通过将该神经网络与强大的搜索算法结合进行自我对弈。神经网络在下棋过程中得到调整和更新,来预测棋招和比赛的最终胜者。


更新后的神经网络重新与搜索算法连接,创建新的更强大的 AlphaGo Zero,然后重复上述流程。每次迭代中,系统的性能取得小幅上升,自我对弈的比赛质量不断上升,带来更加准确的神经网络和历史最强的 AlphaGo Zero 版本。


这项技术比起前几个版本的 AlphaGo 更加强大,因为它不再受人类知识极限的约束。相反,它从一张白纸的状态开始,和世界最强的围棋选手 AlphaGo(它自己)学习下棋。


它与之前的版本在以下几个方面存在差异:

  • AlphaGo Zero 只需要围棋棋盘中的黑子和白子作为输入,而前几个版本的 AlphaGo 还包括少量手工设计的特征。
  • 它只有一个神经网络,而再不是两个。早期几个版本的 AlphaGo 使用「决策网络」选择下一步棋的位置,使用「价值网络」预测每一个位置上决定的胜者。这两个网络在 AlphaGo Zero 中被结合起来,从而使其更高效地训练和评估赛况。
  • AlphaGo Zero 不使用「rollouts」(其它围棋程序使用的快速、随机的下棋方式,以从当前的棋盘位置分布预测哪一个棋手会赢),取而代之,它依靠其优质的神经网络评估下棋位置。

所有这些区别都有助于提高系统的性能,并使其更加一般化,然而算法上的变化才是系统更加强大和高效的重要原因。


由于硬件和算法的进步才使得 AlphaGo 能持续地变得越来越高效——Zero 版本只需 4 块 TPU 即可运行。


仅仅经过三天的自我对抗训练,AlphaGo Zero很干脆地以100:0的战绩打败了之前的AlphaGo版本(它曾18次击败世界冠军李世石)。又经过40天的自我对抗训练,AlphaGo Zero变得更加强大,甚至优于打败世界头号选手柯洁的AlphaGo版本「Master」。



等级分排名(在围棋等竞争性比赛中对选手的相关技巧的水平的度量):显示 AlphaGo 如何在发展过程中逐渐变得强大。


在几百万盘 AlphaGo 自我博弈的竞赛之后,系统在尝试中逐渐学会了围棋游戏,在短短几天内积累了人类数千年的知识。AlphaGo Zero 同时还发现了新的知识,发展出非常规和具有创意性的下法,这些技术已经超越了此前 AlphaGo 与李世石和柯洁对弈时展现的水平。



AlphaGo 展现的创造力让我们有理由相信人工智能将会成为人类智慧的放大器,帮助我们实现自己的使命,去解决人类面临的最具挑战的问题。


尽管 AlphaGo Zero 仍然在发展初期,但是它完成了通向该目标的关键一步。如果类似的技术可以应用到蛋白质折叠等其他结构化问题中,减少能量消耗或搜索最新的材料,则它带来的突破有可能给整个社会带来积极的影响。


论文:Mastering the game of Go without human knowledge


论文地址:https://deepmind.com/documents/119/agz_unformatted_nature.pdf


长期以来,人工智能有一个目标就是算法能够在难度较高的领域从零开始学得超人的性能。近期,AlphaGo 成为在围棋领域第一个打败人类世界冠军的程序。AlphaGo 中的树搜索使用深度神经网络评估位置,选择棋招。这些神经网络通过监督学习从人类专家的棋招中学习,然后通过强化学习进行自我对弈。本文,我们介绍一种算法,该算法仅依靠强化学习,不使用游戏规则以外的人类数据、指导或领域知识。AlphaGo 成为自己的老师:我们训练一种神经网络来预测 AlphaGo 的下一步以及 AlphaGo 游戏的获胜者。该神经网络提升树搜索的能力,带来下一次迭代中更高质量的棋招选择和更强大的自我对弈。新程序 AlphaGo Zero 从头开始学习,并达到了超人的性能,以 100-0 的比分打败曾经战胜人类世界冠军的 AlphaGo。


AlphaGo Zero 所采用的神经网络是一种新颖的强化学习算法,即自我对抗(self-play)的竞争性训练。此前,OpenAI 曾发表论文表示自我对抗训练可以在简单环境下产生远超环境复杂度的行为。而这一次 AlphaGo Zero 和此前 AlphaGo Fan 与 AlphaGo Lee 的很大区别就是采用了这种自我对抗式的训练策略。



图 1:AlphaGo Zero 中的自我对抗强化学习


a:AlphaGo Zero 和自己进行 s_1,...,s_T 对弈。在每一个位置 s_t 处使用最新的神经网络 f_θ执行蒙特卡罗树搜索(MCTS)α_θ(见图 2)。根据 MCTS 计算的搜索概率选择棋招(a_t ∼ π_t)。最终位置 s_T 的得分根据游戏规则计算,进而计算游戏获胜者 z。b: AlphaGo Zero 中的神经网络训练。神经网络使用原始棋盘位置 s_t 作为输入,使用参数θ将其传播通过多个卷积层,然后输出代表棋招概率分布的向量 p_t,和代表当前选手在 s_t 获胜的概率标量值 v_t。神经网络的参数θ得到更新以最大化策略向量 p_t 和搜索概率π_t 的相似性,并将预测获胜者 v_t 和获胜者 z 之间的误差最小化(见公式 1)。新的参数将在下一次迭代的自我对抗中使用。


根据神经网络 f_θ,在每一个位置 s 处执行 MCTS 搜索。

图2:AlphaGo Zero中的MCTS。


a:每一次模拟通过选择最大化行动价值Q的边来遍历整棵树,加上上面的(依赖于一个已储存的先验概率P)置信边界U,并访问边的总数N(每遍历一次增加1)。

b,叶结点得到扩展,并且相关的位置由神经网络 (P(s, ·),V(s)) = f_θ(s)评估;P值的向量存储在s的外向边(outgoing edges)中。

c,行动价值Q被更新以追踪当前行动下的子树的所有评估V的平均值。

d,一旦搜索完成,会返回搜索概率值(search probabilities)π,和N^(1/τ)成比例,其中N是每一次行动自根状态(root state)以来的访问总数,τ是控制温度(temperature)的参数。

原文链接:https://deepmind.com/blog/alphago-zero-learning-scratch/





推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文深入探讨了二叉搜索树(Binary Search Tree, BST)及其操作,包括查找、插入和删除节点。同时,文章还介绍了平衡二叉树(AVL树)的概念及调整方法,并详细讨论了如何判断两个序列是否构成相同的二叉搜索树。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 如何在PHPCMS V9中实现多站点功能并配置独立域名与动态URL
    本文介绍如何在PHPCMS V9中创建和管理多个站点,包括配置独立域名、设置动态URL,并确保各子站能够正常运行。我们将详细讲解从新建站点到最终配置路由的每一步骤。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
author-avatar
mobiledu2502930087
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有