怎样三天训练出AI围棋大师?教你AlphaGo Zero的3个trick

简介:
本文来自AI新媒体量子位(QbitAI)


过去一年,AI领域最exciting的进展可能要数AlphaGo的不断进步。AlphaGo Zero不仅提出了新的网络架构,也带来了一些新的神经网络训练技巧。

虽然DeepMind发表了论文,并在Reddit论坛上进行了一次公开答疑,后来还有人将AlphaGo Zero的算法实现了出来,但如何训练?其中有哪些trick?

发表在HackerNoon上的一篇最新博客文章做出了直观的解读:

先从AlphaGo各个版本一脉相承的两种方法说起:一是前瞻的蒙特卡洛树搜索,二是凭“直觉”来对落子位置进行评估,也就是DeepMind所说的策略网络和价值网络。这两种方法结合起来,构成了每一版AlphaGo的核心。


从更高的层面讨论,AlphaGo Zero的工作方式和AlphaGo差不多,它们都使用了基于MCTS的前向搜索,并辅以神经网络的指导。然而,AlphaGo Zero的神经网络,或者说它的“直觉”,跟AlphaGo的训练方式完全不同。

以下是三个你需要知道的tricks。


Trick 1:如何训练AlphaGo Zero

所谓神经网络学会下围棋,就是能在当前的局面下,判断出下一步的最佳落子位置。DeepMind发现,无论神经网络智能程度如何,从一无所知到围棋大师,使用MTCS总是更好的评估判断方案。

从根本上来说,MCTS是一种前向搜索,如果有足够的时间,人类围棋大师也能完成。这个过程无非是不断脑补棋局未来的变化,评估哪些“套路”可能是最佳方案。

举个例子。第一种落子方案,最终可能导致平局,评估得分就是0.0。接着看第二种方案,神经网络推算出这么下可能会获胜,评估得分为0.5。


这个过程一直持续进行的话,前向搜索总是能够评估出更好的落子方案。

当然,这也要求神经网络能够判断如何下棋落子能带来胜利。基于MCTS的改进评估与神经网络的当前状态,智能体Agent不断地展开自我对局。

DeepMind用来训练AlphaGo Zero的数据,全部都是通过前向搜索和自我博弈产生的。


不使用人类下棋的数据,其实是一个trick。这样的话,对于每个给定的局面,神经网络都能通过执行基于MCTS的前向搜索,再用其提高智能体的棋力。

在这种方法的帮助下,AlphaGo Zero从一无所知成长为围棋大师。

Trick 2: 双头怪

AlphaGo Zero的神经网络,是一个“双头”架构。

这个网络的前20层左右,是常见的神经网络结构。然后跟着是两个“头”,一个头取走了前20层的输出,然后产生了下一步的落子概率,另一个头基于同样的数据,输出当前局面的获胜概率。


这是个不寻常的结构。几乎所有的应用中,神经网络都只给出一个固定的输出。如果有两个不同的输出结果,应该如何学习呢?

答案很简单。请记住,神经网络的本质只是一些数学函数,包括一系列影响决策的参数。所谓训练,就是反复向神经网络展示正确答案,让网络更新参数,使得输出更接近正确答案。

所以,当我们使用一个头进行预测时,只需要更新“身体”和“头1”中的参数。而使用另一个头时,更新“身体”和“头2”中的参数。




这就是DeepMind训练单一、双头神经网络的方法,并且用其来指导MCTS的搜索。有点像AlphaGo使用了两个单独的神经网络。这个trick在技术上被称为硬参数共享的多任务学习(Multi-Task Learning with Hard Parameter Sharing)。

Trick 3: 残差网络

AlphaGo Zero还用了比之前版本更前沿的神经网络架构:残差网络。

残差网络是2015年孙剑在微软亚洲研究院带领的团队开发的,当时AlphaGo第一版的工作已经快要接近尾声。


 残差网络和普通卷积神经网络的比较

这两种神经网络相关的技巧——用残差网络架构替代卷积架构、用“双头怪”神经网络替代各个单独的神经网络,都能让整个网络的性能增加一倍,两者结合起来,性能又有提升。如下图所示:


