文本嵌入的隐私风险:从嵌入向量重建原始文本的探索

news2025/1/14 1:04:32

随着大型语言模型(LLMs)的广泛应用,文本嵌入技术在语义相似性编码、搜索、聚类和分类等方面发挥着重要作用。然而,文本嵌入所蕴含的隐私风险尚未得到充分探讨。研究提出了一种控制生成的方法,通过迭代修正和重新嵌入文本,以生成与固定嵌入点接近的文本。研究发现,尽管基于嵌入的朴素模型表现不佳,但多步骤方法能够精确恢复92%的32个标记文本输入。此外,模型还能够从临床笔记数据集中恢复重要的个人信息(如全名)。

在利用大型语言模型的系统中,文本数据的嵌入向量通常存储在向量数据库中。尽管向量数据库越来越受欢迎,但它们内部的隐私威胁尚未得到全面探索。本文旨在探讨第三方服务是否能够根据给定的嵌入向量重现初始文本,从而对隐私构成威胁。

方法:Vec2Text

Vec2Text方法是一种用于从文本嵌入向量重构原始文本的迭代修正过程。这种方法的核心在于控制生成,即生成满足特定条件(在本例中为与目标嵌入向量接近)的文本。以下是Vec2Text方法的详细说明:

1. 控制生成的启发式方法

Vec2Text方法基于控制生成的原理,它生成文本以满足一个已知的条件,即生成的文本在重新嵌入后,其嵌入向量应尽可能接近一个给定的目标嵌入点。

2. 迭代修正过程

这个过程从一个初始假设开始,并逐步通过迭代修正来改进这个假设。每一步都包括以下操作:

  • 使用当前的文本假设重新生成嵌入向量(ˆe(t) = ϕ(x(t)))。
  • 计算当前嵌入向量与目标嵌入向量之间的差异。
  • 根据这个差异来修正文本假设,生成一个新的更接近目标嵌入的文本假设。

3. 编码器-解码器变换器(Transformer)

Vec2Text使用标准的编码器-解码器架构的Transformer模型来生成和修正文本。Transformer模型因其在自然语言处理任务中的高效性能而广泛使用。

4. 多层感知机(MLP)

由于Transformer模型需要序列形式的输入,而嵌入向量是固定长度的向量,因此Vec2Text使用MLP来将嵌入向量投影到适合Transformer编码器的序列长度。具体步骤如下:

  • 使用MLP将目标嵌入向量e、当前假设嵌入向量ˆe(t)以及两者的差异e - ˆe(t)投影到更大的维度空间。
  • 将这些投影后的向量与假设文本的词嵌入向量连接起来,形成Transformer编码器的输入。

5. 模型参数化

Vec2Text模型的参数化包括:

  • 一个基础的文本逆向模型,用于生成初始假设p(x(0) | e)
  • 一个条件语言模型,用于从给定嵌入重构未知文本x

6. 训练过程

模型训练涉及以下步骤:

  • 从基础模型生成初始假设x(0)
  • 计算初始假设的嵌入ˆe(0)
  • 在生成的数据上训练模型,以改进文本假设。

7. 推理过程

在实际应用中,由于无法对所有中间假设进行求和,Vec2Text使用束搜索(beam search)来近似这个过程。在每一步修正中,考虑一定数量的可能修正,并解码这些修正的顶部可能延续,然后通过测量它们与目标嵌入在嵌入空间中的距离来选择顶部的独特延续。

Vec2Text方法通过这种方式能够有效地从文本嵌入向量中恢复原始文本,展示了文本嵌入技术在隐私保护方面的潜在风险。

实验设置

Vec2Text在两个最先进的嵌入模型上进行训练:GTR-base和OpenAI的text-embeddings-ada-002。还评估了在BEIR基准的多种常见检索语料库上生成的嵌入,以及MIMIC-III临床笔记数据库。

训练模型

Vec2Text方法在两个高绩效的文本嵌入模型上进行了训练:

  1. GTR-base: 这是一个基于T5的预训练变换器模型,专门为文本检索任务设计。GTR-base模型在MTEB(Massive Text Embedding Benchmark)文本嵌入基准测试中表现出色。

  2. text-embeddings-ada-002: 这是通过OpenAI API提供的模型,也是一个高性能的文本嵌入模型。

训练数据集
  • Wikipedia文章: Vec2Text的GTR模型训练使用了从Natural Questions语料库中选取的500万个Wikipedia文章段落,每个段落被截断至32个标记(tokens)。

  • MSMARCO语料库: Vec2Text的OpenAI模型训练使用了MSMARCO语料库的两个版本,每个版本的最大标记数分别为32和128。

