介绍我在github上公开的一个论文仓:https://github.com/binxu986/DelfNet
想法还很粗浅,权当抛砖引玉了;可以把问题和当前给的一套解决方案思路分开看;欢迎讨论;转发请注明出处:

🧠 DelfNet - Deep Self-Organizing Neural Network

对现有Transformer架构进行兼容性改进,构造出能一定程度上表达时间维度t、深度、自组织特性的神经网络结构。希望通过多个实验方向的研究,提升现有DNN训练和推理效率与精度,同时也希望能为未来的神经网络架构设计提供一点点新的思路。

✏️ 说明

我会在业余时间、以个人名义,在这个仓写一篇文章(目前还只是draft,english版本后续也会提供),标题是“The fundamental idea of deep self-organizing neural networks”。我手上没有GPU硬件条件可以做大规模的实验。如果有人有兴趣一起合作,基于本文的idea进行研究,完成模型的训练和测试,并做出任何结果,都可以联系我: 188997452@qq.com, 或者通过github issues进行讨论。

  • 方法完全公开,你可以和我一起讨论,也可以自行验证/使用/修改/创新;

  • 唯一的要求:引用本项目的出处,并在你的任何工作中进行说明;给本项目点一个star;分享你的研究方向、实验结果、或任何其它你想分享的内容


🤝 寻找合作

欢迎潜在的 Co-authors 联系与讨论、或自行验证后告知我,共同推进DelfNet以下研究方向:

  • 权重训练方法、增加参数约束、优化目标函数、激活函数的选择与设计等
  • 训练、推理效率优化,包括软件实现、硬件加速等
  • 其他

合作方式:

  • 🔬 代码实现,实验论证
  • 💡 讨论启发方法
  • ✍️ 优化论文写作
  • 🎨 绘制图片
  • 🔧 其他

⚠️ DNN 现存问题

📉 训练问题

问题 描述
🔴 训练效率较低 神经网络层之间没有直接的联动
🔴 梯度传播局限 每一层的 dy 仅作用于当前层的权重

🏗️ 结构问题

问题 描述
🔴 网络过深 大模型应该有足够大的参数量,但并不一定需要这么多“独立的”参数层;就好比人脑的深层结构也许并没有L=80这么多层?
🔴 缺乏局部信息交互 神经元之间没有形成局部网络,同一层内的神经元没有联系,局部神经元之间没有进行充分的信息共享与竞争(竞争应导致激活与抑制等不同效果)。而例如 SOM(Self-organizing map)与 Hopfield 网络则强调了一组神经元内部的信息交换
🔴 ANN模型没有对时间t进行建模 神经元只能进行一次瞬时处理,就输出信息传递到其他神经元去了,没有局部再处理的机会;当然,也许现有的模型是潜在地通过更多的layers 来模拟时间t的变化。那么我们为什么不显示地建模这一时间维度t呢?
🔴 权重参数固化 训练完成后,权重参数是固化的,无法体现生物对环境的适应能力 —— 比如快速反应、快速联想等。这里也许可以联系到大脑system1和system2系统的理论,system1是快速反应,system2是缓慢反应。现在的主流模型没有快慢的区别,这在很多时候是非常低效(浪费算力)的
🔴 稀疏模型训练不易 稀疏训练时只使用部分权重参数,导致模型效果具有随机性,有的好,有的坏。这可能和前后层训练没有联动更新有关。(参考彩票模型假设, lottery ticket hypothesis)

🚀 推理问题

问题 描述
🔴 带宽瓶颈 Decoding 需要每次都加载完整权重,效率太低;这个问题严重限制了当前 DNN 推理场景的应用效率
🔴 存储瓶颈 模型参数都是独立的,很难压缩,导致存储成本很高;这个问题在一些Edge设备上尤为突出

💡 启发来源(仅启发思考)