小结

上面三个tricks让AlphaGo Zero展现出令人难以置信的能力。

值得注意的是,AlphaGo没有使用任何经典或者前沿的强化学习概念,没有Deep Q Learning,也没有Asynchronous Actor-Critic Agents。

DeepMind只是使用了模拟的方法为神经网络产生数据,然后以监督的方式学习。

Denny Britz曾经总结说:具有讽刺意味的是,强化学习在过去几年里的主要发展,都让强化学习看起来不像强化学习,反而更像监督学习。

手把手训练AlphaGo Zero

1、初始化神经网络

2、让神经网络开始自我对弈,每一步进行1600次MCTS模拟,大概耗时0.4秒


3、随着对弈数量的增长,从最近的50万场比赛中,采样2048个落子决定,以及比赛对应的输赢情况。

4、使用MCTS前向搜索产生的落子评估,以及输赢结果,一起对神经网络进行训练。

5、步骤3、4每进行1000次迭代,评估当前神经网络与此前最佳版本。如果新版本胜率达到55%,就开始用其生成新的游戏,而不再用此前的版本。

重复3、4步70万次,自我对局不要停,三天后,你也能训练出一个AlphaGo Zero。

对AI未来的启示

DeepMind的成就,对于人工智能研究的未来有很多启示,以下是关键几点:

第一,通过模拟产生的自我对弈数据对于神经网络的训练来说,已经足够好了。这证明了模拟的自我对局数据能够训练AI智能体完成极其复杂的任务,超越人类表现,甚至能够完全从0开始,根本不需要人类专家提供的数据。

第二,为了让智能体在多个领域学习执行几个相关任务,“双头”的trick能提供很大帮助。这似乎可以防止智能体的行为在任何单个任务上过拟合。DeepMind似乎非常喜欢这个trick,还用它的高级版本构建了可以在多个不同领域学习多个任务的智能体。


 DeepMind的AI用多任务强化学习框架学习走迷宫

很多机器人项目,特别是用模拟环境训练机器人使用四肢完成任务的领域里,用这两种技巧取得了不错的效果。Pieter Abbeel在NIPS上的最新演讲展示了很多令人印象深刻的新成果,这些成果用了很多前沿强化学习技术加上了这些trick。

实际上,机器人的运动对于“双头”来说是一个完美的使用场景,比如说,要教机器人打棒球,其实包含两类动作,一是握住、挥动球棒,二是击打一个运动中的物体。用“双头”,两种动作的训练就可以同时完成,因为这二者包含一些共同技能,比如平衡、转体等等。


 DeepMind将训练AlphaGo Zero的技巧用到了机器人运动上

