【AI玩跳一跳终极奥义】首个端到端神经网络,看AI在玩游戏时注意什么

简介:

微信跳一跳自发布以来,迅速成为人们茶余饭后的休闲利器,同时也演变成了各路程序员的竞技场。程序员们争先开发出各种牛逼外挂,把小游戏玩出了新的境界。

然而,目前出来的各种外挂版本,大多采用传统的方法来实现,比如使用传统计算机视觉的颜色,边缘检测等方法来寻找棋子的位置。虽然已能够在游戏中取得较好分数,但是代码复杂,需要针对不同手机设置不同的参数。

在深度学习如此火热,AlphaZero已经征服各种棋类,Atari游戏已经被计算机吊打的情况下,能不能用纯深度神经网络来玩跳一跳呢?

答案当然是Yes。

本文中,我们就祭出微信跳一跳的终极奥义:仅使用一个端到端的神经网络,远远超越人类水平

AI玩跳一跳的关键:从二维图像学会三维距离的概念

在介绍端到端神经网络的实现方法前,我们首先要考虑,训练AI来玩跳一跳,关键在哪里?

UCL计算机系教授汪军在接受新智元采访时说,关键是让AI通过观看二维图像,学会“三维距离”的概念。

2754157a7a27d946a6cfa62c4101b25d7096db5f

一个用线性模型玩跳一跳的结果 

使用模仿学习,把复杂程序全都装进一个神经网络

那么,端到端神经网络玩跳一跳是怎么实现的呢?

估计有很多朋友的第一反应是:难道是用深度增强学习(Deep Reinforcement Learning),也就是AlphaGo的方法?

老实说,我一开始也是打算这么干的,但是具体分析后发现并不是那么好做。

首先,我们获取不了游戏内部数据,不方便获取Reward,即使我们要自己设定一个Reward,比如计算棋子离盒子正中心的位置,我们依然需要通过计算机视觉分析的方式实现,违背了我们纯端到端神经网络实现的初衷。

其次,跳一跳这个小游戏,玩的速度很慢,基本上一步要一秒多。而使用深度增强学习最大的问题就是需要训练几十万步。这样看来,要用深度增强学习训练出一个能玩的网络,大概要训练到明年吧!

因此,我们不用深度增强学习,而改用模仿学习(Imitation Learning),并且使用模仿学习中最简单的行为克隆(Behavior Cloning)方法。简单的说,就是收集很多好的游戏输入输出数据,然后使用监督学习训练。

本质上说,这种模仿学习的做法就是把人工编写的复杂程序存进一个神经网络中。

好了,确定了方法论。下面就可以开始具体实施了。

具体实施:Talk is Easy,Show Me The Code

1、构造游戏数据库

从哪里搞到很多的游戏输入输出数据呢?别忘了,传统方法都已经可以玩到10000分以上了,我们完全可以用传统方法来收集数据。

在这里,我使用加了点小AI的代码,通过线性回归训练了一个简单的线性模型来估计跳跃距离和按压时间的关系,相对人工设定的参数会好一些。有了这个,我们就可以将每一次跳跃的屏幕截图及按压时间记录下来:

f313b5b57e03b34403519e1763acfb782665c13c

其中图像先做一下预处理,居中裁成正方形,方便之后的训练,而按压数据则存在Json中,一个图片名称对应一个按压时间。图片名称很简单,直接使用的截图时间。

就这样,我们让微信跳一跳跳了n个小时,终于收集到了5000多个数据样本。

有了数据库,下面就是如何训练了。

2、构造端到端神经网络模型及训练

这里我构造了一个5层的卷积神经网络,每一层神经网络包含一个64 通道的3x3 卷积核的卷积层,一个BatchNorm,一个ReLU及一个2x2的Max-Pooling层。具体如下图所示:

6d8ea6c5597f9a3a10b3e305320970d0e64f5d45

由于输出的按压时间是一个单值,非常简单,我们使用Mean Square Error来作为模型的损失函数Loss。因此,我们的模型是一个简单的回归模型。我们使用构建的数据库进行训练。在训练之前,我们对图像数据进行预处理,将其压缩成224x224的RGB图像,然后再输入到神经网络。我们采用Adam作为优化器,学习率设定为0.001,训练200个episode,一个episode随机遍历整个数据集一遍。

3、代码

具体的代码:https://github.com/songrotek/wechat_jump_end_to_end

这个Github仅包含所需的运行代码,就两个文件一个ios,一个android。使用方法非常简单:

(1) 安装iOS或Android开发所需的软件及依赖,具体详见:

https://github.com/wangshub/wechat_jump_game/wiki/Android-%E5%92%8C-iOS-%E6%93%8D%E4%BD%9C%E6%AD%A5%E9%AA%A4

(2) 安装本代码所需的PyTorch深度学习框架:pytorch.org

(3) 手机连接好电脑,注意iPhone需要在run_ios.py中更改WebDriverAgentRunner 运行后得到的IP。打开微信跳一跳,然后在Terminal中输入:python run_ios.py 或者 python run_android.py

接下来就是见证奇迹的时刻!

2d7b6094d8dee3aedb971879bf8089a5aaad9a60

再看看代码,也就是100行!惊不惊喜!意不意外!

神经网络在玩跳一跳的过程中思考了吗?

