Go-Bigger访谈录|巧用模块化工作拆分法,锵锵三人行

2023-10-18 08:10

本文主要是介绍Go-Bigger访谈录|巧用模块化工作拆分法,锵锵三人行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2022年5月28日,OpenDILab举办了全球首届“AI球球大作战:Go-Bigger多智能体决策智能挑战赛”(以下简称“Go-Bigger决策智能挑战赛”)线上颁奖典礼及Workshop。

经过半年多的激烈角逐,最终有6支队伍从近1500支队伍中脱颖而出,获得15万赛事奖金。

比赛共设冠军、亚军各1名,优胜奖4名,共同瓜分15万赛事奖金,目前各类奖项得主已出。

OpenDILab将发布“Go-Bigger决策智能挑战赛访谈录”系列报道,为您揭秘挑战赛选手背后的故事。

玩个球队在本次Go-Bigger决策智能挑战赛中获得第4名的成绩。


2021年末,首届Go-Bigger多智能体决策智能挑战赛宣布开赛后,玩个球队队长温添在公众号上看到Go-Bigger比赛的相关信息。其中类似球球大作战的玩法以及多智能体决策模型让温添觉得非常有趣,便转发给了自己的好友潘登和戴维恒。戴维恒也对游戏智能体设计的这个领域非常感兴趣,而潘登正在寻找一个学习算法的好机会。三人一拍即合,说干就干,便组队参赛了。

三名成员都对Go-Bigger决策智能挑战赛非常地感兴趣。首先球球大作战这个主题对于这三个游戏爱好者而言吸引力满满。特别是在比赛中设计出具有自我决策能力的游戏AI,会让他们觉得充满了成就感。

其次,相比于传统的科创大赛,Go-Bigger决策智能挑战赛官方发布的baseline以及详尽的文档降低了这次比赛的参赛门槛。只需要有一定的Python编程基础就可以参加比赛了。另外就是这次比赛所采用的是天梯机制,让选手们之间互相PK来决定排名。这样的赛制显然比评委打分或者固定题目的测试来得更加刺激。潘登说他现在回忆起来,每天看天梯录像改进算法的日子还是很心潮澎湃的。


战术上的扬长避短

扬长避短,说起玩个球队的战术,队长温添用这四个字做了归纳总结。

玩个球队提交的模型并没有使用强化学习方法,而是将一些传统的算法作为其解决方案。温添认为,游戏智能体的设计其实不存在完美的战术。关键就是要发挥出自己的战术风格,并把它贯彻执行下去。在比赛中,成员们大目标不是去把智能体所有的方方面面都做得尽善尽美,而是找到自己最擅长的一个战术并最大可能地发挥它的优势同时规避它的弱点,这也正是扬长避短战术的精髓。

扬长避短战术可能看似简单,但是在这长达半年的比赛周期中,在执行上也遇到了不少的挑战。对此,温添和潘登借鉴了他们过往设计程序时的一些经验,采用模块化的开发方法来提高开发效率并保证设计的一贯性。队员们将游戏智能体按照功能划分为若干个小程序模块,每个小模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块间的互相协作完成整个游戏智能体的设计。

版本的控制是他们参赛过程中遇到的另外一个挑战。对此,潘登把比赛的游戏智能体比作开发一个互联网产品,它不可避免地要经历版本迭代的过程。三名成员除了还在学校的大学生,也有刚刚工作的职场新人。他们都认为自己对于版本迭代的流程还是比较陌生的,因此,他们也在版本更新的过程中格外地小心翼翼,生怕把扬长避短变成“扬短避长”,又或者在不断的变化中迷失了自我、原地踏步。而最终智能体完美的落地和在比赛中的精彩表现也让大家对自己版本控制的能力信心倍增。

| 战略上的持之以恒

如果说扬长避短是玩个球队的战术,那么持之以恒就是玩个球队的战略。

这次比赛,对于温添、潘登和戴维恒三人而言也是这特别的意义:这次Go-Bigger决策智能挑战赛是他们三人第一次从零到一地完成一个项目。在此之前,这三位游戏爱好者经常时不时地一起开发游戏。团队三人各有所长,兼顾了游戏制作中产品、开发、美工和运营等多个工种。但每次的项目却又总是半途而废。

戴维恒认为,这次比赛之所以能够坚持到最后,是因为比赛客观上给他们设置了一个具体的目标,并伴随着一个明确的时间流程。通过完成一个个模块化的“小目标”让他们最终达成了“大目标”。作为队长,温添也认为这是他们团队最大的收获和成就。

