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