LLMs NLP模型评估Model evaluation ROUGE and BLEU SCORE

在整个课程中,你看到过类似模型在这个任务上表现良好,或者这个微调模型在性能上相对于基础模型有显著提升等陈述。

这些陈述是什么意思?如何形式化你的微调模型在你起初的预训练模型上的性能改进?让我们探讨一些由大型语言模型开发者使用的指标,你可以用这些指标评估你自己的模型的性能,并与世界上的其他模型进行比较。

在传统的机器学习中,你可以通过观察模型在已知输出的训练和验证数据集上的表现来评估模型的表现。
在这里插入图片描述

你可以计算诸如准确率这样的简单指标,准确率表示所有预测中正确的比例,因为模型是确定性的。

但是在大型语言模型中,输出是非确定性的,基于语言的评估要困难得多。

以句子为例,Mike really loves drinking tea. 这句话与 Mike adores sipping tea. 相似。但是如何衡量相似性呢?
在这里插入图片描述

让我们看看另外两个句子:Mike does not drink coffee. 和 Mike does drink coffee. 这两个句子之间只有一个词的差异,但含义完全不同。
在这里插入图片描述

对于像我们这样具有有机软脑的人类来说,我们可以看出相似之处和不同之处。但当你在数百万个句子上训练模型时,你需要一种自动化的结构化方法来进行测量。

ROUGE和BLEU是两个广泛使用的用于不同任务的评估指标。ROUGE代表Recall Oriented Under Generated summaries Evaluation回忆定向自动摘要评估,主要用于通过将自动生成的摘要与人工生成的参考摘要进行比较来评估其质量。
在这里插入图片描述

另一方面,BLEU代表Billingual Evaluation双语评估研究,是一种用于评估机器翻译文本质量的算法,同样是通过将其与人工生成的翻译进行比较来评估的。
在这里插入图片描述

现在,单词BLEU是法语中的“蓝色”。你可能听到人们称之为“蓝色”,但我将坚持使用原始的BLEU。

在开始计算指标之前,让我们先复习一些术语。在语言的解剖学中,一个unigram等同于一个单词。一个bigram是两个单词,n-gram是n个单词的组合。
在这里插入图片描述

非常简单的东西。首先,让我们看一下ROUGE-1指标。
为此,让我们看一个人工生成的参考句子:It is cold outside 和一个生成的输出:very cold outside。

你可以执行类似于其他机器学习任务的简单度量计算,使用召回率、精确率和F1。

召回率指标测量了参考和生成输出之间匹配的单词或unigram数量,除以参考中的单词或unigram数量。在这种情况下,完全匹配的单词得分为1,因为所有生成的单词都与参考中的单词匹配。
在这里插入图片描述

精确率测量了unigram匹配除以输出大小。
在这里插入图片描述

F1分数是这两个值的调和平均。
在这里插入图片描述

这些都是非常基本的指标,只关注单个单词,因此名称中有“1”,并且不考虑单词的顺序。它可能具有误导性。生成得分高但主观上可能较差的句子是完全可能的。

暂停片刻,想象一下,如果模型生成的句子只是多了一个单词,而不是 “It is not cold outside.”,得分将是相同的。
在这里插入图片描述

通过考虑一次从参考和生成句子中获取两个词的bigram或两个词的组合,你能够计算ROUGE-2。
在这里插入图片描述

现在,你可以使用bigram匹配来计算召回率、精确率和F1分数,而不是使用单个单词。你会注意到分数比ROUGE-1分数要低。
在这里插入图片描述

在较长的句子中,bigram不匹配的可能性更大,分数可能更低。

与继续计算ROUGE分数的n-gram增大到三个或四个不同,让我们采取不同的方法。

相反,你将寻找在生成输出和参考输出中都存在的最长公共子序列。在这种情况下,最长匹配子序列是 “it is” 和 “cold outside”,每个子序列的长度都为2。
在这里插入图片描述

现在,你可以使用LCS值来计算召回率、精确率和F1分数,其中召回率和精确率计算中的分子都是最长公共子序列的长度,即2。总体上,这三个量被称为Rouge-L分数。与所有ROUGE分数一样,你需要将值放在上下文中进行解释。
在这里插入图片描述

只有在为相同的任务确定了分数时,你才能使用这些分数来比较模型的能力。

例如,摘要任务。不同任务的Rouge分数不能相互比较。

正如你所见,简单的Rouge分数的一个特定问题是,不好的完成可能会得到很好的分数。

例如,考虑以下生成的输出:cold, cold, cold, cold。由于这个生成的输出包含了参考句子中的一个单词,它的分数会相当高,即使同一个单词多次重复。

Rouge-1精确率分数将是完美的。
在这里插入图片描述

