
1
BitFit:极简主义的偏置微调
BitFit,全称Bias-term Fine-tuning,是目前最简单、最极致的PEFT方法之一。
技术原理
它的原理可以用一句话概括: 冻结模型中所有的权重矩阵,只更新网络中的偏置项(bias terms) 。这里的偏置项指的是Transformer层中所有线性层(如query, key, value, 全连接层)和LayerNorm层里的bias参数。就像调整一个精密仪器的“零点”,只动这些微小的偏移量,来引导整个模型的输出。
操作过程
实现起来异常简单,只需在训练前将模型中所有不包含"bias"的参数设置为 `requires_grad=False` 即可。
核心特点
典型示例
适合的场景与需求
2
Diff Pruning:动态的差分剪枝
Diff Pruning(差分剪枝)思路是“具体问题具体分析”,通过一个可训练的稀疏“差分向量”来动态决定更新哪些参数
技术原理
它不直接选择固定的参数,而是为每个原始权重学习一个 可训练的“掩码” 。在前向传播时,最终的权重是 原始权重 + 掩码 。训练过程中,通过引入稀疏性正则化,强制这个“掩码”变得极其稀疏,从而动态地决定哪些位置的权重需要被更新。
核心特点
典型示例
适合的场景与需求
3
横向对比
为了更直观地理解它们的区别,我们把这两种方法放在一起比较:
对比维度 | BitFit | Diff Pruning |
|---|---|---|
核心策略 | 固定不变,只动偏置项 | 动态选择,通过稀疏掩码找出最优参数 |
核心思想 | 极简主义,只更新偏置项 | 动态主义,用可训练的稀疏掩码定位要更新的参数 |
可训练参数量 | 极低 (< 0.1%),固定不变 | 低,但掩码本身有参数,且稀疏度可调节 |
任务一致性 | 高,每个任务更新的参数集合同样是所有的bias项 | 低,不同任务通过掩码找到的最优参数位置完全不同 |
存储需求 | 极低,每个任务只需存储bias向量 | 较低,但需要存储一个与模型同规模的稀疏掩码 |
数据适应性 | 在小到中规模数据上效果惊艳且稳定 | 理论上适应性强,但对稀疏性正则化的调参要求高 |
实现复杂度 | 非常简单,几行代码即可完成 | 复杂,需要实现掩码机制和稀疏性正则化 |
典型应用 | 单一任务的快速微调、图像分类、情感分析 | 多任务部署、GLUE基准测试、设备端学习 |
最适合的场景 | 快速原型验证、资源受限的单任务、探索性研究 | 多任务/流式任务管理、存储/带宽极度敏感的设备端应用 |
总的来说,选择式方法让我们看到了大模型微调的另一种可能: 不添砖加瓦,只精雕细琢 。
BitFit 以其极致的简单和高效脱颖而出,它不仅实用,更提供了一个理解模型内部运作的独特视角。
Diff Pruning 则代表了另一种更动态、更灵活的探索方向,虽然在实践中不如BitFit和LoRA流行,但其“让数据决定更新哪里”的思想非常巧妙。