副题:以"压缩即智能"为镜,照 SiFu 信号流之颈,并论其可改之道
研究对象:C:\GitHub\BriLLM0.5\(BriLLM 0.5,arXiv:2503.11299,Zhao/Wu/Yang/Zou/Hong,v8)
研究日期:2026-08-23
〇、结论先行(TL;DR)
有瓶颈,且就在你眼前那一行。
BriLLM 的"信号全连通流动(SiFu)"在每一个解码步,都把整段历史 energy_cache(一堆 32 维能量向量)用一句
energy_tensor = (energy_cache * self.positions[:, :i, :].softmax(1)).sum(1, keepdim=True)
压缩成一个 32 维向量。这一行就是它的信息瓶颈:上下文所有信息,须由此 32 个数承载。
问题在于:它用的压缩法是位置加权的"凸组合/求平均",而非压缩感知(CS)主张的随机投影 / RIP sketch。求平均会抹掉能量云的"正交方向",对稀疏的语言信号而言是劣压缩器。
压缩感知给的正路:把这一步换成固定随机投影的流式 sketch(Count-Sketch / AMS)——以固定、极小的内存,保住语言的"重击者(heavy hitter)"结构(高频 n 元共现)。这恰是把"压缩即智能"从口号落成算子:模型被迫用最少的维度记住最该记住的,正是 Schmidhuber 所谓"压缩进度即智能"。
但须诚实:CS 只在"预测信号稀疏"处见效——而这正是 BriLLM 的本命(它是 bigram/路径模型)。长程语义若不稀疏,纯 sketch 会丢信息,须配显式记忆(混合式,见第五式)。
一、BriLLM 信息流之实(解剖)
1.1 三个基本元件
源自 model.py 与论文:
- 节点(node) = 词表 token(中文/英文各 4000)。每节点有偏置
node_bias ∈ R^{d},d = 32。 - 边(edge) = 有序对
(u→v),参数化为矩阵W_{u,v} ∈ R^{32×32}与偏置b_{u,v} ∈ R^{32}。双向全连通,故参数量级为V²·(32²+32)(V=词表)。 - 信号能量(energy)
e_i ∈ R^{32}:沿路径流动的状态向量。
1.2 信号如何流动
初始能量 e_0 = [1,…,1]/32(经 node_bias 与位置编码 PE_0 调制,GeLU 激活)。逐跳传播:
e_{i+1} = GeLU( W_{x_i, x_{i+1}} · z_i + b_{x_i, x_{i+1}} + PE_{i+1} )
注意 z_i 不是 e_i 本身,而是整段历史的压缩摘要(见下节)。
1.3 如何选下一个词
对候选后继节点 v,算出候选能量 E_{x,v},以 L2 范数(能量) 为分数:
score(v) = ‖ E_{x,v} ‖₂ → v* = argmax_v score(v)
论文与代码(output_tensor.norm(2, (-2,-1)))一致:选"能量最大"的邻居。
1.4 论文的豪言与实情
论文宣称"context-length independent scaling""unbounded contextual capacity""支持无限长 n-gram 建模"。技术上说权重不随上下文变长而增长,这是真的;但信息容量被 32 维摘要死死锁住,这是假不了的。 下面这节,正是那把锁。
二、瓶颈何在——被忽视的"压缩点"
关键在 model.py 的 forward 与 decode 中反复出现的聚合步(以 decode 第 189 行为例):
# energy_cache: (1, i+1, 32) —— 历步能量向量之堆叠
# self.positions: 可学习参数, shape (1, 512, 1)
energy_tensor = (energy_cache * self.positions[:, :i, :].softmax(1)).sum(1, keepdim=True)
# → (1, 1, 32)
逐字拆解:
self.positions[:, :i, :].softmax(1):对位置维做 softmax,得权重α_j ≥ 0, Σα_j = 1。positions是可学习的标量序列(每个位置一个权重)。energy_cache * α:历史每个 32 维向量乘以其位置权重。.sum(1):求和 → 合一 32 维向量z_i。
故:
z_i = Σ_{j=0}^{i} α_j · e_j——整段历史被压成单一 32 维向量,方法是"按位置软加权求平均"。
此 z_i 随后经边矩阵 W 算出下一跳。换言之:上下文对下一个词的全部影响,唯由此 32 个数中介。 这就是 BriLLM 的"信息瓶颈",也是它"模型大小与上下文解耦"的真正代价——大小没涨,信息被压扁了。
顺带:这其实是一种可学习的"位置注意力读出"。但它是单一凸组合——只能表达历史能量云的一个线性方向,丢掉了能量云的"散布"(各方向方差)。这恰是 CS 要病症之所在。
三、压缩感知透镜:理论框架
为论改造,先立 CS 之尺(据 ScienceDirect "Compressed Sensing" 词条、Donoho 2006、Candès、Baraniuk,及 Fabisch "Learning in Compressed Space" 2013):
- 两支柱:稀疏性(sparsity)+ 非相干性(incoherence)。
- 随机投影保距(Johnson–Lindenstrauss / RIP):对高维但可压缩信号
x,用随机测量矩阵Φ(高斯 / 拉德马赫 / 亚采样哈达玛)得y = Φx ∈ R^{m},m ≪ n;只要x是k-稀疏,约需m ~ O(k·log(n/k))次测量即可高概率保距恢复。 - 流 sketch(Count-Sketch / AMS):无需存全历史,仅凭
s ← s + Φ·x_t的累积,即可在O(k log V)维内固定保住"重击者"(高频项)——正合语言之 Zipf 长尾。 - "压缩即智能":Schmidhuber 压缩进度理论——智能 = 把历史编成更短程序之进度;能从小维度恢复正确预测者,即已"压缩"。Fabisch 更证:压缩输入层 ≡ 压缩该层权重,随机投影可直接压特征且不必重建(在压缩空间即可分类)。
先例锚点:Compressive Transformer(Rae et al., 2019)——把旧激活压入第二级"压缩内存",用卷积/池化做压缩函数,PG-19 困惑度 33.6 vs Transformer-XL 36.3。BriLLM 的
energy_cache即其"内存",而位置加权平均即其"压缩函数"——只是这函数远差于卷积。
四、CS 诊断:现有瓶颈为何是"劣压缩器"
| 维度 | 现有(位置加权平均) | CS 理想(随机投影 sketch) |
|---|---|---|
| 几何 | 沿位置轴塌缩为 1 个线性方向 | 多随机方向同时采样,保距(RIP) |
| 对稀疏结构 | 把所有历史按位置等权混合,重击者被冲淡 | 重击者(高频 n 元)被保住,误差有界 |
| 内存 | 需存满 energy_cache(随步增长,上限 512×32) |
固定 O(M),流式更新,不随步长 |
| 可证性 | 无理论保证 | RIP 保证:够少测量即可恢复 |
| 训练 | positions 可学(但只学"位置权重") |
Φ 固定(非学),边 W 自适应 |
要害三病:
- 求平均 = 丢正交方向。两异史若能量均值相近,则不可辨。CS 之随机投影专治此病。
- 位置门控 ≠ 内容门控。权重只赖位置,不赖内容;长文中远端关键信息若被 softmax 压到近 0,则永失。CS 的"重击者保距"不论远近,只论频次/幅度。
- 32 维是真上限,却用错法。维度本就极小,更该用"保信息"的投影而非"毁信息"的平均。
五、CS 改造方案(五式)
总切口:替换
energy_tensor = (energy_cache * positions.softmax(1)).sum(...)这一行。
式 A — RIP 流式 Sketch 瓶颈(首选,落地最易)
- 注册固定缓冲
s ∈ R^{M}(M可取 32 或 64,仍远小于词表)。 Φ ∈ R^{M×32}为固定随机拉德马赫/哈达玛矩阵(满足 RIP,不训练)。- 每步:
s_i = s_{i-1} + Φ · GeLU(W_{x_i,x_{i+1}}·z_{i-1} + b + PE)(即把每跳输出累积进 sketch)。 - 读出:
z_i = readout(s_i)(一小组线性头),或直接score(v) = ‖A_v · s_i‖₂,A_v可复用边矩阵。 - 本质 = Count-Sketch / AMS 累积。固定内存、不随步长、
M~O(k log V)保重击者。
式 B — JL 随机投影(理论最优,需流式化)
z_i = Φ · flatten([e_0,…,e_i]),Φ ∈ R^{M×(i+1)·32} 固定随机。保距最优;但需存全历史方可投影,故仅作理论基准,实务归约到式 A。
式 C — 把 positions 改为"低秩 + RIP 约束"(最小改动)
保留可学投影,但将其初始化为亚采样哈达玛,并加正则 ‖ΦᵀΦ − I‖ 逼其近正交。既留可学性,又治"几何失明"。
式 D — L1 稀疏能量(正则项,非结构改造)
选词评分由 L2(能量)改辅以 L1 稀疏促显:令流出能量向量稀疏,仅留少数显著方向存活——"压缩即智能"之内部体现。属软约束,可与 A/C 并用。
式 E — 混合式(最稳,对准"无限长上下文"豪言)
近期 k 步留 energy_cache(稠密信息在近处重要);更远的 tail 改用式 A 的 sketch 压缩保存。等效于把 Compressive Transformer 的"二级压缩内存"搬进 SiFu。此举方使"无限长上下文"名副其实,且压缩有 RIP 担保。
六、model.py 落地切口(示意)
聚焦于 decode(及 forward)第 118/158/189 行。以式 A 为例,最小侵入改法:
# 在 __init__ / prepare_network 中注册(固定,不进优化器):
self.M = 64
self.phi = nn.Buffer(self._rip_matrix(self.M, self.hidden_size)) # 固定随机投影
self.sketch = nn.Buffer(torch.zeros(1, self.M)) # 流式 sketch
# 替换聚合行:
# 旧: energy_tensor = (energy_cache * self.positions[:, :i, :].softmax(1)).sum(1, keepdim=True)
# 新: 以 sketch 作全局压缩记忆 + 近期 cache 作局部记忆
energy_tensor = self._compressive_readout(energy_cache, self.sketch, i)
def _rip_matrix(self, m, d):
# 亚采样随机哈达玛 / 拉德马赫;固定种子,保证可复现与 RIP
g = torch.randn(m, d)
g /= math.sqrt(d)
return g
def _compressive_readout(self, cache, sketch, i):
# 近期窗口(稠密)+ 全局 sketch(稀疏重击者)
local = cache[:, max(0, i-self.win):i] # (1, win, 32)
local = local.mean(1) # 局部均值
z = torch.cat([local, self.readout_head(sketch)], dim=-1) # 拼接后过一小头 → 32
# 每步把新能量累加进 sketch:
self.sketch += self.phi @ cache[:, i-1].reshape(-1, 32).T ... # 流式更新
return z
注意:
sketch须做成跨步持久缓冲(如模块属性或显式传参),而非每次重算;phi与sketch都应requires_grad=False(固定投影),让边W去自适应——此即 Fabisch "在压缩空间学习,不必重建"之要。
七、风险与张力(诚实的边界)
- 稀疏假设是双刃。CS 仅在"预测信号稀疏于某基"时奏效。BriLLM 是 bigram/路径模型,局部共现确稀疏 → 式 A 正当其时。但长程语义依赖(指代、话题)在 token 基下并不稀疏,纯 sketch 必丢之。故式 E(混合)为安全解;纯 A 用于"短程预测增强"最稳。
- 维度硬上限。即便最优随机投影,
m亦须≥ O(k log V)。若k(所需显著模式数)超 32,则 32 维本身即瓶颈——此时应增大M,而非怨压缩。论文用 32 是为小模型,CS 不替你突破维度物理。 - 训练漂移。固定
Φ保证 RIP 对其自身成立;边W经 SGD 适应后,组合映射未必仍 RIP。实务中固定随机特征映射久经验证可用,但宜监控 sketch 与全缓存的一致性(类比 Compressive Transformer 的 attention-reconstruction loss)。 - "能量 L2 选词"非 CS 恢复。真 CS 恢复需解 L1(基追踪),代价高。务实取"压缩空间分类"路线:把 sketch 当特征喂读出头,不反解。这与"压缩即智能"并不悖——智能在"压得巧",不在"解得回"。
八、余论:压缩即智能如何兑现
BriLLM 自诩"脑启发""信号动力学"。然其信号流之颈,恰在把历史平均而非压缩。压缩感知点破一事:
若以 RIP sketch 代平均,则模型被迫把上下文存进一个最小的、保距的摘要里,仍以正确下一个词为目标训练——此即"在最小维度内保住最多判别信息",正是 Tishby 信息瓶颈之最优解,亦正是 Schmidhuber"压缩进度即智能"之算子化。
更妙者:BriLLM 本就是"路径/bigram"模型,其有效信息天然稀疏(Zipf)。CS 与 BriLLM,本是一路人——只是 BriLLM 误用了平均当压缩。改此一行,或可使其"无限长上下文"之豪言,由虚转实,由损转保。
此即答步子哥之问:颈在聚合,法在投影;压缩有 RIP 为凭,智能因压缩而生。
附:本文所据
- 代码:
C:\GitHub\BriLLM0.5\model.py(L76–120, L122–186)、train.py(L104–148, L150–214)、README.md - 论文:arXiv:2503.11299 BriLLM: Brain-inspired Large Language Model(v8, 2025-09-08)
- 先例:Rae et al. 2019 Compressive Transformer;Donoho 2006 Compressed Sensing;Candès Restricted Isometry Property;Fabisch 2013 Learning in Compressed Space;Schmidhuber Driven by Compression Progress
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。