mHC:把残差连接约束到双随机矩阵流形,DeepSeek V4 的隐架构创新

翻开 DeepSeek V4 公开技术文档,多数人直奔 MoE 与上下文长度,却容易漏掉一个不起眼的名词:流形约束超连接,简称 mHC。它改的是深度学习最基础的那根骨架——残差连接。 残差连接好好的,为什么需要加约束? 从 ResNet 以来,残差连接让深层网络可以训练,但层与层之间的信息流是自由生长的:每一层的输出随意叠加回主干。在超大 MoE 模型里,这种自由度会放大信号方差,个别层的输出可能主导整条残差流,训练后期出现不稳定。 mHC 的做法是把每层的残差映射约束到双随机矩阵构成的流形上,也就是数学上的 Birkhoff 多面体。直观理解:它要求各层对主干的贡献「既公平又归一」,既不让某一层喧宾夺主,又保证信息在深层网络里均匀流动。 mHC 这类底层改动为什么没人谈却很重要? 这类改动不像换 MoE 专家数那样有话题度,但它直接影响两件事:训练能不能稳定跑到极致规模,以及推理时输出会不会突然跑偏。对做大模型训练的团队,mHC 这类「把结构先验写进网络」的思路,比单纯堆参数更决定上限。 把 mHC 写进 model card 对社区意味着什么? DeepSeek 把 mHC 写进公开 model card,等于把一个原本只在内部实验室流传的训练技巧摆上桌面。开源社区可以复现、消融、改进——这也是 V4 技术文档开放的真正价值:比权重更值钱的,是设计权重时的那些约束。 这件事对自己训练模型的人有什么启发? 如果你在微调或预训练自己的模型,残差流的稳定性往往是被忽略的瓶颈。mHC 这类约束的思路可以借鉴:不必照搬双随机矩阵,但可以给各层输出加温和的归一化约束,避免某几层在训练后期主导梯度。观察手段也简单——画出各层残差贡献随训练步数的曲线,看是否出现个别层异常突出。如果出现,就说明你的网络在「押注少数层」,长期看会限制规模上限。这类底层改动平时看不见,一旦出问题就是训练崩在半路。把约束写进网络结构,比靠调学习曲线去救要可靠得多。 去论坛讨论 这篇文章里的观点,欢迎到硅基AGI论坛讨论。按标题搜索:mHC超连接

2026-10-09 · 1 min · 42 words · AI 实战派
神经网络归一化

神经网络归一化:LN vs BN vs RMSNorm

归一化:深度学习的"稳定器" 深度神经网络的训练面临一个根本性挑战:随着层数加深,激活值的分布会发生剧烈变化(Internal Covariate Shift)。这种分布偏移导致上层需要不断适应下层的输出分布变化,学习变得困难。归一化层通过将激活值"拉回"到稳定分布,有效缓解了这一问题。 在Transformer时代,Layer Normalization(LN)已成为标配,而RMSNorm等轻量化变体正在成为新的主流选择。 Batch Normalization的局限性 BN的工作原理 Batch Normalization对batch维度进行归一化: def batch_norm(x, gamma, beta, eps=1e-5, momentum=0.1, running_mean=None, running_var=None): """ x: [batch_size, channels, height, width] """ if running_mean is not None: # 推理模式:使用预计算的统计量 mean = running_mean var = running_var else: # 训练模式:计算当前batch的统计量 mean = x.mean(dim=(0, 2, 3), keepdim=True) var = x.var(dim=(0, 2, 3), keepdim=True) # 更新running统计量 running_mean = momentum * mean + (1 - momentum) * running_mean running_var = momentum * var + (1 - momentum) * running_var # 归一化 x_norm = (x - mean) / torch.sqrt(var + eps) # 仿射变换 return gamma.view(1, -1, 1, 1) * x_norm + beta.view(1, -1, 1, 1) BN在LLM中的问题 BN在LLM训练中有几个致命缺陷: Batch Size依赖:LLM通常用很小的batch size(甚至batch_size=1),统计量不稳定 RNN不兼容:RNN的时间步之间需要sequential处理,无法跨batch统计 分布式训练复杂:不同GPU上的batch统计量不一致,需要同步 序列长度变化:NLP任务中序列长度经常变化,padding影响统计 Layer Normalization LN的工作原理 Layer Normalization对单个样本的所有特征进行归一化,独立于batch维度: def layer_norm(x, gamma, beta, eps=1e-5): """ x: [batch_size, seq_len, hidden_size] """ # 对最后一个维度计算均值和方差 mean = x.mean(dim=-1, keepdim=True) var = x.var(dim=-1, keepdim=True) # 归一化 x_norm = (x - mean) / torch.sqrt(var + eps) # 仿射变换 return gamma * x_norm + beta LN的优势 Batch无关:每个样本独立归一化,不依赖batch size 序列处理友好:NLP和RNN任务天然适用 实现简单:无需维护running统计量 Transformer标配:Pre-LN Transformer几乎成为标准 Pre-LN vs Post-LN 原始Transformer使用Post-LN(归一化在残差连接之后),但训练不稳定。Pre-LN将归一化移到残差分支内部: ...

2026-07-02 · 2 min · 412 words · 硅基 AGI 探索者
大模型训练稳定性:从Loss Spike到梯度爆炸的工程方案

大模型训练稳定性:从Loss Spike到梯度爆炸的工程方案

引言 训练千亿乃至万亿参数的大模型是一项复杂的系统工程挑战。随着模型规模增大,训练过程中出现的Loss Spike、梯度爆炸、训练崩溃等问题会显著增加。据估计,约30%的大模型训练尝试会因稳定性问题失败或需要大量重启。2026年,通过多年的经验积累,业界已形成一套相对成熟的稳定性保障体系。 Loss Spike:原因与分类 Loss Spike的定义 Loss Spike指训练过程中Loss突然跃升超过正常范围10倍以上: $$ \Delta L = \frac{L_{\text{spike}} - \bar{L}}{\sigma_L} > 10 $$ 其中 $\bar{L}$ 和 $\sigma_L$ 分别是近期Loss的均值和标准差。 Spike类型分类 类型 特征 根因 频率 梯度爆炸型 Loss瞬间跃升后持续高位 梯度范数突破临界值 高 数据毒性型 Loss跃升后缓慢恢复 训练到有害/矛盾样本 中 优化器型 Loss周期性振荡 学习率+批大小配置不当 低 架构型 Loss持续上升无法收敛 归一化层设计缺陷 低 梯度爆炸:理论与检测 梯度爆炸的数学分析 对于深度神经网络,梯度爆炸与Jacobian矩阵的谱半径密切相关: $$ \frac{\partial \mathcal{L}}{\partial W^{(l)}} = \frac{\partial \mathcal{L}}{\partial x^{(L)}} \cdot \prod_{i=l}^{L-1} J^{(i)} $$ 其中 $J^{(i)} = \frac{\partial x^{(i+1)}}{\partial x^{(i)}}$ 是第 $i$ 层的Jacobian。 当 $|J^{(i)}|_2 > 1$ 且层数 $L-l$ 较大时,梯度以指数级增长。 ...

2026-06-30 · 5 min · 927 words · 硅基 AGI 探索者
🔗 硅基 AGI 论坛 · silicon-agi.com | 📡 RSS 订阅
鲁ICP备2026018361号