項目概況:
計算神經(jīng)科學(xué)用數(shù)學(xué)建模來研究大腦的工作原理,是腦科學(xué)和類腦智能的連接橋梁。本項目(BrainPy)是一個基于Python的面向計算神經(jīng)科學(xué)研究和學(xué)習(xí)、以及類腦計算研究的軟件平臺,其核心是提供了一個便于用戶的神經(jīng)網(wǎng)絡(luò)建模、仿真及動力學(xué)分析的統(tǒng)一框架。用戶可以在BrainPy上進行大規(guī)模網(wǎng)絡(luò)仿真,對網(wǎng)絡(luò)動力學(xué)進行分析,并在此基礎(chǔ)上研究大腦的認(rèn)知功能,以及開發(fā)類腦智能算法。
開發(fā)背景:
目前,計算神經(jīng)科學(xué)在腦科學(xué)和人工智能發(fā)展中起到了越來越重要的作用。然而,相關(guān)的神經(jīng)動力學(xué)模擬框架存在理念陳舊、難以上手、不夠靈活、難以debug等缺點。當(dāng)前主流的神經(jīng)動力學(xué)模擬框架有NEURON、NEST、Brian2,它們分別已有23年、13年和12年的開發(fā)歷史。NEURON和NEST提供了Python的接口,允許用戶直接調(diào)用預(yù)定義的內(nèi)置模型。然而,一旦用戶需要自定義動力學(xué)模型,就需要學(xué)習(xí)底層C++/SLI/Hoc等編程語言。因此用戶的學(xué)習(xí)成本較高,并嚴(yán)重限制了模型自定義的靈活性。Brian2則提供了一種字符串編程的方法。用戶可以輸入字符串來定義滿足框架假設(shè)的神經(jīng)元或突觸模型,框架據(jù)此生成后臺C++代碼。通過這種方式,用戶可基于Brian2方便快捷地定義模型,并獲得較好的仿真速度。但這種生成代碼(Code Generation)的方法依然存在如下問題:1、字符串編程實質(zhì)上是偽編程,嚴(yán)重地限制了用戶編程的可操作性;2、代碼對用戶隱藏,不支持debug,不知道是否生成用戶想到的代碼邏輯,并且一旦發(fā)現(xiàn)錯誤用戶無法糾正代碼;3、限制了模型定義的可能性,對不滿足假設(shè)與規(guī)定的模型框架將不能支持。
為了解決上述問題,我們提出了一種基于即時編譯(Just-In-Time compilation, JIT)的神經(jīng)動力學(xué)模擬框架BrainPy。用戶可以利用Python語言自定義模型邏輯,框架再據(jù)此生成高效的機器碼。BrainPy提供了神經(jīng)動力學(xué)模型所需要的數(shù)據(jù)結(jié)構(gòu)、微分方程、數(shù)值積分等等的支持,具有簡單易用、靈活高效、模擬分析一體化等優(yōu)點。