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

DetectGPT:使用概率曲率的零样本机器生成文本检测

DetectGPT的目的是确定一段文本是否由特定的llm生成,例如GPT-3。为了对段落 x 进行分类,DetectGPT 首先使用通用的预训练模型(例如 T5)对段落 ~xi 生成较小的扰动。然后DetectGPT将原始样本x的对数概率与每个扰动样本~xi进行比较。如果平均对数比高,则样本可能来自源模型。

ChatGPT是一个热门话题。人们正在讨论是否可以检测到一篇文章是由大型语言模型(LLM)生成的。DetectGPT定义了一种新的基于曲率的准则,用于判断是否从给定的LLM生成。DetectGPT不需要训练单独的分类器,不需要收集真实或生成的段落的数据集,也不需要显式地为生成的文本加水印。它只使用由感兴趣的模型计算的对数概率和来自另一个通用预训练语言模型(例如T5)的文章随机扰动。

1、DetectGPT:随机排列和假设

识别并利用了机器生成的通道x~pθ(左)位于logp (x)的负曲率区域的趋势,其中附近的样本平均具有较低的模型对数概率。相比之下,人类书写的文本x~preal(.)(右)倾向于不占据具有明显负对数概率曲率的区域。

DetectGPT基于一个假设,即来自源模型pθ的样本通常位于pθ对数概率函数的负曲率区域,这是人类文本不同的。如果我们对一段文本 x~pθ 应用小的扰动,产生 ~x,与人类编写的文本相比,机器生成的样本的数量 log pθ(x) - log pθ(~x) 应该相对较大。利用这个假设,首先考虑一个扰动函数 q(.|x),它给出了在 ~x 上的分布,x 的略微修改版本具有相似的含义(通常考虑粗略的段落长度文本 x)。例如,q(.|x) 可能是简单地要求人类重写 x 的其中一个句子的结果,同时保留 x 的含义。使用扰动函数的概念,可以定义扰动差异 d (x; pθ, q):

因此,下面的假设 4.1也就是:

如果q(.|x)是来自掩码填充模型(如T5)的样本而不是人类重写,那么假设4.1可以以自动的、可扩展的方式进行经验检验。

2、DetectGPT:自动测试

对一篇文章进行改写后,模型生成的文章的对数概率(扰动差异)的平均下降始终高于人工书写的文章

对于真实数据,使用了XSum数据集中的500篇新闻文章。当提示XSum中每篇文章的前30个令牌时,使用四个不同llm的输出。使用T5-3B施加扰动,遮蔽随机采样的2个单词跨度,直到文章中15%的单词被掩盖。上面公式(1)中的期望近似于T5中的100个样本。

上述实验结果表明,人写文章和模型样本的摄动差异分布有显著差异;模型样本往往有较大的扰动差异。根据这些结果,就可以通过简单地阈值扰动差异来检测一段文本是否由模型p生成。

通过用于估计 E~x q(.|x) log p (~x) 的观测值的标准偏差对扰动差异进行归一化提供了更好的检测,通常将 AUROC 增加 0.020 左右, 所以在实验中使用了扰动差异的归一化版本。

DetectGPT 的检测过程伪代码

扰动差异可能是有用的,它测量的是什么还无法明确解释,所以作者在下一节中使用曲率进行解释。

3、将微扰差异解释为曲率

扰动差异近似于候选段落附近对数概率函数局部曲率的度量,更具体地说,它与对数概率函数的 Hessian 矩阵的负迹成正比。

这一节内容比较多,这里就不详细解释了,有兴趣的可以看看原论文,大概总结如下:

语义空间中的采样确保所有样本都保持在数据流形附近,因为如果随机添加扰动标记,预计对数概率总是下降。所以可以将目标解释为近似限制在数据流形上的曲率。

4、结果展示

零样本机器生成文本检测

每个实验使用150到500个例子进行评估。机器生成的文本是通过提示真实文本的前30个标记来生成的。使用AUROC)评估性能。

可以看到DetectGPT最大程度地提高了XSum故事的平均检测精度(AUROC提高0.1 )和SQuAD维基百科上下文(AUROC提高0.05 )。

对于15种数据集和模型组合中的14种,DetectGPT提供了最准确的检测性能,AUROC平均提高了0.06。

与有监督检测器的比较

