机器学习复习(8)——基本概念

目录

"benchmark"和"baseline"的定义和区别

R@1 score概念

LoRA微调概念

"benchmark"和"baseline"的定义和区别

在计算机视觉领域的论文中,"benchmark"和"baseline"这两个术语经常被使用,但它们代表着不同的概念和作用。

  1. Benchmark(基准测试):

    • 定义:Benchmark通常指的是一套标准的测试流程,用来评估和比较不同算法或模型的性能。这些测试流程可能包括标准的数据集、评估指标、测试协议等。
    • 作用:Benchmark提供了一个共同的平台,让研究人员可以在相同的条件下比较他们的方法与其他方法的效果。例如,在计算机视觉领域,常见的benchmark数据集包括ImageNet(用于图像分类)、COCO(用于目标检测和分割)等。
    • 重要性:Benchmark的设置对于科学研究的公正性和透明度至关重要,它确保了不同研究者的工作可以在相同的基础上进行比较和评价。
  2. Baseline(基线模型):

    • 定义:Baseline通常指的是一种简单的模型或方法,它用作比较的起点,以此来衡量新提出的方法是否有显著的改进。
    • 作用:Baseline模型通常选择实现简单、之前广泛被接受的方法。通过与Baseline的比较,研究人员可以展示他们的新方法在性能上的提升,并且有助于说明新方法的有效性。
    • 重要性:在科学研究中,Baseline模型有助于确立研究领域的最低期望。如果一个新方法不能显著超过Baseline,那么它的有效性可能会受到质疑。

R@1 score概念

R@1得分(Recall at 1)是一种在信息检索和机器学习领域常用的评估指标,用来衡量模型在检索任务中的性能。在检索任务中,模型的目标是从一个大的数据集中找出与查询最相关的项目。R@1得分特别关注于模型是否能够在其提供的最顶端的一个检索结果(即排名第一的结果)中准确地找到相关项目。

R@1得分计算如下:

  1. 对于每个查询,检查模型返回的排名最高的一个项目是否是相关的。
  2. 如果排名最高的项目是相关的,则记为一个成功的检索。
  3. 然后,计算所有查询的成功检索的比例。

数学表示:

R@1得分的值范围从0到1,值越高表示模型的性能越好。R@1得分强调模型在第一位的准确性,这在某些应用中非常重要,比如在用户使用搜索引擎时,他们往往最关注搜索结果的第一位。

R@1是更广泛的Recall@K指标的一个特例,其中K可以是任何正整数。Recall@K测量模型是否能够在前K个最高排名的项目中找到相关项目。当K=1时,Recall@K就是R@1。随着K的增加,Recall@K提供了对模型能否在前几位中找到相关项目的更宽容的评估。

LoRA微调概念

LoRA(低秩自适应)微调是一种用于调整大型预训练语言模型的技术。这种方法旨在通过对模型的权重进行最小的修改来微调模型,从而节省计算资源并保持模型性能。

在传统的微调方法中,我们通常会对整个预训练模型的所有参数进行更新,这在大型模型如GPT-3或BERT等的情况下,会涉及数十亿个参数,需要大量的计算资源和存储空间。相比之下,LoRA微调只对模型的一小部分权重进行更新,这些权重被认为是最能影响模型性能的关键部分。

具体来说,LoRA微调通过以下步骤实现:

  1. 选择关键层: LoRA通常选择模型中的特定层(例如,注意力层)进行微调。
  2. 引入低秩矩阵: 在所选层中,LoRA引入额外的可训练参数,这些参数构成低秩(即,相对于原始权重矩阵维度较小的)矩阵。这些低秩矩阵被用来修改原始的权重矩阵。
  3. 训练低秩矩阵: 在微调阶段,只有这些低秩矩阵的参数会被更新,而原始模型的其余部分保持不变。这意味着需要更新的参数数量大大减少,从而节省计算资源和时间。
  4. 保持性能: 尽管只有一小部分参数被更新,但LoRA设计得很巧妙,能够在不牺牲太多性能的前提下,有效地调整模型以适应特定任务。

LoRA微调的优势在于其高效性和经济性,它允许研究者和开发者在资源有限的情况下,对大型语言模型进行定制和优化,而不需要像传统微调那样对整个模型进行重大修改。这使得LoRA成为一种非常受欢迎和实用的模型调整技术。

