【ML】Pre-trained Language Models及其各种微调模型的实现细节和特点

Pre-trained Language Models及其各种微调模型的实现细节和特点

      • 1. Pre-trained Language Models
      • 2. semi-supervised Learning
      • 3. zero-shot
      • 4. Parameter-Efficient Fine-Tuning
        • 4.1 含义:
        • 4.2 实现方式:
      • 5. LoRA
        • 5.1 LoRA 的主要特点:
        • 5.2 LoRA 的实现方式:
      • 6. LoRA 和Adaptor 的优缺点对比
        • 6.1 LoRA(Low-Rank Adaptation)
        • 6.2 Adapter(适配器)
        • 6.3 综合对比:
      • 7. Prefix Tuning
      • 8. soft prompting 微调方式
      • 9. 四种微调对比
      • 参数高效微调方法
        • 概述
        • 方法
        • 对比表格
        • 结论
      • 10. early Exit
      • 11. summary

1. Pre-trained Language Models

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. semi-supervised Learning

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. zero-shot

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PLMs 通常指的是 “Prompt Learning Models”,即提示学习模型。这类模型在自然语言处理(NLP)中使用,特别是在预训练语言模型的基础上,通过引入提示(prompts)来改善模型对特定任务的理解和执行能力。以下是一些关于 PLMs 的特点:

  1. 提示(Prompt)

    • 提示是一段文本,用来引导语言模型以特定方式回答问题或执行任务。
  2. 灵活性

    • PLMs 通过设计不同的提示,可以灵活地应用于各种不同的任务,而无需对模型进行大量的任务特定训练。
  3. 任务适应性

    • 通过精心设计的提示,PLMs 能够适应不同的 NLP 任务,如文本分类、问答、摘要等。
  4. 简洁性

    • 提示通常是简短的,它们简洁地指示模型需要执行的任务类型或所需的信息格式。
  5. 低资源消耗

    • 相比于为每个任务训练一个独立的模型,PLMs 通过复用预训练模型并添加少量的提示,可以减少计算资源和数据的需求。
  6. 易于实现

    • PLMs 相对容易实现,因为它们通常只需要在预训练模型的基础上进行轻微的调整。
  7. 可解释性

    • 由于提示是显式的文本,PLMs 相对于黑盒模型可能提供更好的可解释性。
  8. 上下文融合

    • PLMs 通过提示将输入文本与任务需求结合起来,使得模型能够更好地理解上下文信息。
  9. 微调能力

    • 尽管 PLMs 主要依赖预训练模型的能力,但在某些情况下,也可以对模型进行微调以进一步提高性能。
  10. 多样性

    • 提示的设计可以非常多样,包括简单的模板、问题形式、指令性语句等。

PLMs 是一种利用预训练语言模型潜力的有效方法,特别是在资源受限或需要快速适应新任务的场景下。然而,PLMs 的性能很大程度上依赖于提示的设计,这可能需要一定的经验和创造力。此外,PLMs 可能不如针对特定任务训练的模型那样强大,但它们提供了一种快速、灵活的解决方案。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. Parameter-Efficient Fine-Tuning

Parameter-Efficient Fine-Tuning(参数高效微调)是一种微调预训练模型的技术,旨在在保持大部分预训练参数不变的同时,对模型进行特定任务的适应性调整。这种方法的目的是减少训练资源的消耗,同时保持或提升模型在特定任务上的性能。以下是 Parameter-Efficient Fine-Tuning 的含义和实现方式:

4.1 含义:
  1. 参数效率

    • 通过只调整模型中一小部分参数,而不是整个模型,来减少所需的训练时间和计算资源。
  2. 微调

    • 利用预训练模型在特定任务上的微调,以学习任务特定的特征和模式。
  3. 保留预训练知识

    • 通过微调少量参数,保留模型在预训练阶段学到的通用知识。
  4. 适应性

    • 使模型能够适应新任务,即使这些任务与预训练任务不同。
