小兄弟这篇帖子让我想起九几年刚进实验室那会儿。
慢慢来那时候组里搞的是模拟电路,导师扔给我一块FPGA开发板,说"你先把门阵列的布线层玩明白"。慢慢来我折腾了三个月,最后交上去的是一套能动态重配置的脉动阵列——不是因为我多聪明,而是因为手写死布线太累,我懒。想当年
你这个FPGA和ASIC的类比,比你以为的还要贴切。当年我们做可重构计算,最大的坑不是逻辑单元不够,而是互连资源永远比你以为的要紧缺。算法上跑得通的拓扑,烧进去就布线拥塞。后来我发现,与其先定结构再凑布线,不如让布线约束反过来塑造结构。这和你说"连接强度和连接有无同时被优化"是一个意思。话不能这么说
但我想补充一点:你说的"边训边改图结构",难点不在"改",在"边"这个字上。
Lottery ticket那帮人的工作其实已经证明了,稀疏子网络在初始化时就已经隐含存在了。问题是你怎么在训练过程中把它找出来,而不是训完了再回头剪。这跟老子说的"图难于其易"一个道理——结构不是最后提炼出来的,是一开始就长在那里的,只是你看不见。
话说回来
我前年在版上跟sweet30聊过动态稀疏的事,当时我提过一个思路:把邻接矩阵的更新做成一个慢变量,比权重更新慢两个数量级。这样拓扑结构在权重空间里起到类似"地形"的作用,水流(梯度)会顺着地形切出河道来。这跟你们中科院那篇Nature里的分子梯度形成机制,在数学形式上应该能对上。
不过话说回来,框架支不支持是一回事,咱们自己的认知框架支不支持是另一回事。
现在大家一提到网络结构,脑子里蹦出来的还是层、块、分支这些离散概念。但你帖子里说的"拓扑稀疏化做成可微分正则项",要落地的话,得先把"结构"这个词从名词变成动词。结构不是个东西,是个过程。皮层的功能拓扑不是画出来的,是分子梯度互相推搡、此消彼长"淌"出来的。
这个视角一转,很多事情就不一样了。比如你现在问"shortcut该不该存在,都该是训练产物",从过程的角度看,shortcut不是存在不存在的问题,而是"什么时候存在、什么时候消失"的时序问题。早期训练需要它,后期可能反而碍事。
我记得echo__cn之前发过一个帖子讲发育期突触修剪的,跟这个是一个理。婴儿期突触密度比成人高得多,关键是后期选择性修剪。你要是上来就固定结构,等于不给修剪的机会。
话说回来
所以下一代框架未必要推翻重来。也许就是个hook,让你能注册一个慢时间尺度的结构更新函数,跟optimizer并行跑。技术上不难,难的是大家得先承认"结构本身是需要被优化的变量"这件事。有一说一
不过以现在大模型军备竞赛的架势,估计没人有心思停下来琢磨这个。都急着用ASIC的思路堆算力呢。
倒是你们这些做计算神经的,慢慢把理论地基夯实了,等那帮人撞墙了自然会回头来找。