LLM - 大模型评估指标之 BLEU

目录

一.引言

二.BLEU 简介

1.Simple BLEU

2.Modified BLEU

3.Modified n-gram precision

4.Sentence brevity penalty

三.BLEU 计算

1.计算句子与单个 reference

2.计算句子与多个 reference

四.总结


一.引言

机器翻译的人工评价广泛而昂贵,且人工评估可能需要持续数月才能完成且涉及到无法重复使用的人工劳动。BLEU - bilingual evaluation understudy 字面直译意思为'双语评估替身',它的诞生意在提供一种双语互译的质量评估辅助。该方法快速、廉价且独立于语言,且与人类评估高度相关。该评估方法最早应用于机器翻译与人工翻译的快速效果评估,当下 LLM 火热但很多生成的答案由于需要人工评估效果好坏从而导致没有量化指标衡量其好坏,这里简单介绍下 BLEU 的计算与使用。

二.BLEU 简介

Bleu 实现的主要编程任务是将候选者的 n-gram 与参考翻译的 n-gram 进行比较并计算匹配的数量。这些匹配与位置无关。匹配越多,候选翻译越好。为简单起见,我们首先专注于计算 unigram 匹配。

1.Simple BLEU

以一元组即单个单词为例:

Reference 1、2 为参考输出,MT output 为机器翻译输出

MT output 输出三个词均为 the,分母为 7

the 在参考译文中均出现,所以分子为 7

此时 P = 7 / 7 = 1,显然与我们的直观感受不匹配。

2.Modified BLEU

前面这种简单的判断候选翻译词是否在参考语句中出现的 contains 方法显然不够理想,所以提出了 Modified BLEU,Modified 主要修改了上述分子不合理的计算方式,这里有如下定义:

Count_{w_{i,j}}^{clip} = min(Count_{w_i}, Ref_j-Count_{w_i})

修剪即修改后的单词 Wi 在 Reference J 中的 Count 计算为上式,其中:

 Count_{w_i} 

◆ 代表单词 wi 的个数,上文中 wi = the,其在 MT output 中个数为 7

 Ref_j-Count_{w_i}

代表 wi 在 参考 j 中出现的次数,the 在 R1 中出现了 2 次,在 R2 中出现了 1 次

 Count_{w_{i,j}}^{clip}

◆ 该指标定义了对于第 j 个参考,wi 的截断计数,对于 R1 该值为 min(7, 2) = 2,R2 为 1

 Count^{clip}=max(Count^{clip}_{w_{i,j}}),j=1,2,3...

◆ wi 在所有参考翻译里的综合截断计数,以 the 为例,这里 max(1, 2) = 2

修改后的方法分母不变仍未 7,分子为 2,所以 BELU Score = 2 / 7,修改后的分数相对合理。

3.Modified n-gram precision

上面只考虑了单个单词的情况,虽然我们调整了分子的计算方法,分数虽然相对合理,但是由于翻译是重复的单个单词,所以实际观感依然很差。基于这种情况,算法考虑引入 N-Gram,针对不同的词组进行 BLEU 分数的评估,一般 N = 4,以下面语句为例:

我们分别基于 MT output 计算 1-gram 到 4-gram:

 对于更长的段落,我们可以将其理解为更大的句子:

这里使用句子级修改精度的单词加权平均值,而不是句子加权平均值。

4.Sentence brevity penalty

译句较短时,计算得到的 BLEU 分数会有一定失真,为此引入了 Sentence brevity penalty 翻译短句惩罚,对于译句相对参考翻译较短的情况通过引入 BP 对短句进行惩罚:

修改前的 BLEU 计算公式:

这里采用加权求和的方式,针对不同 n-gram 的概率进行计算,修改后的 BELU 公式为:

c 代表 candidate 候选翻译,r 代表 reference 参考翻译,对于 c ≤ r 的情况,会针对分数进行一些惩罚,其中 BP 的计算基于 r、c 和 exp 指数函数。论文中 baseline 的 n-gram 选择为 N=4,Wn 选择为 1/N。

三.BLEU 计算

python 通过 nltk 库可以计算 output 与 reference 之间的 BLEU 分数,多个 reference 可以通过 reference 的列表传递。BLEU 分数的范围通常在 0-1 之间,其中 1 表示完美匹配,分数越高匹配程度越高。

1.计算句子与单个 reference

from nltk.translate.bleu_score import sentence_bleu