4.2 实现方式:
  1. 选择性微调

    • 只微调模型的某些层或组件,如顶层或特定层的输出层,而不是整个网络。
  2. 适配器层(Adapter Layers)

    • 在模型的某些层中引入适配器层,这些层只包含少量参数,用于调整模型的输出以适应特定任务。
  3. 虚拟参数

    • 引入虚拟参数,如可学习的权重或偏差项,它们与模型的原始参数相乘,以微调模型的行为。
  4. 输入/输出调整

    • 调整模型的输入或输出表示,以更好地适应特定任务的需求。
  5. 任务特定的嵌入

    • 为特定任务添加任务特定的嵌入层,这些嵌入层可以与预训练模型的嵌入层一起工作。
  6. 多任务学习

    • 通过共享预训练模型的大部分参数,同时训练模型在多个任务上的性能。
  7. 正则化技术

    • 使用正则化技术,如 Dropout 或权重衰减,以防止在微调过程中对预训练知识的过度拟合。
  8. 数据效率

    • 使用迁移学习技术,如少量样本学习或零样本学习,以减少对大量标注数据的需求。
  9. 逐步微调

    • 逐步解冻和微调模型的层,从与任务最相关的层开始,逐渐向更深层次扩展。
  10. 元学习

    • 利用元学习技术,使模型能够快速适应新任务,即使只有少量的标注数据。

Parameter-Efficient Fine-Tuning 是一种在资源受限或需要快速适应新任务时非常有用的技术。通过只调整模型的一小部分,它可以显著减少训练时间和资源消耗,同时保持预训练模型的通用性和强大性能。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如何实现高效微调: 采用Adapter模型,长什么样子呢?看下图!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. LoRA

LoRA,全称为 Low-Rank Adaptation,是一种微调预训练模型的技术,它通过在模型的权重矩阵中引入低秩结构来进行参数高效的调整。这种方法旨在在不显著增加模型参数的情况下,使预训练模型更好地适应特定任务。

5.1 LoRA 的主要特点:
  1. 低秩结构

    • 在模型的权重矩阵中引入低秩矩阵,这些矩阵具有较少的参数,可以高效地调整模型的行为。
  2. 参数效率

    • 相比于直接在所有权重上进行微调,LoRA 只调整低秩矩阵的参数,从而减少了参数的数量。
  3. 保留预训练知识

    • 通过在现有权重上添加低秩矩阵的乘积,LoRA 保留了预训练模型的大部分知识。
  4. 灵活性

    • LoRA 可以应用于不同的模型架构和任务,具有很好的通用性。
  5. 易于实现

    • LoRA 的实现相对简单,可以很容易地集成到现有的训练流程中。
5.2 LoRA 的实现方式:
  1. 选择权重矩阵

    • 确定在哪些权重矩阵上应用 LoRA,通常是模型中较大的权重矩阵。
  2. 引入低秩分解

    • 对于选定的权重矩阵 ( W ),引入两个较小的矩阵 ( U ) 和 ( V ),使得 W ′ = W + U V ⊤ W' = W + UV^\top W=W+UV
  3. 训练低秩矩阵

    • 在训练过程中,只更新矩阵 ( U ) 和 ( V ) 的参数,而保持原始权重 ( W ) 不变。
  4. 反向传播

    • 在反向传播时,计算 ( UV^\top ) 对损失函数的梯度,并更新 ( U ) 和 ( V )。
  5. 微调策略

    • 可以采用不同的微调策略,如只微调模型的某些层,或者逐步解冻和微调模型的层。
  6. 正则化

    • 应用正则化技术,如权重衰减,以防止过拟合。
  7. 模型评估

    • 在验证集上评估 LoRA 调整后的模型性能,确保微调后的模型在特定任务上表现良好。

LoRA 是一种有效的微调技术,尤其适用于大型预训练模型,因为它可以在不显著增加参数数量的情况下,提高模型对特定任务的适应性。这种方法在资源受限或需要快速部署的场景下特别有用。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6. LoRA 和Adaptor 的优缺点对比

LoRA(Low-Rank Adaptation)和Adapter(适配器)都是微调预训练模型的技术,它们通过引入额外的参数来调整模型的行为,以适应特定的任务。尽管它们的目标相似,但在实现和效果上存在一些差异。以下是LoRA和Adapter的优缺点对比:

6.1 LoRA(Low-Rank Adaptation)

优点

  1. 参数效率:LoRA通过在权重矩阵中引入低秩结构,只增加少量参数,从而实现参数高效的微调。
  2. 保留预训练知识:通过在现有权重上添加低秩矩阵的乘积,LoRA保留了预训练模型的大部分知识。
  3. 灵活性:可以应用于不同的模型架构和任务,具有很好的通用性。
  4. 易于实现:LoRA的实现相对简单,可以很容易地集成到现有的训练流程中。

