当前位置: 首页 > news >正文

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

相关文章:

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

在整个课程中,你看到过类似模型在这个任务上表现良好,或者这个微调模型在性能上相对于基础模型有显著提升等陈述。 这些陈述是什么意思?如何形式化你的微调模型在你起初的预训练模型上的性能改进?让我们探讨一些由大型语言模型开…...

BlazorServer中C#与JavaScript的相互调用

BlazorServer中C#与JavaScript的相互调用 前言: ​ 虽然BlazorServer中推荐使用C#在razor页面中的替代JavaScript来完成逻辑的编写,但当需要使用第三方的javascript文件/组件里的内容时,则难免要在C#中调用其方法或对象。反之当你的(用到第…...

深入理解 MD5 消息摘要算法和在密码存储中的应用及安全隐患

MD5 算法相信很多开发人员都听说过, 一个最常见的使用到它的地方就是密码的存储. 当然, 很多人会说, 这个算法已经不太安全了, 确实如果你想更安全的保存密码, 则应该考虑其它更安全的算法, 不过这不属于此次讨论的主题. 什么是 MD5 MD5 是一种算法, MD5 中的 MD 代表 Message…...

python网络爬虫指南二:多线程网络爬虫、动态内容爬取(待续)

文章目录 一、多线程网络爬虫1.1 线程的基础内容、GIL1.2 创建线程的两种方式1.3 threading.Thread类1.4 线程常用方法和锁机制1.5 生产者-消费者模式1.5.1 生产者-消费者模式简介1.5.2 Condition 类协调线程 1.6 线程中的安全队列1.6 多线程爬取王者荣耀壁纸1.6.1 网页分析1.6…...

华为AirEgine9700S AC配置示例

Vlan97为管理Vlan <AirEgine9700S>dis cu Software Version V200R021C00SPC100 #sysname AirEgine9700S #http timeout 60http secure-server ssl-policy default_policyhttp secure-server server-source -i allhttp server enable #set np rss hash-mode 5-tuple # md…...

VUE3基础

一、vue-router v4.x 介绍 | Vue Router 1、安装 yarn add vue-routernext next代表最新的版本 2、路由配置 在src目录下&#xff0c;新建router/index.ts&#xff0c;具体配置如下 import {RouteRecordRaw,createRouter,createWebHashHistory} from vue-router const r…...

Qt应用开发(基础篇)——日历 QCalendarWidget

一、前言 QCalendarWidget类继承于QWidget&#xff0c;是Qt设计用来让用户更直观的选择日期的窗口部件。 时间微调输入框 QCalendarWidget根据年份和月份初始化&#xff0c;程序员也通过提供公共函数去改变他们&#xff0c;默认日期为当前的系统时间&#xff0c;用户通过鼠标和…...

Python学习笔记:正则表达式、逻辑运算符、lamda、二叉树遍历规则、类的判断

1.正则表达式如何写&#xff1f; 序号实例说明1.匹配任何字符(除换行符以外)2\d等效于[0-9]&#xff0c;匹配数字3\D等效于[^0-9]&#xff0c;匹配非数字4\s等效于[\t\r\n\f]&#xff0c;匹配空格字符5\S等效于[^\t\r\n\f]&#xff0c;匹配非空格字符6\w等效于[A-Za-z0-9]&…...

【滑动窗口】leetcode1004:最大连续1的个数

一.题目描述 最大连续1的个数 这道题要我们找最大连续1的个数&#xff0c;看到“连续”二字&#xff0c;我们要想到滑动窗口的方法。滑动窗口的研究对象是一个连续的区间&#xff0c;这个区间需要满足某个条件。那么本题要找的是怎样的区间呢&#xff1f;是一个通过翻转0后得到…...

力扣:73. 矩阵置零(Python3)

题目&#xff1a; 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚…...

VB|基础语法 变量定义 函数定义 循环语句 IF判断语句等

