Neural Cellular Automata (NCA)
神经元胞自动机 (NCA) 利用学习得到的局部更新来生成图案、生长并自我修复,可应用于图形和图像分割。
神经元胞自动机 (NCA) 是一种机器学习模型,其中的网格单元使用共享的、经过学习的局部规则反复更新自身。每个单元都存储数值信息,并且只与附近的单元交互。这些细小的交互组合起来,能够生成复杂的图像、图案或预测。直观地说,就是教会单元彼此协作:许多局部更新共同产生所需的全局行为。
神经元胞自动机如何工作#
单元是一个计算单元,通常对应一个像素或体素——体素是像素在三维空间中的对应概念。单元的 状态 是由称为通道的一组数字构成的向量。有些通道表示可见输出,例如颜色或分割得分;其他通道则承载有助于协调的隐藏信息。
在每个步骤中,单元都会收集邻域信息,通常是一个 3×3 区域。一个小型神经网络会将这些信息转换为状态更新。每个单元使用相同的网络权重,但其状态和周围环境各不相同。邻域感知可以使用测量局部变化的滤波器,而学习得到的网络则决定如何响应。有些实现会在每个步骤随机选择要更新的单元,从而减少对同步更新的依赖。
反复更新可以让信息传播到直接邻域之外。单元无法直接检查整个网格,但可以接收经由相邻单元传播的信息。不断扩大的感受野有助于解释局部计算如何产生协调一致的大规模行为。
NCA 如何学习生长与再生#
训练会教会更新规则在若干步骤后产生预期结果。训练过程从初始状态开始,例如一个激活的种子单元,或一张带有额外隐藏通道的图像。模型运行一系列更新,然后通过损失函数衡量其输出与目标之间的差异。
反向传播会沿着这一序列反向传递误差信息,使优化器能够调整共享权重。这就是时间反向传播:更新规则的每次应用都会成为训练计算中的一个阶段。
学会达到目标,并不意味着系统也会自动学会维持目标。在生长型神经元胞自动机中,如果训练只要求图案在指定时刻与图像匹配,那么之后图案可能会逐渐退化。在训练中重复使用先前生成的状态,有助于增强持久性。擦除这些状态中的部分区域则能教会模型再生:幸存的单元会学着重建缺失部分。因此,自我修复是一种通过学习获得的行为,其可靠性取决于训练条件。
在图像与计算机视觉中的应用#
纹理生成是 NCA 的一项具体应用。从噪声开始,单元逐渐演化为类似参考纹理的图案。目标函数可以比较视觉特征统计信息,而不必要求逐像素精确复制。这与神经风格迁移有关,后者利用学习得到的图像特征来表示外观。
NCA 也支持实用的程序化图形工作流程。Houdini 的神经元胞自动机工具可以生成可平铺的图案,并提供局部旋转、缩放和更新的控制选项。这些控制选项让艺术家能够在图像或几何体上引导学习式图案生成过程。
在医学图像分割中,单元利用图像信息和邻近状态,生成像素级或体素级预测。Med-NCA通过紧凑的学习式更新网络展示了这种方法。在这里,输出是解剖结构掩码,而不是新生成的图像。
对于评估分割方法的开发者,Ultralytics YOLO 提供了一种实用的替代工作流程。YOLO26支持实例分割,能够生成独立的对象掩码、标签和置信度分数。其训练和验证工作流程可作为参考,帮助你在 NCA 实现中评估掩码质量和运行时间。
相关概念与实际局限#
NCA 对经典元胞自动机进行了扩展,通过学习局部转移规则取代手动指定规则。NCA 也类似于循环神经网络:相同的学习式计算会反复更新持久状态。NCA 的独特之处在于,这种状态分布在彼此进行局部交互的单元中。
紧凑的更新网络并不能保证推理速度快。远距离单元可能需要经过多次迭代才能协调起来,而更大的网格会增加计算量。训练还必须考虑通过连续更新进行求导所需的内存。这些成本在生成高分辨率输出时尤为重要。
方向性也是一个实际问题。在对方向敏感的生长型 NCA 中,旋转已经形成的图案可能会扰乱后续演化,因为单元的滤波器仍会按照固定的水平和垂直方向进行解读。各向同性 NCA通过让每个单元的感知不受网格方向影响来解决这个问题。因此,评估时应考察持续演化、受损后的恢复能力以及变换下的行为,而不应只看单帧输出的质量。










