SFT
这篇文章的核心在于提出微调方法,使得可以针对不同的下游任务,用较少的参数量完成高效微调. 在不同下游任务上进行微调,可以看作是一次训练,给定数据集 ,其中 都是 a sequence of tokens. 模型的 pretrained parameter 是 ,目标是训练 :
这个 stuff 就是经典 LLM 训练目标函数
对于不同的下游任务,其领域数据集 不尽相同,导致微调所学习的 也不尽相同. 此外如果是传统的微调的话,参数规模 ,相当于重新训练.
LoRA
Aghajanyan 的文章显示 pretrained LLM 的权重矩阵有 low instrisic dimension 的特点. 于是提出猜想:权重的更新也具有 low rank 的特点. 即
其中 . 记输入为 ,于是 forward 的路径就是
在微调时,我们固定 pretrained param 不动,而只训练 两个矩阵. 对 进行 random Gaussian 初始化, 初始化为 ,并且 scale by 其中 是一个固定的超参.
LoRA does not Introduce Inference Latency
针对不同任务的微调完成后,我们得到 mapping . 在推理之前,我们直接把 算出来加到 上,即
都是 的矩阵,因此没有 inference latency. 而在不同任务之间切换也很简单,假设从 切换到 ,只需要先减去 再把 加回来即可
Low-Rank Updates
论文进一步探讨了 properties of low-rank adaptation learnt from downstream tasks. 实验在 GPT-3 175B 上进行
这一部分主要回答三个问题:
- Transformer 架构里,什么样的 weight matrix 最值得 FT?
- 最优的微调更新 是否真的具有 low rank 的性质?是的话,最佳的 rank 是多少?
- 与 的相关性研究
Weight Matrix Choices
- 如果单纯微调 会导致性能下降
- 如果联合微调 性能是最好的
并且,对于 联合微调的情况下, 的效果也很好了,表明低秩也可以学习到足够的信息。
Optimal Rank
- already gives satisfying boost, and increasing does not help more.
Relationship between Updates and Pretrained Param
- amplifies some features that already in but not emphasized in .