万事开头难? 喵小DI玩“羊了个羊”可不难

Hello,大家好呀,喵小DI又来了~最近大家是不是都在玩《羊了个羊》?

喵小DI也尝试了下,本来想着凭借本喵超高的智商,过第二关简直易如反掌,结果还是,惨败:(
 

万事开头难? 喵小DI玩“羊了个羊”可不难_第1张图片

喵小DI又尝试了N+1下,本来想着再凭借本喵超高的智商,过第二关还不易如反掌,结果还是,惨败:(

万事开头难? 喵小DI玩“羊了个羊”可不难_第2张图片

本喵只是运气不好而已,哼!

是时候秀一秀本喵的智商了!

本喵知道有很多朋友正在经历:

吃饭在打 

带薪蹲坑在打 

睡前在打 

梦里都在打 

......

但就是过不去第二关是怎么肥事 

所以本喵和 OpenDILab 的小伙伴们连夜打造了DI-sheep,尝试用深度强化学习来玩这个游戏。

欢迎大家体验DI-sheep:

https://github.com/opendilab/DI-sheep

滑到文章最后有彩蛋哦

千人千面的DI-sheep

这里给大家介绍下 DI-sheep 的几种特色玩法,大家可以去 repo 里尝试下。

(请注意,试玩 DI-sheep AI 是需要自己部署开源代码哦,后续我们会搭建 AI 助力版在线网页小游戏,敬请期待)

玩法一:乖巧型-AI指路

万事开头难? 喵小DI玩“羊了个羊”可不难_第3张图片

大家可以看到我们的主界面右下方的功能: AI 速通流

如果一直点这个功能键,你会发现 AI 还是有两下子,面前的小方块被 AI 自动消除得如此丝滑,nice!

玩法二:叛逆型-故意唱反调

万事开头难? 喵小DI玩“羊了个羊”可不难_第4张图片

部署好代码后,你会发现每走一步,都会有 AI 提示下一步应该选哪张牌。你也可以试试就不听 AI 的提示,绝对不点 AI 提示的每一张牌。和 AI 杠一杠,看看能否在“和 AI 对着干” 的玩法下闯过关卡。

玩法三:互补型-合作愉快

万事开头难? 喵小DI玩“羊了个羊”可不难_第5张图片

这种玩法中,你也可以把 AI 当成自己的军师,想自己选牌的时候就自己选,在需要 AI 帮助的时候就选择听取它的建议。

DI-sheep原理大揭秘

万事开头难? 喵小DI玩“羊了个羊”可不难_第6张图片

DI-sheep原理示意图

看到这里,相信会有很多朋友会迫切地想知道 DI-sheep 背后的算法原理了,其实这还是深度强化学习 + 游戏的又一结晶,要想教好一个强化学习智能体完这种三消小游戏,其实掌握以下几步就够了:

  • 状态编码:首先一定要把游戏玩法拉到 AI 的领域,在 AI 适合的领域里战胜它。在这个游戏中,我们将原始的游戏空间分解成全局信息,牌面信息,队列信息三部分,每一部分选择对应的特征工程手段把状态编码成具有魔力的“0和1”,举例来说:
    • 牌的位置关系复杂怎么办?只用理清楚游戏界面的最小粒度,比如 DI-sheep 的设定中总共有8个大格,每大格4个小格,那其实本质就是一个32+32两维坐标的网格界面,将某张牌左上角对应的坐标填入即可。
    • 想不出建模队列的方法?细心观察之后,发现一些很简单的原理,一局游戏里总的牌的类型是固定的,而队列中因为三消的原因,每种牌最多智能出现0,1,2三种情况,所以造一个“总牌数x3”的向量来表征即可,统计当前队列的情况并把位置的位置置1即可。

  • 表征学习:在提取好状态编码之后,我们就要借助神经网络的强大表征能力来建模数据间的复杂关系,通过一小段游戏试玩之后,我们可以总结出两个要点:
    • 需要建模牌面中多张牌之间的相互作用关系。
    • 牌面和队列最终近似可以看作一个查询匹配问题,即牌面的表征为query,队列的表征为key,去查询牌面中最适合的一项。

在理清逻辑之后,我们就可以使用现代深度学习的经典模型 MLP、Transformer 等模块来方便地抽表征啦~

  • 强化学习:将复杂的问题转化为标准的特征之后,我们就可以再结合强化学习的诸多经典算法,例如PPO,训练优化智能体输出离散动作的概率分布,并结合从游戏状态中得到的动作 mask ,挑选合理又有价值的动作,将智能体输出和动作和游戏接起来进行交互,就可以解锁各种各样的有趣玩法~

结语

而在 DI-sheep 的背后,也有着开源决策智能平台 OpenDILab 的支持。通过其中的决策智能引擎DI-engine, 来一键创建和调用经典的神经网络和强化学习算法即可实现,因此 DI-sheep 的代码也十分的简单,欢迎尝鲜:

环境定义代码:

https://github.com/opendilab/DI-sheep/blob/master/service/sheep_env.py

神经网络定义:

https://github.com/opendilab/DI-sheep/blob/master/service/sheep_model.py

训练主入口:

https://github.com/opendilab/DI-sheep/blob/master/service/sheep_ppo_main.py

当然, DI-engine 还有完整的算法支持、友好的用户接口以及弹性的拓展能力等诸多特性,期待开发者们解锁 AI + X 的各种可能性。

DI-sheep 项目还在不断开发中,将会在后续一个月内上线各种有趣玩法和 AI 在游戏上的原理解析,具体信息可以参考下方网址,也欢迎各种技术爱好者来提建议和加功能,让开源拥抱未来。

网址:

https://github.com/opendilab/DI-sheep#%E6%9B%B4%E6%96%B0%E8%AE%A1%E5%88%92

都滑到这里了,给 DI-engine 点一个 star ⭐️吧~​github.com/opendilab/DI-engine

而 DI-engine 的拓展能力则利用了框架内集成的消息组件和事件编程接口,让用户可以灵活地将基础研究工作拓展到工业级大规模集群当中。在游戏领域,别说《羊了个羊》,《星际争霸II》也不在话下!

欢迎大家来体验《星际争霸II》的智能体 DI-star:​github.com/opendilab/DI-star

谢谢你读到最后,最后的彩蛋送给你~

DI-sheep 版 羊了个羊

你可能感兴趣的:(强化学习,OpenDILab)