文本嵌入能够完美编码文本信息吗?

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


作者:Jack Morris

编译:ronghuaiyang

导读

文本嵌入是否可以还原文本信息?

9f61c7f88e7acc59d740451cf24e7c44.png

向量数据库的兴起

近年来,随着生成式AI的迅速发展,众多企业纷纷寻求将AI融入其业务之中。其中最常见的做法之一是构建能够回答有关文档数据库内信息的问题的AI系统。解决此类问题的大多数方案都基于一项关键技术:增强检索生成(RAG)。

b741133aeef921e89d6439a2ee3407e5.png

RAG系统的概览

这是现在许多人开始使用AI的一种廉价且简便的方式:在数据库中存储大量文档,让AI针对特定输入检索最相关的文档,然后根据检索到的文档生成对输入的响应。

这些RAG系统通过使用“嵌入”,即由嵌入模型产生的文档向量表示,来确定文档的相关性。这些嵌入旨在代表某种相似性的概念,因此对于搜索而言相关文档在嵌入空间中的向量相似度会很高。

RAG的普及促成了向量数据库的兴起,这是一种专为存储和搜索大量嵌入而设计的新类型数据库。数以百万计的美元的资金已被分配给声称通过简化嵌入搜索来促进RAG的初创公司。而RAG的有效性正是许多新应用将文本转换为向量并将其存储在这些向量数据库中的原因。

嵌入难以解读

那么,文本嵌入中存储了什么?除了语义相似性的要求外,对于给定的文本输入应分配哪个嵌入没有约束。嵌入向量内的数字可以是任何值,并基于其初始化而变化。我们能够解释嵌入与其他嵌入之间的相似性,但永远没有希望理解嵌入中的单个数字。

48832ef292f9e52f3216a4f38410a6da.png

一个神经嵌入模型(浅蓝色)接收文本输入并产生嵌入,这是一个可用于搜索的向量。

想象一下,你是一名软件工程师,正在为你的公司构建一个RAG系统。你决定将你的向量存储在一个向量数据库中。你注意到,在向量数据库中存储的是嵌入向量,而非文本数据本身。数据库充满了行又行看似随机的数字,这些数字代表文本数据,但从不‘看到’任何实际的文本数据。

你知道这些文本对应受公司隐私政策保护的客户文档。但是你实际上从未将文本发送到外部;你只发送嵌入向量,对你来说它们看起来就像随机数字。

如果有人黑客入侵数据库并获取所有文本嵌入向量,这会是坏事吗?或者如果服务提供商想将你的数据卖给广告商,他们能做到吗?这两种情况都涉及到能够将嵌入向量以某种方式反转回文本。

从文本到嵌入……再回到文本

从嵌入恢复文本的问题正是我们在论文Text Embeddings Reveal As Much as Text(EMNLP 2023)中探讨的情景。嵌入向量是否是一种安全的信息存储和通信格式?简单地说:能否从输出嵌入中恢复输入文本?

在深入解决方案之前,让我们更多地思考一下这个问题。文本嵌入是神经网络的输出,是由应用于输入数据的矩阵乘法序列和非线性函数操作组成的。在传统的文本处理神经网络中,字符串输入被分割成多个tokens向量,这些向量反复经历非线性函数操作。在模型的输出层,tokens被平均成一个单一的嵌入向量。

信号处理社区的一个著名原则称为数据处理不等式,它告诉我们函数不能向输入添加信息,它们只能维持或减少可用的信息量。尽管常识告诉我们,神经网络的深层正在构建越来越高级别的表示,但它们并没有添加任何关于世界的信息,这些信息不是来自输入端。

此外,非线性层确实破坏了一些信息。现代神经网络中普遍存在的一种非线性层是“ReLU”函数,它简单地将所有负输入设置为零。在典型的文本嵌入模型的许多层中应用ReLU后,不可能保留所有来自输入的信息。

在其他上下文中反转

计算机视觉社区也提出了关于信息含量的类似问题。一些结果表明,图像模型的深度表示(本质上是嵌入)可以用来以某种程度的保真度恢复输入图像。早期的结果表明,可以从深度卷积神经网络(CNNs)的特征输出中恢复图像。给定CNN的高层特征表示,他们可以将其反转,生成一个模糊但与原始输入图像相似的版本。

25e50992723b027191f1c0d78bbec2b4.png

在计算机视觉领域,反转模型(黄色)已成功地仅根据ImageNet分类器的1000个概率输出重构了图像,其中大多数l类别的概率接近于0。

自2016年以来,人们在图像嵌入反转过程上取得了进展:开发出了以更高精度完成反转的模型,并证明了它们在更多场景下有效。令人惊讶的是,一些研究显示,可以从ImageNet分类器的输出(1000类概率)中反转出图像。

踏上vec2text之旅

如果反转对于图像表示可行,那为什么不能对文本适用呢?让我们考虑一个简单的恢复文本嵌入的问题。在这个简单的设置中,我们将文本输入限制为32个token(大约25个单词,一个相当长度的句子),并将它们全部嵌入为768个浮点数的向量。在32位精度下,这些嵌入是32 * 768 = 24,576位或大约3千字节。

少量文字由大量位表示。你认为在这种情况下我们能完美地重建文本吗?

