首页 > 人工智能 > 自然语言 > 文本嵌入能完美编码文本吗?
近年来,随着生成式 AI 的快速发展,许多公司纷纷将 AI 融入自身业务。其中最常见的做法之一,是构建能够回答文档数据库中相关问题的 AI 系统。此类问题的大多数解决方案都基于一项关键技术:检索增强生成(RAG(检索增强生成))。
这正是当前许多人采用的廉价且便捷的 AI 入门方式:将大量文档存入数据库,让 AI 针对给定输入检索最相关的文档,然后基于检索到的文档生成对输入的回复。
这些 RAG 系统通过使用“嵌入”(embeddings)——由嵌入模型生成的文档向量表示——来判断文档相关性。这些嵌入应当表示某种相似性概念,因此与搜索相关的文档在嵌入空间中会具有较高的向量相似度。
RAG 的普及催生了向量数据库的兴起,这是一种专为存储和搜索大量嵌入而设计的新型数据库。那些声称通过简化嵌入搜索来促进 RAG 的初创公司已获得了数亿美元的资金。而 RAG 的有效性正是许多新应用将文本转换为向量并存储在这些向量数据库中的原因。
那么,文本嵌入中究竟存储了什么?除了语义相似性的要求之外,对于给定文本输入必须分配哪种嵌入并没有任何约束。嵌入向量中的数值可以是任意值,并因其初始化方式而异。我们可以解读嵌入与其他嵌入之间的相似性,但永远无法理解嵌入中单个数值的含义。
现在假设你是一名软件工程师,正在为公司构建 RAG 系统。你决定将向量存储在向量数据库中。你注意到,向量数据库中存储的是嵌入向量,而非文本数据本身。数据库里填满了一行行看似随机的数字,它们代表文本数据,但数据库从未“看到”任何文本数据。你知道这些文本对应的是受公司隐私政策保护的客户文档。但你实际上从未将文本发送到外部;你只发送嵌入向量,而它们在你看来就像随机数字。如果有人入侵数据库并获取了你所有的文本嵌入向量——这会很糟糕吗?或者如果服务提供商想将你的数据卖给广告商——他们能做到吗?这两种情形都涉及能否以某种方式将嵌入向量逆向还原为文本。
从嵌入中恢复文本的问题,正是我们在论文《文本嵌入揭示的信息不亚于文本本身》(Text Embeddings Reveal As Much as Text,EMNLP 2023)中所探讨的场景。嵌入向量是否是一种安全的信息存储与通信格式?简而言之:输入文本能否从输出嵌入中恢复?
在深入探讨解决方案之前,让我们再思考一下这个问题。文本嵌入是神经网络的输出,是对输入数据施加非线性函数运算后连接起来的一系列矩阵乘法。在传统的文本处理神经网络中,字符串输入被拆分为若干 token 向量,这些向量反复经历非线性函数运算。在模型的输出层,token 被平均为单个嵌入向量。
信号处理领域有一条被称为数据处理不等式(data processing inequality)的格言告诉我们,函数无法为输入增加信息,只能维持或减少可用信息量。尽管传统观点认为神经网络的深层正在构建越来越高阶的表示,但它们并没有添加任何输入侧未曾包含的关于世界的信息。
此外,非线性层确实会破坏一些信息。现代神经网络中一个普遍存在的非线性层是“ReLU”函数,它简单地将所有负输入设为零。在典型的文本嵌入模型的众多层中应用ReLU之后,不可能保留输入中的所有信息。
计算机视觉领域也曾提出过关于信息含量的类似问题。多项研究结果表明,图像模型的深层表示(本质上即嵌入)可用于以一定程度保真度恢复输入图像。一项早期成果(Dosovitskiy, 2016)表明,可以从深度卷积神经网络(CNN)的特征输出中恢复图像。给定CNN的高层特征表示,他们能够将其反演,生成原始输入图像的模糊但相似的版本。
自2016年以来,人们在图像嵌入反演方面取得了改进:已开发出以更高准确率进行反演的模型,并已被证明适用于更多场景。令人惊讶的是,一些研究表明,可以从ImageNet分类器(1000类概率)的输出中反演图像。
如果图像表示可以反演,那为什么文本不行?让我们考虑一个恢复文本嵌入的玩具问题。在玩具设定中,我们将文本输入限制为32个token(约25个词,一个长度适中的句子),并将它们全部嵌入为768个浮点数的向量。在32位精度下,这些嵌入为32 * 768 = 24,576位,约3千字节。
少量词由大量比特表示。你认为我们能在这种情况下完美重建文本吗?
首先,我们需要定义一个衡量优劣的标准,以了解我们完成任务的程度。一个显而易见的指标是“精确匹配”,即反演后能精确恢复输入的频率。此前的反演方法在精确匹配上均无成功案例,因此这是一个相当雄心勃勃的衡量标准。所以也许我们应该从一个平滑的度量开始,衡量反演文本与输入的相似程度。为此我们将使用BLEU分数,你可以将其简单理解为反演文本与输入接近程度的百分比。
定义了成功指标后,让我们继续提出一种用该指标进行评估的方法。作为第一种方法,我们可以将反演视为传统的机器学习问题,并以我们所知的最佳方式解决:收集大量嵌入-文本对数据集,训练一个模型,以嵌入为输入输出文本。
这就是我们所做的。我们构建了一个以嵌入为输入的transformer,并使用传统的语言建模在输出文本上进行训练。这第一种方法得到的模型BLEU分数约为30/100。实际上,该模型能猜出输入文本的主题,并获取一些词,但会丢失它们的顺序,且经常将大部分词弄错。精确匹配分数接近于零。事实证明,要求模型在单次前向传播中逆转另一个模型的输出是相当困难的(其他复杂的文本生成任务也是如此,比如生成完美十四行诗形式的文本或满足多个属性)。
在训练了初始模型后,我们注意到一些有趣的现象。另一种衡量模型输出质量的方法是将生成的文本(我们称之为“假设”)重新嵌入,并测量该嵌入与真实嵌入的相似度。当我们对模型的生成结果进行此操作时,我们看到了非常高的余弦相似度——约为0.97。这意味着我们能够生成在嵌入空间中接近但不完全等同于真实文本的文本。
(题外话:如果情况并非如此呢?也就是说,如果嵌入将我们错误的假设赋予与原始序列相同的嵌入。我们的嵌入器将是有损的,将多个输入映射到同一输出。如果是这种情况,那么我们的问题将毫无希望,我们将无法区分是多个可能序列中的哪一个产生了它。在实践中,我们在实验中从未观察到这类碰撞。)
假设文本与真实文本具有不同嵌入这一观察结果,启发了类似优化的嵌入反演方法。给定一个真实嵌入(我们想要到达的目标),以及当前假设文本及其嵌入(我们当前所在的位置),我们可以训练一个校正器模型,使其输出比假设文本更接近真实文本的内容。
我们的目标现在很明确:我们希望构建一个系统,能够接收真实嵌入、假设文本序列以及假设在嵌入空间中的位置,并预测真实的文本序列。我们将此视为一种“学习式优化”,即以离散序列的形式在嵌入空间中逐步推进。这就是我们方法的核心,我们称之为 vec2text。
在完成一些细节工作并训练模型之后,这个过程效果极佳!单次前向校正就能将 BLEU 分数从 30 提升到 50。这个模型的一个优势是它可以自然地进行递归查询。给定当前文本及其嵌入,我们可以运行多步优化,迭代地生成假设文本、重新嵌入它们,并将结果反馈给模型作为输入。通过 50 步和若干技巧,我们可以精确恢复 92% 的 32 token 序列,并达到 97 的 BLEU 分数!(通常达到 97 的 BLEU 分数意味着我们几乎完美地重建了每个句子,可能只是偶尔有几个标点符号位置不对。)
文本嵌入可以被完美反演这一事实引发了许多后续问题。其一,文本嵌入向量包含固定数量的比特;必然存在某个序列长度,超过该长度后信息无法再被完美地存储在这个向量中。尽管我们可以恢复大多数长度为 32 的文本,但一些嵌入模型可以嵌入长达数千 token 的文档。我们将文本长度、嵌入大小与嵌入可反演性之间的关系留给未来工作来分析。
另一个开放性问题是如何构建能够防御反演的系统。是否有可能创建这样的模型:它能够成功嵌入文本,使得嵌入仍然有用,同时混淆生成它的原始文本?
最后,我们很期待看到我们的方法如何应用于其他模态。vec2text 背后的核心思想(一种在嵌入空间中的迭代优化)并不使用任何文本特定的技巧。它是一种在给定模型黑盒访问权限的情况下,迭代恢复任何固定输入中所含信息的方法。这些思想如何应用于反演其他模态的嵌入,以及如何推广到比嵌入反演更通用的方法,仍有待观察。
要使用我们的模型反演文本嵌入,或开始自己运行嵌入反演实验,请查看我们的 Github 仓库:https://github.com/jxmorris12/vec2text
Inverting Visual Representations with Convolutional Networks (2015), https://arxiv.org/abs/1506.02753
Understanding Invariance via Feedforward Inversion of Discriminatively Trained Classifiers (2021), https://proceedings.mlr.press/v139/teterwak21a/teterwak21a.pdf
Text Embeddings Reveal (Almost) As Much As Text (2023), https://arxiv.org/abs/2310.06816
Language Model Inversion (2024), https://arxiv.org/abs/2311.13647
Jack Morris 是纽约市 Cornell Tech 的博士生。他的研究方向处于机器学习、自然语言处理与安全的交叉领域。他尤其关注嵌入(embeddings)和分类器输出等深度神经网络表示中的信息内容。
在学术语境或书籍中引用时,请按以下格式引用本作品
Jack Morris, "Do text embeddings perfectly encode text?", The Gradient, 2024.
@article{morris2024inversion,
author = {Jack Morris},
title = {Do text embeddings perfectly encode text?},
journal = {The Gradient},
year = {2024},
howpublished = {\url{https://thegradient.pub/text-embedding-inversion},
}转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:The Gradient
原创地址:https://thegradient.pub/text-embedding-inversion/
原文作者:Jack Morris;如有侵权,请联系管理员删除。