来源 说明
🔵 SOM, Hopfield 强调神经元内部信息交换
🔵 RNN 可看作一种变相的神经元自影响结构
🔵 GNN GNN 强调了节点之间的信息交换
🔵 Transformer Circuits 神经网络的电路研究,稀疏路径
🔵 生物神经元 激活或膜电位恢复后,神经元本身发生了变化,用于快速适应环境
🔵 人类训练效应 通过训练对事物反应变快,可能是激活了神经网络内的快速通道(?)

🎯 核心思想

建模层内神经元之间的联系,以实现自组织特性。通过增量参数表达,实现跨block的参数联动更新。
DelfNet 不可能解决上述所有问题,但希望提供一种新的思路。详细可见论文正文部分


🔧 核心方案

📐 簇级结构

Cluster0 { Block0, Block1, …, Block4 }
Cluster1 { Block5, Block6, …, Block9 }
…

Cluter表示一簇神经元,可以看作是一个独立的神经网络功能区域(或者看成是一层神经网络,有独立更新的一批神经元),簇内的神经元之间进行信息交换。继续沿用Block的概念,是为了和Transformer Block概念相对应,方便理解。如Cluster0中的Block0, Block1, … 表达了这一簇神经元随时间t的更新变化情况。当一个Block就是一个Cluster时,就退化到原始的transformer结构了。

🔑 关键细节:Delta Weight 增量神经网络

△ weight 表达一个簇内的后序 Block 对前序 Block 权重的变化:

w0
w1 = w0 + △1
w2 = w1 + △2 = w0 + △1 + △2
W3 = w2 + △3 = w0 + △1 + △2 + △3
…

⭐ 核心优势:

  • 总的参数量规模没有变化;
  • 更新后序 Block 的变量时,dy 会直接作用于前序 Block 的变量,产生联动效果
  • 如果 Δ \Delta Δ很稀疏,或者有规律变化,就可能可以实现对参数的有效压缩,以大幅缓解decoding带宽bound问题,以及模型权重的存储问题。

🧪 模型假设(待验证)

假设 说明
🟢 △ 变化平滑 △ 的变化不应该是随机、跳跃、完全自由的。Cluster内相邻的 △ 变化应该是平滑的
🟢 △ 稀疏性 △ 可能是稀疏的。Block 之间的联动更新,赋予了 △ 更容易被控制成稀疏的特性。△ 表示对输入信号的抑制或增强
🟢 △ 生成方式 △ 可能受离线训练影响(有机会建模每个神经元的不同特性:有些神经元是一步瞬时完成计算,快速响应;而有些则需要更多时间步长来延迟响应)。也可能受前序 Block 的输出影响(Data-Dependent),通过在线计算得到;这种生成方式既保留权重参数自由度,又不必离线保存,对 decoding 推理场景开辟了新机会——部分参数在线生成,缓解 bandwidth bound 问题

注:以上假设可能会对模型的性能产生影响,需要在实验中验证。这些假设可能需要通过多个实验阶段来验证,不一定都有效,也不一定会同时生效。


🗺️ 后续研究方向

由近及远

阶段 目标 描述
Phase 1 🔨 基础改造 将 CNN/Transformer 改造成 DelfNet 形式,完成训练。解决过程中遇到的问题
Phase 2 📊 约束研究 研究 Δ \Delta Δ之间的平滑约束、稀疏约束等假设;同等参数下做出 scaling law 更好的实验结果(optimal)
Phase 3 ⚡ 稀疏压缩 Δ \Delta Δ高度稀疏,可被特定稀疏压缩编码。推理时提前载入 w 和 压缩后的△,解决部分带宽问题,大幅提高 decoding 性能
Phase 4 🚀 算存融合 假设 Δ \Delta Δ由 data 产生,以算代存,缓解参数固化的缺陷,模拟生物神经元对环境(输入)的自适应能力

📧 联系方式

如有兴趣,欢迎联系!

  • 大饼博士,邮箱:188997452@qq.com

DelfNet — 探索神经网络的新可能

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