[控场AI]
· 5 分钟阅读· 2,598 字

每个模拟人都是Q学习器:子代继承母亲Q表并变异

每个模拟人都是Q学习器:子代继承母亲Q表并变异

文明沙盒中每个模拟人都是独立表格型Q学习器,子代继承母亲Q表并变异。

Reddit开发者展示的边项目「thehumanbox」在一个文明沙盒中让每个模拟人成为独立的表格型Q学习器,状态由手工字符串表示,动作空间约5000个,按生存优先级加ε-贪婪策略选择动作。最独特的设计是继承机制:新生儿获得母亲Q表的副本,其中约20%的值被微调(±0.03),使行为沿家族谱系漂移,同时孩子还混合父母特质并继承母亲词汇与部落态度。项目用Rust编写并编译为WebAssembly,完全在浏览器中运行,代码以MIT协议开源。开发者承认状态空间和奖励函数均为手工设计,主动寻求RL社区对这两点的反馈,并抛出表格型Q学习在复杂非平稳多智能体环境中是否仍有生命力等问题。

一个文明沙盒的另类尝试:把每个人都变成表格型Q学习器

在强化学习(RL)领域,多智能体模拟通常让每个智能体共享一个策略网络,或者用集中式训练分散执行。但 Reddit 上一位开发者展示的边项目却走了另一条路:在一个文明沙盒中,每个模拟人都是一个独立的表格型Q学习器(tabular Q-learner),而且新生儿会继承母亲的Q表,并伴随小幅变异。这个项目名为「thehumanbox」,代码用 Rust 编写并编译为 WebAssembly,完全在浏览器中运行。

据开发者描述,这个沙盒的规模不小:每个模拟人的状态空间由手工构建的短字符串表示,涵盖饥饿、口渴、最近的食物和水源、附近的亲属、住所、危险等感知信息。动作空间约有 5000 个可能动作,受时代、年龄、地点以及部落已发现的技术限制。动作选择会优先处理生存需求,然后基于已学到的值执行 ε-贪婪策略。

reddit source: every person in my sim is a tabular q-learner and kids inherit a mutated copy of mom's q-table

继承机制:Q表的“家族漂移”

这个项目最吸引人的设计在于学习在代际间的传递方式。当一个婴儿出生时,它会获得母亲Q表的一份副本,其中约 20% 的值会被微调(±0.03)。这意味着除了个体在一生中的学习之外,行为还会沿着家族谱系发生漂移。此外,孩子的特质从父母双方混合并变异,还会继承母亲的词汇表以及她对其他部落的态度。

开发者坦言,这种设计是想探索“学习结果作为可遗传单位”的可行性。从强化学习角度看,这相当于把Q表当作一种“行为基因组”,让进化压力和个体学习在同一时间尺度上交织。

ε-贪婪策略(ε-greedy) 是强化学习中最常用的探索-利用平衡策略。智能体以概率 ε 随机选择一个动作(探索),以概率 1-ε 选择当前估计Q值最高的动作(利用)。ε 通常随时间衰减,使智能体从早期大量探索逐渐转向利用已学知识。在本项目中,动作选择还叠加了生存需求优先级:当饥饿或口渴等指标超过阈值时,会优先执行对应动作,再在剩余动作中按 ε-贪婪选择。这种「规则+学习」的混合设计在复杂沙盒中很常见,因为纯 ε-贪婪在动作空间约5000时随机探索效率极低,手写优先级能大幅加速早期学习。

已知弱点:手工状态与奖励塑形

开发者很清楚这个设置的局限性,并主动寻求反馈。两个主要弱点是:状态空间是手工构建的字符串,奖励函数也是手工塑形的(hand-shaped)。这两点在传统RL研究中都是敏感话题——手工状态表示难以泛化,手工奖励则容易引入偏见或导致非预期行为。不过,对于文明沙盒这类复杂系统,完全端到端的学习目前仍不现实,手工设计往往是必要的妥协。

奖励塑形(reward shaping) 指在原始稀疏奖励之外人为添加辅助奖励信号,以引导智能体更快学到期望行为。例如在文明沙盒中,除了「存活」这一最终目标,可能还会对喝水、进食、靠近住所等子目标给予小额奖励。塑形能显著缓解稀疏奖励下的学习困难,但经典理论(如 Ng 等人 1999 年的工作)指出,不恰当的塑形会改变最优策略,使智能体追逐辅助奖励而非真实目标,即「奖励黑客」。开发者所说的「手工奖励容易引入偏见或导致非预期行为」正是指这一风险。在文明模拟这类难以定义单一标量目标的开放环境中,如何设计塑形项本身就是核心难题。

技术实现:Rust + WASM 的浏览器模拟

项目用 Rust 编写并编译为 WebAssembly,使得整个文明模拟可以在浏览器中运行,无需后端。相关代码位于开源仓库(MIT 协议)的 crates/sim-core/src/sim/agents/growth.rs(继承逻辑)和 organism/organism/learning.rs(Q表更新)。开发者还提供了在线试玩地址,方便感兴趣的人直接体验。

WebAssembly(WASM) 是一种可移植的二进制指令格式,现代浏览器可直接高效执行。Rust 编译到 WASM 后,能在浏览器中以接近原生的速度运行计算密集型逻辑,同时通过 JavaScript 胶水代码与页面交互。对本项目而言,这意味着整个多智能体模拟——包括成千上万个Q表的更新和动作选择——都在客户端完成,无需服务器算力,也便于任何人打开网页即试玩。代价是WASM模块与JS之间的数据传递需要序列化,且调试体验不如原生。这种「Rust+WASM」组合近年来在游戏、模拟和边缘计算类边项目中越来越流行。

值得RL社区讨论的几个点

这个项目虽然是个边项目,但触及了几个有趣的问题:表格型Q学习在高度复杂、非平稳的多智能体环境中是否还有生命力?Q表继承加变异是否能有效加速适应?手工奖励和手工状态在文明模拟中应该如何权衡?开发者明确表示好奇 RL 社区的看法,尤其是对状态空间和奖励设计的意见。

对于喜欢多智能体模拟和进化计算的人来说,这个项目提供了一个可运行、可修改的沙盒,或许能激发出更多关于“学习与进化结合”的讨论。

表格型Q学习器(tabular Q-learner) 是强化学习中最基础的一类值函数方法。它用一个显式的查找表(通常是字典或二维数组)来存储每个「状态-动作」对的Q值,即估计的长期回报。智能体在每一步根据当前状态查询表中对应行,选择Q值最高的动作(或按ε-贪婪策略探索),然后用时序差分(TD)误差更新被选中动作的Q值:

$$Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_{a'} Q(s',a') - Q(s,a)]$$

其中 $\alpha$ 是学习率,$\gamma$ 是折扣因子。与深度Q网络(DQN)用神经网络泛化状态不同,表格型方法对每个状态单独记忆,因此没有泛化能力,但胜在可解释、更新简单,且天然适合「把表当作可复制对象」的场景。在本项目中,Q表就是每个模拟人的全部行为知识,继承Q表即继承了一套完整的状态-动作价值映射。

#表格型Q学习#多智能体模拟#Q表继承#强化学习#文明沙盒#Rust WASM#进化计算
分享:

相关推荐