缺点

  1. 低秩限制:低秩结构可能限制了模型调整的复杂性,对于某些任务可能不够灵活。
  2. 超参数选择:需要选择合适的秩和正则化参数,这可能需要额外的调整和实验。
6.2 Adapter(适配器)

优点

  1. 模块化:Adapter模块是独立的,可以轻松地插入到模型的任何位置,提供高度的灵活性。
  2. 任务定制:可以为不同的任务定制不同的Adapter模块,实现更精细的控制。
  3. 易于集成:Adapter模块设计为与现有模型架构兼容,易于集成和使用。
  4. 可扩展性:可以根据需要添加多个Adapter模块,以适应更复杂的任务。

缺点

  1. 参数数量:相比于LoRA,Adapter可能会引入更多的参数,尤其是在使用多个模块时。
  2. 设计复杂性:需要精心设计Adapter模块的结构和参数,以确保它们能够有效地调整模型的行为。
  3. 超参数调整:可能需要调整额外的超参数,如模块大小和数量,这可能需要额外的实验和调整。
6.3 综合对比:
  • 参数效率:LoRA通常更参数高效,因为它只引入少量的低秩参数。Adapter可能会引入更多的参数,尤其是当使用多个模块时。
  • 灵活性和定制性:Adapter提供了更高的灵活性和定制性,可以为不同的任务设计不同的模块。LoRA虽然通用,但在任务特定的调整方面可能不如Adapter灵活。
  • 实现和集成:LoRA和Adapter都相对容易实现和集成,但Adapter可能需要更多的设计工作来确保模块的有效性。
  • 性能:两者都可以提高预训练模型在特定任务上的性能,但具体效果可能取决于任务的复杂性和适配器/LoRA模块的设计。

选择LoRA还是Adapter取决于具体的应用场景、任务需求、资源限制和性能目标。在某些情况下,这两种技术也可以结合使用,以实现更优的微调效果。

7. Prefix Tuning

在这里插入图片描述

原始的 版本
在这里插入图片描述
在这里插入图片描述
prefix tuning 之后的效果:
在这里插入图片描述

8. soft prompting 微调方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9. 四种微调对比

参数高效微调方法

概述

参数高效微调方法显著减少了模型适应特定任务所需的任务特定参数。这些方法特别适用于在不需要重新训练整个模型的情况下,将大型预训练模型适配到特定任务。以下是四种主要微调方法的总结:Adapter、LoRA、Prefix Tuning 和 Soft Prompt。

方法
  1. Adapter

    • 任务特定参数: (\Theta(d_{\text{model}} r L))
    • 可训练百分比: < 5%
    • 示意图:
      • Adapter 在预训练模型层之间添加小型神经网络模块。
      • 添加的模块参数 (r) 表示降维参数。
    • 优点:
      • 显著减少任务特定参数数量。
      • 对许多任务高效且有效。
    • 缺点:
      • 可能引入额外的推理延迟。
    • 适用模型: 大型预训练语言模型。
    • 使用条件: 当需要在有限计算资源下进行微调时使用。
  2. LoRA(低秩适应)

    • 任务特定参数: (\Theta(d_{\text{model}} r L))
    • 可训练百分比: < 0.1%
    • 示意图:
      • LoRA 在预训练模型层中插入低秩矩阵。
      • 通过学习低秩更新矩阵来修改原始权重矩阵。
    • 优点:
      • 极其参数高效。
      • 对模型性能影响最小。
    • 缺点:
      • 集成到现有架构中复杂性较高。
    • 适用模型: 基于Transformer的架构。
    • 使用条件: 在参数效率至关重要的场景下理想。
  3. Prefix Tuning

    • 任务特定参数: (\Theta(d_{\text{model}} n L))
    • 可训练百分比: < 0.1%
    • 示意图:
      • Prefix Tuning 在每层的输入序列前添加可训练的连续向量(前缀)。
      • 前缀长度 (n) 决定参数数量。
    • 优点:
      • 在控制任务特定修改方面高度灵活。
      • 不修改原始模型参数。
    • 缺点:
      • 需要仔细调整前缀长度 (n)。
    • 适用模型: 任意序列到序列模型。
    • 使用条件: 需要任务特定定制而不改变核心模型时使用。
  4. Soft Prompt

    • 任务特定参数: (\Theta(d_{\text{model}} n))
    • 可训练百分比: < 0.05%
    • 示意图:
      • Soft Prompts 通过学习连续的提示向量,前置于输入序列之前。
      • 前缀长度 (n) 控制任务特定适应的程度。
    • 优点:
      • 极其轻量且高效。
      • 对模型架构的改变最小。
    • 缺点:
      • 适应复杂任务的能力有限。
    • 适用模型: 任意预训练语言模型。
    • 使用条件: 最适合任务特定数据有限或需要最小化模型架构变化时。
