ARTICLE · 1003422
《神经网络与深度学习通识版》第五章习题选2
《神经网络与深度学习通识版》第五章习题选2继续第五章习题展开。 第五题: “仅编码器、仅解码器、编码器-解码器三种范式背后其实对应着三种任务哲学:理解、生成、翻译.请分析为什么当代大语言模型几乎都走向了仅解码器范式?这一“去编码器化” 的趋势,揭示了关于“语言建模”的什么共识?” 题目中已经给出了明确的提示,只不过又用了哲学这个词。 提示中说,用仅编码器模式设计的神经网络主要是用于理解的,任务核心词在于理解。一般都把这种模式的代表性模型定义为BERT,这是Google在2018年提出的一种预训练模型,经过微调后可以用于文本分类,情感分析等任务。在训练过程中主要采用的是预测句子中被遮盖的词(也有下一句预测?),这样在编码器之后还需要加上分类输出头。 而编码器-解码器模式的代表是BART,T5等,这些网络都是用于机器翻译和文本摘要,对应于题目中所说的任务核心词翻译。这种模型虽然是Transformer原始论文中精心设计的那种,但是后来人们发现,不管是哪一种任务,实际上通过仅解码器的生成任务,都是可以统一完成的。这样一来,编码器-解码器模式就要多付出几乎一倍的存储、计算代价来实现,就显得不是很合算了。 那么,仅解码器模式的任务核心词生成,应该如何理解呢?这道题其实和下一章的自监督学习的内容关联比较紧密。比如第一种,仅编码器训练时用到的掩码预测训练方法,就不是依赖于有标签的数据,属于自监督学习。而训练执行翻译任务的模型时,通常需要大量的不同语言对照文本,这样要执行的是监督学习,但是在仅解码器模式下统一采用预测下一词的训练方法,实际上将两种不同语言的句子拼接在一起,将有标签的数据也用在了自监督学习中。当然,在执行更多的其他类别任务时,使用的更多的是完全无标签数据,这也是仅解码器模式的一大优点。 由于需要执行自回归的生成任务,这样在注意力计算时,可以计算新生成内容和已有词元的关联权重,但已有词元和新词元的权重必须是0,也就是和编码器模式相比,这里执行的是带有掩码的因果注意力计算,而不是双向的全关联注意力计算。 通过提示词加生成的技术,可以将各种任务都统一到生成模式下,逐渐发现了自回归模式对未知概率分布的建模是机器学习的核心。为此,在工程实现时还设计了KV缓存等专门技术来优化存储和计算效率。 第七题: “混合专家(MoE)打破了“参数量与计算量挂钩”的铁律,让模型“大而不贵”.请用“医院分科” 的类比解释 MoE 的工作方式,并思考:它在训练稳定性、负载均衡、专家多样性上会遇到哪些新难题?” 多头注意力是针对整个Transformer模块中的前一半注意力计算子模块的优化,而混合专家MoE是针对Transformer模块中的后一半前馈网络子模块的优化。 其实这两者的优化思路有相互借鉴之处,MoE也是将单一的前馈网络拆分成很多“专家”小网络,但是和多头注意力不同,这里的专家数量可能要多一些,并且还有一个专门的前置路由来分配选择专家。多头注意力的总计算量保持不变,但是使用了MoE之后,一次处理中激活的专家数量并不多,占用的参数存储和计算量都比完全使用单一前馈网络时要少,这就是题目中说的“大而不贵”的意思。 路由器相当于医院的分诊台,不同的专家模块可以看成是医院独立的科室,但MoE的处理模式和真正的医院不同,病人不是只到一个科室去看病,而是分配几个专家来一起处理。 在实际采用MoE之后,出现的新问题包括:训练稳定性问题,负载均衡问题以及专家的趋同退化问题。 MoE的路由器本质是一个Softmax分类器。在训练初期,如果专家A偶然因初始化优势获得较高权重,它就会获得更多的梯度更新,变得更强;下一轮它更可能被选中,而其他专家获得极少梯度,逐渐“饿死”。这种“马太效应”导致路由熵(Router Entropy)急剧下降,路由器退化为一个确定性映射(One-hot选择),失去了“柔性分配”的初衷,造成训练不收敛。 在RLHF(基于人类反馈的强化学习)中使用MoE时,PPO算法需要约束新旧策略的KL散度。如果新旧策略在token选择上落入了不同的专家(即上一轮选专家A,这一轮选专家B),它们的输出分布(logits)来自于两个完全不同的子网络。此时计算KL(π old ∣∣π new ) 在数值上会极度不稳定甚至出现负值或无穷大。 解决方法包括: Router Z-Loss:除了辅助负载均衡损失,DeepSeek-V2引入的Router Z-Loss,强制路由器的logits保持“居中”,避免其数值过大导致Softmax退化。 冻结部分路由器:在RL微调阶段,冻结路由器的部分参数或限制其更新幅度,防止在RL的快速优化中导致专家分配策略发生突变。 由于用于网络训练的数据天然具有分布不均匀的特性,比如代码类数据远多于古文类,因此对应不同类别的专家的负载差异很大。解决方案包括动态复制热点专家,动态专家聚类,功能相似专家组成联盟协同工作。 由于所有专家接受相同的训练目标(交叉熵损失),梯度下降的合力会驱使不同专家的参数向同一个最优解(或同一个吸引子)靠拢。解决方案包括:共享专家(Shared Experts),在模型中固定一部分参数(如1/3的参数量)始终被所有token激活。这部分负责吸收所有样本的共性特征(如语法结构、基础逻辑),减轻其他路由专家的负担。通过细粒度分割,强制每个专家必须专注于极其狭窄的知识片段(比如只有“函数定义”或只有“中文修辞”),阻断其学习泛化特征的路径,从而强制保持稀疏性。额外引入一个专家差异度损失(Cosine Similarity Loss),惩罚不同专家输出表示之间的余弦相似度过高,保证他们在隐空间中是“正交”的。 MoE的训练艺术,本质上是在“路由熵(探索性)”与“专家利用率(专业性)”之间寻找一个精细的平衡点。 第八题: “大模型支持100 万词元的上下文,在 RNN 时代完全不可想象.这一跃迁背后是哪几项技术的共振,架构、工程还是硬件?如果未来要做1亿词元的上下文,最大的瓶颈会出现在哪里?” 在MoE上稍微尝试了一下展开,但是这个话题,暂时限定在本书划定的范围内吧,如果展开的话,内容会太多。 在本书中总结的长上下文的优化技术有四个技术路线: 一个是位置编码的改进,书中提到RoPE和一些变种(Linear RoPE、YaRN)能够支持更大的外推,这个在前一次的答题时已经详细提到过。 另一个是稀疏注意力,就是Q中词元并不是对所有K都计算相关权重,而是有一个掩码,只对掩码后的子集来计算。而这个掩码有静态的和动态之分,静态的就是滑动窗口技术,动态技术就更多更前沿了,据说有NSA、DSA等。 还有一个技术路线是线性注意力,这是通过数学近似来将权重计算复杂度降下来,但是这种近似方法会带来精度的损失。 书中总结的技术路线还有一个就是分块与检索,这是通过把长文档分成块,用检索选出相关块再送入注意力进行计算。 据说最近有一种MSA(Memory Sparse Attention)已经将上下文扩展到1亿token,但是目前除了论文之外,代码和模型都还没有完整开放,不过有些分析已经指出,在稀疏化的主流探索中,提升模型历史记忆的压缩和检索能力是其中一种技术路线,而MSA就是在延续和整合这些创新。