评估数据集
  • BEIR基准: 为了评估模型在不同检索语料库上的表现,研究者使用了BEIR(Benchmark for Explainable Information Retrieval)基准的15个不同数据集。这些数据集覆盖了多种领域和类型的文本。

  • MIMIC-III临床笔记数据库: 此外,研究者还评估了Vec2Text在MIMIC-III(Medical Information Mart for Intensive Care)数据库中的临床笔记嵌入上的表现。这个数据库包含了大量的临床医疗记录,用于评估模型恢复敏感个人信息的能力。

实验细节
  • 模型参数: Vec2Text模型使用了约2.35亿参数,其中包括编码器-解码器架构和投影头(projection head)。

  • 超参数: 在实验中,研究者设置了投影序列长度s为16,这是基于初步实验结果确定的,因为增加此数值的收益递减。

  • 优化器和学习率: 使用了Adam优化器,学习率为2×10^-4,并采用了预热和线性衰减策略。

  • 训练周期: 模型训练了100个周期。

  • 硬件: 所有模型都在4个NVIDIA A6000 GPU上进行训练。

这些实验设置展示了Vec2Text方法在不同文本嵌入模型和数据集上的训练和评估过程,以及它在恢复原始文本方面的潜力。通过这些实验,研究者能够评估文本嵌入的隐私风险,并提出了相应的保护措施。

结果

域内数据集上的表现

Vec2Text在域内数据集上的表现超过了所有基线模型。这些基线模型包括简单的词袋模型和GPT-2解码器,它们没有使用迭代修正步骤来恢复文本。Vec2Text使用以下指标进行评估:

  • BLEU分数: 用于衡量重构文本和原始文本之间的n-gram相似度。
  • Token F1: 多类F1分数,衡量预测的标记集合和真实标记集合之间的关系。
  • 精确匹配: 重构输出完全匹配原始文本的百分比。
  • 余弦相似度: 原始嵌入向量和重构文本嵌入向量之间的相似度。

Vec2Text在这些指标上都显示出了优越的性能,特别是在使用GTR-base模型时,经过50步迭代修正后,对于32个标记的输入,BLEU分数达到了97.3,并且能够精确恢复92%的示例。

BEIR基准上的表现

Vec2Text在BEIR基准的15个数据集上进行了评估,这些数据集覆盖了不同的领域和文本类型。模型展示了对不同长度输入的适应性,并且在所有数据集上都取得了以下最低恢复性能:

  • Token F1分数: 至少41%,表明模型能够准确预测大部分的标记。
  • 余弦相似度: 至少0.95,表明重构的嵌入向量与真实嵌入向量在向量空间中非常接近。

这些结果表明,即使在未见过的文本数据上,Vec2Text也能够有效地恢复文本内容,从而证实了文本嵌入可能带来的隐私风险。

MIMIC-III临床笔记

在MIMIC-III临床笔记数据库上,Vec2Text能够恢复大部分的个人信息,包括:

  • 94%的名(first names)
  • 95%的姓(last names)
  • 89%的全名(full names)

这些结果进一步强调了在处理敏感数据时,需要特别注意保护文本嵌入的隐私。

论文链接:http://arxiv.org/pdf/2310.06816

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

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

相关文章

jsp校园商城派送系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 校园商城派送系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用serlvetdaobean mvc 模式,系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Myeclipse8.…

第12章 消息服务 ❤❤❤❤

第12章 消息服务 12.1 JMS_ActiveMQ1. 简介2. ActiveMQ安装Linux安装命令问题1:网页访问不了问题2: 修改密码 3. 整合SpringBoot3.1 依赖3.2 配置3.3 JmsComponent 组件3.4 测试 12.2 AMQP_RabbitMQ1. 简介2. RabbitMQ2.1 Erlang环境安装(略)2.2 安装RabbitMQ(❤❤❤❤)2.3 启动…

FreeRTOS学习——FreeR TOS队列(下)

本篇文章记录我学习FreeRTOS的队列的相关知识,在此记录分享一下,希望我的分享对你有所帮助。 FreeRTOS学习——FreeRTOS队列(上)-CSDN博客 一、FreeRTOS队列的创建 (一)、函数原型 在使用队列之前必须先创…

【大数据】学习笔记

文章目录 [toc]NAT配置IP配置SecureCRT配置PropertiesTerminal Java安装环境变量配置 Hadoop安装修改配置文件hadoop-env.shyarn-env.shslavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml 环境变量配置 IP与主机名映射关系配置hostname配置映射关系配置 关闭防火墙…

