2026/4/6 6:00:26
网站建设
项目流程
石家庄网站建设公司排名,手机网站切图,企业网站优化咨询,网站建设中搭建页面结构严格说这论文是2025年12月31号写的#xff0c;但是2026年1月1号发了 论文没多长#xff0c;但是坦率说对大多数同学来讲有点抽象 先说它干了啥#xff1f;
就是让残差网络变得表达更丰富#xff0c;同时可训练了#xff08;这个其实不是它发明的#xff0c;在HC的时候也…严格说这论文是2025年12月31号写的但是2026年1月1号发了论文没多长但是坦率说对大多数同学来讲有点抽象先说它干了啥就是让残差网络变得表达更丰富同时可训练了这个其实不是它发明的在HC的时候也就是hyper-connect的时候就已经有了之前字节的论文 https://arxiv.org/pdf/2409.19606残差网络如果大家都不知道是干啥的还是推荐看我的transformer入门草履虫系列小周带你读论文-2之草履虫都能看懂的Transformer老活儿新整Attention is all you need(1)当然残差也不是transformer的作者发明的hekaiming和sunjian他们15就发了论文了https://arxiv.org/abs/1512.03385用在transformer里面标准 ResidualResNet / Transformer 残差如果多层展开的话啥意思呢在标准 Transformer 里一层大概是这样pre-norm 版本因为现在RMSprenorm都几乎从llama开始就是标配了这里xl这一层的输入也是这一层“残差的载体”一般transformer skip connection 那根线就是图里我标红的这根跨层的折线。图里把res和norm都整一起了一般人可能把这俩玩意当一个function了其实不是F这一层的计算attn / mlpxl1 xl F(hl)“把上一层的输出可以看成原始特征加回到这一层的输出上”。在单层水平一个transfomer layer比如llama啥的有动不动好几十层这么理解是没毛病的。在字节的那个论文hc页就是hyper-connetions的论文里面给这东西给扩展了它认为啥呢认为这一股子一股子的残差线其实是一个流它叫Residual Stream残差流”是把这根线当成一条“贯穿整个网络的通道”他们不是只盯一层而是把“那根做 skip 的线”看成一个贯穿所有层的、连续的“信息通道”。我们把所有层给罗起来其实就是我上面那个式子这时候你可以把{x0,x1,...,xL}看成一条沿着层深度向前流动的“状态”这条状态在每一层都会先被拿出来做一点计算norm F然后又被加回去成为下一层的状态。这条在层与层之间“流动”的状态就是刚才整出来的概念residual stream残差流。好我们总结和展开一下。标准 Transformer 里每一层的状态xlxl是一个C 维向量忽略 batch / seq 维这C其就是embedding_dim或者说hidden_size相当于只有一条主干。HC / mHC 做了一个关键扩展把这条主干扩成 n 条并行的主干数学上是原始HC/mHC也就是说以前只有一条 residual stream现在有n 条 residual streams每条都是 C 维这 n 条一起就叫n-stream residualn 路残差流。所以这些论文里他们整个概念 “widen the residual stream” 其实就是把那根贯穿所有层的“残差主干线”从 1 路升级成 n 路总线每层可以在这 n 条线上做更复杂的混合和路由。然后就轮到三个矩阵登场H_pre从这 n 条流里读出一个组合喂给 FH_post把 F 输出写回 n 条流H_res在层与层之间对 n 条流做 mixing“交换机”这块估计没看过hc论文的各位就彻底懵了H_pre是啥H_post, res又特么是啥首先我们考虑一个问题理论 / 表达力层面为什么“一条主干”也就是标准的残差不够爽还是这个式子从“信息流拓扑”角度看所有层都在同一条 1 路残差主干上叠加信息这条主干只做两件事但结构是很“单调”的每层的贡献只能“线性地堆叠”在这条主干上不同层之间的互动主要是所以在“微观块 F”的设计上Attention / MLP / MoE大家已经卷到飞起光今年改attention和mlp的论文就如过江之鲫了但在“宏观拓扑 / 跨层连接”上标准 residual 还是很朴素的说白了就嫌乎传统redidual牛夫人了连位置编码norm都每年好多人改这玩意多少年没人动。如果硬要给多路 residual stream 的核心增益做个定义更多可学习的“跨层路由模式”把残差从 1 路扩到 n 路后你等于是获得了一个n维的“跨层状态空间”每一层不仅可以修改当前的状态还可以通过H_res重新组合这 n 条流信息在不同层之间可以走很多不同路径而不是一刀切地走同一条主干。举个类比粗糙但好理解标准 residual 一个“笔直的大走廊”每层是沿着走廊布置一个小工作间每层都往同一条走廊上贴东西n-stream residual 有 n 条并联的走廊每层可以决定这种结构允许一些信息在某几条流里多绕几圈再汇合某些 pattern 可以沿着特定流传播多层之间的相互作用可以更加细粒度 / 结构化。从宏观设计上这和DenseNet 的密集连接、Deep Layer Aggregation 的逐级聚合、Residual Matrix Transformer / DenseFormer 那些“改残差拓扑”的工作是在同一类思路里即用更复杂的拓扑结构来提升表达能力而不是只靠“更大的 F”或“更深的层”。老说这3个矩阵那H_pre、H_post、H_res分别干嘛这三个就是用来操作这 n 条残差流的“路由矩阵”H_pre从 n 条残差流里“选 / 混合”出给 F 用的那一条形状H_pre ∈ R^{1×n}一行 n 列的向量作用把 n 条残差xl ∈ R^{n×C}压成一条 C 维向量作为 F 的输入。如果xl的第 k 条流是那么输入给 F 的向量展开看就是有 n 条信息流各自带不同内容H_pre 决定“这层的 F 要看哪些流、每条流占多大权重”把它们线性混成一条向量喂给 F所以它是相当于混以前多个residual进到一起和它一顿dot乘然后送给F来做这次的residualnormH_postF 算完之后决定往 n 条残差流里怎么“写回”你当然得写回了因为你算完了要有值的啊要再写回去以供下一次算。形状H_post ∈ R^{1×n}也是一行 n 列作用F 的输出是一个 C 维向量而残差流有 n 条每条都 C 维。H_post决定F 的输出加到每一条流上的比例。HC 的写回形式是写回部分H_post^T ∈ R^{n×1}F(...) ∈ R^{1×C}结果是n×C正好对应 n 条残差流的“写入增量”。展开一下对第 k 条流来说F 算出一个“更新向量”对吧H_post来决定这次更新要写入到哪几条流不是每次都要写到所有的residual里去的每条流写入多少比例H_res在 n 条残差流之间“搅拌 / 混合”的矩阵形状H_res ∈ R^{n×n}作用在进入下一层之前把 n 条残差之间再线性混合一遍。HC / mHC 的残差更新大致是其中H_res xl对当前 n 条残差流做一次线性变换 / mixing。H_post^T F(...)把 F 的输出按 H_post写回到各流。再加在一起就是下一层的 n 条残差你可以这样想如果把 n 条残差流看成 n 个“通道”H_res就是在一层和一层之间对这 n 个通道做一次“通道混合矩阵乘法”。每一层都可以重新洗牌第 1 流可能变成“以前 2,3,4 流的混合”第 2 流则是“以前 1,4 流的混合”等等。为啥要这三个矩阵折腾啥呢如果只看结构需求我们想要宽残差流n×C来增强拓扑表达能力但真正的计算块 F比如 Attention / MLP还是对一个 C 维向量操作更合理不想直接写一个“n×C→n×C”的超级 F所以需要从“工程接口”的角度看你可以把它们看成H_pre读接口多路残差 → 单路输入H_post写接口单路输出 → 多路残差H_res总线内部的路由 / 交换机n 路 ↔ n 路然后这三玩意都是可以训练的。好了这个事讲通了HC也就是hyper-connections 为啥要折腾10多年没变的residual net了那 回到deepseek这个新发的论文所谓的mHC 到底改了啥mHC 没改这三个对象的“角色”只是给它们加了约束尤其是H_resH_res投到“双随机矩阵流形”上非负行和列都等于 1H_pre,H_post用 Sigmoid 保证非负H_post再乘 2 得到 0~2 范围估计看到这可能又得糊涂了稍微展开一点吧首先为啥要做这个事如果不做的话呢比如咱就说刚才讲完的HChyper-connections咱就说deepseek论文里的这个公式啊类似地有tilde_H_post、tilde_H_res。这里tanh输出在 (-1,1)再乘个可学标量α加上 biasb就完全没界了mHC 里给的约束他们换了一种参数化最后得到σ是 Sigmoid输出在 (0,1)所以H_post元素范围在 (0,2)。翻译一下好理解全部非负no negative coefficients有上界你可以把这理解成原来的 HC“读写权重”是没上限、可正可负的小权重网络 → 容易疯狂放大 / weird 混合到了mHC把这俩变成“0~1 / 0~2 的门控系数”门控可以开大开小但不会把信号翻成几十倍再传下去。其实嗨有一更更关键的也是放大的问题比内两个还危险页就是H_res问题先讲白原始 H_res 为啥危险H_res它是啥刚才讲了是一个n×n的矩阵用来在 n 条残差流之间 mixing对吧不考虑 F只看“残差总线从这一层到下一层的传递”就是这么一个线性变换。多层叠起来就是一串矩阵乘我问你个问题你为啥做深度学习的时候为什么要把概率换乘对数概率为了怕连乘上下溢出其实没上溢什么事在这里为了押韵skr对不这你这老大一个连乘你看不出来如果每个H_res的元素可以是正的也可以是负的行和列也随便多大那某一层可能把某条流乘个 10再下一层又乘个 10十几层后就可能乘了 10^k 这种数量级直接爆。论文里量化这个“放大倍数”定义了一个指标Amax Gain Magnitude 最大的行和 / 最大的列和取绝对值大概理解为“最糟情况下会被放大多少倍”。在原始 HC 里这个指标能冲到 3000这就是数值不稳定loss/grad 会爆的根源。总结一句原始H_res是一个“没有刹车、又能乱放大”的混流矩阵多层一叠就容易炸。mHC 的核心点强行把 H_res 限制成一种“温和、守恒”的矩阵他们给H_res加了一个非常强的几何约束H_res必须是一个”双随机矩阵“doubly stochastic所有元素 0每一行的和 1每一列的和 1。所有满足这仨条件的矩阵集合就叫做“双随机矩阵流形”也叫 Birkhoff 多面体。你可以先不管名字就理解成一个很很保守的 mixing 矩阵堆就完了。把任意原始矩阵H~res拉到这个集合里就得到 mHC 的H_res为啥这个约束这么有用“每条流的输出是其他流的凸组合不会无穷放大”看“行和 1元素非负”这一条对第 i 行来说是一组非负、和为 1 的权重(Hlres)i,∗是一组非负、和为1的权重输出的第 i 条流是这不就是“拿 n 条流做一个加权平均凸组合”吗关键加权平均不会把数值随便乘 100 倍它最多就是在不同流之间“洗牌 / 混合”但不会凭空放大幅度。这一点就已经把“单层随便爆炸”的风险压下去一大截。“多层复合后仍然保持‘均值守恒 范数不扩张’恢复类似 identity mapping 的稳定性。”再看“列和 1” “非负” “矩阵乘法下封闭”这三点列和 1谱范数 ≤ 1范数不扩张在矩阵乘法下封闭对比原来的 identity mapping传统 residualmHC 的做法所以说他们不是简单地恢复 “H_res I”那样没有流间交互而是说“H_res 可以随便学但只能在一个“不会乱放大、不会乱缩小”的集合里学也就是用几何约束把 identity 的那种“稳”推广到一整片流形上。Sinkhorn-Knopp 是干嘛的上面说的是“想要的属性”那具体怎么把一个任意矩阵拉到这个集合里做法先对原始矩阵做exp→ 所有元素变成正的然后反复做循环这个过程若干次论文里用 20 次就会收敛到一个双随机矩阵这就是Sinkhorn-Knopp 算法。你可以理解成“给我一个乱七八糟的矩阵我每次先按行调一调、再按列调一调来回 20 次之后行和列和都差不多是 1 了。”所以来源仍然可以由输入动态生成有表达力但最终用来真正做 mixing 的H_res是一个经过“洗白”的、守恒的 mixing 矩阵。讲完了我其实已经摆开了揉碎了讲了如果实在看不懂就理解为对残差网络的一个优化就可以了现在让它也变成可学习的参数了而且不下溢出可以在某些需要更高表现力的网络的时候不用非的做宽或者做深至于有没有用我其实没在别的LLM网络上看到用HC的但是看起来是很热闹的。你想啊原来transformer要训练的层就是位置编码attentionmlpnorm的r和b后来又得训moe 得gate和被拆开的小mlp现在又得折腾residual生命不息折腾不止