对比表格

在这里插入图片描述

结论

每种微调方法在参数数量、可训练性和集成复杂性之间有不同的权衡。方法的选择取决于任务的具体要求、可用的计算资源和使用的预训练模型架构。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10. early Exit

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11. summary

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/397112.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch人体姿态骨架生成图像

ControlNet是一个稳定扩散模型&#xff0c;可以复制构图和人体姿势。ControlNet解决了生成想要的确切姿势困难的问题。 Human Pose使用OpenPose检测关键点&#xff0c;如头部、肩膀、手的位置等。它适用于复制人类姿势&#xff0c;但不适用于其他细节&#xff0c;如服装、发型和…

Linux中apache服务安装与mysql安装

目录 一、apache安装 二、MySQL安装 一、apache安装 准备环境&#xff1a;一台虚拟机、三个安装包&#xff08;apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz、httpd-2.4.29.tar.bz2) 安装过程&#xff1a; tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar xf http…

Burp Suite的使用和文件上传漏洞靶场试验

第一步&#xff1a;分析如何利用漏洞&#xff0c;通过对代码的查阅发现&#xff0c;代码的逻辑是先上传后删除&#xff0c;意味着&#xff0c;我可以利用webshell.php文件在上传到删除之间的间隙&#xff0c;执行webshell.php的代码&#xff0c;给上级目录创建一个shell.php木马…

IDEA右键新建时没有Java Class选项

项目场景&#xff1a; IDEA右键新建时没有Java Class选项 问题描述 IDEA右键新建时没有Java Class选项 原因分析&#xff1a; 提示&#xff1a;这里填写问题的分析&#xff1a; 例如&#xff1a;Handler 发送消息有两种方式&#xff0c;分别是 Handler.obtainMessage()和 Ha…

【扒代码】ope.py

文件目录&#xff1a; 引用方式 if not self.zero_shot: # 非零样本情况下&#xff0c;计算边界框的宽度和高度 box_hw torch.zeros(bboxes.size(0), bboxes.size(1), 2).to(bboxes.device) box_hw[:, :, 0] bboxes[:, :, 2] - bboxes[:, :, 0] # 宽度 box_hw[:, :, 1] bbox…

Docker in 100 Seconds

Docker a tool that can package software into containers that run reliably in any environment, but what is a container and why do you need one? Let’s imagine you built up an app with cobalt that runs some weird flavor of Linux. You want to share this app…

idea中好用的插件

输入法自动切换插件 自动切换输入法插件&#xff1a;Smart Input。编写代码时自动切换到英文输入法&#xff0c;注释代码自动切换为中文输入法。极大的提升我们的编码效率。 MyBatisX插件 MybatisX 是一款基于 IDEA 的快速开发插件&#xff0c;为效率而生。主要用于XML映射配…

吴恩达机器学习COURSE2 WEEK2

COURSE2 WEEK2 模型训练的细节 定义模型&#xff0c;即指定如何在给定输入特征 x x x 以及参数 w w w 和 b b b 的情况下计算输出 指定损失函数 L ( f w ⃗ , b ( x ⃗ ) , y ) L(f_{\vec w, b}(\vec x),y) L(fw ,b​(x ),y) 指定成本函数 J ( w ⃗ , b ) 1 m ∑ i 1 …

Linux系统驱动(十三)Linux内核定时器

文章目录 一、内核定时器原理二、定时器API三、使用定时器让LED灯闪烁四、使用定时器对按键进行消抖 一、内核定时器原理 内核当前时间通过jiffies获取&#xff0c;它是内核时钟节拍数&#xff0c;在linux内核启动的时候&#xff0c;jiffies开始&#xff08;按照一定频率&…

【数据结构】顺序结构实现:特殊完全二叉树(堆)+堆排序

