前言
在当前信息时代,大型语言模型(Large Language Models, LLMs)的发展速度和影响力日益显著。随着技术进步,我们见证了从基本的 Transformer 架构到更为复杂和高效的模型架构的演进,如混合专家模型(Mixture of Experts, MoE)和检索增强生成(Retrieval-Augmented Generation, RAG)。这些进步不仅推动了人工智能领域的边界,也对理解和应用这些技术提出了新的要求。
本笔记旨在基于大模型理论课程的学习成果,深入讲解和深化对 MoE 和 RAG 内容的理解。这份笔记反映了当前大模型研究的最新动态,体现了深入学习和掌握这些复杂架构的重要性。通过阅读以下内容,读者将能够获得对 MoE 和 RAG 架构更为深入的理解,掌握它们的设计原理、优势及应用场景。
一、混合专家模型 (MoE)
1.1 理念起源
MoE 的理念起源于 1991 年的论文《Adaptive Mixture of Local Experts》。考虑到多任务场景下训练同一模型时,在某场景更新权重时会影响到模型对其他场景的表现,干扰效应强,会造成学习缓慢和泛化不良。在这种情况下,给定训练样本,如果能够事先知道其对应于哪个子任务,那么可以使用由几个不同的'专家'网络组成的系统以及使用一个门控网络来决定每个训练样本应该使用哪个专家。如果输出不正确,权重变化将定位到所选专家(和门控网络),不会干扰到其他专家在其他情况下的权重。
专家是局部的(对应英文 local),一方面专家之间的权重解耦,另一方面每个专家只处理输入向量空间的一个小局部区域。作者通过对误差函数的巧妙设计,使得给定训练样本,局部专家的目标不会受到其他专家权重的直接影响,但仍存在一些间接耦合。如果采用梯度下降法训练门控网络和局部专家,则系统倾向于每个训练样本只分配一个专家。
1.2 稀疏性与计算效率
在 2010 至 2015 年间,条件计算领域的研究为 MoE 的后续发展做出了显著贡献。条件计算会基于输入 token 动态激活或停用网络组件,在理论上它能够在不增加计算量的情况下显著增加模型容量,但实践中存在重大的算法和性能挑战。面对这些挑战,Shazeer 等人提出引入稀疏门控 MoE 层。
在 MoE 层中有很多专家网络以及一个可训练的门控网络,每个专家都是一个简单的前馈神经网络,门控网络选择专家的稀疏组合来处理每个输入。基于 Softmax 门控网络,稀疏门控网络的计算中添加了稀疏性以减少计算量,添加了噪声项以有助于负载平衡。
具体而言,在 Softmax 之前,添加可调高斯噪声,然后仅保留前 k 个值,其余设置为负无穷。公式如下:
G(x) = Softmax(K eepTopK(H(x), k))
H(x)_i = (x · W_g)_i + StandardNormal() · Softplus((x · W_noise)_i)
KeepTopK(v, k)_i = {
v_i if v_i is in the top k elements of v,
-∞ otherwise.
}
这种机制确保了只有 Top-K 个专家被激活,从而实现了计算上的稀疏性,使得模型参数量可以非常大,而推理时的计算成本保持可控。
1.3 负载均衡问题
如果 token 总是被发送到少数几个受欢迎的专家,那么训练效率将会降低,也会导致负载不平衡。一方面,前期表现好的专家会更容易被门控网络选择,导致最终只有少数的几个专家真正起作用,专家不平衡;另一方面,即使保证了专家们的同等重要性,它们可能仍会收到数量非常不同的样本,例如,一位专家可能会收到权重较大的几个样本,而另一位专家可能会收到许多权重较小的样本,这可能会导致分布式设备出现内存和性能问题。
Shazeer 等考虑使用辅助损失来缓解这一问题。
对于专家不平衡问题,将'专家相对于一批训练样本 X 的重要性'定义为'该批所有样本的门控值之和',计算此项的变异系数,乘上可手动调整的 w_importance 得到 L_importance(X),该项附加损失鼓励所有专家都具有同等的重要性:
Importance(X) = Σ_{x∈X} G(x)
L_importance(X) = w_importance · CV(Importance(X))^


