Saturday, July 10, 2004

The Neuron Farm

基於興趣,碩士論文我是作 Bio-machine modeling 方面的題目,在歸類上屬於人造生命(Artificial Life, ALife)的範疇,選擇的 target 是神經細胞的生長、發育。以下就先簡述一下整個概念:
這裡並不是要詳盡地模擬腦部的發育和功能執行,而是提出經過大幅簡化的模型,以利電腦模擬,及供我們驗證假設之用。經過長期考量過各種可能方案後,我決定以 Cellular Automata 來模擬神經細胞生長的環境。
考慮在一個由 CA 舖成的空間中,我們在一些選定的位置,滴上特定的化學物質,於是這些化學物質就會由滴定的點,向四周擴散。再考慮到真正的腦,對個別神經細胞而言,並非完全開放的空間,所以我們也在 CA 舖成的空間中設置各種障礙,來對空間作某種區隔。於是我們的神經細胞除了有化學的土壤外,現在也有了障礙的地形。整個生長環境豐富了許多。
有了生長環境之後,該是時候讓細胞在環境中過活了,於是我們就隨手一灑,這些神經幹細胞就被灑到 CA 構成的空間中了。既然有了前面土壤的比喻,就讓我們稱這個“灑”的動作為“播種”吧! ^__^
神經幹細胞的生長也遵循 automata 的模式。完全因應環境中的化學梯度而長出軸突(axon)和樹突(dendrite)……環境中的化學物質有其自然的損耗率、神經細胞的成長也會消耗掉 大量的化學物質……我們可以在其中模擬神經細胞的成長、競爭與凋亡。並觀察最後長成的神經網路拓僕。
~~
為了完成這個模擬,我當然要先 survey 一下現成的東西,決定一下要以哪些工具來達成想要的效果。雖然在大規模的模擬時,在效率的考量下,比較傾向於使用 C++ ;最後我還是決定用 Java 來實作,因為要縮短開發時程下,執行效率的考量就顯得比較次要了。
在決定用 Java 實作後,我 survey 了許多 Java 下的 agent software toolkits 。在它們當中, Swarm 雖是該領域的元老,它的接繼者 Repast 卻比較合我胃口。但由於 Repast 的架構還是顯得龐雜,且我要的許多效果它也沒提供,索性就 參考一下 Repast 的作法後,自己重新開發一套合用的 toolkit 。
為了確認每一步都沒出錯,也為了好玩,在開發過程中我同時利用自己的 toolkit 撰寫了許多測試用的小程式:

左邊那個是用來 Demo 在物理上有名的布朗運動(Brownian Movement)。程式一開始會把固定數量的化學分子置於中央,分子們很快就會以 Random Walk 的方式擴散開來,其中的色溫提示我們每個位置的分子數量的多寡。
右邊那個我管它叫做 Diffusion Sun 。化學分子一開始也是置於中央,隨著每個 time tick 的推進,這個 Demo 程式會繼續滴上給定數量的分子作為補充。在給定的自然分子損耗(lose)及不斷地添加分子間會有個動態平衡,造成一個形狀像抖動的太陽般的圖像,故稱之。
接下來,我們就繼續觀摩一下這個 toolkit 還提供了甚麼:

很明顯地,右邊那兩個綠底、裡面畫有 sine 波的東東,就是示波器(socillograph)的 scope 。比較特別的是這裡的示波器原則上是無限量供應的,只要點選 toolbar 上面代表探針(probe)的 icon 即可。值得一提的還有,這裡的探針量測的不是單純的點的訊號,而是一個指定的範圍。我們可以在左圖的 Imaging 畫布上看到一個虛線框住的範圍,它對應到右上那個 scope ,以這個例子來說,scope 顯示的是整個框框內所有點的平均訊號,實際上我們可以在上面顯示其他更有用的統計。
最後,我這裡也附上 SineSun 的 jar 檔,有興趣的話,諸位看官也可以自行玩玩看 :)

0 comments: