01 🤝 融合算法
在本节,我们将重点介绍 mergekit 库目前实现的四种模型融合方法。请注意,还有其他方法,比如 linear [8]和 Task Arithmetic [9]。如果你对模型融合的相关论文感兴趣,我推荐阅读Hugging Face上的这本优秀论文集[10]。
1.1 SLERP
Spherical Linear Interpolation(SLERP)是一种用于在两个向量之间进行平稳和连贯地插值的方法。这种方法能够保持恒定的变化速率,并保留向量所在球面空间的几何特性。
与使用传统的线性插值方法相比,SLERP 更受青睐的原因有几个。例如,在高维空间中,线性插值(linear interpolation)可能导致插值向量的大小(幅度)减小(即权重的规模减小)。此外,权重方向的变化往往比大小(幅度)的变化代表的信息更有意义(如特征学习(Feature Learning)和表征(Representation))。
SLERP 是通过以下步骤实现的:
对输入的向量进行归一化处理,使它们的长度(magnitude)变为单位长度(长度为1)。这一步骤的目的是确保这些向量表示的是方向,而不是大小。
使用点积计算这些向量之间的角度。
如果这些向量几乎平行,则默认使用线性插值以提高效率。如果输入的两个向量夹角较大,SLERP 将根据插值因子 t (插值因子 t 是一个介于 0 到 1 之间的值,用于指定插值的程度。t=0 表示完全使用第一个向量,t=1 表示完全使用第二个向量,而在 0 到 1