在真实文本和生成文本的大型数据集上训练的有监督的机器生成文本检测模型在分布内(顶部行)文本上的表现与DetectGPT一样好,甚至更好。零样本方法适用于新域(底部一行),如PubMed医学文本和WMT16中的德语新闻数据。

来自每个数据集的200个样本进行评估,监督检测器对英语新闻等分布内数据的检测性能与DetectGPT相似,但在英语科学写作的情况下,其表现明显差于零样本方法,而在德语写作中则完全失败。

DetectGPT检测GPT-3的平均AUROC与专门为机器生成文本检测训练的监督模型相当。

从PubMedQA、XSum和writingprompt数据集中抽取了150个示例。将两种预训练的基于roberta的检测器模型与DetectGPT和概率阈值基线进行了比较。DetectGPT 可以提供与更强大的监督模型竞争的检测。

机器生成文本检测的变体

这部分是看检测器是否可以检测到人工编辑的机器生成文本。通过用 T5–3B 中的样本替换文本的 5 个单词跨度来模拟人工修订,直到 r% 的文本被替换。即使模型样本中近四分之一的文本已被替换,DetectGPT 仍能将检测 AUROC 保持在 0.8 以上。DetectGPT 显示了所有修订级别的最强检测性能。

本文作者:Sik-Ho Tsang

论文地址:DetectGPT: Zero-Shot Machine-Generated Text Detection using Probability Curvature,

https://avoid.overfit.cn/post/32ade57f49d14bbca4899fcc1a672146

相关文章:

DetectGPT:使用概率曲率的零样本机器生成文本检测

DetectGPT的目的是确定一段文本是否由特定的llm生成,例如GPT-3。为了对段落 x 进行分类,DetectGPT 首先使用通用的预训练模型(例如 T5)对段落 ~xi 生成较小的扰动。然后DetectGPT将原始样本x的对数概率与每个扰动样本~xi进行比较。…...

【深度学习】BERT变体—BERT-wwm

1.BERT-wwm 1-1 Whole Word Masking Whole Word Masking (wwm)是谷歌在2019年5月31日发布的一项BERT的升级版本,主要更改了原预训练阶段的训练样本生成策略。 原有基于WordPiece的分词方式会把一个完整的词切分成若干个子词,在生成训练样本时&#xff…...

【华为OD机试真题 java、python、c++】优秀学员统计【2022 Q4 100分】(100%通过)

代码请进行一定修改后使用,本代码保证100%通过率。本文章提供java、python、c++三种代码 题目描述 公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。 每个员工会对应一个id,每天的打卡记录记录当…...

JavaScript里的循环方法:forEach,for-in,for-of

