为什么选择 CANNs?¶
预计阅读时间: 8 分钟
目标受众: 对吸引子网络感兴趣的实验神经科学家、计算神经科学家、AI 研究人员、工程师和学生
挑战:建模连续神经表征¶
你的大脑如何知道你在房间中的位置?海马和内嗅皮层的神经元如何在没有外部线索时,仍能维持稳定的位置、头部方向和导航路径表征?这些问题触及了神经科学中连续吸引子动力学的核心机制。
传统神经网络处理离散的输入和输出。相比之下,大脑需要处理 连续状态空间——位置、方向、速度等随时间平滑变化的变量。CANNs 提供了一个计算框架,帮助我们理解神经群体如何通过称为”吸引子”的稳定活动模式来编码、维持和更新这些连续表征。
1D CANN 追踪平滑移动的刺激,展示稳定的波包(bump)动力学¶
尽管理论研究已有数十年积累,应用 CANNs 仍面临诸多挑战:
缺乏标准化实现 – 研究人员往往需要为每项研究从头构建模型
工具碎片化 – 任务生成、模型仿真和分析通常需要不同的代码库
可重复性障碍 – 缺少共享基础设施,很难比较不同研究的结果
学习曲线陡峭 – 学生必须先实现复杂的动力学方程,才能探索科学想法
CANNs 库正是为了解决这些问题而生。
CANN 网络中的 2D 空间编码模式¶
CANNs 有何独特之处?¶
连续吸引子神经网络 具有独特的性质,在神经科学和 AI 之间架起桥梁:
稳定的连续表征
CANNs 能在连续状态空间中自然维持稳定的活动模式(吸引子)。与需要精细调参的循环神经网络(RNNs)不同,CANNs 基于坚实的理论基础来确保稳定性——活动波包(bump)即使没有外部输入也能持续存在,从而实现短期记忆和鲁棒编码。
类脑动力学
与 Transformers 等基于注意力的模型相比,CANNs 的运作机制更接近生物神经回路。它们擅长建模:
连续状态空间处理
传统深度学习模型通常将世界离散化,而 CANNs 原生处理连续变量——这与大脑处理位置、方向和感觉刺激平滑变化的方式相匹配。
路径积分与导航
CANNs 能自然执行路径积分 [4]:它们整合随时间变化的速度信号来追踪位置,无需外部地标——这是啮齿动物导航和人类空间认知中的核心计算。
本库的 CANN 模型主要基于理论可解且被视为规范模型的 Wu-Amari-Wong (WAW) 连续吸引子神经网络 [5, 6, 7, 8]。这一规范模型为理解连续吸引子动力学提供了优雅的理论框架,其数学可解性使得研究人员能够深入分析网络的稳定性、动力学特性和编码能力。
除了带领大家如何实现经典的 WAW 模型之外,本库还继续讲解了如何实现一个拓扑结构如甜甜圈般的环面(torus)网格细胞(grid cell)模型,以展示 CANN 在处理高维空间表征时的灵活性。
在此理论基础上,最近的一项进展将 CANNs 与神经适应性 (A-CANN) 结合 [9, 10] ,成功解释了休息和睡眠期间多样化的海马序列重放模式 [11]。通过引入适应性——一种普遍的神经属性——作为单一控制变量,研究人员统一了看似不同的现象:静止重放、扩散序列和超扩散扫描。
这项工作展示了 CANN 的强大之处:简单且符合生物学原理的机制能够解释复杂的神经动力学,并对记忆编码和提取产生深远影响。
网格细胞和头部方向网络中的 Theta 扫描动力学¶
谁应该使用这个库?¶
CANNs 库主要服务三个群体:
🔬 实验和计算神经科学家¶
连续吸引子网络在系统神经科学中越来越受关注。研究人员希望:
分析实验数据 中的吸引子特征
构建 CANN 模型 来验证假设并对照神经记录
高效复现和扩展 已发表的 CANN 研究
🛠️ 工程师与开发者¶
随着 CANNs 日趋成熟,它们需要 标准化的开发实践——就像 Transformers 通过统一的 API 和共享基础设施彻底改变了 NLP 一样。工程师需要统一的工具来:
实现类脑导航和记忆系统
系统化地对 CANN 架构进行基准测试
在机器人和 AI 中部署基于 CANN 的应用
🎓 学生与教育工作者¶
学习 CANNs 不应要求从头实现复杂的动力学。学生可以从中受益:
开箱即用的模型 用于动手探索
清晰的示例 演示关键概念
可修改的代码 用于实验不同的参数和架构
没有标准化工具,每个小组都在重复造轮子。CANNs 库改变了这一现状。
关键应用场景¶
1. CANN 神经计算建模¶
以 Theta 扫描的建模与分析为例。
挑战:海马神经元在休息和睡眠期间呈现丰富的序列放电模式——静止、扩散、超扩散——这些模式具有重要的认知功能。理解”Theta 扫描” [12] 是记忆研究的核心。
解决方案:A-CANN 框架(CANN + 神经适应性) [9, 10] 通过单一变量解释了这些多样化的模式。本库提供:
预构建模型:
HeadDirectionNetwork[13] ,GridCellNetwork[11] ,PlaceCellNetwork[14]专用可视化:Theta 扫描动画和分析工具
可复现的流水线:
ThetaSweepPipeline协调仿真、分析和绘图
影响:研究人员可以直接基于这项工作进行构建,无需重新实现模型和分析工具。
2. 教育与研究培训¶
挑战:传统的 CANNs 教学要求学生每学期从头实现模型,消耗了本应用于科学探索的数周时间。
解决方案:使用本库,学生可以:
用 3 行代码 实例化 CANN 模型
用 最少设置 生成任务数据(平滑追踪、群体编码)
用 内置分析工具 可视化动力学
影响:学生现在能专注于 理解机制,而非调试实现代码。
3. 高性能仿真¶
挑战:长时间仿真和大规模实验(如参数扫描、拓扑数据分析 [15, 16])计算开销很大。
解决方案:配套的 canns-lib Rust 库提供:
700倍加速:空间导航任务相比纯 Python 实现(兼容 RatInABox 的 API)
1.13倍平均、1.82倍峰值加速:拓扑分析(Ripser 算法)
完美精度 – 与参考实现的结果 100% 匹配
影响:曾经需要数小时的任务现在只需几分钟。研究人员能够大规模探索参数空间并分析数据集。
仿真步数 |
纯 Python |
canns-lib (Rust) |
加速比 |
|---|---|---|---|
10² |
0.020 s |
<0.001 s |
477× |
10⁴ |
1.928 s |
0.003 s |
732× |
10⁶ |
192.775 s |
0.266 s |
726× |
为什么选择这个库?统一生态系统的优势¶
问题:碎片化的现状¶
目前,CANN 研究类似于 Transformers 出现之前的 NLP——每个实验室使用自定义代码、不同的实现方式和不兼容的格式。这种碎片化导致:
重复造轮子的开销:研究人员反复重新实现基础功能
可重复性问题:比较研究结果需要逆向工程代码
进展缓慢:没有共享的模型、基准或最佳实践
愿景:将 CANNs 打造为吸引子网络的”Hugging Face Transformers”¶
就像 Hugging Face 标准化了 Transformer 的使用一样,CANNs 库致力于统一 CANN 研究:
标准化的模型库
统一的任务 API
平滑追踪、群体编码、闭环/开环导航
直接导入实验轨迹
跨任务的统一数据格式
完整的分析流水线
能量景观、调谐曲线、放电场、脉冲嵌入
拓扑数据分析(UMAP、TDA、持续同调)
Theta 扫描和 RNN 动力学分析
可扩展的架构
用于自定义组件的基类(
BasicModel、Task、Trainer、Pipeline)基于 BrainPy [18] 构建,支持 JAX 驱动的 JIT 编译和自动微分
开箱即用的 GPU/TPU 加速
社区与共享
用于模型和基准共享的开源基础
统一的评估协议
不断壮大的示例和教程生态系统
技术基础¶
这个库为何如此强大?
🚀 通过 BrainPy + Rust 实现高性能¶
BrainPy 集成 [18]:高级动力学 API,配备 JAX 的 JIT 编译、自动微分和 GPU/TPU 支持
canns-lib 加速:Rust 驱动的任务生成和拓扑分析关键路径
高效编译:用简洁的 Python 编写模型,以 C++ 的速度运行
🧩 全面的工具链¶
模型:1D/2D CANNs、分层网络、SFA 变体、类脑模型
任务:追踪、导航、群体编码、轨迹导入
分析器:可视化、TDA、波包拟合、动力学分析
训练器:Hebbian 学习、预测工作流
流水线:端到端工作流(如 Theta 扫描),单次调用即可运行
🔬 研究级质量¶
经过验证的实现:模型复现了已发表的结果
全面的测试:Pytest 套件覆盖关键行为
活跃开发:定期更新、错误修复和社区贡献
当前状态与未来方向¶
开发阶段:本库已积极开发 4 个月,目前处于 beta (v0.x) 阶段。我们的研究小组正在内部使用它,并根据用户反馈积极扩展功能。
验证:
✅ 模型复现了已确立的 CANN 行为
✅ 性能基准测试显示显著加速(canns-lib)
✅ 跨模型和任务的可用示例不断增长
路线图:
扩展类脑模型集合(循环网络、基于脉冲的模型)
添加混合 CANN-ANN 架构
开发全面的基准测试套件
建立社区贡献的模型库
发表记录库设计的配套论文
局限性 (我们相信透明度):
Beta 软件 – API 可能根据反馈演变
文档正在积极扩充(欢迎您的贡献!)
目前预训练模型有限(我们正在构建)
与成熟的深度学习框架相比社区较小(但正在增长!)
下一步:开始探索!¶
快速开始¶
准备好构建你的第一个 CANN 了吗?跳转到我们的 快速开始指南,10 分钟内完成动手演练。
了解更多¶
参与其中¶
🐛 报告问题:GitHub Issues
💬 提问:GitHub Discussions
🤝 贡献:查看我们的 贡献指南
⭐ 为仓库点星:github.com/routhleck/canns
对本文档有疑问或建议?在 GitHub 上开启 issue 或 discussion!