以LLaMA 为例,参数大小为7B(即70亿个参数),其参数矩阵用W 表示(实际上,模型参数当然分布在许多层的不同矩阵中,但为了简单起见,我们在这里指的是单个权重矩阵。对于其他层,分析方法完全一样)在反向传播过程中,我们學習一个 AW 矩阵(每个参数的更新),那么权重更新如下:
更新后的W=原始W+△W
如果权重矩阵W包含7B个参数,则权重更新矩阵AW也包含7B个参数,每次要存储2份7B的参数,另外还要每个数都要加一次,计算量和显存要求都十分巨大,于是就有了LoRA,其实它的思想非常简单,我们用两个较小的 矩阵 A 和 B 来表示大矩阵△W。如果 A 具有与AW 相同的行数,B具有与△W相同的列数,我们可以写成分解为 △W =AB(AB是矩阵A和B之间的矩阵乘法结果)
另外A是随机初始化,B初始化为0。这样开始微调时AB=0,这可以跟原始模型保持是一致的。节省的内存取决于A的列数,也就是秩r。简单分析下。例如,若AW有1万行2万列,则它存储了2亿 个参数。 如果我们选择r=8的A和B,那么A有1万行和8列,B 有8行和2万列,即1万x8+8x2万=24万个参数,大约比2亿少830倍,只需要额外存储和计算这0.12%的参数,这一操作,内存占用和计算量是不是就指数下降了。当然,你要问,A和 B能完全替代△W的所有信息吗?答案是不一定。如果你的数据量足够大,比如TB级别,并且预算充足,那全参数微调是你的首选如果你的数据量比较小,或者是经费有限的researcher,那LoRA微调一定是你的首选。

 

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

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

相关文章

【日常总结 - java】list 与 字符串(用逗号隔开)相互转换

一、list 转 字符串 第一种:使用谷歌Joiner方法 (推荐) 第二种:循环插入逗号 第三种:stream流 (推荐) 第四种:lambda表达式遍历并加入逗号 二、字符串 转 list 方法一:使用split()方法 方法二:使用C…

algo-桶排序

桶排序 桶排序是一种分布排序,将元素数组分到多个桶内,然后每个桶再分别进行排序。 其计算复杂度取决于对桶内排序所用算法、使用桶数量以及输入均匀度。 主要流程如下 建立空桶数组将原始数组发布到各桶中对非空桶进行排序按照顺序从非空桶里面收集…

一文讲透ast.literal_eval() eval() json.loads()

文章目录 一文讲透ast.literal_eval() eval() json.loads()1. ast.literal_eval()2. eval()3. json.loads()4. 总结 一文讲透ast.literal_eval() eval() json.loads() 在Python库中,我们经常会遇到需要将字符串转换为相应对象或数据结构的情况。在这种情况下&#…

ShardingSphere 5.x 系列【5】Spring Boot 3 集成并实现读写分离

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.…

ReactNative实现文本渐变

我们直接上图&#xff0c;可以看到上面文本的效果&#xff0c;使用SVG实现 1.首先还是要引入react-native-svg库 2.使用该库下面的LinearGradient和Text 好&#xff0c;话不多说&#xff0c;我们看具体代码 <Svg width{422} height{30} viewBox{0 0 422 30}><Defs&…

linux i2c驱动实例之ISL29035

目录 概述 1 认识ISL29035 1.1 ISL29035特征 1.2 ISL29035工作电路 1.3 ISL29035工作时序分析 1.4 ISL29035相关的寄存器 1.4.1 COMMAND-1( 0x00 ) 1.4.2 COMMAND-11&#xff08;0x01&#xff09; 1.4.3 DATA寄存器&#xff08;0x02和0x03&#xff09; 1.4.4 中断报警…

linux时钟类型

背景&#xff1a;在线程中使用wait时&#xff0c;中间修改了系统时间&#xff0c;线程一直阻塞&#xff0c;并未向下执行。 原因分析&#xff1a;wait等待时间采用了系统时间去等待&#xff0c;系统时间向后修改后&#xff0c;无法等到相应的时间点&#xff0c;从而导致线程阻…

解决Django应用部署时激活链接缺少端口号的问题

