新智元报道
编辑:KingHZ
人工生命的革命来临!帝国理工的研究人员,开源了名为 CAX 的硬件加速工具。只需几行代码,就能复刻人工生命实验,模拟速度可提升 2000 倍,部分表现甚至超过了 GPT-4!
人工生命研究的新纪元!
「人工生命」(artificial life,或简写为 ALife),旨在模拟生命的行为、特性和演化过程,理解生命的本质,涉及涌现现象、自组织系统或形态发生机制。
人工生命(ALife)的研究中,蕴含着能够推动和加速 AI 进步的重要启发和灵感。
人工生命中两类不同的 Lenia 系统,见下图。
对实验人员而言,拥有高效的实现当然非常关键。
而开源工具 CAX 将人工生命的模拟速度,提升了最多 2000 倍!
伦敦帝国理工学院的博士生、做过 Sakana AI 的实习生 Maxence Faldor,在X上激动地发布 CAX v0.2.0!
开源工具库 CAX:专为加速人工生命研究而设计
CAX 支持离散系统和连续系统,包括神经细胞自动机(Neural Cellular Automata,NCA),而且适用于任意维度。
不止于传统的细胞自动机,它还能处理粒子系统等多种模型,所有功能都整合在一个直观易用的统一 API 中。
X 用户 JJ Walker 星标推荐 CAX,表示 CAX 将颠覆人工生命研究,更新后的版本既快又好用。
介绍 CAX 的论文,已经入选 ICLR 2025 Oral。
论文链接:https://openreview.net/pdf?id=o2Igqm95SJ
项目链接:https://github.com/maxencefaldor/cax
更多人工生命的实例:
基于注意力机制的人工生命:神经细胞自动机
人工生命研究新纪元
如果你对涌现现象、自组织或形态发生机制感兴趣,开源的 CAX 不容错过。
CAX 是基于 JAX 的高性能、灵活的软件库,专为加速细胞自动机研究而设计,包括离散细胞自动机,连续细胞自动机和神经细胞自动机。
图1:CAX 支持的多种细胞自动机
CAX 提出了一种统一各类细胞自动机的框架。
这种灵活的架构由两个核心模块构成:感知模块(perceive module)和更新模块(update module)。
这两个模块共同定义了细胞自动机的局部规则。
图2:CAX 架构图
从经典模型,比如基本细胞自动机和康威的生命游戏,到更高级的应用,比如可生长的神经细胞自动机和能自我分类的 MNIST 数字,CAX 将模拟速度提升了最多 2000 倍。
图3:CAX 的性能基准测试
图 3 左:CAX 与 CellPyLib 在经典细胞自动机上的模拟速度对比。对于基本细胞自动机,CAX 提升了 1400 倍的速度;对于康威生命游戏,提升了 2000 倍。
图 3 右:CAX 官方 TensorFlow 实现的神经细胞自动机实验训练速度对比。在自分类 MNIST 数字任务中,CAX 实现了 1.5 倍的训练加速。
几行代码,一窥上帝造物
为了展示 CAX 的灵活性,研究者展示了三个新颖的细胞自动机实验。
得益于 CAX 的模块化架构,每个实验只用几行代码,就实现了。
实验1: 扩散模型的启发
研究团队提出了一种新颖的神经细胞自动机(NCA)训练方法,其灵感来源于扩散模型。
不同于传统的基于生长(growth-based)的方法,新方法通过在固定步骤内训练 NCA 去除图像噪声。
图4:受到扩散模型的启发,NCA 学会在固定的步数内对图像进行去噪
结果显示,这种方法能带来更稳定的动态表现。
当研究者引入人为破坏(例如切断壁虎的尾巴)时,基于扩散的 NCA 展现出自发的再生能力,而传统的生长型 NCA 则需要专门训练才能实现类似效果。
图5:与需要专门训练才能实现再生和恢复能力的生长型 NCA 相比,基于扩散的 NCA 展现出自发的再生能力和更稳定的表现
实验2:MNIST 数字自编码
在这次实验中,研究者使用3D 神经元胞自动机(3D NCA),并将一个面初始化一个 MNIST 手写数字。
NCA 的目标是学习一套规则,把这个 MNIST 数字复制到对面的那一面(红色那面)。
不过,中间有一个掩膜(mask)区域,阻止细胞进行更新。
图6:三维 NCA 以一个 MNIST 数字图像作为初始输入(左侧);经过学习后,NCA 能够在对面的红色面上重建出该数字(右侧)
关键是,遮罩中间留了一个仅有一格宽的孔洞,作为信息传递的最小通道。
为了成功地在对面复制出 MNIST 数字,NCA 必须发展出一套能够对 MNIST 数字进行编码和解码的规则。
图7:上排展示的是测试集中原始的数字图像,下排则是对应的重建结果,这些重建图像出现在 NCA 的红色面上
实验3:超过 GPT-4 的推理能力
最后,在 1D-ARC 数据集上训练一个一维 NCA。
这个数据集是 ARC 数据集(Abstraction and Reasoning Corpus,抽象与推理语料库)的简化版本。
原版 NCA:左图可以看到展示任务特点的输入/输出对;中间是当前的测试输入网格;右侧则是用来构建对应输出网格的控制选项
NCA 需要通过不断应用自身的规则,将输入图案逐步转化为目标图案。
以下是每个任务的时空图。
每张图像的顶行像素是输入。随后的像素行展示了 NCA 在尝试将输入转换为目标时的中间步骤。底行像素代表了 NCA 的最终输出。
令人惊讶的是,1D-ARC NCA 在这个数据集上的表现超过了 GPT-4!
在 1D-ARC 简化数据集上,NCA 准确率达 60.12%,优于 GPT-4 的 41.56%。
NCA 在涉及移动、模式复制和去噪的任务中表现出色,展示了其在抽象推理任务中的潜力。
人工生命:细胞自动机
细胞自动机(cellular automaton),也叫元胞自动机,是一种简单的计算模型,由规则排列的单元格\细胞(cells)组成,每个单元格处于某种特定状态。
这种网格可以具有任意有限维度。
在每个单元格周围,会根据一定规则定义「邻域」(neighborhood),即与它相关联的一组单元格。
在每一个离散的时间步骤中,整个网格会根据一条固定的规则进行更新。
这个规则会依据每个单元格当前的状态以及其邻域中单元格的状态,来决定该单元格在下一时刻的状态。
比如,数学家 John Conway 创建了一种特殊的细胞自动机——生命游戏。
在生命游戏中,每个细胞(单元格)或死或活,其中黑色方块代表活细胞,白色方块代表死细胞。
随着模拟运行,细胞在死和活之间的切换规则如下:
1. 如果周围活细胞少于两个,任何活细胞则死亡。
2. 如果周围活细胞超过三个,任何活细胞则死亡。
3. 如果周围有两个或三个活细胞,任何活细胞则保持不变,传递到下一代。
4. 如果周围恰好有三个活细胞,任何死细胞则会复活。
利用 CAX,可以同时模拟多个生命游戏。
其中每个游戏,都可以统计存活「邻居」的数量和生长率。
加速原理:可控元胞自动机
元胞自动机与循环卷积神经网络(Recurrent Convolutional Neural Networks,R-CNN)之间的紧密联系,已经被许多研究者观察到。
例如,Mordvintsev 等人提出的通用 NCA 架构可被概念化为一种「带有逐单元 dropout 的循环残差卷积神经网络」。
文章链接:https://distill.pub/2020/growing-ca/
可控元胞自动机(Controllable Cellular Automaton,CCA)是元胞自动机(CA)的扩展,具备在每个时间步接受外部输入的能力。
可控元胞自动机形式化了 Sudhakaran 等人提出的目标引导神经元胞自动机(Goal-Guided NCA)概念。
论文链接:https://arxiv.org/abs/2205.06806
外部输入可以修改 CCA 的行为,从而使其能够在保持元胞自动机基本原理的同时,动态响应不断变化的条件或控制信号。
CCA 通过引入对外部输入的响应机制扩展了传统细胞自动机的能力,其原理类似于循环神经网络处理序列数据。
可控元胞自动机架起了循环卷积神经网络与元胞自动机之间的桥梁,开辟了模拟复杂系统的新可能性,这些系统既具备自主的涌现行为,又能响应外部控制。
CAX 利用了元胞自动机与循环卷积神经网络(R-CNN)之间已建立的紧密联系。
这种协同作用,让 CAX 能够借助机器学习领域的最新进展,用于加速元胞自动机研究。
为什么选择 CAX?
CAX 具有多重设计目标:为复杂系统研究提供1. 高速、2. 高质量、3. 文档完备且4. 高度灵活的系统实现。
CAX 绝非仅是对现有细胞自动机(CAs)的硬件加速实现,而是一个完整的框架体系。
其中目标 4 通过统一抽象层实现——该架构不仅整合了各类复杂系统,更支持快速扩展或从零构建新系统。
CAX 确实提供特定的抽象框架。
虽然底层采用 JAX 实现高效卷积运算,但其抽象层级具有更广泛的适用性。
特别值得一提的是,更新后 v0.2.0 版本新增了灵活日志工具,可在保持 JAX 加速模拟的同时集成测量功能——这能满足并行计算需求。
CAX 支持离散系统和连续系统,包括神经细胞自动机,且适用于任意维度。不仅涵盖传统的细胞自动机,它还能处理粒子系统等模型,并将这一切整合在一个统一、直观的 API 中。
CAX 提供了超过 15 种可直接使用的系统。
从模拟一维基本细胞自动机,到训练三维自编码神经细胞自动机,甚至是创建精美的 Lenia 模拟,CAX 都能为探索自组织系统的丰富世界,提供多功能的平台。
CAX 构建于 JAX/Flax 生态系统之上,拥有极高的运行速度和可扩展性。
它支持在 CPU、GPU 和 TPU 等各种硬件加速器上进行向量化和并行化操作。
用户可以几乎不用修改代码,就能将实验从小规模原型扩展到大规模模拟。
参考资料:
https://x.com/maxencefaldor/status/1914180979968860444
https://x.com/maxencefaldor/status/1842211478796918945