LORA_ LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

paper: https://arxiv.org/pdf/2106.09685.pdf
code: https://github.com/microsoft/LoRA

摘要

作者提出了低秩自适应,或称LoRA,它冻结了预先训练的模型权值,并将可训练的秩分解矩阵注入变压器架构的每一层,大大减少了下游任务的可训练参数的数量。
学习到的过度参数化模型实际上存在于一个较低的内在维度上。作者假设模型适应过程中权重的变化也具有较低的“内在秩”,这导致了作者提出的低秩适应(LoRA)方法。LoRA允许作者通过优化适应过程中密集层变化的秩分解矩阵来间接训练神经网络中的一些密集层,同时保持预先训练的权值冻结,如图1所示。
image.png

方法

一个神经网络包含许多密集的层,它们可以执行矩阵乘法。这些层中的权重矩阵通常具有全秩。Aghajanyan等人在2020年的一项研究发现,即预训练语言模型在面向特定任务时显示出一种特殊的属性:它们具有低“内在维度”。这意味着,尽管这些模型可能包含数百万到数十亿的参数,代表着极其高维的参数空间,但当它们适应或学习新的特定任务时,实际上只需要一个相对较小的参数子集。简单来说,模型能够在这样一个由较少参数构成的“更小的子空间”内有效地学习和适应。受此启发,作者假设权重的更新在适应过程中也有一个较低的“内在秩”。对于预先训练的权值矩阵 W 0 ∈ R d × k W_0∈R^{d×k} W0Rd×k,作者用低秩分解 W 0 + ∆ W = W 0 + B A W_0 +∆W=W_0+BA W0+W=W0+BA表示后者来约束其更新,其中 B ∈ R d × r B∈R^{d×r} BRd×r A ∈ R r × k A∈R^{r×k} ARr×k和秩 r ≪ m i n ( d , k ) r \ll min(d,k) rmin(d,k)。在训练过程中, W 0 W_0 W0被冻结,不接收梯度更新,而A和B包含可训练的参数。注意, W 0 W_0 W0 ∆ W = B A ∆W=BA W=BA都与相同的输入相乘,它们各自的输出向量按坐标求和。对于 h = W 0 x h = W_0x h=W0x,作者修改后的前向公式为: h = w 0 x + △ W x = w 0 x + B A x h=w_0x+\bigtriangleup Wx=w_0x+BAx h=w0x+Wx=w0x+BAx。如图1所示,首先初始化(对A使用高斯初始化,B初始化为0),所以 ∆ W = B A ∆W=BA W=BA在训练开始时为零。然后作者用 α r \frac{\alpha}{r} rα缩放 ∆ W x ∆Wx Wx(即相乘),其中α是r范围的一个常数,固定 α \alpha α一开始的 r r r,将 r r r作为超参数调整。当作者改变r时,这种缩放有助于减少重新调优超参数的需要。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 09:48:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 09:48:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 09:48:01       87 阅读
  4. Python语言-面向对象

    2024-03-15 09:48:01       96 阅读

热门阅读

  1. Python中的区块链技术与应用

    2024-03-15 09:48:01       40 阅读
  2. 每日OJ题_简单多问题dp①_力扣LCR 089. 打家劫舍

    2024-03-15 09:48:01       36 阅读
  3. ChatGPT创造力与创新探究

    2024-03-15 09:48:01       42 阅读
  4. Hive连接函数 concat 和 concat_ws 使用示例

    2024-03-15 09:48:01       36 阅读
  5. 如果保障服务器的安全

    2024-03-15 09:48:01       43 阅读
  6. ubuntu服务器使用netplan管理工具添加静态地址

    2024-03-15 09:48:01       34 阅读
  7. C++ lambda函数个人理解

    2024-03-15 09:48:01       44 阅读
  8. springboot配置文件Tomcat和mvc详细配置

    2024-03-15 09:48:01       37 阅读
  9. 面向对象设计之里氏替换原则

    2024-03-15 09:48:01       41 阅读
  10. SqlServer 系统表

    2024-03-15 09:48:01       44 阅读
  11. 本地环境下运行Spark程序

    2024-03-15 09:48:01       43 阅读
  12. Python和MATLAB数字信号波形和模型模拟

    2024-03-15 09:48:01       46 阅读