论文翻译:USENIX-2021 Extracting Training Data from Large Language Models

news/2024/9/18 14:43:50/ 标签: 语言模型, 人工智能, 自然语言处理

Extracting Training Data from Large Language Models

从大型语言模型中提取训练数据

https://www.usenix.org/system/files/sec21-carlini-extracting.pdf

文章目录

摘要

现在,发布在私有数据集上训练的大型(数十亿参数)语言模型已经变得很常见。本文展示了在这种设置中,攻击者可以通过查询语言模型来恢复个别训练样本,从而执行训练数据提取攻击。
我们在GPT-2上展示了我们的攻击,GPT-2是一个在公共互联网抓取的数据上训练的语言模型,我们能够从模型的训练数据中提取数百个逐字文本序列。这些提取的示例包括(公共)个人身份信息(姓名、电话号码和电子邮件地址)、IRC对话、代码和128位UUID。即使在训练数据中每个上述序列只包含在一个文档中,我们的攻击也是可能的。我们全面评估了我们的提取攻击,以了解其成功的因素。令人担忧的是,我们发现更大的模型比更小的模型更脆弱。我们通过总结教训和讨论训练大型语言模型的可能的安全措施来结束本文。

1 引言

语言模型(LM)——为一系列单词分配概率的统计模型——是许多自然语言处理任务的基础。现代基于神经网络的LM使用非常大的模型架构(例如,1750亿参数[7])并在庞大的数据集上训练(例如,近1TB的英文文本[55])。这种扩展提高了LM生成流畅自然语言的能力[53,74,76],并且也允许它们被应用于大量其他任务[29, 39, 55],甚至在不更新它们的参数的情况下[7]。
与此同时,机器学习模型因暴露其(可能是私有的)训练数据的信息而臭名昭著——无论是一般情况[47, 65]还是在特定的情况下的语言模型[8, 45]。例如,对于某些模型,已知攻击者可以应用成员推断攻击[65]来预测任何特定示例是否在训练数据中。
这种隐私泄露通常与过拟合[75]有关——当模型的训练误差显著低于其测试误差时——因为过拟合通常表明模型已经记住了训练集中的示例。事实上,过拟合是隐私泄露的充分条件[72],许多攻击通过利用过拟合来工作[65]。
过拟合和记忆之间的关联——错误地——导致许多人认为最先进的LM不会泄露有关其训练数据的信息。因为这些模型通常只在单个周期[7, 55]中在大量去重的数据集上训练,它们表现出很少或没有过拟合[53]。因此,普遍的观点是“对任何给定作品的复制程度可能最多是微不足道的”[71],并且模型不会显著记住任何特定的训练示例。

贡献。在这项工作中,我们展示了大型语言模型记忆并泄露个别训练示例。具体来说,我们提出了一种简单有效的从语言模型的训练集中提取逐字序列的方法,仅使用黑盒查询访问。我们的关键见解是,尽管训练示例在平均上没有比测试示例有显著更低的损失,但某些最坏情况下的训练示例确实被记住了。
在我们的攻击中,我们首先使用三种通用采样策略之一,从模型生成大量多样化的高概率样本。然后我们使用六种不同的度量标准对每个样本进行排序,这些度量标准估计每个样本使用单独的参考模型(例如,另一个LM)的可能性,并在两个模型之间具有异常高的似然比的样本中排名最高。
我们的攻击直接适用于任何语言模型,包括那些在敏感和非公共数据上训练的模型[10,16]。我们在实验中使用OpenAI发布的GPT-2模型[54]作为代表性的语言模型。我们选择攻击GPT-2以最小化现实世界的伤害——GPT-2模型和原始训练数据源已经是公开的。
为了使我们的结果可量化,我们定义了一个可测试的记忆定义。然后我们生成了1800个候选记忆样本,每个3×6攻击配置下100个,并发现其中超过600个是GPT-2训练数据中的逐字样本(与GPT-2的创造者合作确认)。在最佳的攻击配置中,67%的候选样本是逐字训练示例。我们最明显的敏感攻击提取了一个人的全名、实际地址、电子邮件地址、电话号码和传真号码(见图1)。我们全面分析了我们的攻击,包括研究模型大小和字符串频率如何影响记忆,以及不同的攻击配置如何改变提取数据的类型。
我们通过讨论许多实际策略来减轻隐私泄露来结束。例如,差分隐私训练[1]在理论上是合理的,并保证在适当的记录级别应用时产生私有模型,但它可能导致更长的训练时间,并且通常会降低效用。我们还提出了建议,例如仔细去重文档,这将有助于减轻记忆,但不能防止所有攻击。
在这里插入图片描述

