CELLULAR INTELLIGENCE · 元胞智能实验室
胞域
一个会进化的元胞世界
176 × 99 个格子。食物只按局部规则生长;每个个体只有 5×5 的视野, 和一套随机初始化的微型神经网络。没有老师,没有目标函数,也没有一只看不见的手—— 只有能量、死亡与突变。
下面这件事正在发生:觅食从随机游走,慢慢变成策略。
ECOLOGY / 生态
实时- 食物密度
- —
- 觅食效率
- —
- 出生 / 死亡
- —
- 最高世代
- —
HISTORY / 群体曲线
种群 — 食物 —上为种群,下为食物。涨落不是失败:食物被吃空、再慢慢长回来, 选择就发生在这种涨落里。
AGENT / 个体观察
未选中点击世界里的任意一个金色小点。
你能看到它的 5×5 视野,以及它此刻的九个动作概率。
模拟在浏览器里实时运行;没有服务器,也没有预录的动画。所有数字都来自此刻的这场演化。
HOW IT LEARNS
梯度是死亡。
这里没有反向传播,没有奖励函数,也没有哪一行代码在告诉个体「应该往食物多的地方走」。 网络权重起初是随机数;让它们变好的,只是那些没吃到食物的个体不再留下后代。
所以「智能」不是被设计出来的,而是被筛出来的。它也很窄: 只在这片格子、这个任务、这套规则里成立。
-
01
感知 · 只看身边
5×5 邻域的食物浓度、八邻域的拥挤程度、自己的能量与年龄,共 36 个输入。看不见全局,也看不见未来。
-
02
决策 · 一次前向
36 → 14 → 9。14 个 tanh 隐单元,9 个动作:八个方向,或留在原地。输出是概率,按温度采样,偶尔也乱走。
-
03
选择 · 能量就是全部
移动与呼吸都在耗能,吃到食物才能补。能量越过阈值就繁殖;归零就死。繁殖次数就是适应度,没有别的评分。
-
04
遗传 · 带噪声的复制
子代复制父代的 653 个权重,再逐个基因以小概率扰动。多数突变是坏的,坏的没有后代;偶尔一个突变让觅食更准,它就会扩散。
EVIDENCE / 证据
不要相信观感,跑一次对照。
点开「对照实验」:从当前种群取 60 个基因组,再生成 60 个随机基因组, 把它们放进两片完全相同(同一种子)的标准世界,各跑 700 tick。 比的不是谁更「像活的」,而是单位个体·tick 吃到了多少食物。
单次抽样会有噪声;它证明不了通用智能,只能证明在这片格子里, 选择确实把随机的决策推向更有效的决策。
还没有测量。跑一次对照,数字会填在这里。
读这个实验时,请保留三件事
- 它不是通用智能。它学会的只是这片世界里的局部策略:朝食物密度高的邻格走、别在没食物的边界上耗着。换一片规则不同的世界,它可能立刻变笨。
- 曲线会抖。种群与食物在涨落,效率是滑动平均;不要盯着小数点,看几代之后的趋势。
- 「代数」不是能力刻度。它只表示繁殖深度。一个第 40 代的个体,也可能只是运气好。
技术细节与参数
食物场。每个元胞每 tick 按
f ← clamp(f + r·φ·(f+ε)(1−f) + D·(∇²f))
更新:逻辑斯蒂增长、向四邻扩散、被个体取食。φ 是静态肥力图,ε 让裸地也能慢慢恢复。
网络。36 个输入,14 个 tanh 隐单元,9 个输出;softmax 温度 0.55,另有 4.5% 的随机动作。基因组 653 个浮点数,子代逐基因突变,突变率可在上方调。
选择。代谢 0.02 / tick,移动额外 0.006;单次取食上限 0.07。能量达到 14 且冷却结束就繁殖,亲代扣 8、子代得 6;能量归零或年龄超过 2400 死亡。
代码。规则在 js/cell-sim.js,界面与渲染在 js/cell.js。没有使用任何机器学习库;整个前向传播是几十行显式循环。