文章目录forEach循环for–in循环for-of循环for-of循环使用例子:循环一个数组(Array):循环一个字符串:循环一个类型化的数组(TypedArray):循环一个Map:循环一个 Set:循环一个 DOM collection循环一个拥有enumerable属性的对象循环一个生成器(g…...

汽车标定知识整理(二):CCP报文基本命令介绍

目录 一、基本命令 CRO命令报文的基本命令表: 二、基本命令与可选命令帧格式介绍 1、CONNECT——建立连接(0x01) 2、GET_CPP_VERSION——获取CCP版本(0x1B) 3、SET_MTA——设置内存传输地址(0x02&#…...

windows系统安装Linux虚拟机教程

虚拟机的安装首先要下载虚拟机的安装包,当前最新版本是VMware 16.2.1。软件我都已经给大家准备好了(含序列号),大家在这里下载就好。虚拟机安装包下载完毕之后,将它安装到电脑里。这个安装过程很简单,一路下…...

“基于Spring Cloud Alibaba的微服务架构实战:Nacos配置管理“

引言 Spring Cloud Alibaba 是 Spring Cloud 和 Alibaba 集团联合推出的开源微服务框架,旨在为 Java 开发者提供一种简单、易用、高效的微服务解决方案。Nacos 是一个面向云原生应用的动态服务发现、配置管理和服务管理平台,提供了服务注册与发现、配置管…...

【Linux】常见面试题

1. 查看文件内容 cat tail head less more 2. 几个查看文件内容的命令有什么区别 cat 文件名 # 将文件内的内容全部打印出来,cat 文件1 文件2 先将文件1全部法印,然后在打印文件2 more 文件名 # 分屏查看 less 文件名 # 上下分页查看 head 文件…...

【数据结构】顺序表:尾部操作我很行,随机访问我超快!!!

顺序表的模拟实现 文章目录顺序表的模拟实现1.线性表2.顺序表2.1概念结构2.2顺序表的模拟实现2.2.1顺序表的初始化2.2.2顺序表的销毁2.2.3尾插数据2.2.4尾删数据2.2.5头插数据2.2.6头删数据2.2.7中间插入数据2.2.8中间删除数据2.2.9打印顺序表2.2.10查找数据2.2.11复用Insert和…...

SQL优化

SQL优化 SQL优化的方法: sql查询语句尽不使用select * ,而是具体的字段。 节约资源,减少网络开销。减少回表,提高查询效率。 避免在where子句中使用or来连接条件。 or可能会使索引失效,从而进行全表查询。 尽量使用…...

Java ArrayList 和 LinkList 原理对比

Java 中的 ArrayList 和 LinkedList 都是实现了 List 接口的集合类它们都允许添加、删除和修改元素。但是它们的底层实现原理不同导致它们在不同的场景下拥有不同的优劣势。 ArrayListArrayList 的底层是通过数组实现的因此它具有数组的特性。它允许快速随机访问元素但是在插入…...

【Spring】入门概述(一)

🚗Spring学习第一站~ 🚩本文已收录至专栏:Spring家族学习之旅 👍希望您能有所收获 一.初识 Spring并不是单一的一个技术,而是一个大家族,发展到今天已经形成了一种开发的生态圈,Spring提供了若…...

十二、面向切面编程AOP

IoC使软件组件松耦合。AOP让你能够捕捉系统中经常使用的功能,把它转化成组件。 AOP(Aspect Oriented Programming):面向切面编程,面向方面编程。(AOP是一种编程技术) AOP是对OOP的补充延伸。 …...

Mybatis 处理 CLOB/BLOB 类型数据

Mybatis 处理 CLOB/BLOB 类型数据 BLOB 和 CLOB 都是大型字段类型。 BLOB通过二进制存储,而CLOB可以直接存储文本。 通常,图片、文件、音乐等信息存储在 BLOB 字段中。首先,文件是转换为二进制,然后存储在。文章或较长的文本存…...

【NLP经典论文阅读】Efficient Estimation of Word Representations in Vector Space(附代码)

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...

Spring bean生命周期分为几个阶段?

bean 的生命周期从调用 beanFactory 的 getBean 开始,到这个 bean 被销毁,可以总结为以下七个阶段:处理名称,检查缓存→处理父子容器→处理 dependsOn→选择 scope 策略→创建 bean→类型转换处理→销毁 bean划分的阶段和名称并不…...

【基础算法】单链表的OJ练习(4) # 分割链表 # 回文链表 #

文章目录前言分割链表回文链表写在最后前言 本章的OJ练习相对前面的难度加大了&#xff0c;但是换汤不换药&#xff0c;还是围绕单链表的性质来出题的。我相信&#xff0c;能够过了前面的OJ练习&#xff0c;本章的OJ也是轻轻松松。 对于OJ练习(3)&#xff1a;-> 传送门 <…...

SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)

SpringBoot整合定时任务和邮件发送&#xff08;邮箱 信息轰炸 整蛊&#xff09; 目录SpringBoot整合定时任务和邮件发送&#xff08;邮箱 信息轰炸 整蛊&#xff09;1.概述2.最佳实践2.1创建项目引入依赖(mail)2.2 修改yml配置文件2.3 启动类添加EnableScheduling注解2.4 执行的…...

Arduino添加ESP32开发板

【2023年3月4日】 最近要在新电脑上安装Arduino&#xff0c;需要进行一些配置&#xff0c;正好记录一下&#xff01; Arduino2.0.1 下的开发板添加操作。 ESP32开发板GitHub链接&#xff1a; GitHub - espressif/arduino-esp32: Arduino core for the ESP32Arduino core for…...

Mysql通配符的使用

LIKE操作符 通配符&#xff1a;用来匹配值的一部分的特殊字符。 搜索模式&#xff1a;由字面值&#xff0c;通配符或两者组合构成的搜索条件。 百分号(%)通配符 搜索模式使用例如下 SELECT prod_id, prod_name FROM products WHERE prod_name Like jet%; 这条子句表示&…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...