OpenI 启智社区

启智社区,确实给力

项目简介

项目概况:

计算神经科学用数学建模来研究大脑的工作原理,是脑科学和类脑智能的连接桥梁。本项目(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提供了神经动力学模型所需要的数据结构、微分方程、数值积分等等的支持,具有简单易用、灵活高效、模拟分析一体化等优点。