文章目录 变量定义函数定义控制台输入输出switch case语句IF语句FOR循环语句不等于逻辑运算符 变量定义 int Dim 变量名 As Int32 0 string Dim 变量名 As String "" bool Dim 变量名 As Boolean False 枚举 Dim 变量名 As 枚举名 数组 Dim array(256) As String…...

Github 博客搭建

Github 博客搭建 准备工作 准备一个 github 账号&#xff1b;建立 github 仓库&#xff0c;仓库名为 username.github.io&#xff0c;同时设置仓库为 public&#xff1b;clone 仓库&#xff0c;写入一个 index.html 文件&#xff0c;推送到仓库&#xff08;许多网上的教程会有…...

模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数

文章目录 网络搜索介绍步骤参数代码实现 网络搜索 介绍 网格搜索&#xff08;Grid Search&#xff09;是一种超参数优化方法&#xff0c;用于选择最佳的模型超参数组合。在机器学习中&#xff0c;超参数是在训练模型之前设置的参数&#xff0c;无法通过模型学习得到。网格搜索…...

创建型模式-建造者模式

使用多个简单的对象一步一步构建成一个复杂的对象 主要解决&#xff1a;主要解决在软件系统中&#xff0c;有时候面临着"一个复杂对象"的创建工作&#xff0c;其通常由各个部分的子对象用一定的算法构成&#xff1b;由于需求的变化&#xff0c;这个复杂对象的各个部…...

Rust常用加密算法

哈希运算(以Sha256为例) main.rs: use crypto::digest::Digest;use crypto::sha2::Sha256;fn main() { let input "dashen"; let mut sha Sha256::new(); sha.input_str(input); println!("{}", sha.result_str());} Cargo.toml: [package]n…...

[管理与领导-55]:IT基层管理者 - 扩展技能 - 1 - 时间管理 -2- 自律与自身作则,管理者管好自己时间的五步法

前言&#xff1a; 管理好自己的时间&#xff0c;不仅仅是理念&#xff0c;也是方法和流程。 步骤1&#xff1a;理清各种待办事项 当提到工作事项时&#xff0c;这通常指的是要完成或处理的工作任务或事务。这些事项可以包括以下内容&#xff1a; 任务分配&#xff1a;根据工作…...

电子商务员考试题库及答案(中级)--判断题

电子商务员题库 一、判断题 1&#xff0e;EDI就是按照商定的协议&#xff0c;将商业文件分类&#xff0c;并通过计算机网络&#xff0c;在贸易伙伴的计算机网络系统之间进行数据交换和自动处理。〔〕 2.相互通信的EDI的用户必须使用相同类型的计算机。〔 〕 3.EDI采用共同…...

(WAF)Web应用程序防火墙介绍

&#xff08;WAF&#xff09;Web应用程序防火墙介绍 1. WAF概述 ​ Web应用程序防火墙&#xff08;WAF&#xff09;是一种关键的网络安全解决方案&#xff0c;用于保护Web应用程序免受各种网络攻击和威胁。随着互联网的不断发展&#xff0c;Web应用程序变得越来越复杂&#x…...

SpringMVC拦截器常见应用场景

在Spring MVC中&#xff0c;拦截器是通过实现HandlerInterceptor接口来定义的。该接口包含了三个方法&#xff1a; preHandle&#xff1a;在请求到达处理器之前执行&#xff0c;可以进行一些预处理操作。如果返回false&#xff0c;则请求将被拦截&#xff0c;不再继续执行后续的…...

爬虫:绕过5秒盾Cloudflare和DDoS-GUARD

本文章仅供技术研究参考&#xff0c;勿做它用&#xff01; 5秒盾的特点 <title>Just a moment...</title> 返回的页面中不是目标数据&#xff0c;而是包含上面的代码&#xff1a;Just a moment... 或者第一次打开网页的时候&#xff1a; 这几个特征就是被Cloud…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...