二叉树 一.二叉树的顺序结构二.堆的概念及结构三.堆的实现1.堆的结构2.堆的初始化、销毁、打印、判空3.堆中的值交换4.堆顶元素5.堆向上调整算法&#xff1a;实现小堆的插入6.堆向下调整算法&#xff1a;实现小堆的删除7.堆的创建1.堆向上调整算法&#xff1a;建堆建堆的时间复…

CentOS 安装Redis

在 CentOS 安装 Redis 操作系统&#xff1a;centos-7.9.2009-Core 1. 更新系统 首先&#xff0c;确保你的系统是最新的&#xff1a; sudo yum update -y2. 安装 EPEL 仓库 Redis 可能不在默认的 CentOS 仓库中&#xff0c;因此你需要安装 EPEL&#xff08;Extra Packages f…

TCP详解及其在音视频传输中的应用

传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是互联网协议栈中至关重要的传输层协议。它提供了可靠、面向连接的数据传输服务&#xff0c;广泛应用于各种网络应用中。对于音视频传输&#xff0c;虽然TCP协议并不是最常用的传输协议&…

LVS实验——部署DR模式集群

目录 一、实验环境 二、配置 1、LVS 2、router 3、client 4、RS 三、配置策略 四、测试 1.Director服务器采用双IP桥接网络&#xff0c;一个是VPP&#xff0c;一个DIP 2.Web服务器采用和DIP相同的网段和Director连接 3.每个Web服务器配置VIP 4.每个web服务器可以出外网…

《Advanced RAG》-11-RAG查询分类和细化

总结 文章介绍了两种高级的检索增强生成&#xff08;RAG&#xff09;技术&#xff1a;自适应 RAG 和 RQ-RAG&#xff0c;以及它们在问题复杂性学习和查询细化方面的应用和优势&#xff0c;以及如何通过小型模型的训练来提高这些技术的性能。 摘要 传统 RAG 技术虽然能够减少大型…

「MyBatis」数据库相关操作2

&#x1f387;个人主页 &#x1f387;所属专栏&#xff1a;Spring &#x1f387;欢迎点赞收藏加关注哦&#xff01; #{} 和 ${} 我们前面都是采用 #{} 对参数进行赋值&#xff0c;实际上也可以用 ${} 客户端发送⼀条 SQL 给服务器后&#xff0c;大致流程如下&#xff1a; 1.…

51单片机之动态数码管显示

一、硬件介绍 LED数码管是一种由多个发光二极管&#xff08;LED&#xff09;封装在一起&#xff0c;形成“8”字型的显示器件。它广泛用于仪表、时钟、车站、家电等场合&#xff0c;用于显示数字、字母或符号。 通过控制点亮a b c d e f g dp来显示数字&#xff0c;本实验开发板…

前端八股文笔记【三】

JavaScript 基础题型 1.JS的基本数据类型有哪些 基本数据类型&#xff1a;String&#xff0c;Number&#xff0c;Boolean&#xff0c;Nndefined&#xff0c;NULL&#xff0c;Symbol&#xff0c;Bigint 引用数据类型&#xff1a;object NaN是一个数值类型&#xff0c;但不是…

十三、代理模式

文章目录 1 基本介绍2 案例2.1 Sortable 接口2.2 BubbleSort 类2.3 SortTimer 类2.4 Client 类2.5 Client 类的运行结果2.6 总结 3 各角色之间的关系3.1 角色3.1.1 Subject ( 主体 )3.1.2 RealObject ( 目标对象 )3.1.3 Proxy ( 代理 )3.1.4 Client ( 客户端 ) 3.2 类图 4 动态…

Java网络编程、TCP、UDP、Socket通信---初识版

标题 InetAddress----IP地址端口号协议&#xff08;UDP/TCP&#xff09;JAVA操作-UDP一发一收模式多发多收 JAVA操作-TCP一发一收多发多收 实现群聊功能BS架构线程池优化 InetAddress----IP地址 端口号 协议&#xff08;UDP/TCP&#xff09; JAVA操作-UDP 一发一收模式 多发多收…

React 性能优化

使用 useMemo 缓存数据 &#xff08;类似 vue 的 computed&#xff09;使用 useCallback 缓存函数异步组件 ( lazy )路由懒加载( lazy )服务器渲染 SSR用 CSS 模拟 v-show 循环渲染添加 key使用 Fragment &#xff08;空标签&#xff09;减少层级 不在JSX 中定义函数&#xff0…