SMILE
- Motivation 在大规模数据集上训练深度模型的成本越来越高,因此,当前广泛采用模型融合技术来利用已有模型的知识:模型融合有效地提升了模型性能并加速了新模型的开发。 然而,单个模型参数之间的潜在干扰以及融合过程缺乏可解释性仍然是当前的重大挑战。现有的方法通常通过评估参数的属性(如幅值或符号)或通过参数剪枝来解决参数干扰问题,这些方法都是依赖于启发式方法或简化假设。 但是,我们提出了一种全新的子空间视角来理解和解决参数干扰问题:我们通过矩阵分解的子空间分析方法,将微调模型的预测分解为不同的组成部分(包括预训练知识和任务特定的适应部分),以便后续模型在适应下游任务时保留预训练知识;同时,我们进一步将参数干扰问题形式化为一个优化问题(提供了一个更严谨和可量化的视角)。 总的来说,基于上述观察,我们提出了零样本稀疏低秩专家混合模型(SMILE)。该方法的核心思想是通过增加模型的维度,为每个任务分配独立的低秩专家(Low-rank Experts),从而在不显著增加参数量的情况下,实现多任务的灵活适应。 通过实验,我们发现:(1)通过增加模型维度,我们能够在保持高性能的同时,显著减少模型的数量和计算成本;(2)对于使用LoRA微调的模型,仅增加2%的参数即可保持99%的个体性能;(3)我们的方法还提供了性能与模型大小之间的灵活权衡,如下图所示:较低的秩可以减少参数量,但可能会略微降低性能;而较高的秩则可以提升性能,但会增加模型的大小。 [图片]
- Method 2.1 从子空间角度重新思考模型微调 在深入探讨所提出方法的细节之前,我们从奇异值分解(SVD)的子空间视角对微调过程进行了深入分析,我们的目标是:(1)研究并定位微调权重\(\(W_{ft}\)\)中的任务信息;(2)理解这些任务信息如何与预训练权重\(\(W\)\)相关联。 首先,我们考虑预训练模型的一个线性层,其参数为\(\(W \in R^{m \times n}\)\),\(\(b \in R^{m}\)\),在下游任务上进行全微调后,权重矩阵和偏置向量分别更新为\(\(W_{ft}\)\)和\(\(b_{ft}\)\)。 奇异值分解可以形式化为:\(\(W = U \Sigma V^T\)\),其中\(\(U \in \mathbb{R}^{m \times m}\)\),\(\(\Sigma \in \mathbb{R}^{m \times n}\)\),\(\(V \in \mathbb{R}^{n \times n}\)\):\(\(U\)\)和\(\(V\)\)是正交矩阵,分别表示左奇异向量和右奇异向量,\(\(\Sigma\)\)是一个对角矩阵,其对角线上的元素为奇异值,按从大到小排列。通过 SVD,我们可以将权重矩阵分解为不同重要性的子空间:较大的奇异值对应的子空间包含了权重矩阵的主要信息,而较小的奇异值对应的子空间则包含了次要信息或噪声。 类似地,微调后的参数矩阵也可以进行奇异值分解:\(\(W_{ft} = U (\Sigma + \Delta \Sigma) V^T\)\),其中\(\(\Delta \Sigma\)\)表示微调过程中奇异值的变化,我们可以通过分析\(\(\Delta \Sigma\)\),来定位任务信息在微调权重中的位置,并理解这些信息如何与预训练权重相关联的。 (1)较大的\(\(\Delta \Sigma\)\)值对应的子空间是模型在微调过程中主要调整的部分; (2)通过分析\(\(\Delta \Sigma\)\)的分布,我们可以理解任务信息如何与预训练权重相关联:例如,\(\(\Delta \Sigma\)\)的变化主要集中在较小的奇异值上,说明模型在微调过程中主要利用了预训练权重中较不显著的部分来适应新任务(对于这种关联的理解有助于我们理解模型在微调过程中如何保留预训练知识和适应新任务) 下面,我们给出一个定理:给定两组正交归一化向量 \(\(\{u_i\}_{i=1}^p \subset \mathbb{R}^m\)\)和\(\(\{v_i\}_{i=1}^q \subset \mathbb{R}^n\)\),则矩阵集合\(\(\{u_i v_j^T\}_{i=1,j=1}^{p,q}\)\)构成了\(\(\mathbb{R}^{m \times n}\)\)的一个子空间的正交归一化基,且该子空间的维度为\(\(p \times q\)\)(这个定理告诉我们,给定两组正交归一化向量,可以通过外积的方式构造一组正交归一化的矩阵基,用于表示或分解矩阵空间中的特定子空间)。 根据这个定理,我们可以知道:对于任意矩阵\(\(A \in R^{m\times n}\)\),都可以表示为基\(\(\{u_i v_j^T\}\)\)的加权和:\(\(A = \sum_{i=1}^m \sum_{j=1}^n \langle A, u_i v_j^T \rangle u_i v_j^T\)\) 同时,微调后的输出\(\(y\)\)也可以分解为预训练部分和微调部分:\(\(y = W_{ft} x + b_{ft} = (W + \Delta W) x + (b + \Delta b) = \underbrace{W x + b}_{\text{预训练部分}} + \underbrace{\Delta W x + \Delta b}_{\text{微调部分}}.\)\) 我们首先使用简化的 SVD 将权重矩阵进行分解:\(\(W = U_r \Sigma_r V_r^T\)\),它的核心思想在于仅保留矩阵\(\(W\)\)中的非零奇异值及其对应的奇异向量,从而减少计算复杂度(通过将对角矩阵中的元素都设置为大于0的奇异值来实现的)。作用是:通过保留非零奇异值和截断较小的数,实现降维和去噪,并且减少了存储和计算成本。 全 SVD 保留了矩阵\(\(W\)\)的所有信息,包括核和余核(核表示满足\(\(Wx=0\)\)的所有\(\(x\)\),余核则表示满足\(\(y^TW = 0\)\)的所有\(\(y\)\)) [图片] 下面,我们开始分别分析预训练部分和微调部分: (1)预训练部分:\(\(Wx+b\)\),\(\(Wx\)\)可以展开为:\(\(Wx = \sum_{i=1}^n W \langle x, v_i \rangle v_i = \sum_{i=1}^n \left( \sum_{j=1}^r \sigma_j u_j v_j^T \right) \langle x, v_i \rangle v_i = \sum_{j=1}^r \sigma_j \langle x, v_j \rangle u_j\)\)(只有\(\(i=j\)\)的时候取1,别的时候都为0)。预训练部分通过奇异值分解,将输入\(\(x\)\)投影到预训练权重\(\(W\)\)的主要奇异向量上,而这些奇异向量代表了预训练模型中学到的最重要的特征方向。 (2)微调部分:\(\(\Delta W x + \Delta b\)\),\((\Delta W x (\(可以展开为:\)\)\Delta W x = \sum_{i=1}^n \left( \sum_{j=1}^m \sum_{k=1}^n \delta_{jk} u_j v_k^T \right) \langle x, v_i \rangle v_i = \sum_{j=1}^m \sum_{k=1}^n \delta_{jk} \langle x, v_k \rangle u_j (\(。其中,\)\)\delta_{jk}\)\)量化了权重更新在方向\(\(u_j v_k^T\)\)上的贡献,反映了模型在微调过程中对特定输入-输出变换的增强或抑制。 为此,我们根据奇异值可以对预训练参数进行分区:Zone I:包含最重要的奇异值,占总奇异值和的 50%。这些奇异值对应预训练模型中学到的最重要特征;Zone II:包含剩余的奇异值,占总奇异值和的另外 50%。这些奇异值对应较不显著的特征;Zone III:超出预训练权重范围,不包含预训练信息。 我们也将\(\(\Delta W\)\)投影到不同的子空间:Subspace I:由 Zone I 的奇异向量生成;Subspace II:由 Zone II 的奇异向量生成;Subspace II & III:由 Zone II 和 Zone III 的奇异向量生成。结果如下: [图片] 结果表明:与预训练模型相比,将微调的更新投影到子空间 I 上会导致下游任务的性能只有一些提高,有时甚至根本没有改善。投影到子空间 II 会导致适度的改进,而投影到子空间 II 和 III 会导致显著的性能提升,几乎达到微调模型的水平。 因此我们可以得到结论:微调主要保留了预训练的重要特征,其利用较不显著的维度进行任务特定学习,并且激活或重新利用了权重空间中未使用的维度。 这里说了这么多,我来举个简单的例子有助于大家的理解: 我们假设预训练权重为:\(\(W = \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{bmatrix}\)\),然后进行 SVD,分解为:\(\(U = \begin{bmatrix} -0.23 & 0.88 \\ -0.52 & 0.24 \\ -0.82 & -0.40 \end{bmatrix}, \quad \Sigma = \begin{bmatrix} 9.51 & 0 \\ 0 & 0.51 \end{bmatrix}, \quad V = \begin{bmatrix} -0.62 & -0.78 \\ -0.78 & 0.62 \end{bmatrix}\)\) 较大的奇异值 9.51 对应的子空间包含了权重矩阵的主要信息,而较小的奇异值 0.51 对应的子空间包含了次要信息。 接下来,微调之后,\(\(W_{ft} = \begin{bmatrix} 1.1 & 2.2 \\ 3.3 & 4.4 \\ 5.5 & 6.6 \end{bmatrix}\)\),我们也进行 SVD,结果为: \(\(U = \begin{bmatrix} -0.23 & 0.88 \\ -0.52 & 0.24 \\ -0.82 & -0.40 \end{bmatrix}, \quad \Sigma + \Delta \Sigma = \begin{bmatrix} 9.61 & 0 \\ 0 & 0.61 \end{bmatrix}, \quad V = \begin{bmatrix} -0.62 & -0.78 \\ -0.78 & 0.62 \end{bmatrix}\)\) 那么:\(\(\Delta \Sigma = \begin{bmatrix} 0.10 & 0 \\ 0 & 0.10 \end{bmatrix}\)\) 较大的\(\(\Delta \Sigma\)\)值(如 0.10)对应的子空间是模型在微调过程中主要调整的部分,在这个例子中,两个奇异值都增加了 0.10,说明模型在两个子空间上都进行了调整。 如果\(\(\Delta \Sigma\)\)的变化主要集中在较小的奇异值上,说明模型在微调过程中主要利用了预训练权重中较不显著的部分来适应新任务。 2.2 任务特定模型之间的参数干扰 在2.1中,我们可以把输出分解为: \(\(y^{(i)} = \underbrace{\sum_{j=1}^{r} \sigma_j \langle x, v_j \rangle u_j + b}_{\text{pre-trained part}} + \underbrace{\sum_{j=1}^{m} \sum_{k=1}^{n} \delta_{jk}^{(i)} \langle x, v_k \rangle u_j + \Delta b^{(i)}}_{\text{fine-tuned part}}\)\) 我们通过 SVD,实现了将预训练权重分解为基向量\(\(\{u_j\}\)\)和\(\(\{v_j\}\)\)以及对应的奇异值\(\(\sigma_j\)\)。 至于微调部分:微调部分针对特定任务进行调整,不同任务的微调部分可能不同,因此,引入了\(\(\delta_{jk}^{(i)}\)\)和\(\(\Delta b^{(i)}\)\)进行调整。 当前模型合并方法中的加权平均方法合并后的输出为:\(\(y_{\text{merged}} = \text{pre-trained part} + \sum_{j=1}^{m} \sum_{k=1}^{n} \left( \sum_{l=1}^{T} \lambda_l \delta_{jk}^{(l)} \right) \langle x, v_k \rangle u_j + \sum_{l=1}^{T} \lambda_l \Delta b^{(l)}\)\) 这将导致:如果不同任务的微调部分差异较大,直接加权平均可能导致性能下降。 因此,我们提出一个优化问题:目标是最小化合并模型的输出与特定任务微调模型输出之间的差异,即\(\(\min_{\lambda_l} \| y_{\text{merged}} - y^{(i)} \|_2^2 = \min_{\lambda_l} \left\| \sum_{j=1}^{m} \sum_{k=1}^{n} \left[ \left( \sum_{l=1}^{T} \lambda_l \delta_{jk}^{(l)} \right) - \delta_{jk}^{(i)} \right] \langle x^{(i)}, v_k \rangle u_j + \left( \sum_{l=1}^{T} \lambda_l \Delta b^{(l)} \right) - \Delta b^{(i)} \right\|_2^2\)\) 我们利用三角不等式,将这个目标分解为两部分:权重项的误差和偏置项的误差。 对于偏置项,可以给定一个解:\(\(\lambda_l = (\Delta B^\top \Delta B)^{-1} \Delta B \Delta b^{(i)}\)\)。 对于权重项目,存在参数干扰:输入\(\(x^{(i)}\)\)激活某些维度时(即\(\(\langle x, v_k\rangle\)\)不为0时),不同任务的微调部分可能会相互干扰。为此,我们可以:通过增加输入维度,扩大正交子空间,从而减少参数干扰。 实际上,这个问题也存在于原始模型的参数空间中(我们只需要将基向量替换为标准欧几里得基向量即可)。 2.3 使用 Sparse Mix of Low-Rank Experts 解决参数干扰 在模型合并中,不同任务的微调模型共享预训练参数,但它们的微调部分可能会相互干扰,导致合并后的模型性能下降。虽然偏置项的最优合并权重有闭式解,但这个解依赖于具体任务,无法直接推广到所有任务。 为此,本文提出了Sparse Mixture of Low-rank Experts (SMILE),其核心特点包括:
- 零样本操作:SMILE 模型不需要任何任务相关的数据或训练,可以直接应用于新任务。
- 稀疏低秩专家混合:通过引入多个低秩专家(对原有参数矩阵的分解)和一个路由机制,动态地组合不同任务的模型参数。
- 共享预训练部分:保留了预训练模型的共享部分,以减少参数冗余并提高泛化能力。 其结构如下图: [图片] 左边是整体模型的架构:所有任务共享的预训练参数,捕捉通用特征,然后传入 Router 中,根据输入动态选择最相关的专家组合。 右边是 Router 机制,通过稀疏性约束,确保只有少数专家被激活,从而减少计算开销和参数干扰。 利用 Router 机制,动态选择专家的过程可以形式化为: \(\(y_{\text{merged}} = \text{pre-trained part} + \sum_{j=1}^{m} \sum_{k=1}^{n} \left( \sum_{l=1}^{T} \lambda_i(x^{(i)}) \delta_{jk}^{(l)} \right) \langle x^{(i)}, v_k \rangle u_j + \sum_{l=1}^{T} \lambda_i(x^{(i)}) \Delta b^{(l)}\)\),其中\(\(\lambda_i\)\)是一个将输入映射到任务概率分布的函数(即选择出最适合当前输入的那些专家),理想状态是实现一个 one-hot 编码,但这显然不太实际。 首先,我们选择使用 SVD 来分解每个任务的参数差异\(\(\Delta W^{(i)}\)\),然后使用低秩近似来提取最重要的部分: 如下:\(\(\Delta W^{(i)} = U^{(i)} \Sigma^{(i)} (V^{(i)})^\top = \sum_{j=1}^{r^{(i)}} \sigma_j^{(i)} u_j^{(i)} (v_j^{(i)})^\top\approx \sum_{j=1}^{k} \sigma_j^{(i)} u_j^{(i)} (v_j^{(i)})^\top = U_k^{(i)} \Sigma_k^{(i)} (V_k^{(i)})^\top\)\) 直白点说就是保留前\(\(k\)\)个最重要的奇异值和对应的奇异向量。 我举个简单的例子: 假设\(\(\Delta W = \begin{bmatrix} 0.1 & 0.2 \\ 0.3 & 0.4 \\ 0.5 & 0.6 \end{bmatrix}\)\),我们正常分解后得到:\(\(U = \begin{bmatrix} -0.23 & 0.88 \\ -0.52 & 0.24 \\ -0.82 & -0.40 \end{bmatrix}, \quad\Sigma = \begin{bmatrix} 0.91 & 0 \\ 0 & 0.51 \end{bmatrix}, \quad V = \begin{bmatrix} -0.62 & -0.78 \\ -0.78 & 0.62 \end{bmatrix}\)\) 假设我们希望保留前\(\(k=1\)\)个奇异值,结果如下: \(\(\Delta W \approx \sigma_1 u_1 v_1^T = 0.91 \begin{bmatrix} -0.23 \\ -0.52 \\ -0.82 \end{bmatrix} \begin{bmatrix} -0.62 & -0.78 \end{bmatrix}\)\) 这就是使用低秩近似来提取最重要的部分。 在这里,作者指出:在给定的秩\(\(k\)\)的情况下,低秩近似\(\(U_k^{(i)} \Sigma_k^{(i)} (V_k^{(i)})^\top\)\)是参数差异的最佳近似,因为它最小化了参数误差(很好理解,如果只能挑\(\(k\)\)个,那么挑变化最大的\(\(k\)\)个肯定没错)。 同时,这样进行低秩近似:将\(\(\Delta W\)\)分解为\(\(U_k\)\)和\(\(V_k\)\)显著减少了参数数量,并且捕捉了矩阵中最显著的变化。 路由选择部分,我们的实现如下:首先计算路由得分\(\(r^{(i)}\)\):\(\(r^{(i)} = \left\| \sum_{j=1}^{k_{\text{gate}}} \langle x, v_j^{(i)} \rangle \right\|_2 = \left\| V_{k_{\text{gate}}}^{(i)\top} x \right\|_2\)\) 其中\(\(V_{k_{\text{gate}}}^{(i)}\)\)是第\(\(i\)\)个专家的低秩矩阵\(\(V_k^{(i)}\)\)的前\(\(k_{gate}\)\)列(超参数,不可过大,会丧失区分度,4或者8经过实验表明是很好的选择) 然后,我们根据路由得分计算概率分布\(\(p_i = \text{softmax}_i(r^{(i)}) = \text{softmax}_i\left( \left\| V_{k_{\text{gate}}}^{(i)\top} x \right\|_2 \right)\)\)。 最后,根据概率的值,我们选择 Top-K 的专家: \(\(\lambda_i = \begin{cases} p_i, & p_i \in \text{TopK}(\{p_j\}_{j=1}^T, K) \\ 0, & \text{otherwise}. \end{cases}\)\) 总体而言,输出为:\(\(y = (Wx + b) + \sum_{i=1}^{T} \lambda_i \left( U_k^{(i)} \Sigma_k^{(i)} V_k^{(i)\top} x + \Delta b^{(i)} \right)\)\) 最后,我们对 SMILE 的复杂度进行分析:SMILE 模块在标准线性层的基础上增加了额外的参数,其总参数数量为(一个标准的线性层):\(\(m(n + 1) + T(mk + nk + m) + nTk_{\text{gate}}\)\),其中:\(\(T\)\)是任务数量,\(\(k\)\)是的秩;而对于每个输入 token,SMILE 模块激活的额外参数数量为:\(\(nTk_{\text{gate}} + K(mk + nk + m)\)\),其中\(\(K\)\)是每个输入 token 激活的专家数量,第一项是是路由机制的计算开销,第二项是激活的专家的计算开销。 同时,SMILE 可以自然地扩展到 PEFT 模型:参数低阶分解可以直接\(\(\Delta W_{\text{LoRA}} = B_{\text{LoRA}} A_{\text{LoRA}}\)\),其余保持不变即可
- Experiment 3.1 实验设置
- 我们将 SMILE 和多种模型融合方法进行对比:Simple Averaging、Fisher Merging、RegMean、Task Arithmetic、Ties-Merging、AdaMerging、WEMoE
- 实验任务:(1)图像分类:评估 SMILE 在视觉任务中的表现;(2)文本生成:评估 SMILE 在自然语言处理任务中的表现
- 微调方法:全量微调和 LoRA 3.2 开放词汇图像分类任务
- 任务:8 个多样化的开放词汇图像分类任务
- CLIP 模型:CLIP-ViT-B/32 和 CLIP-ViT-L/14
- 微调设置:微调的时候文本编码器被冻结,仅对视觉编码器进行微调 不同方法对于验证集的要求如下: [图片] 实验结果如下: [图片] 我们发现:SMILE 不需要额外的训练数据或测试时适应且SMILE 的参数数量显著少于其他方法。同时,随着\(\(k\)\)的增加,模型性能提升,但参数数量也增加。 具体结果见下表: [图片] 结果表明:SMILE 在所有任务上均取得了具有竞争力的结果:例如,在 CLIP-ViT-L/14 模型上,SMILE 达到了单个模型性能的 99.3%,而参数数量仅为单个模型的 2.56 倍。相比之下,Weight-Ensembling MoE 需要 6.40 倍 的参数, SMILE 在参数效率上显著优于该方法。 3.3 文本生成任务
- 任务:8 个来自 GLUE 基准测试的文本生成任务
- 模型:使用 Flan-T5-base 模型进行微调
- 微调设置:全量微调和 LoRA 全量微调的结果如下: [图片] 我们发现:在所有 8 个任务上,SMILE 均优于其他融合方法;当 \(\(k_{gate}=8\)\)、\(\(k=32\)\) 时,SMILE 达到了单个模型性能的 99.0%,而参数数量仅为单个模型的 1.52 倍。 LoRA 微调的结果如下: [图片] 在 LoRA 微调场景下,SMILE 依然保持了强大的性能,参数数量仅增加 1.02 倍,达到了单个模型性能的 99.3%。 3.4 分析性实验 \(\(k\)\)和\(\(k_{gate}\)\)对Flan-T5-Base 模型性能和参数数量的影响如下图: [图片] 增加\(\(k\)\)和\(\(k_{gate}\)\)通常会提高模型性能,但随着参数数量的增加,性能提升的边际效益递减,并且:SMILE 在较小的\(\(k\)\)和\(\(k_{gate}\)\)值下即可达到接近最优的性能 \(\(k\)\)和\(\(k_{gate}\)\)对CLIP-ViT 模型的影响也类似。 \(\(Top-K\)\)中\(\(K\)\)的变化对模型的影响如下(CLIP-ViT-B/32 模型、8 个图像分类任务): [图片] 我们发现:随着\(\(K\)\)的增大,平均准确率略有下降(这是因为:每个专家专门针对特定任务进行微调,因此只需选择最相关的少数专家即可达到高性能) 同时,随着\(\(K\)\)的变化,单任务的准确率相对稳定,这表明:路由机制具有较强的鲁棒性 SMILE 在大规模模型上也适用:具体来说,我们在 Mistral-7B-v0.1 模型上进行了实验: 我们有以下四个模型:Mistral-7B-v0.1(记为\(\(M_0\)\))、数学领域的专家模型(记为\(\(M_1\)\)),另外两个其他领域的模型(分别记为\(\(M_2\)\),\(\(M_3\)\))。 我们进行如下合并:\(\(M_{0;1}= M_0 + M_1\)\),\(\(M_{0;2}= M_0 + M_2\)\),\(\(M_{0;3}= M_0 + M_3\)\),\(\(M_{0;123}= M_0 + M_1 + M_2 + M_3\)\)。 在数学任务上,\(\(M_{0;1}\)\)和\(\(M_{0;123}\)\)表现出色,说明\(\(M_1\)\)作为数学专家的有效性 \(\(M_{123}\)\)在所有任务上均表现出色,展示了 SMILE 在多任务学习中的潜力。 同时,我们通过调整低秩专家的秩,分析其对模型性能的影响,结果如下图: [图片] 我们发现:随着专家秩的增加,GSM8K 分数总体提升。这很自然,因为路由机制成功选择了适合数学问题的专家,而增加秩使得低秩专家能够捕捉更多任务特定的信息。 同时,下表反映了我们上文提到的:“\(\(M_{123}\)\)在所有任务上均表现出色,展示了 SMILE 在多任务学习中的潜力” [图片]****
本页面最近更新:,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:OI-wiki
本页面的全部内容在 协议之条款下提供,附加条款亦可能应用