图1:我们的提取攻击。给定对神经网络语言模型的查询访问,我们提取了一个人的姓名、电子邮件地址、电话号码、传真号码和实际地址。这个图示中的示例显示的信息都是准确的,所以我们对其进行了编辑以保护隐私。


http://www.ppmy.cn/news/1524778.html

相关文章

828华为云征文|基于华为云Flexus云服务器X部署Minio服务

文章目录 ❀前言❀Minio简介❀部署环境准备❀yum环境配置❀安装docker❀获取镜像❀创建挂载目录❀启动容器❀查看容器状态❀安全组开放❀浏览器访问❀总结 ❀前言 大家好,我是早九晚十二。 近期华为云推出了最新的华为云Flexus云服务器X,这款云主机在算…

windows 显示进程地址空间

windows 显示进程地址空间 windows 显示进程地址空间 文章目录 windows 显示进程地址空间显示进程地址空间 显示进程地址空间 /* 3-ProcessInfo.cpp 显示进程地址空间 */#include "..\\CommonFiles\\CmnHdr.h" #include "..\\CommonFiles\\Toolhelp.h"#i…

Debian命令行设置samba共享目录

Samba 是一个用于在 Unix/Linux 系统上实现 SMB/CIFS 网络协议的软件套件,使这些系统能够与 Windows 网络共享文件和打印机。在 Debian 10 上安装和配置 Samba 可以实现 Linux 和 Windows 之间的无缝文件共享。 安装 Samba 1. 更新包列表并安装 Samba: sudo apt update sud…

dplyr、tidyverse和ggplot2初探

dplyr、tidyverse 和 ggplot2 之间有紧密的联系,它们都是 R 语言中用于数据处理和可视化的工具,且都源于 Hadley Wickham 的工作。它们各自有不同的功能,但可以无缝协作,帮助用户完成从数据处理到数据可视化的工作流。以下是它们之…

Kubernetes 系列 | k8s入门运维

目录 一、K8S集群搭建1.1 部署方式1.2 了解kubeadm1.3 部署流程1.3.1 初始化配置1.3.2 安装容器运行时1.3.3 安装K8S软件包1.3.4 创建集群 二、集群高可用1.1 集群高可用-堆叠1.2 集群高可用-集群外etcd 三、Pod运维3.1 Pod运维3.2 Pod的生命周期3.3 Pod状况3.4 Pod阶段3.5 容器…

java的BigInteget介绍

当java程序需要处理一个非常大的整数,超过long类型的取值范围,就无法用基本类型对数值接收,这样就要用到BigInteget类。 BigInteger类的方法 BigInteger(String val) 将字符串变为BigInteger类型数据 示例代码如下 import java.math.BigI…

Linux 驱动编写框架 并编译导入开发板

向内核新加文件&#xff1a;例如 demo1.c 1. 创建并编辑新的文件 #include <linux/init.h> #include <linux/kernel.h> #include <linux/types.h> #include <linux/fs.h> #include <linux/module.h> #include <linux/kdev_t.h> #include …

大数据之Spark(一)

九、Spark&#xff08;PySpark 3.2&#xff09; 9.1、基本概念 定义&#xff1a;用于大规模数据处理的统一分析引擎 运行模式 本地模式&#xff08;单机&#xff09;&#xff1a;一个独立进程&#xff0c;多个线程模拟spark运行时环境Standalone模式&#xff08;集群&#…

【数据库-CRUD进阶-约束,联合查询,内连接(详解)】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f412…

​招​银​网​络​​大​疆​​元​象​一​面​