引言 在当今技术迅速发展的时代&#xff0c;前后端分离已经成为现代Web开发的一项标准实践。然而&#xff0c;当我们将这些先进的架构部署到生产环境时&#xff0c;常常会遇到一些预料之外的挑战。 问题说明 在一个典型的例子中&#xff0c;我在Windows环境下开发了一个采用…

离线环境怎么下载python依赖包

公司内网环境无网络&#xff0c;运行自动化脚本需要安装python模块 1、脚本依赖包及其版本获取&#xff0c;记录在requirements.txt中 pipreqs ./script --encodingutf8 requirements.txt注意&#xff0c;这里是将./script 里的python模块自动扫描并写入到requirements.txt中…

假期刷题打卡--Day23

1、MT1190分数乘法 输入5组分数&#xff0c;对他们进行乘法运算&#xff0c;输出结果。不考虑分母为0等特殊情况。 格式 输入格式&#xff1a; 输入整型&#xff0c;每组一行&#xff0c;如样例所示。 输出格式&#xff1a; 输出计算结果实型&#xff0c;如样例所示。 样…

[Vue3]父子组件相互传值数据同步

简介 vue3中使用setup语法糖&#xff0c;父子组件之间相互传递数据及数据同步问题 文章目录 简介父传子props传递值 使用v-bind绑定props需要计算toRefcomputed emit传递方法 使用v-on绑定 子传父expose v-model总结 父传子 props传递值 使用v-bind绑定 父组件通过props给子…

Python基础知识:Python与序列相关的内置函数

与序列相关的内置函数如表所示。 与序列相关的内置函数 函数的作用 len(seq) 计算序列的长度&#xff08;包含多少个元素&#xff09; max(seq) 查找序列中的最大元素 min(seq) 查找序列中的最小元素 list(seq) 将序列转换为列表&#xff0c;注意不能转换字典 str(se…

openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围

文章目录 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围214.1 性能因素214.2 调优范围确定 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围 数据库性能调优通常发生在用户对业务的执行效率不满意&#xff0c;期望通过调优加快业务执行的情况下。正…

如何解决部分图片读取转化异常的问题

问题描述 接触到一个数据集&#xff0c;有个别图片在读取转化的时候出现了异常&#xff0c;由于图片之间有关联&#xff0c;导致后续图片无法时候。 解决方法 将异常的图片转为白色或者黑色的图片&#xff0c;保证其他的图片可以正常使用&#xff01;代码如下&#xff1a; …

两种方式实现文本超出指定行数显示展开收起...

需要实现这样一个功能 默认高度下文本超出隐藏&#xff0c;点击展开可查看所有内容&#xff0c;点击收起可折叠 方法一&#xff1a;通过html和css实现 代码部分 html:<div className"expand-fold"><input id"check-box" type"checkbox&qu…

【Android】240204 android studio build.gradle.kts APK名字带日期

通过Android studio 生成 APK 名字的时候&#xff0c;带年月日时&#xff0c;可以在 build.gradle 里面定义&#xff1b; 在Gradle脚本的build任务中&#xff0c;每当我构建项目时&#xff0c;我都希望获得当前时间戳&#xff0c;并将其保存到项目资源目录中的文件中。如果我理…

04-尚硅谷Vue_Vue中的ajax

文章目录 1. 解决开发环境 Ajax 跨域问题 【前端】尚硅谷Vue2-Vue3全家桶笔记目录贴 1. 解决开发环境 Ajax 跨域问题

Camunda会签、或签、比例签

&#x1f496;专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据&#xff0c;完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧&#x1f618; &#x1f496;说在前面 …

EasyX图形库学习(二、文字输出)

目录 一、文字绘制函数 字体属性结构体:logfont 文字输出 outtextxy 在指定位置输出字符串。 ​编辑 但如果直接使用,可能有以下报错&#xff1a; 三种解决方案&#xff1a; 将一个int类型的分数,输出到图形界面上 如果直接使用&#xff1a; 会把score输入进去根据A…

【C/C++ 13】C++11高效特性

目录 一、初始化列表 二、auto 三、decltype 四、可变参数列表 五、lambda表达式 C11在C98的基础上增添了许多特性&#xff0c;但是同时也使得C程序的开发变得复杂繁琐&#xff0c;让众多开发者苦不堪言&#xff0c;于是我们需要从C11新增舔的特性中选择一些能够提高开发效…