向ChatGPT提特殊问题,可提取原始训练数据!

随着ChatGPT等模型的参数越来越大,预训练数据也呈指数级增长。谷歌DeepMind、华盛顿大学、康奈尔大学等研究人员发现,无论是开源还是闭源模型,在训练过程中皆能记住一定数量的原始训练数据样本。

如果使用特定的恶意攻击,便能轻松地从模型中提取海量训练数据,同时会威胁到数据所有者的隐私。

研究人员使用的攻击方法也非常简单,就是让ChatGPT(GPT-3.5)无限重复某个词语,例如,无限重复“公司”二字

最初ChatGPT会一直重复这个词语,达到一定数量时,居然神奇的出现某公司的地址、历史、营业范围等其他原始数据。

而这些数据并非神经元重组的文本内容,研究人员已经分享了该成功案例。

论文地址:https://arxiv.org/abs/2311.17035

攻击成功案例展示地址:https://chat.openai.com/share/456d092b-fb4e-4979-bea1-76d8d904031f

图片

一开始ChatGPT正常回答

图片


一定数量后,开始吐出原始训练数据

攻击方法与原理

研究人员使用了一种“可提取记忆”的攻击技术概念,这区别于训练数据的“可发现记忆”。

“可发现记忆”是攻击者知道训练数据集,可以直接从中提取数据;而“可提取记念”是攻击者无从得知训练数据,需通过模型本身得到数据。

简单来说,攻击者没有数据训练集的直接访问权限,只能通过解读和分析AI模型的“行为”或“反应”来推断出档案库中可能存储了哪些信息。就像是一位偷宝箱的人,他没有钥匙,只能从宝箱形状来判断里面装了哪些财宝

图片

研究人员使用了随机提示、尾递归索引检测、重复引发发散等多种攻击方法,终于通过重复引发发散发现了数据安全漏洞。

1)随机提示攻击

研究人员从维基百科等开源文本中采样5个词组作为提示,输入到语言模型中,要求它基于提示继续生成文本。

通过这个随机提示,模型产生的一些文本可能就是训练数据集中的内容。

2)尾递归索引检测

为了高效检测生成文本是否源自训练数据集,研究人员构建了一个“尾递归索引”。

这个数据结构按字符串后缀排序存储所有训练数据集文本,支持快速的子字符串查询操作。通过这个索引可以检测提示是否产生训练数据。

3)重复引发发散

研究人员发现,反复以单个词汇提示语言模型,可以引发生成与训练数据完全一致的长文本。这是因为模型难以持续重复一个词汇,从而“发散”到其他文本。

图片

为了评估攻击效果,研究人员构建了一个9TB的辅助数据集AUXDATASET,包含公开的大型语言模型预训练数据集。基于这个数据集,他们能够机械化地验证生成的样本是否出现在训练数据中

实验数据显示,即使不使用真实的训练数据作为提示,现有的提取攻击也能恢复大量记忆中的训练数据,远超过先前的估计。

例如,研究人员从6B参数的GPT-Neo模型中提取出近1GB的训练数据。这证明可提取记忆的数量要比人们普遍认为的要大得多。

图片

接着继续对9个不同的商业AI模型进行攻击。结果同样惊人,很多模型可以提取出GB量级的训练文本。例如,从LLaMA模型提取出2.9万个长度为50的记忆文本。

对ChatGPT进行特定提问

研究人员还专门分析了ChatGPT,因为它使用了数据安全对齐技术模拟真人对话,模型就不太容易泄露训练数据。

但是经过深度分析,研究人员还是找到了一个提示策略,可以让ChatGPT失去控制,然后像普通语言模型一样开始泄漏数据。该方法就是让模型无限重复回答一个词语。

通过该攻击方法,研究人员仅用了200美元便从ChatGPT提取出了1万个训练示例!如果花费更多的钱,可能会从ChatGPT提取大约1G的训练数据。

图片