1. 请尽可能详细地说明&#xff0c;XHR、axios和fetch这三者的区别是什么&#xff1f;axios和fetch的底层实现是什么&#xff1f;axios拦截器是什么&#xff1f;axios提供了哪些配置或功能&#xff0c;是fetch和XHR中没有的&#xff1f;你的回答中不要写出示例代码。 XHR、axi…

flink中startNewChain() 的详解

在 Apache Flink 中&#xff0c;startNewChain() 是一个与算子链&#xff08;operator chaining&#xff09;相关的方法。与 disableChaining() 类似&#xff0c;它允许开发者控制算子链的创建方式&#xff0c;但 startNewChain() 的作用是从当前算子开始创建一个新的算子链&am…

全面解析性能测试中的瓶颈分析与优化策略!

在软件开发的生命周期中&#xff0c;性能测试是确保应用程序在不同负载下稳定运行的关键步骤。性能瓶颈是导致系统性能下降的主要原因&#xff0c;及时发现并解决这些瓶颈&#xff0c;能够显著提升系统的响应速度和用户体验。本文将深入探讨性能测试中的瓶颈分析方法与优化策略…

【设计模式】设计模式的八大原则

设计模式的八个原则&#xff1a; 依赖倒置原则&#xff1a; 高层次的代码&#xff08;稳定&#xff09;不应该依赖低层次的代码&#xff08;变化&#xff09;抽象的代码不应该依赖具体的代码。 开放封闭原则&#xff1a;类模块应该开放扩展的&#xff0c;而其原先的代码尽量封…

盘点2024年大家都在用的录屏工具

现在录屏工具的使用范围越来越广了。我的深切体验是有很多人愿意为知识付费了&#xff0c;但是到线下培训的话很多人时间不一定能协调的来&#xff0c;这就导致涌现了不少的录屏课程。这次我们来探讨下要怎么录屏才能呈现更好的效果。 1.福昕录屏大师 链接达达&#xff1a;ww…

GPT撰写开题报告教程——课题确定及文献调研

撰写开题报告是一项复杂而重要的任务&#xff0c;需要涵盖从主题选择到文献综述、研究方法等多个环节。借助AI&#xff0c;如ChatGPT&#xff0c;可以显著提高这一过程的效率以及内容的质量。本文将详细探讨如何一步步利用ChatGPT撰写开题报告。 一、开题报告内容 一个清晰的…

Docker Swarm 管理

案例一概述及前置知识点 概述&#xff1a; 创鑫公司给云计算工程师提出新的要求&#xff0c;可将集群中所有Docker Engine整合进一个虚拟的资源池&#xff0c;通过执行命令与单一的主Swarm进行沟通&#xff0c;而不必分别和DockerEngine沟通。在灵活的调度策略下&#xff0c;…

MongoDB基本语法

MongoDB 基本语法详解 MongoDB 是一种面向文档的 NoSQL 数据库&#xff0c;支持灵活的数据结构和高扩展性&#xff0c;广泛应用于现代应用程序开发。MongoDB 采用 BSON&#xff08;Binary JSON&#xff09;格式存储数据&#xff0c;使得其能够存储复杂嵌套的结构。 1. 数据库…

大数据安全之Kerberos

Kerberos 是一个网络身份验证协议&#xff0c;旨在提供强身份验证&#xff0c;尤其是在开放网络环境中。它最早由麻省理工学院&#xff08;MIT&#xff09;开发&#xff0c;用于在不安全的网络环境中安全地验证用户身份。Kerberos 协议的设计旨在防止窃听、重放攻击和网络中的其…

2024年9月12日(k8s环境及测试 常用命令)

一、环境准备及测试 1、报错处理&#xff1a; kube-system calico-node-5wvln 0/1 Init:0/3 0 16h kube-system calico-node-d7xfb 0/1 Init:0/3 0 16h ku…

mysql学习教程,从入门到精通,SQL AND OR 运算符(12)

1、SQL AND & OR 运算符 在本教程中&#xff0c;您将学习如何在子句中使用ASELECT column1_name, column2_name, columnN_nameFROM table_nameWHERE condition1 AND condition2;ND&#xff06;OR运算符&#xff0c;WHERE以根据多个条件过滤记录。 1.1、根据条件选择记录 …