正所谓“DDL 是第一生产力”,戴维恒觉得坚持完赛也很好地提升了他们的时间规划能力。他说:“比赛中会有时间节点。这给我们提供了一个清晰的时间线,让我们明白什么时候该做什么事。”而实时排名又能让参赛者意识到比赛的竞争性。“知己知彼,方能百战不殆。这个天梯机制让可以清晰地看待我们和对手之间差距的变化”潘登补充到。

| 协作上的齐心协力

作为一个团队的比赛项目,协作的能力自然也是必不可少的。三名成员各有所长,也各有各的想法和思路。如果把每个人的每个想法都要实现出来验证,那难免要花费很多的时间。面对这样的机会成本问题,戴维恒设计了一个量化的衡量方案,即新开发的智能体要与旧版智能体对战要有70%以上的胜率才会被接纳。虽然这样的硬指标也会有它一定的局限性,但是它对团队整体进展推进的效率还是有不少提升的。

工作的接力也是协同开发中经常碰到的问题。在提到这个问题时,温添又一次提到了他之前分享过的模块化的工作拆分法:每位成员都研究自己负责的模块,同时,由队长对版本进行一个控制,以防止这个某个模块越改越弱的情况发生。

| 收获与展望

通过参与本次比赛,玩个球队的成员们都对于深度强化学习有了新的感受和体验。

主要负责技术的戴维恒同学觉得自己在强化学习实践上面得到了实实在在的锻炼。戴维恒同学对于大规模分布式强化学习一直都有着浓厚的研究兴趣,但是他在此之前并没有使用过大规模分布式RL的经验。通过这次赛事自己的实践和对其他选手战术的理解,戴维恒十分看好分布式RL在大型吃鸡类游戏中的使用价值。

一直想学习Python的潘登同学也借此机会摸索了一下算法。他也将智能体团队协作作为后续参加类似项目的发展方向。潘登提到,“因为我们的模型在单智能体策略上几乎达到瓶颈了,转向团队协作的话虽然难度很大,但上限也会更高”。

而队长温添则觉得自己和团队成员在协作能力和时间规划能力上得到了提升的同时,对深度强化学习的适用性有了更多的认识,温添认为目前强化学习的落地应用,主要局限在真实环境下的训练样本获取成本过高。一个可行的解决方案是建立一个足够逼真的仿真环境获取低成本训练样本(例如OpenAI的机器手,还有腾讯的机器狗),并加以微调,把模型部署在真实环境中使用。

对于智能体开发的整体的方向,队长温添还是认为,要扬长避短。因为智能体是无法做到面面俱到的,过于追求智能的完美反而会导致智能体表现不稳定。相反,在设计智能体前,应当找到一个主要的策略方向,并将其不断深入,把开发的策略(如贪婪发育/侵略进攻)利用到极致。

第一届Go-Bigger决策智能挑战赛刚刚落下了帷幕,温添、潘登和戴维恒三人已经开始憧憬起来下一届决策智能挑战赛起来了。对于下一届赛事,他们都希望有更多志同道合的小伙伴参与进来,能有更多的“球球”在深度强化学习的舞台上“PK 大作战”。

 

这篇关于Go-Bigger访谈录|巧用模块化工作拆分法,锵锵三人行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231301

相关文章

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

未来工作趋势:零工小程序在共享经济中的作用

经济在不断发展的同时,科技也在飞速发展。零工经济作为一种新兴的工作模式,正在全球范围内迅速崛起。特别是在中国,随着数字经济的蓬勃发展和共享经济模式的深入推广,零工小程序在促进就业、提升资源利用效率方面显示出了巨大的潜力和价值。 一、零工经济的定义及现状 零工经济是指通过临时性、自由职业或项目制的工作形式,利用互联网平台快速匹配供需双方的新型经济模式。这种模式打破了传统全职工作的界限,为劳动

Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content=

Go Select的实现

select语法总结 select对应的每个case如果有已经准备好的case 则进行chan读写操作;若没有则执行defualt语句;若都没有则阻塞当前goroutine,直到某个chan准备好可读或可写,完成对应的case后退出。 Select的内存布局 了解chanel的实现后对select的语法有个疑问,select如何实现多路复用的,为什么没有在第一个channel操作时阻塞 从而导