研究人员认为,ChatGPT的高容量存储和大量重复训练数据,会增加其对训练数据的记忆,即便是采用了严格的安全对齐技术也能出现数据泄漏的问题。

所以,如果预训练中使用了太多敏感数据,很可能会被其他人利用。

截至目前,ChatGPT已经修复了该漏洞,当你在提问重复某个词句的无限重复要求时,会提示“根据OpenAI的使用政策,我不能参与重复无意义内容的行为。”

本文素材来源谷歌论文,如有侵权请联系删除

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

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

相关文章

python pip 相关缓存清理(windows+linux)

pip会大量缓存,如果全部堆在系统盘,会造成别的无法使用 windows和linux通用 一、linux linux是在命令行操作 1.查看缓存位置 pip cache dir我这里默认是在/root/.cache/pip 2.查看大小 du -sh /root/.cache/pip结果如下: 3.清理&#…

Redis的四种部署模式:原理、优缺点及应用场景

Redis是一款高性能的开源NoSQL数据库,它支持多种数据结构,如字符串、列表、集合、散列、有序集合等。Redis的主要特点是将所有数据存储在内存中,实现了极高的读写速度,同时也提供了持久化机制,保证了数据的安全性和一致…

深入理解 Go Channel:解密并发编程中的通信机制

一、Channel管道 1、Channel说明 共享内存交互数据弊端 单纯地将函数并发执行是没有意义的。函数与函数间需要交互数据才能体现编发执行函数的意义虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发送静态问题为了保证数据交换的正确性&am…

Windows的C盘爆掉了怎么办?

本文参考: C盘太满怎么办?亲测8种好用方法! 如果C盘的分区爆掉了,变红色了,是时候该处理这个问题了,解决你的C盘焦虑! 第一招:删除C盘文件 首先你会想到清理C盘里面的文件&#x…

数据结构之----数组、链表、列表

数据结构之----数组、链表、列表 什么是数组? 数组是一种线性数据结构,它将相同类型的元素存储在连续的内存空间中。 我们将元素在数组中的位置称为该元素的索引。 数组常用操作 1. 初始化数组 我们可以根据需求选用数组的两种初始化方式&#xff…

机器视觉系统选型-同轴光源分类及应用场景

同轴光源 从与相机同轴的方向均匀照射漫射光 Mark点定位条码识别二维码识别反光物体表面缺陷检测 高亮同轴光源 照射光线与水平方向成低角度夹角Mark点定位反光件表面凹坑、损伤、缺陷印刷电路板二维码识别 平行同轴光源 从与相机同轴方向照射平行度高 的平行光尺寸测量玻璃检…

【图像处理】图像骨架化提取c++实现

以下代码是对图像进行骨架提取的函数&#xff1a; void thinImage(cv::Mat& src, int maxIterations) {assert(src.type() CV_8UC1);cv::Mat dst(src.size(), src.type());int width src.cols;int height src.rows;for (int i 0; i < height; i){uchar* ptr src.p…

团队git操作流程