本文作者:夏乙 问耕 
原文发布时间:2018-01-14
相关文章
|
2月前
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
|
1月前
|
Python 机器学习/深度学习 人工智能
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
【10月更文挑战第1天】本文通过构建一个简单的强化学习环境,演示了如何创建和训练智能体以完成特定任务。我们使用Python、OpenAI Gym和PyTorch搭建了一个基础的智能体,使其学会在CartPole-v1环境中保持杆子不倒。文中详细介绍了环境设置、神经网络构建及训练过程。此实战案例有助于理解智能体的工作原理及基本训练方法,为更复杂应用奠定基础。首先需安装必要库: ```bash pip install gym torch ``` 接着定义环境并与之交互,实现智能体的训练。通过多个回合的试错学习,智能体逐步优化其策略。这一过程虽从基础做起,但为后续研究提供了良好起点。
111 4
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
|
2月前
|
人工智能 开发工具 计算机视觉
AI计算机视觉笔记三十:yolov8_obb旋转框训练
本文介绍了如何使用AUTODL环境搭建YOLOv8-obb的训练流程。首先创建虚拟环境并激活,然后通过指定清华源安装ultralytics库。接着下载YOLOv8源码,并使用指定命令开始训练,过程中可能会下载yolov8n.pt文件。训练完成后,可使用相应命令进行预测测试。
|
2月前
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二十二:基于 LeNet5 的手写数字识别及训练
本文介绍了使用PyTorch复现LeNet5模型并检测手写数字的过程。通过搭建PyTorch环境、安装相关库和下载MNIST数据集,实现了模型训练与测试。训练过程涉及创建虚拟环境、安装PyTorch及依赖库、准备数据集,并编写训练代码。最终模型在测试集上的准确率达到0.986,满足预期要求。此项目为后续在RK3568平台上部署模型奠定了基础。
|
2月前
|
人工智能 测试技术 PyTorch
AI计算机视觉笔记二十四:YOLOP 训练+测试+模型评估
本文介绍了通过正点原子的ATK-3568了解并实现YOLOP(You Only Look Once for Panoptic Driving Perception)的过程,包括训练、测试、转换为ONNX格式及在ONNX Runtime上的部署。YOLOP由华中科技大学团队于2021年发布,可在Jetson TX2上达到23FPS,实现了目标检测、可行驶区域分割和车道线检测的多任务学习。文章详细记录了环境搭建、训练数据准备、模型转换和测试等步骤,并解决了ONNX转换过程中的问题。
|
2月前
|
存储 人工智能 数据可视化
AI计算机视觉笔记二十一:PaddleOCR训练自定义数据集
在完成PaddleOCR环境搭建与测试后,本文档详细介绍如何训练自定义的车牌检测模型。首先,在`PaddleOCR`目录下创建`train_data`文件夹存放数据集,并下载并解压缩车牌数据集。接着,复制并修改配置文件`ch_det_mv3_db_v2.0.yml`以适应训练需求,包括设置模型存储目录、训练可视化选项及数据集路径。随后,下载预训练权重文件并放置于`pretrain_models`目录下,以便进行预测与训练。最后,通过指定命令行参数执行训练、断点续训、测试及导出推理模型等操作。
|
2月前
|
机器学习/深度学习 人工智能 测试技术
AI计算机视觉笔记二十五:ResNet50训练部署教程
该项目旨在训练ResNet50模型并将其部署到RK3568开发板上。首先介绍了ResNet50网络,该网络由何恺明等人于2015年提出,解决了传统卷积神经网络中的退化问题。项目使用车辆分类数据集进行训练,并提供了数据集下载链接。环境搭建部分详细描述了虚拟环境的创建和所需库的安装。训练过程中,通过`train.py`脚本进行了15轮训练,并可视化了训练和测试结果。最后,项目提供了将模型转换为ONNX和PT格式的方法,以便在RK3568上部署。
|
2月前
|
人工智能 计算机视觉 Python
AI计算机视觉笔记十九:Swin Transformer训练
本文介绍了使用自定义数据集训练和测试目标检测模型的步骤。首先,通过安装并使用标注工具labelme准备数据集;接着修改配置文件以适应自定义类别,并调整预训练模型;然后解决训练过程中遇到的依赖冲突问题并完成模型训练;最后利用测试命令验证模型效果。文中提供了具体命令及文件修改指导。
|
2月前
|
机器学习/深度学习 人工智能 计算机视觉
AI计算机视觉笔记二十三:PP-Humanseg训练及onnxruntime部署
本文介绍了如何训练并使用PaddleSeg的人像分割模型PP-HumanSeg,将其导出为ONNX格式,并使用onnxruntime进行部署。首先在AutoDL服务器上搭建环境并安装所需库,接着下载数据与模型,完成模型训练、评估和预测。最后,通过paddle2onnx工具将模型转换为ONNX格式,并编写预测脚本验证转换后的模型效果。此过程适用于希望在不同平台上部署人像分割应用的开发者。
|
2月前
|
人工智能 数据处理 计算机视觉
AI计算机视觉笔记十六:yolov5训练自己的数据集
本文介绍了一种利用云服务器AutoDL训练疲劳驾驶行为检测模型的方法。由于使用本地CPU训练效率低下,作者选择了性价比高的AutoDL云服务器。首先,从网络获取了2000多张疲劳驾驶行为图片并使用labelimg软件进行标注。接着,详细介绍了在云服务器上创建实例、上传数据集和YOLOv5模型、修改配置文件以及开始训练的具体步骤。整个训练过程耗时约3小时,最终生成了可用于检测的模型文件。