# 参考句子列表
reference = [['The', 'cat', 'is', 'on', 'the' ,'mat']]
# 候选句子
candidate = ['the', 'the', 'the', 'the', 'the', 'the', 'the']

# 计算BLEU分数
bleu_score = sentence_bleu(reference, candidate)

print("BLEU分数:", bleu_score)

以上面 7 个 'the' 为例 BLEU分数: 1.1200407237786664e-231。

2.计算句子与多个 reference

from nltk.translate.bleu_score import sentence_bleu

# 参考句子列表
reference = [['The', 'cat', 'is', 'on', 'the' ,'mat'],['There', 'is', 'a', 'cat', 'on', 'the', 'mat']]
# 候选句子
candidate = ['The', 'cat', 'the', 'cat', 'on', 'the', 'mat']

# 计算BLEU分数
bleu_score = sentence_bleu(reference, candidate)

print("BLEU分数:", bleu_score)

以 'the cat the cat on the mat' 为例 BLEU分数: 0.4671379777282001。

四.总结

BLEU 最早用于评估机器翻译结果,其主要考虑 n-gram 词组的匹配程度,并引入了 BP 惩罚系数。BLEU 的优点是计算快速,定义简单,结果具有一定参考价值;缺点是只考虑单词的简单组合,未考虑更复杂的语法或近似表达。

提起 n-gram 不得不想起 embedding 的鼻祖 word2vec,本质上 BLEU 其实也是在计算共现的频率,并针对长短句的情况进行了一定的加权优化。所以在 LLM 领域,我们一方面可以基于 NLTK API 快速计算生成效果的硬性指标,另一方面也可以基于 n-gram 进行指标的修改适配自己的业务特点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spark第三课

1.分区规则 1.分区规则 shuffle 1.打乱顺序 2.重新组合 1.分区的规则 默认与MapReduce的规则一致,都是按照哈希值取余进行分配. 一个分区可以多个组,一个组的数据必须一个分区 2. 分组的分区导致数据倾斜怎么解决? 扩容 让分区变多修改分区规则 3.HashMap扩容为什么必须…

Jetpack Compose:探索声明式UI开发的未来

Jetpack Compose:探索声明式UI开发的未来 1. 引言 在移动应用开发领域,用户界面(UI)开发一直是开发过程中的关键挑战之一。传统的UI开发方式往往涉及大量繁琐的布局代码、手动管理状态和事件处理,不仅容易引发错误&a…

linux第三阶段--第三方软件(一)MySQL的概述和二进制安装(官网版)

MySQL介绍及安装 一、MySQL概述 DB2 POSTGRE-SQL 1、关系型数据库与非关系型数据库 RDBMS(relational database management system),既关系型数据库管理系统。 简单来说,关系型数据库,是指采用了二维表格来组织数…

Vue 项目运行 npm install 时,卡在 sill idealTree buildDeps 没有反应

解决方法:切换到淘宝镜像。 以下是之前安装的 xmzs 包,用于控制切换淘宝镜像。 该截图是之前其他项目切换淘宝镜像的截图。 切换镜像后,顺利执行 npm install 。

TDD(测试驱动开发)?

01、前言 很早之前,曾在网络上见到过 TDD 这 3 个大写的英文字母,它是 Test Driven Development 这三个单词的缩写,也就是“测试驱动开发”的意思——听起来很不错的一种理念。 其理念主要是确保两件事: 确保所有的需求都能被照…

Python查找交作业人数

写在前面: 利用Python统计文件数量,能够高效快捷地收集作业! 一、问题:获取test文件夹下的所有文件 二、Python中os.listdir()函数的用法 (一)os.listdir()函数的基本用法 os.listdir()函数的基本语法如…

【Realtek sdk-3.4.14b】RTL8197F+RTL8812F欧洲屏蔽5G天气雷达信道DFS信道120、124、128方法

需求描述 对于欧洲国家来说,默认支持DFS信道,但是有三个信道比较特殊,是天气雷达信道,如下图所示120、124、128,天气雷达信道有个特点就是在信号可以发射之前需要检测静默15min,如果信道自动选择到了天气雷达信道,就会有15min的时间无法连接到WiFi热点,严重影响用户体验…

Java接口压力测试—如何应对并优化Java接口的压力测试

导言 在如今的互联网时代,Java接口压力测试是评估系统性能和可靠性的关键一环。一旦接口不能承受高并发量,用户体验将受到严重影响,甚至可能导致系统崩溃。因此,了解如何进行有效的Java接口压力测试以及如何优化接口性能至关重要…