你可以通过使用剪辑函数来解决这个问题,将unigram匹配的数量限制为参考中该unigram的最大计数。

在这种情况下,参考中出现了一个 “cold”,因此在带有unigram匹配剪辑的修改精确率下,分数大幅降低。
在这里插入图片描述

然而,如果生成的单词都存在,但顺序不同,你仍然会面临挑战。

例如,对于这个生成的句子:“outside cold it is.”,即使在带有剪辑函数的修改精确率下,这个句子仍然是完美的,因为在参考中的所有单词和生成的输出都存在。
在这里插入图片描述

虽然使用不同的ROUGE分数可以帮助解决这个问题,但选择一个计算最有用分数的n-gram大小将取决于句子、句子大小和你的用例。

需要注意的是,许多语言模型库(例如,Hugging Face,你在第一周的实验中使用过)都包含了Rouge分数的实现,你可以用它来轻松评估模型的输出。

在本周的实验中,你将有机会尝试使用Rouge分数,并将其用于比较模型在微调前后的性能。

评估模型性能的另一个有用分数是BLEU分数,它代表双语评估研究。提醒一下,BLEU分数对于评估机器翻译文本的质量非常有用。
在这里插入图片描述

该分数本身是通过多个n-gram大小的平均精确率来计算的,就像我们之前看过的Rouge-1分数一样,但是计算的是一系列n-gram大小,并进行平均。

让我们更详细地看看这个指标的测量方法以及如何计算。

BLEU分数通过检查机器生成的翻译中有多少个n-gram与参考翻译中的n-gram相匹配来量化翻译质量。
在这里插入图片描述

为了计算分数,你需要在一系列不同的n-gram大小上计算平均精确率。如果你手动计算,你将进行多次计算,然后将所有结果平均,以找到BLEU分数。

在这个示例中,让我们看一个较长的句子,以便更好地了解分数的值。

人类提供的参考句子是:“I am very happy to say that I am drinking a warm cup of tea.”。现在,由于你已经深入研究了这些单独的计算,我将使用标准库展示BLEU的结果。

使用来自Hugging Face等提供商的预编写库来计算BLEU分数非常简单,我已经为我们的每个候选句子计算了BLEU分数。

第一个候选句子是:“I am very happy that I am drinking a cup of tea.”,BLEU分数为0.495。

随着我们越来越接近原始句子,得分也越来越接近1。
在这里插入图片描述

无论如何,Rouge和BLEU都是相当简单的指标,并且计算成本相对较低。

你可以在迭代模型时使用它们进行简单的参考,但不应仅凭此来报告大型语言模型的最终评估。

对于摘要任务,使用Rouge进行诊断性评估,对于翻译任务,使用BLEU。

然而,为了全面评估模型的性能,你需要查看研究人员开发的评估基准之一。在下一个视频中,让我们更详细地看看其中一些。

参考

https://www.coursera.org/learn/generative-ai-with-llms/lecture/8Wvg3/model-evaluation

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

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

相关文章

TypeScript学习 + 贪吃蛇项目

TypeSCript简介 TypeScript是JavaScript的超集。它对JS进行了扩展,向JS中引入了类型的概念,并添加了许多新的特性。TS代码需要通过编译器编译为JS,然后再交由JS解析器执行。TS完全兼容JS,换言之,任何的JS代码都可以直…

MySQL高阶语句(三)

一、NULL值 在 SQL 语句使用过程中,经常会碰到 NULL 这几个字符。通常使用 NULL 来表示缺失 的值,也就是在表中该字段是没有值的。如果在创建表时,限制某些字段不为空,则可以使用 NOT NULL 关键字,不使用则默认可以为空…

Multisim14.0仿真(五)三角波发生器

一、仿真原理图: 二、仿真效果:

Three.js相机参数及Z-Fighting问题的解决方案

本主题讨论透视相机以及如何为远距离环境设置合适的视锥体。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 透视相机是一种投影模式,旨在模仿人类在现实世界中看待事物的方式。 这是渲染 3D 场景最常用的投影模式。 - three.js 如果你看一下 Three.js 文档…

单元测试:优雅编写Kotlin单元测试

一、MockK简介 MockK是一款功能强大、易于使用的Kotlin mocking框架。在编写单元测试时,MockK能够帮助我们简化代码、提高测试覆盖率,并改善测试的可维护性。除了基本用法外,MockK还提供了许多额外的功能和灵活的用法,让我们能够…

go语言基础操作--二

a : 10str : "mike"//匿名函数,没有函数名字 形成一个闭包,函数定义,还没有调用f1 : func() { //:自动推到类型fmt.Println("a ", a)fmt.Println("str ", str)}f1()//给一个函数类型起别名 这个写法不推荐type FuncType …

