现有的Multi-agent框架从用途上可分为两类,一类为Agent赋予不同的角色以实现外部目标,另一类为Agent赋予尽可能类似人类的思维机制探索Agent与Agent在交互之间涌现出的社会表现。
然而,在社会模拟这一方向的multi-agent框架中,很少有人关注群体的决策行为与个体权力分配的关系。 而这一点对实现真实的社会模拟十分重要,当前的multi-agent框架在进行决策行为更多基于多数表决,而在现实世界中,群体的决策往往受到不平等群体地位的影响,如在公司决策过程中,部分决策并非简单基于少数服从多数的考量,而是与群体中权力分配相关。拥有核心话语权(老板,组长)的人或者群体往往会影响群体的决策,而这一点在现有的multi-agent框架中并未得到体现。
我们希望从组织行为学中的权力分配理论出发,设计一个multi-agent框架,使得在群体决策中,权力分配的不平等能够影响群体的决策行为。 (还并未找到一个较好的理论进行建模) 而为了观测群体决策对群体本身的影响,我们希望构建一个Group之间的通信框架,形成 Agent - Group - Environment的三层结构,使得群体决策能够影响其他群体的表现,进而反馈式的影响群体内部的权力分配与决策形成过程。
基于此,SwarmAgent有以下两个特点:
- 基于权力分配理论的群体决策机制
- 基于真实世界Group分布的环境(env)
同时,Swarmagent的simulation并不会GA跟HA那样,完全的贴近生活情景,而是针对现实社会中的群体决策行为进行模拟。因此在具体的Simulation过程中,我们将更多关注Group中信息传递行为与决策行为,而忽略掉日常化的生活举动。
主体结构
- Agent
- Group
- Environment
- Time step
与方案一相比,方案二的主要差异在于对Time-step的引入。是否引入Time-step这一机制的差异是显著的,Time=step的引入使得以下多种机制得以实现
- 更真实的群体结构,Agent可以从属于多个Group,只有处于Group的环境之中时才能参与该Group的信息交流
- 更真实的信息传递,Group之间的信息传递由单一的显式信息传递变为显式隐式结合的信息传递,Group之间的信息可以通过共同Agent隐式传递
- 更真实的个体规划,考虑到1的特性,Group需要根据获取信息的重要性及时调整自己的规划,从而帮助群体作出更好的决策
TODO 需要一个可视化的东西
这一部分是代码实现的核心,但并不是论文创新点的核心
- Profile设计 —— 性格上可以参考最近的Role Play论文,在决策观点的坚持程度上可能要单独设计
- memory结构设计 —— 大体上参考generative Agents,但是在记忆的检索机制上要有所改变
- 记忆检索机制修改
- 记忆上下文部分
- Reflection/Summary机制 —— 主要体现在脱离一个群体的时候,需要对之前的对话记录以及观点进行总结/提炼出自己在查看这些记录之后更深的观点
- Planning机制 —— 需要一个根据观点重要程度判断是否需要改变Plan的方法,这一部分需要实现即时Plan与预先Plan
- Action设计
- Prompt驱动的Action代码模块设计
- 外部Action设计(考虑一下需要什么样子的Action能够增加模拟程度)
整体来说读的论文没那么多,找时间参考两篇综述文章里的memory模块读一下
这一部分是论文创新点的核心,也是代码实现的核心
Group部分主要关注以下几点:
- Group的mode范围,从信息传递的角度思考,我们将Group种类主要分为[conference,home,web discussion] 这三种场景,从左向右,每种场景的决策分配机制不同,所分配的Group Action也不同
- Group Memory设计,Group会存储对应时间步的对话历史记录,但是参与进去的Agent不会完全存储,而是进行一个记忆的总结与抽取
- Conference mode Group实现(当前实现是使用poweragent作为唯一权力集合)
- 可以在Profile部分设置时,对公司类型的职位进行设计,每次会议开始时会根据当前Group环境内的Agent职位决定谁是PowerAgent
- Home mode Group 实现(Home类型其实主要代表是消费者决策)
- Web Discussion Group实现
- 参考RecAgents的不同时间上线人数,可以对WebDiscussion中的Agent进行分配
- 设计一个机制,使得参与到Group中的Agent可以选择发言/不发言(也许是与Profile中的性格),并获取最近n条信息对自己观点的影响
- 设置主题,使得Agent能够想起参与哪一个Web Discussion Group
这一部分是论文创新点的核心,代码实现上还没啥思路
- 时间步机制,Agent会在初始时间进行一天的规划,并根据对应的时间步到达相应的Group环境中产生信息传递
- 信息传递机制,Environment会Publish Group的决策作为信息的显式传递,而参与不同Group的Agent又会根据自己的总结记忆在Group内讨论,形成消息的隐式传播
- 实验效果展示,可能也需要Phaser那样的页游?没想好怎么展示实验效果
这里需要画一个图,样子会类似于那种时序图,然后展示出来每个时间步上的场景差异
很重要的部分,但是不知道怎么评价还?
- 看社会模拟的论文的实验方法
- GAIA阅读
Planning 模块 给出时间步的JSON输出 Environment设置一个最小时间单元,在每一轮过去的时候,总结Group内有哪些人 根据Environment的信息决定是否进行讨论 Publish的时间设置 消息的传递 - 显传递:publish,隐传递:Agent提炼对话,生成一个观点 说什么?最有可能说什么? 第一步先不讨论Home跟Web Discussion的决策功能,这些Group可以先作为一个常见的场景 生成模块,如何给一个想法,然后让大模型生成相应的故事线
效果 消融实验
- 产业模拟 : 一个是不用群体决策理论,一个是使用的,让饰演者来判断决策好坏
- Profile在不同的Group中应该有不同的体现(web discussion 部分透明,Home Profile相对透明)
- Profile进一步讨论 —— 性格,社会地位,职业,决策风格这种的
- 给一个场景,生成出所有的信息,然后让其自己运行(Generation的设计)
- 作用:画一个很大的饼
- 下一步:讨论Profile如何设计
- 公司决策机制 —— 从现实的公司去做抽象,分成多种的
- 行业协会 —— 整体协调
- web discussion的细分类型
如何实验:给一个场景,generate一些成分,然后自行模拟,查看这个跟现实世界的差异
现在是可以抽象成四种,第一种的话是一个直接利益相关的一个群体,叫公司啊,第二种的话,我们会把它考虑成一种完全利益不相关,然后信息是一个部分透明的一个。群体是work discussion第三个的话就可能会是类似于一个利益相关方,他一起去做一个讨论,这个的话是一个行业协会,我们还这样,暂且是这样叫一下。然后第四个的话,可能就是一个家庭,他更多的来说,他不会做出一些决策,或者说做出一些说怎么怎么样,他更多的一个作用就是说给这个agent提供一个比较合适的出发点,然后同时也去给这个。也去在家庭交流过程中去改变某一些影响,就是他会比very discussion更容易去改变认知,而we discussion更多就是说是获取信息、总结信息这样的一个东西。