AIdiy
  • SCUT cs/AI科研入门指南
  • 目录
  • Linux与服务器篇
    • 服务器连接
    • linux深度学习环境配置篇
    • Linux虚拟机安装
    • Linux终端常用的shell指令
  • X11-forwarding(服务器的图形化工具)
  • 工程相关知识
    • YAML(配置文件)
    • sh训练脚本
    • HYDRA
  • 计算机视觉
    • 3D 重建
    • 生成式模型
  • 强化学习
    • 强化学习的简介和应用
    • 强化学习的学习路线
  • 模型微调
    • Lora
  • 升学相关
    • 博士毕业去向
由 GitBook 提供支持
在本页
在GitHub上编辑
  1. 模型微调

Lora

上一页强化学习的学习路线下一页博士毕业去向

最后更新于2个月前

CtrlK

在机器学习中,我们通常使用一个矩阵来表示一个全连接层,但是这个全连接层往往是过参数化的,这意味着我们可以通过计算这个矩阵的秩来确定哪些特征是重要和相关的。换句话说,我们试图找到原始特征空间(或矩阵)中少数维度的(线性)组合,能够捕捉数据集中大部分的信息且一旦我们找到了足够解决问题的参数空间,再增加这个参数空间的大小并不会显著提升模型的性能。所以只要调整这一部分的参数可以达到调整所有参数同样的效果同时减少GPU使用量

原理图

原理:

在大模型的矩阵W∈Rd×kW\in R^{d\times k}W∈Rd×k旁插入多一个ΔW\Delta WΔW但是由于可以低秩分解于是可以分解成AB=ΔWAB=\Delta WAB=ΔW ,其中A∈Rd×rA \in R^{d \times r}A∈Rd×r ,B∈Rr×kB \in R^{r \times k}B∈Rr×k ,然后我们只要训练AAA和BBB即可最后把ABABAB加到WWW中即可。

AAA使用高斯初始化,BBB使用零矩阵进行初始化,这样当数据第一次通过网络时和与训练结果是一致的,从而保证了模型在初始阶段便有一个不错的效果。但是这带来了不对称问题,其实我们也可以使用两个非全0矩阵进行初始化,但是需要事先将预训练权重减去初始化的值,即:

W=W0−B0A0+BAW=W_0-B_0A_0+BAW=W0​−B0​A0​+BA

Transformer 中的LoRA

最好的方式是在所有的权值矩阵WqW_qWq​ ,WkW_kWk​ ,WvW_vWv​,WoW_oWo​都加上LoRALoRALoRA因为这样有利于模型捕捉到所有矩阵的关键信息.(实际操作中,应当将可微调参数分配到多种类型权重矩阵中,而不应该用更大的秩单独微调某种类型的权重矩阵.)

秩的大小(r=1,2,4,8,64)

多任务的学习对于LoRA来说比较困难,除非把它们当成同一个任务。 其余学习资料