【数学建模】-- 数学规划模型

概述: 什么是数学规划? 数学建模中的数学规划是指利用数学方法和技巧对问题进行数学建模,并通过数学规划模型求解最优解的过程。数学规划是一种数学优化方法,旨在找到使目标函数达到最大值或最小值的变量取值,同时满足…

代码随想录—力扣算法题:707设计链表.Java版(示例代码与导图详解)

版本说明 当前版本号[20230818]。 版本修改说明20230818初版 目录 文章目录 版本说明目录707.设计链表思路获取链表第index个节点的数值在链表的最前面插入一个节点在链表的最后面插入一个节点在链表第index个节点前面插入一个节点删除链表的第index个节点 单链表角度总结 7…

构建可远程访问的企业内部论坛

文章目录 前言1.cpolar、PHPStudy2.Discuz3.打开PHPStudy,安装网页论坛所需软件4.进行网页运行环境的构建5.运行Discuz网页程序6.使用cpolar建立穿透内网的数据隧道,发布到公网7.对云端保留的空白数据隧道进行配置8.Discuz论坛搭建完毕 前言 企业在发展…

PK Nounique CASCADE DROP INDEX keep index

Explicit Control Over Indexes when Creating, Disabling, or Dropping PK/Unique Constraints (Doc ID 139666.1)​编辑To Bottom PURPOSEIn Oracle 9i, the DBA has an explicit control over how indexes are affectedwhile creating, disabling, or dropping Primary Ke…

分类预测 | MATLAB实现GWO-BiGRU-Attention多输入分类预测

分类预测 | MATLAB实现GWO-BiGRU-Attention多输入分类预测 目录 分类预测 | MATLAB实现GWO-BiGRU-Attention多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.GWO-BiGRU-Attention 数据分类预测程序 2.代码说明:基于灰狼优化算法(GW…

Redis——hash类型详解

概述 Redis本身就是键值对结构,而Redis中的value可以是哈希类型,为了区分这两个键值对,Redis中的键值对是key-value,而value中的哈希键值对则是field-value,其中value必须是字符串 下面介绍一些Redis的hash类型的常用…

归并排序 与 计数排序

目录 1.归并排序 1.1 递归实现归并排序: 1.2 非递归实现归并排序 1.3 归并排序的特性总结: 1.4 外部排序 2.计数排序 2.1 操作步骤: 2.2 计数排序的特性总结: 3. 7种常见比较排序比较 1.归并排序 基本思想: 归并排序(MERGE-SORT)是建立在归并操作上的一种…

集简云本周新增/更新:新增3大功能,集成19款应用,更新5款应用,新增近290个动作

本周更新概要 功能更新 ◉ 新增功能:语聚AI开放API功能 ◉ 新增功能:数据表表格公开分享功能 ◉ 新增功能:浏览器页面操作页面内容读取(增强版本) 应用新增 新增应用:赛捷CRM 新增应用:快跑者 新增应…

Matplotlib数据可视化(六)

目录 1.绘制概率图 2.绘制雷达图 3.绘制流向图 4.绘制极坐标图 5.绘制词云图 1.绘制概率图 from scipy.stats import norm fig,ax plt.subplots() plt.rcParams[font.family] [SimHei] np.random.seed() mu 100 sigma 15 x musigma*np.random.randn(437) num_bins …

GRPC 学习记录

GRPC 安装 安装 grpcio、grpcio-tools、protobuf、 pip install grpcio -i https://pypi.tuna.tsinghua.edu.cn/simple pip install grpcio-tools -i https://pypi.tuna.tsinghua.edu.cn/simple pip install protobuf -i https://pypi.tuna.tsinghua.edu.cn/simple常用类型 p…

ai之美:探索写真照片软件的创造力

小青:嘿,小华,你知道最近ai艺术写真非常流行吗? 小华:真的吗?我还不知道呢。告诉我更多细节吧! 小青:好的,ai艺术写真是指使用人工智能技术将照片转化为艺术作品的过程…

arcgis数据采集与拓扑检查

1、已准备好一张配准好的浙江省行政区划图,如下: 2、现在需要绘制湖州市县级行政区划。需要右击文件夹新建文件地理数据库,如下: 其余步骤均默认即可。 创建好县级要素数据集后,再新建要素类,命名为县。 为…