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的分词方式会把一个完整的词切分成若干个子词,在生成训练样本时ÿ…...
【华为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练习相对前面的难度加大了,但是换汤不换药,还是围绕单链表的性质来出题的。我相信,能够过了前面的OJ练习,本章的OJ也是轻轻松松。 对于OJ练习(3):-> 传送门 <…...
SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)
SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊) 目录SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)1.概述2.最佳实践2.1创建项目引入依赖(mail)2.2 修改yml配置文件2.3 启动类添加EnableScheduling注解2.4 执行的…...
Arduino添加ESP32开发板
【2023年3月4日】 最近要在新电脑上安装Arduino,需要进行一些配置,正好记录一下! Arduino2.0.1 下的开发板添加操作。 ESP32开发板GitHub链接: GitHub - espressif/arduino-esp32: Arduino core for the ESP32Arduino core for…...
Mysql通配符的使用
LIKE操作符 通配符:用来匹配值的一部分的特殊字符。 搜索模式:由字面值,通配符或两者组合构成的搜索条件。 百分号(%)通配符 搜索模式使用例如下 SELECT prod_id, prod_name FROM products WHERE prod_name Like jet%; 这条子句表示&…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