04. 函数和函数调用机制

1. 先学习/复习C语言的入门知识 1.1 C语言简介 C语言是一种通用的编程语言,于1972年由丹尼斯里奇(Dennis Ritchie)创建。C语言最初目的是为了开发UNIX操作系统,但由于其简洁的语法、快速的执行速度和可移植性,自此成…

【Python数据分析】数据分析之numpy基础

实验环境:建立在Python3的基础之上 numpy提供了一种数据类型,提供了数据分析的运算基础,安装方式 pip install numpy导入numpy到python项目 import numpy as np本文以案例的方式展示numpy的基本语法,没有介绍语法的细枝末节&am…

ZooKeeper基础命令和Java客户端操作

1、zkCli的常用命令操作 (1)Help (2)ls 使用 ls 命令来查看当前znode中所包含的内容 (3)ls2查看当前节点数据并能看到更新次数等数据 (4)stat查看节点状态 (5&#xf…

【kubernetes】Argo Rollouts -- k8s下的自动化蓝绿部署

蓝绿(Blue-Green)部署简介 在现代软件开发和交付中,确保应用程序的平稳更新和发布对于用户体验和业务连续性至关重要。蓝绿部署是一种备受推崇的部署策略,它允许开发团队在不影响用户的情况下,将新版本的应用程序引入生产环境。 蓝绿部署的核心思想在于维护两个独立的环…

ESP32C3 LuatOS RC522①写入数据并读取M1卡

LuatOS RC522官方示例 官方示例没有针对具体开发板,现以ESP32C3开发板为例。 选用的RC522模块 ESP32C3-CORE开发板 注意ESP32C3的 SPI引脚位置,SPI的id2 示例代码 -- LuaTools需要PROJECT和VERSION这两个信息 PROJECT "helloworld" VERSIO…

前端list列表自定义图标并设置大小

前端list列表自定义图标并设置大小 一、前端list列表基础知识回顾 前端公有两种列表,一种是有序列表(ol),一种是无序列表(ul),它们的子元素都是(li)。 1.1 有序列表&a…

4.0 Spring与Dubbo整合原理与源码分析

#Dubbo# 文章介绍 Dubbo中propertie文件解析以及处理原理Dubbo中@Service注解解析以及处理原理Dubbo中@Reference注解解析以及处理原理1.0 整体架构和流程 应用启动类与配置 public class Application {public static void main(String[] args) throws Exception {Annotation…

【【萌新的STM32学习-27--USART异步通信配置步骤】】

萌新的STM32学习-27–USART异步通信配置步骤 USART/UART 异步通信配置步骤 1.配置串口工作参数 HAL_UART_Init() 我们会在此处调用MSP中的回调函数 2.串口底层初始化 用户定义HAL_UART_MspInit() 配置GPIO NVIC CLOCK 等 3.开启串口异步接收中断 HAL_UART_Receive_IT() 4.…

CXL Memory Cache 分类及 Cacheline 归属问题

🔥点击查看精选 CXL 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

单调递增的数字【贪心算法】

单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 public class Solution {public int monotoneIncreasingDigits…

STM32+RTThread配置以太网无法ping通,无法获取动态ip的问题

记录一个非常蠢的问题&#xff0c;今天在移植rtthread的以太网驱动的时候出现无法获取动态ip的问题&#xff0c;问题如下&#xff1a; 设置为动态ip时不管是连接路由器还是电脑主机都无法ping通&#xff0c;也无法获取dns地址。 设置为静态ip时无法ping通主机。 使用wireshark…

【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】

文章目录 说明细节一&#xff1a;首页滑动到底部&#xff0c;需要查询下一页的商品界面预览页面实现 细节二&#xff1a;当页面滑动到下方&#xff0c;出现一个回到顶端的悬浮按钮细节三&#xff1a;商品分列说明优化前后效果对比使用回溯算法实现ControllerService回溯算法 优…

stm32 iap sd卡升级

参考&#xff1a;STM32F4 IAP 跳转 APP问题_stm32程序跳转_古城码农的博客-CSDN博客 app程序改两个位置 1.程序首地址&#xff1a; 2.改中断向量表位移&#xff0c;偏移量和上面一样就可以 然后编译成bin文件就可以了

docker 笔记1

目录 1.为什么有docker ? 2.Docker 的核心概念 3.容器与虚拟机比较 3.1传统的虚拟化技术 3.2容器技术 3.3Docker容器的有什么作用&#xff1f; 3.4应用案例 4. docker 安装下载 4.1CentOS Docker 安装 4.2 Docker的基本组成 &#xff1f;&#xff08;面试&#xff09…