首要的是:我们需要定义一个好的衡量标准,以了解我们完成任务的程度。一个显而易见的指标是“完全匹配”,即反转后精确还原输入的频率。以前的反转方法在完全匹配上都没有成功,因此这是一个非常有雄心的测量标准。所以我们可能想从一个平滑的测量标准开始,该标准衡量反转文本与输入的相似度。为此,我们将使用BLEU分数,你可以将其视为反转文本与输入接近程度的百分比。

有了成功的衡量标准,我们可以提出一种方法来评估这一标准。作为初步尝试,我们可以将反转视为一个传统机器学习问题,并以我们所知的最佳方式解决它:收集大量嵌入-文本对的数据集,并训练一个模型,使其在输入嵌入时输出文本。

这就是我们所做的。我们构建了一个以嵌入为输入的变换器,并使用传统的语言建模在输出文本上对其进行训练。这种初步方法为我们提供了一个BLEU分数约为30/100的模型。实际上,该模型可以猜测输入文本的主题,并获得一些单词,但它丢失了它们的顺序,而且通常会大部分猜错。完全匹配分数接近于零。事实证明,要求一个模型在一次前向传递中反转另一个模型的输出是非常困难的(正如其他复杂的文本生成任务,如以完美的十四行诗形式生成文本或满足多个属性)。

1cf9f508539340963c264b3ec0994d1e.png

考虑架构的概述。先前的工作(左图)使用仅解码器架构,并将嵌入作为前缀输入。我们最初训练了一个编码器-解码器模型(中间图),在编码器端对放大的句子嵌入进行条件化。我们的最终方法(右图)还包括一个额外的“假设”文本以及放大的假设嵌入。

在训练我们的初始模型后,我们注意到了一个有趣的现象。衡量模型输出质量的不同方式是重新嵌入生成的文本(我们称之为“假设”),并测量这个嵌入与真实嵌入的相似度。当我们用模型生成的文本这样做时,我们看到了非常高的余弦相似度——大约为0.97。这意味着我们能够生成在嵌入空间中接近,但并非完全相同于,真实文本的文本。

(插曲:如果不是这样呢?也就是说,如果我们错误的假设被赋予与原始序列相同的嵌入怎么办?我们的嵌入器将是有损的,将多个输入映射到相同的输出。如果是这种情况,那么我们的问题就无解了,我们没有办法区分可能产生它的多个序列中的哪一个。在实践中,我们从未在实验中观察到这类碰撞。)

观察到假设具有与真实值不同的嵌入激发了一种类似优化的方法来反转嵌入。给定一个真实值嵌入(我们想要到达的地方),以及当前的假设文本及其嵌入(我们现在所在的地方),我们可以训练一个修正模型,该模型被训练成输出比假设更接近真实值的东西。

ef7389e6bd247ef52843055e0888d456.png

我们的方法Vec2Text的概览。给定目标嵌入e(蓝色)和对嵌入模型ϕ(蓝色模型)的查询访问权限,系统的目标是以迭代方式生成(黄色模型)假设ˆe(粉色),以达到目标。

我们的目标现在已经明确:我们希望建立一个系统,能够接受真实值嵌入、假设文本序列以及该假设在嵌入空间中的位置,并预测真实的文本序列。我们将其视为一种‘学习优化’的形式,其中我们以离散序列的形式在嵌入空间中采取步骤。这是我们方法的核心,我们称之为vec2text。

经过一些细节的处理和模型训练后,这个过程工作得极其出色!一次修正的前向传递就能将BLEU分数从30提高到50。而这个模型的一个好处是它可以自然地递归查询。给定当前文本及其嵌入,我们可以运行这个优化的多个步骤,迭代生成假设,重新嵌入它们,并将它们反馈给模型作为输入。通过50步和一些技巧,我们几乎可以完全恢复32个token序列的92%,并达到97的BLEU分数!(通常达到97的BLEU分数意味着我们几乎完美地重构了每个句子,也许只是偶尔有些标点符号放错了地方。)

扩展与未来工作

文本嵌入可以被完美反转的事实引发了许多后续问题。首先,文本嵌入向量包含固定数量的位;必须存在某个序列长度,使得信息不能再在这个向量中完美存储。虽然我们能够恢复大多数长度为32的文本,但一些嵌入模型可以嵌入长达数千个令牌的文档。我们留给未来的研究去分析文本长度、嵌入大小和嵌入可逆性之间的关系。

另一个未解决的问题是如何构建能够抵御反转的系统。是否有可能创建成功嵌入文本的模型,使得嵌入仍然有用,同时模糊创建它们的文本?

最后,我们对我们的方法如何适用于其他模态感到兴奋。Vec2Text背后的主要思想(在嵌入空间中的一种迭代优化)并没有使用任何特定于文本的技巧。它是一种方法,通过给定模型的黑盒访问权限,迭代恢复任何固定输入中包含的信息。还有待观察这些想法如何适用于反转来自其他模态的嵌入,以及比嵌入反转更通用的方法。

要使用我们的模型来反转文本嵌入,或自己开始运行嵌入反转实验,请访问我们的Github仓库:https://github.com/jxmorris12/vec2text

22a10c98fa50be8b4dcfbcdebf4afa02.png

—END—

英文原文:https://thegradient.pub/text-embedding-inversion/

7d2d7da80eb5dbe9ed5d0f9aabac863c.jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值