项目的开发要求 项目组厉员每天代码提交不少于20次企业项目开发代码的每天的提交一般提交3-5次代码仓库的管理 git的基础操作流程 命令模式 git push插件模式 vscode git graphGUI软件管理模式 sourcetree git在项目团队化开发中的应用 master(一般是不动的)dev (主要是拿…

2. 如何通过公网IP端口映射访问到设备的vmware虚拟机的ubuntu服务器

文章目录 1. 主机设备是Windows 11系统2. 安装vmware虚拟机3. 创建ubuntu虚拟机&#xff08;据说CentOS 7 明年就不维护了&#xff0c;就不用这个版本的linux了&#xff09;4. 安装nginx服务:默认端口805. 安装ssh服务:默认端口226. 设置主机 -> ubuntu的端口映射7. 设置路由…

【Amis Low Code 结合FastAPI进行前端框架开发】

官方文档 封装思想 直接复制官网json数据即可开发每个json中的接口由fastapi 转发&#xff08;透传&#xff09;使其开发模式与前端思维一致 基础组件 from amis import Page, Service, App from pydantic import BaseModel, Field from fastapi import FastAPI, Request, …

vue:this.reload()跟this.$router.replace的区别

this.reload() 页面是否会执行 created&#xff0c; 它跟 this.$router.replace的区别 都是页面初始化&#xff0c; url地址中没有rowId&#xff0c;reload可以使用&#xff0c;最终也是对路由进行刷新&#xff0c; 一个祖先组件通过设置provide/inject向其所有子孙后代注入一个…

c++学习之智能指针

前言&#xff1a;在此之前我们已经学习到了异常的使用&#xff0c;虽然异常在大部分情况都还可以&#xff0c;但也存在太多缺陷&#xff0c;对于异常的问题&#xff0c;入内存泄漏&#xff0c;在复杂的场景下使用起来也是非常麻烦。为了更好的解决这些问题&#xff0c;c11中引入…

Vue中比较两个JSON对象的差异

要在Vue.js中实现JSON数据的对比差异功能&#xff0c;你可以使用一些库来简化任务&#xff0c;比如diff-match-patch。以下是一个简单的例子&#xff0c;演示如何使用deep-diff库在Vue.js中比较两个JSON对象的差异&#xff1a; 首先&#xff0c;确保你的项目中已经安装了diff-m…

C语言—每日选择题—Day45

第一题 1. 以下选项中&#xff0c;对基本类型相同的指针变量不能进行运算的运算符是&#xff08;&#xff09; A&#xff1a; B&#xff1a;- C&#xff1a; D&#xff1a; 答案及解析 A A&#xff1a;错误&#xff0c;指针不可以相加&#xff0c;因为指针相加可能发生越界&…

使用 Vue 3 框架编写的简单日历组件

这段代码是一个使用 Vue 3 框架编写的简单日历组件。下面是代码的详细解析&#xff1a; 模板部分&#xff08;Template&#xff09;&#xff1a; 定义了一个名为 "calendar" 的 div&#xff0c;它包含了一个头部分&#xff08;header&#xff09;和三个主要部分&…

【华为数据之道学习笔记】4-2信息架构原则:建立企业层面的共同行为准则

信息架构承载了企业如何管理数据资产的方法&#xff0c;需要从整个企业 层面制订统一的原则&#xff0c;这些原则不仅是对数据专业人员的要求&#xff0c;也是对业务的要求&#xff0c;因为业务才是真正的数据Owner。所以&#xff0c;公司所有业务部门都应该共同遵从信息架构原…

Redis安装教程

文章目录 Redis安装说明1.单机安装Redis1.1.安装Redis依赖1.2.上传安装包并解压1.3.启动1.3.1.默认启动1.3.2.指定配置启动1.3.3.开机自启 2.Redis客户端2.1.Redis命令行客户端2.2.图形化桌面客户端2.2.1.安装2.2.2.建立连接 Redis安装说明 大多数企业都是基于Linux服务器来部…

用Java版本爬虫-WebMagic

我长期关注和实践各种网页数据爬取技术。今天&#xff0c;我想分享我的经验&#xff0c;特别是使用 WebMagic 框架来爬取淘宝网的数据。WebMagic 是一个灵活、强大的Java爬虫框架&#xff0c;适合于数据挖掘和网页内容分析。 WebMagic 简介 WebMagic 是一个简单而强大的 Java…

【clickhouse】ck远程访问另一个ck

代码实现 CREATE TABLE tmp.tbsas remote( host, database_name, table_name, user, password );就相当于从ck1直接请求ck2 参考文档 https://github.com/ClickHouse/ClickHouse/issues/15295 https://clickhouse.com/docs/zh/sql-reference/table-functions/remote

FFmpeg之AVFilterPad

AVFilterPad起一个输入和输出接口的作用 结构体 /*** A filter pad used for either input or output.*/ struct AVFilterPad {/*** Pad name. The name is unique among inputs and among outputs, but an* input may have the same name as an output. This may be NULL if …