幾行代碼,一窺上帝造物!帝國(guó)理工開源CAX,引爆人工生命新紀(jì)元
人工生命研究的新紀(jì)元!
「人工生命」(artificial life,或簡(jiǎn)寫為ALife),旨在模擬生命的行為、特性和演化過程,理解生命的本質(zhì),涉及涌現(xiàn)現(xiàn)象、自組織系統(tǒng)或形態(tài)發(fā)生機(jī)制。
人工生命(ALife)的研究中,蘊(yùn)含著能夠推動(dòng)和加速AI進(jìn)步的重要啟發(fā)和靈感。
人工生命中兩類不同的Lenia系統(tǒng),見下圖。
對(duì)實(shí)驗(yàn)人員而言,擁有高效的實(shí)現(xiàn)當(dāng)然非常關(guān)鍵。
而開源工具CAX將人工生命的模擬速度,提升了最多2000倍!
倫敦帝國(guó)理工學(xué)院的博士生、做過Sakana AI的實(shí)習(xí)生Maxence Faldor,在X上激動(dòng)地發(fā)布CAX v0.2.0!
開源工具庫(kù)CAX:專為加速人工生命研究而設(shè)計(jì)
CAX支持離散系統(tǒng)和連續(xù)系統(tǒng),包括神經(jīng)細(xì)胞自動(dòng)機(jī)(Neural Cellular Automata,NCA),而且適用于任意維度。
不止于傳統(tǒng)的細(xì)胞自動(dòng)機(jī),它還能處理粒子系統(tǒng)等多種模型,所有功能都整合在一個(gè)直觀易用的統(tǒng)一API中。
X用戶JJ Walker星標(biāo)推薦CAX,表示CAX將顛覆人工生命研究,更新后的版本既快又好用。
介紹CAX的論文,已經(jīng)入選ICLR 2025 Oral。
論文鏈接:https://openreview.net/pdf?id=o2Igqm95SJ
項(xiàng)目鏈接:https://github.com/maxencefaldor/cax
更多人工生命的實(shí)例:
基于注意力機(jī)制的人工生命:神經(jīng)細(xì)胞自動(dòng)機(jī)
人工生命研究新紀(jì)元
如果你對(duì)涌現(xiàn)現(xiàn)象、自組織或形態(tài)發(fā)生機(jī)制感興趣,開源的CAX不容錯(cuò)過。
CAX是基于JAX的高性能、靈活的軟件庫(kù),專為加速細(xì)胞自動(dòng)機(jī)研究而設(shè)計(jì),包括離散細(xì)胞自動(dòng)機(jī),連續(xù)細(xì)胞自動(dòng)機(jī)和神經(jīng)細(xì)胞自動(dòng)機(jī)。
圖1:CAX支持的多種細(xì)胞自動(dòng)機(jī)
CAX提出了一種統(tǒng)一各類細(xì)胞自動(dòng)機(jī)的框架。
這種靈活的架構(gòu)由兩個(gè)核心模塊構(gòu)成:感知模塊(perceive module)和更新模塊(update module)。
這兩個(gè)模塊共同定義了細(xì)胞自動(dòng)機(jī)的局部規(guī)則。
圖2:CAX架構(gòu)圖
從經(jīng)典模型,比如基本細(xì)胞自動(dòng)機(jī)和康威的生命游戲,到更高級(jí)的應(yīng)用,比如可生長(zhǎng)的神經(jīng)細(xì)胞自動(dòng)機(jī)和能自我分類的MNIST數(shù)字,CAX將模擬速度提升了最多2000倍。
圖3:CAX的性能基準(zhǔn)測(cè)試
圖3左:CAX與CellPyLib在經(jīng)典細(xì)胞自動(dòng)機(jī)上的模擬速度對(duì)比。對(duì)于基本細(xì)胞自動(dòng)機(jī),CAX提升了1400倍的速度;對(duì)于康威生命游戲,提升了2000倍。
圖3右:CAX官方TensorFlow實(shí)現(xiàn)的神經(jīng)細(xì)胞自動(dòng)機(jī)實(shí)驗(yàn)訓(xùn)練速度對(duì)比。在自分類MNIST數(shù)字任務(wù)中,CAX實(shí)現(xiàn)了1.5倍的訓(xùn)練加速。
幾行代碼,一窺上帝造物
為了展示CAX的靈活性,研究者展示了三個(gè)新穎的細(xì)胞自動(dòng)機(jī)實(shí)驗(yàn)。
得益于CAX的模塊化架構(gòu),每個(gè)實(shí)驗(yàn)只用幾行代碼,就實(shí)現(xiàn)了。
實(shí)驗(yàn)1: 擴(kuò)散模型的啟發(fā)
研究團(tuán)隊(duì)提出了一種新穎的神經(jīng)細(xì)胞自動(dòng)機(jī)(NCA)訓(xùn)練方法,其靈感來源于擴(kuò)散模型。
不同于傳統(tǒng)的基于生長(zhǎng)(growth-based)的方法,新方法通過在固定步驟內(nèi)訓(xùn)練NCA去除圖像噪聲。
圖4:受到擴(kuò)散模型的啟發(fā),NCA學(xué)會(huì)在固定的步數(shù)內(nèi)對(duì)圖像進(jìn)行去噪
結(jié)果顯示,這種方法能帶來更穩(wěn)定的動(dòng)態(tài)表現(xiàn)。
當(dāng)研究者引入人為破壞(例如切斷壁虎的尾巴)時(shí),基于擴(kuò)散的NCA展現(xiàn)出自發(fā)的再生能力,而傳統(tǒng)的生長(zhǎng)型NCA則需要專門訓(xùn)練才能實(shí)現(xiàn)類似效果。
圖5:與需要專門訓(xùn)練才能實(shí)現(xiàn)再生和恢復(fù)能力的生長(zhǎng)型NCA相比,基于擴(kuò)散的NCA展現(xiàn)出自發(fā)的再生能力和更穩(wěn)定的表現(xiàn)
實(shí)驗(yàn)2:MNIST數(shù)字自編碼
在這次實(shí)驗(yàn)中,研究者使用3D神經(jīng)元胞自動(dòng)機(jī)(3D NCA),并將一個(gè)面初始化一個(gè)MNIST手寫數(shù)字。
NCA的目標(biāo)是學(xué)習(xí)一套規(guī)則,把這個(gè)MNIST數(shù)字復(fù)制到對(duì)面的那一面(紅色那面)。
不過,中間有一個(gè)掩膜(mask)區(qū)域,阻止細(xì)胞進(jìn)行更新。
圖6:三維NCA以一個(gè)MNIST數(shù)字圖像作為初始輸入(左側(cè));經(jīng)過學(xué)習(xí)后,NCA能夠在對(duì)面的紅色面上重建出該數(shù)字(右側(cè))
關(guān)鍵是,遮罩中間留了一個(gè)僅有一格寬的孔洞,作為信息傳遞的最小通道。
為了成功地在對(duì)面復(fù)制出MNIST數(shù)字,NCA必須發(fā)展出一套能夠?qū)NIST數(shù)字進(jìn)行編碼和解碼的規(guī)則。
圖7:上排展示的是測(cè)試集中原始的數(shù)字圖像,下排則是對(duì)應(yīng)的重建結(jié)果,這些重建圖像出現(xiàn)在NCA的紅色面上
實(shí)驗(yàn)3:超過GPT-4的推理能力
最后,在1D-ARC數(shù)據(jù)集上訓(xùn)練一個(gè)一維NCA。
這個(gè)數(shù)據(jù)集是ARC數(shù)據(jù)集(Abstraction and Reasoning Corpus,抽象與推理語(yǔ)料庫(kù))的簡(jiǎn)化版本。
原版NCA:左圖可以看到展示任務(wù)特點(diǎn)的輸入/輸出對(duì);中間是當(dāng)前的測(cè)試輸入網(wǎng)格;右側(cè)則是用來構(gòu)建對(duì)應(yīng)輸出網(wǎng)格的控制選項(xiàng)
NCA需要通過不斷應(yīng)用自身的規(guī)則,將輸入圖案逐步轉(zhuǎn)化為目標(biāo)圖案。
以下是每個(gè)任務(wù)的時(shí)空?qǐng)D。
每張圖像的頂行像素是輸入。隨后的像素行展示了NCA在嘗試將輸入轉(zhuǎn)換為目標(biāo)時(shí)的中間步驟。底行像素代表了NCA的最終輸出。
令人驚訝的是,1D-ARC NCA在這個(gè)數(shù)據(jù)集上的表現(xiàn)超過了GPT-4!
在1D-ARC簡(jiǎn)化數(shù)據(jù)集上,NCA準(zhǔn)確率達(dá)60.12%,優(yōu)于GPT-4的41.56%。
NCA在涉及移動(dòng)、模式復(fù)制和去噪的任務(wù)中表現(xiàn)出色,展示了其在抽象推理任務(wù)中的潛力。
人工生命:細(xì)胞自動(dòng)機(jī)
細(xì)胞自動(dòng)機(jī)(cellular automaton),也叫元胞自動(dòng)機(jī),是一種簡(jiǎn)單的計(jì)算模型,由規(guī)則排列的單元格\細(xì)胞(cells)組成,每個(gè)單元格處于某種特定狀態(tài)。
這種網(wǎng)格可以具有任意有限維度。
在每個(gè)單元格周圍,會(huì)根據(jù)一定規(guī)則定義「鄰域」(neighborhood),即與它相關(guān)聯(lián)的一組單元格。
在每一個(gè)離散的時(shí)間步驟中,整個(gè)網(wǎng)格會(huì)根據(jù)一條固定的規(guī)則進(jìn)行更新。
這個(gè)規(guī)則會(huì)依據(jù)每個(gè)單元格當(dāng)前的狀態(tài)以及其鄰域中單元格的狀態(tài),來決定該單元格在下一時(shí)刻的狀態(tài)。
比如,數(shù)學(xué)家John Conway創(chuàng)建了一種特殊的細(xì)胞自動(dòng)機(jī)——生命游戲。
在生命游戲中,每個(gè)細(xì)胞(單元格)或死或活,其中黑色方塊代表活細(xì)胞,白色方塊代表死細(xì)胞。
隨著模擬運(yùn)行,細(xì)胞在死和活之間的切換規(guī)則如下:
1. 如果周圍活細(xì)胞少于兩個(gè),任何活細(xì)胞則死亡。
2. 如果周圍活細(xì)胞超過三個(gè),任何活細(xì)胞則死亡。
3. 如果周圍有兩個(gè)或三個(gè)活細(xì)胞,任何活細(xì)胞則保持不變,傳遞到下一代。
4. 如果周圍恰好有三個(gè)活細(xì)胞,任何死細(xì)胞則會(huì)復(fù)活。
利用CAX,可以同時(shí)模擬多個(gè)生命游戲。
其中每個(gè)游戲,都可以統(tǒng)計(jì)存活「鄰居」的數(shù)量和生長(zhǎng)率。
加速原理:可控元胞自動(dòng)機(jī)
元胞自動(dòng)機(jī)與循環(huán)卷積神經(jīng)網(wǎng)絡(luò)(Recurrent Convolutional Neural Networks,R-CNN)之間的緊密聯(lián)系,已經(jīng)被許多研究者觀察到。
例如,Mordvintsev等人提出的通用NCA架構(gòu)可被概念化為一種「帶有逐單元dropout的循環(huán)殘差卷積神經(jīng)網(wǎng)絡(luò)」。
文章鏈接:https://distill.pub/2020/growing-ca/
可控元胞自動(dòng)機(jī)(Controllable Cellular Automaton,CCA)是元胞自動(dòng)機(jī)(CA)的擴(kuò)展,具備在每個(gè)時(shí)間步接受外部輸入的能力。
可控元胞自動(dòng)機(jī)形式化了 Sudhakaran 等人提出的目標(biāo)引導(dǎo)神經(jīng)元胞自動(dòng)機(jī)(Goal-Guided NCA)概念。
論文鏈接:https://arxiv.org/abs/2205.06806
外部輸入可以修改 CCA 的行為,從而使其能夠在保持元胞自動(dòng)機(jī)基本原理的同時(shí),動(dòng)態(tài)響應(yīng)不斷變化的條件或控制信號(hào)。
CCA通過引入對(duì)外部輸入的響應(yīng)機(jī)制擴(kuò)展了傳統(tǒng)細(xì)胞自動(dòng)機(jī)的能力,其原理類似于循環(huán)神經(jīng)網(wǎng)絡(luò)處理序列數(shù)據(jù)。
可控元胞自動(dòng)機(jī)架起了循環(huán)卷積神經(jīng)網(wǎng)絡(luò)與元胞自動(dòng)機(jī)之間的橋梁,開辟了模擬復(fù)雜系統(tǒng)的新可能性,這些系統(tǒng)既具備自主的涌現(xiàn)行為,又能響應(yīng)外部控制。
CAX利用了元胞自動(dòng)機(jī)與循環(huán)卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)之間已建立的緊密聯(lián)系。
這種協(xié)同作用,讓CAX能夠借助機(jī)器學(xué)習(xí)領(lǐng)域的最新進(jìn)展,用于加速元胞自動(dòng)機(jī)研究。
為什么選擇CAX?
CAX具有多重設(shè)計(jì)目標(biāo):為復(fù)雜系統(tǒng)研究提供1.高速、2.高質(zhì)量、3.文檔完備且4.高度靈活的系統(tǒng)實(shí)現(xiàn)。
CAX絕非僅是對(duì)現(xiàn)有細(xì)胞自動(dòng)機(jī)(CAs)的硬件加速實(shí)現(xiàn),而是一個(gè)完整的框架體系。
其中目標(biāo)4通過統(tǒng)一抽象層實(shí)現(xiàn)——該架構(gòu)不僅整合了各類復(fù)雜系統(tǒng),更支持快速擴(kuò)展或從零構(gòu)建新系統(tǒng)。
CAX確實(shí)提供特定的抽象框架。
雖然底層采用JAX實(shí)現(xiàn)高效卷積運(yùn)算,但其抽象層級(jí)具有更廣泛的適用性。
特別值得一提的是,更新后v0.2.0版本新增了靈活日志工具,可在保持JAX加速模擬的同時(shí)集成測(cè)量功能——這能滿足并行計(jì)算需求。
CAX支持離散系統(tǒng)和連續(xù)系統(tǒng),包括神經(jīng)細(xì)胞自動(dòng)機(jī),且適用于任意維度。不僅涵蓋傳統(tǒng)的細(xì)胞自動(dòng)機(jī),它還能處理粒子系統(tǒng)等模型,并將這一切整合在一個(gè)統(tǒng)一、直觀的API中。
CAX提供了超過15種可直接使用的系統(tǒng)。
從模擬一維基本細(xì)胞自動(dòng)機(jī),到訓(xùn)練三維自編碼神經(jīng)細(xì)胞自動(dòng)機(jī),甚至是創(chuàng)建精美的Lenia模擬,CAX都能為探索自組織系統(tǒng)的豐富世界,提供多功能的平臺(tái)。
CAX構(gòu)建于JAX/Flax生態(tài)系統(tǒng)之上,擁有極高的運(yùn)行速度和可擴(kuò)展性。
它支持在CPU、GPU和TPU等各種硬件加速器上進(jìn)行向量化和并行化操作。
用戶可以幾乎不用修改代碼,就能將實(shí)驗(yàn)從小規(guī)模原型擴(kuò)展到大規(guī)模模擬。