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

相关文章

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

Spring @Scheduled注解及工作原理

《Spring@Scheduled注解及工作原理》Spring的@Scheduled注解用于标记定时任务,无需额外库,需配置@EnableScheduling,设置fixedRate、fixedDe... 目录1.@Scheduled注解定义2.配置 @Scheduled2.1 开启定时任务支持2.2 创建

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF