如何计算文本的困惑度perplexity(ppl)

news2025/1/11 23:41:28

前言

  • 本文关注在Pytorch中如何计算困惑度(ppl
  • 为什么能用模型 loss 代表 ppl

如何计算

当给定一个分词后的序列 X = ( x 0 , x 1 , … , x t ) X = (x_0, x_1, \dots,x_t) X=(x0,x1,,xt), ppl 计算公式为:

在这里插入图片描述

  • 其中 p θ ( x i ∣ x < i ) p_\theta(x_i|x_{<i}) pθ(xix<i) 是基于 i i i 前面的序列,第 i i i 个 token 的 log-likelihood

Full decomposition of a sequence with unlimited context length

import torch
from tqdm import tqdm

max_length = model.config.n_positions
stride = 512
seq_len = encodings.input_ids.size(1)

nlls = []
prev_end_loc = 0
for begin_loc in tqdm(range(0, seq_len, stride)):
    end_loc = min(begin_loc + max_length, seq_len)
    trg_len = end_loc - prev_end_loc  # may be different from stride on last loop
    input_ids = encodings.input_ids[:, begin_loc:end_loc].to(device)
    target_ids = input_ids.clone()
    target_ids[:, :-trg_len] = -100

    with torch.no_grad():
        outputs = model(input_ids, labels=target_ids)

        # loss is calculated using CrossEntropyLoss which averages over valid labels
        # N.B. the model only calculates loss over trg_len - 1 labels, because it internally shifts the labels
        # to the left by 1.
        neg_log_likelihood = outputs.loss

    nlls.append(neg_log_likelihood)

    prev_end_loc = end_loc
    if end_loc == seq_len:
        break

ppl = torch.exp(torch.stack(nlls).mean())

这里我们可以看到 neg_log_likelihood = output.loss,这说明我们利用模型输出的 CrossEntropyLoss 就能代表 ppl

为什么

交叉熵损失函数公式(pytorch中并不是直接按照此公式计算,还做了其他处理)

在这里插入图片描述

  • 其中 y y y 是真实 ground-truth 标签
  • y ^ \hat{y} y^ 是模型预测的标签
  • C C C 是类别数目,这里可以看做vocabulary大小

在生成任务中,因为每个 y i y_i yi 中只有一个位置是1,其余位置都是 0,其实上述公式也就是 − l o g ( y i ) -log({y_{i}}) log(yi), 那么对一个序列 X X X,我们对每个token的 cross-entropy loss进行平均,其实就是 KaTeX parse error: {equation} can be used only in display mode.,也就是 ppl。因此在实际计算中,我们利用 cross-entropy loss 来代表一个句子的 ppl

参考:Perplexity of fixed-length models (huggingface.co)

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

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

相关文章

Ansible之playbook剧本编写

一、playbook的相关知识 1.playbook简介 playbook是 一个不同于使用Ansible命令行执行方式的模式&#xff0c;其功能更强大灵活。简单来说&#xff0c;playbook是一个非常简单的配置管理和多主机部署系统&#xff0c;不同于任何已经存在的模式&#xff0c;可作为一个适合部署复…

3.5千伏硅化碳(SiC)深埋式超结二极管

目录 相关知识研究了什么文章创新点研究方法文章的结论 相关知识 在科学和工程技术领域&#xff0c;SEM通常是扫描电子显微镜&#xff08;Scanning Electron Microscope&#xff09;的缩写。因此&#xff0c;在 “外延SEM横截面图” 中&#xff0c;SEM指的是扫描电子显微镜&am…

分享一些精选的开源框架与代码!

今天主要是收集并精选了一些自己所了解和学习过的优秀的嵌入式开源框架代码和项目&#xff0c;不太了解的就不推荐给大家了&#xff0c;因为开源的东西实在是太多了&#xff0c;鱼龙混杂&#xff0c;所以取其精华去其糟粕是迫在眉睫的大事~ 当然也不要总是沉浸在开源的东西之中…

手把手教你Pytest+Allure2.X定制报告详细教程,给自己的项目量身打造一套测试报告-02(非常详细)

简介 俗话说“人靠衣服马靠鞍”一个项目做的在好&#xff0c;没有一分的漂亮的测试报告有时候也是很难在客户那边验收的&#xff0c;今天就带你们解决这一难题。 前边一篇文章是分享如何搭建pytestAllure的环境&#xff0c;从而生成一份精美的、让人耳目一新的测试报告&#…

【Linux 网络】 HTTPS协议原理 对称加密 非对称加密 数字证书

HTTPS协议 HTTPS协议和HTTP协议的区别什么是“加密” 和“解密”加密和解密的小故事 为什么要进行加密&#xff1f;臭名昭著的“运营商劫持”事件 常见加密方式对称加密非对称加密 数据摘要数字签名 HTTPS工作过程探究方案 1 &#xff1a; 只使用对称加密方案2 &#xff1a; 只…

微信小程序交易体验分常见问题指引

小程序交易体验分是为保障小程序用户的交易体验&#xff0c;促进开发者向用户提供更好的服务&#xff0c;帮助开发者更好的评估自身服务水平的机制。平台将对开发者在其小程序的违规行为进行判定&#xff0c;根据违规行为的严重程度对该小程序扣减不同分值的交易体验分&#xf…

Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率

Excel是广泛应用于办公场景的优质电子表格软件&#xff0c;然而&#xff0c;许多人只是使用鼠标点击菜单和工具栏来完成操作&#xff0c;而忽略了快捷键的威力。在本文中&#xff0c;我们将详解Excel中的F1-F9快捷键&#xff0c;帮助您掌握实用的快捷操作&#xff0c;提升工作效…

多组学背景下的基因调控网络推断

染色质、转录因子和基因之间的相互作用产生了复杂的调节回路&#xff0c;可以表示为基因调节网络&#xff08;GRNs&#xff09;。GRNs的研究有助于了解疾病中细胞身份是如何建立、维持和破坏的。GRN可以从实验数据——历史上的大量组学数据——或文献中推断出来。单细胞多组学技…

图形化分析工具

1.图形化之短距分析 2.图形化之温度、CPU频率分析 3.常用指令集合 4.常见fastboot指令集合 5.模块之自动化分析–此项功能需要后续不断完善

再下一城丨美格智能座舱模组获头部新势力正式定点

近日&#xff0c;美格智能与国内领先的Tier1厂商密切协作&#xff0c;基于美格车载智能模组打造的智能座舱解决方案&#xff0c;成功获得国内某头部造车新势力的座舱域控制器项目定点&#xff0c;为其打造下一代智能座舱解决方案&#xff0c;创造更加沉浸和智能的座舱体验。 据…

C# Blazor 学习笔记(1):Blazor基础语法,组件化和生命周期

文章目录 前言基础语法路由Page 页面元素条件生成if / elseforforeach 绑定参数绑定(双向)事件绑定字典绑定 attributes 组件化如何使用Parameter 参数注入使用回调函数组件声明回调组件注入回调组件触发回调 直接控制 ref 生命周期App起始阶段&#xff1a;生命周期钩子阶段&am…

【产品文档】产品测试报告模板

今天和大家免费分享产品测试报告的文档模板。产品测试文档是在软件开发或产品开发过程中所编制的文件&#xff0c;用于记录测试计划、测试用例、测试结果和其他与产品测试相关的信息。它是测试团队或测试人员的重要工具&#xff0c;用于指导和管理测试过程&#xff0c;并与开发…

学网络安全,千万别棋差这一招

下午好&#xff0c;我的网工朋友 总感觉今年云计算的热度比网安高上不少&#xff0c;但网络安全在我心里依然是比较有意思的技术方向。 想学的人很多&#xff0c;想入门的人也很多。但找对方向和方法的人&#xff0c;很少很少。 网络安全到底怎么学&#xff1f; 其实入门这…

程序员有周末吗?

目录 一&#xff1a;周末的时间规划 二、提升周末体验感的好方法 三、一些数据 一&#xff1a;周末的时间规划 程序员有周末吗&#xff0c;是不是有的分大小周&#xff0c;好不容易轮到休息了&#xff0c;单位又搞什么团建&#xff0c;美名曰为了大家的健康。你要是为了大家…

高等数学中如何求渐近线

极限是数学中的一个重要概念&#xff0c;它描述了函数在某一点或无穷远处的行为。而渐近线是指函数图像在无穷远处的一条特殊直线&#xff0c;它与函数图像趋于无穷远时的趋势相似。 求渐近线的方法主要有以下几种&#xff1a; 1. 水平渐近线&#xff1a;当函数在无穷远处的极…

JavaScript作用域详解

目录 前言 什么是作用域 作用域类型 全局作用域 局部作用域 块级作用域 ES6之前 ES6以后 作用域链 变量提升 基础概念 优先级问题 闭包 定义 特点 使用场景 封装私有变量 延长变量周期 模块化、命名空间 缓存 ES6的作用域 const、let 块级作用域 变量提…

[css]margin-top不起作用问题(外边距合并)

在初学css时&#xff0c;会遇到突然间margin-top不起作用的情况。如下面&#xff1a; 情况一&#xff1a; 代码&#xff1a; <html> <head><style type"text/css"> * {margin:0;padding:0;border:0; }#outer {width:300px;height:300px;backgroun…

IPSec配置简介

实验拓扑&#xff1a; 实验目的 &#xff1a; PC1 ping通 PC2 AR1 配置 静态路由 IP route-static 0.0.0.0 0 100.1.12.2 AR3 配置静态路由 IP route-static 0.0.0.0 0 100.1.13.2 AR1 &#xff1a; 一.配置网络密钥交换提议 ike proposal 1 设置身份认证算法为&…

湖北安全员ABC证书电子版哪里下载?安全员证书可以全国通用吗?

湖北安全员ABC目前一个月有一到两批次的考试&#xff0c;需要报考安全员的直接问甘建二就行了&#xff0c;她都可以给您解疑答惑。 湖北安全员ABC证书电子版证书在哪里下载&#xff1f;怎么下载&#xff1f; 湖北安全员ABC证书也都是电子版的证书&#xff0c;直接从网上下载的…

IBM Spectrum Computing 分布式计算解决方案

IBM Spectrum Computing 分布式计算解决方案 Spectrum Computing 概览 20&#xff0b;年的分布式计算行业经验&#xff0c;全球各行业经验的总结和锤炼;全球TOP500企业客户的选择;前瞻性的产品研发路线&#xff0c;定义企业级分布式数据中心架构;成熟的全球ISV合作伙伴生态保…