上面就是端到端神经网络的实现方法,看起来过于简单了。只玩到这不太符合我们的Geek精神。因此,我们不禁要问:神经网络在玩游戏的过程中“思考”了吗?有没有像人类一样,考虑了确定棋子和盒子的位置等问题?

为了验证这一点,我们做了额外的实验,构建一个带有注意力(Attention)机制的神经网络进行训练。我们使用一个4层的U-Net来输出一个和图像输入维度一致的注意力蒙版(Attention Mask),然后将原有图像与注意力蒙版相乘(Element-wise Product),得到带蒙版的图像,即仅考虑注意力区域的图像。之后,再将带蒙版图像输入到4层卷积全连接后输出按压时间。具体网络结构如下图所示:

1cd502096a9b31209b6e8d8a01357c01dfa70db1

注意力蒙版每一个维度的值我们限制为[0,1],越趋于1就表示越关注,反之亦然。基于这样的网络模型训练后,我们就可以来看看神经网络在关注些什么。下面是一些对应的截图:

1e128f6fb2f734d4f0497e3241ab1594e09b28e8

端到端的神经网络在玩跳一跳过程中,自动捕捉位置等关键信息


可以看出,神经网络一定程度上自动捕捉了棋子和盒子的位置信息,特别注意棋子上头的高亮,这非常符合人玩游戏的方式,也符合传统做法的方法。

这在一定程度上说明,整个端到端神经网络内部也会自动捕捉到这些重要的位置信息!

小结

微信跳一跳的终极奥义就介绍到这了!大家肯定会惊讶于深度学习的神奇之处。老实说只看运行的代码我也非常惊讶。但是,再看看训练的方式似乎不过如此。这大概也是深度学习的魅力吧!


原文发布时间为:2018-01-11

本文作者:Flood Sung

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:【AI玩跳一跳终极奥义】首个端到端神经网络,看AI在玩游戏时注意什么

相关文章
|
4月前
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
902 56
|
人工智能 自然语言处理 前端开发
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
淘宝推荐信息流业务,常年被“需求多、技术栈杂、协作慢”困扰,需求上线周期动辄一周。WaterFlow——一套 AI 驱动的端到端开发新实践,让部分需求两天内上线,甚至产品经理也能“自产自销”需求。短短数月,已落地 30+ 需求、自动生成 5.4 万行代码,大幅提升研发效率。接下来,我们将揭秘它是如何落地并改变协作模式的。
453 37
产品经理也能“开发”需求?淘宝信息流从需求到上线的AI端到端实践
|
8月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
885 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
人工智能 缓存 NoSQL
【深度】企业 AI 落地实践(四):如何构建端到端的 AI 应用观测体系
本文探讨了AI应用在实际落地过程中面临的三大核心问题:如何高效使用AI模型、控制成本以及保障输出质量。文章详细分析了AI应用的典型架构,并提出通过全栈可观测体系实现从用户端到模型推理层的端到端监控与诊断。结合阿里云的实践经验,介绍了基于OpenTelemetry的Trace全链路追踪、关键性能指标(如TTFT、TPOT)采集、模型质量评估与MCP工具调用观测等技术手段,帮助企业在生产环境中实现AI应用的稳定、高效运行。同时,针对Dify等低代码平台的应用部署与优化提供了具体建议,助力企业构建可扩展、可观测的AI应用体系。
|
8月前
|
人工智能 数据可视化 数据挖掘
AI竟能独立完成顶会论文!The AI Scientist-v2:开源端到端AI自主科研系统,自动探索科学假设生成论文
The AI Scientist-v2 是由 Sakana AI 等机构开发的端到端自主科研系统,通过树搜索算法与视觉语言模型反馈实现科学假设生成、实验执行及论文撰写全流程自动化,其生成论文已通过国际顶会同行评审。
551 34
AI竟能独立完成顶会论文!The AI Scientist-v2:开源端到端AI自主科研系统,自动探索科学假设生成论文
|
3月前
|
机器学习/深度学习 资源调度 算法框架/工具
AI-ANNE: 将神经网络迁移到微控制器的深度探索——论文阅读
AI-ANNE框架探索将深度学习模型迁移至微控制器的可行路径,基于MicroPython在Raspberry Pi Pico上实现神经网络核心组件,支持本地化推理,推动TinyML在边缘设备中的应用。
254 10
|
3月前
|
人工智能 算法 数据库
给AI装上一个'超级大脑':信息检索如何改变RAG系统的游戏规则
从传统检索方法到现代向量检索,通过一个购物助手的故事,直观展示了不同检索技术的原理与应用。学会这些技巧,让你的AI不再是「记忆只有金鱼长度」的大模型!
219 24
|
11月前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
606 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
3月前
|
机器学习/深度学习 人工智能 算法
当AI提示词遇见精密算法:TimeGuessr如何用数学魔法打造文化游戏新体验
TimeGuessr融合AI与历史文化,首创时间与空间双维度评分体系,结合分段惩罚、Haversine距离计算与加权算法,辅以连击、速度与完美奖励机制,实现公平且富挑战性的游戏体验。
|
4月前
|
人工智能 JSON 程序员
别再和AI玩文字游戏:JSON提示工程让AI乖乖按表填空
厌倦了和AI玩猜谜游戏吗?JSON提示工程来拯救你!用咖啡订单的方式和AI对话,让每次交互都精准到位,告别模糊不清的回复,迎接可预测的AI输出时代。