OpenCV(四)—— 车牌号识别

本节是车牌识别的最后一部分 —— 车牌字符识别,从一个完整的车牌图片到识别出车牌上的字符大致需要如下几步: 预处理:将车牌图片灰度化、二值化,并去除识别时的干扰因素,比如车牌铆钉字符分割:将整个车牌…

基于springboot+vue+Mysql的影城管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

CATO原理中的数学与魔术(七)——Baby Hummer的拓展二

在上一篇文章中,我们介绍了《Baby Hummer》的两个拓展,从表演的形式台词,到呈现的策略,都有一定的改进,相关内容请戳: CATO原理中的数学与魔术(六)——Baby Hummer的拓展一 CATO原理…

WebSocket 多屏同显和异显

介绍 多屏同显:通过在一个应用上进行操作之后,另一个应用也能跟着一起发生改变,例如app1播放了晴天这首音乐,那么app2也要同步播放这首音乐,确保所有屏幕显示的内容完全相同。多屏异显:每个屏幕可以显示不同的内容,或者在内容更新时存在一定的延迟,而不需要严格保持同步…

MLP手写数字识别(1)-MNIST数据集下载与可视化(tensorflow)

1.下载与查看MNIST数据集 from keras.datasets import mnist(x_train_image,y_train_label),(x_test_image,y_test_label) mnist.load_data() print("train images:",x_train_image.shape) print("test images:",x_test_image.shape) print("train …

83、动态规划-打家劫舍

思路: 首先使用递归方式求出最优解。从每个房屋开始,分别考虑偷与不偷两种情况,然后递归地对后续的房屋做同样的决策。这种方法确保了可以找到在不触发警报的情况下可能的最高金额。 代码如下: public static int rob(int[] nu…

【多变量控制系统 Multivariable Control System】(2)给定系统转换方程,绘制奈奎斯特图【新加坡南洋理工大学】

一、系统转换方程 系统的转换方程 G(s) 和回馈矩阵 K(s) 由下2式给出: 二、从转换方程推出系统矩阵A和B from scipy.signal import tf2ss# Convert to state-space representation A, B, C, D tf2ss([1], [1, -2, 1])print("A matrix:", A) print(&quo…

【Unity】在空物体上实现 IPointerClickHandler 不起作用

感谢Unity接口IPointerClickHandler使用说明_哔哩哔哩_bilibiliUnity接口IPointerClickHandler使用说明, 视频播放量 197、弹幕量 0、点赞数 3、投硬币枚数 2、收藏人数 2、转发人数 0, 视频作者 游戏创作大陆, 作者简介 ,相关视频:在Unity多场景同时编辑…

基于Springboot的教学资源共享平台(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的教学资源共享平台(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

VsCode | 修改首页启动页 Logo

VsCode | 修改首页启动页 Logo 最终效果: 插件的安装 先安装插件 Custom CSS and JS Loader 插件配置 Ctrl Shift P 输入 打开用户设置,在末尾添加 "vscode_custom_css.imports": [""]下载 Logo 下载 Logo 点我下载 引入…

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库,全称为Data-Driven Documents,即数据驱动文档。它以数据为核心,通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具,使得开发者能够创建出各种交互式和动态的数据可…

LeetCode 110.平衡二叉树(Java/C/Python3/Go实现含注释说明,Easy)

标签 树深度优先搜索递归 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡的二叉树定义为: 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。 原题:LeetCode 110.平衡二叉树 思路及…

设计模式之组合实体模式

在编程的奇幻森林里,树木与枝叶错综复杂,如何让代码世界井然有序?组合实体模式(Composite Pattern)就像一位高明的园艺师,它以一种巧妙的方式,将个体与整体统一管理,让无论是单个对象…

Android使用kts上传aar到JitPack仓库

Android使用kts上传aar到JitPack 之前做过sdk开发,需要将仓库上传到maven、JitPack或JCenter,但是JCenter已停止维护,本文是讲解上传到JitPack的方式,使用KTS语法,记录使用过程中遇到的一些坑. 1.创建项目(library方式) 由于之前用鸿神的w…

关于Clion开发stm32printf重定向问题简单解决问题方法

title: 关于Clion开发stm32printf重定向问题简单解决问题方法 tags: STM32Clion 参考来源1 这是另一种方法 在printf 重定向的基础上加上 一句 setbuf(stdout,NULL); 参考来源2 自己写的笔记啦

深入理解vector 【C++】

一、vector的介绍: 1.vector是表示可变大小的顺序容器。 2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的&am…