Do text embeddings perfectly encode text?
'Vec2text' can serve as a solution for accurately reverting embeddings back into text, thus highlighting the urgent need for revisiting security protocols around embedded data.
向量資料庫的興起
由於近年來生成式 AI 的飛速發展,許多公司正爭先恐後地將 AI 整合到業務中。最常見的方法之一是構建 AI 系統,用於回答有關文檔資料庫中資訊的問題。解決此類問題的大多數方案都基於一項關鍵技術:檢索增強生成 (Retrieval Augmented Generation, RAG)。
RAG 系統概覽。來源:「Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks」這是許多人現在作為開始使用 AI 的廉價且簡單的方法:將大量文檔存儲在資料庫中,讓 AI 針對給定的輸入檢索最相關的文檔,然後根據檢索到的文檔生成對輸入的回答。
這些 RAG 系統透過使用「嵌入」(embeddings)來確定文檔的相關性,嵌入是由嵌入模型產生的文檔向量表示。這些嵌入旨在代表某種相似性的概念,因此與搜尋相關的文檔在嵌入空間中將具有較高的向量相似度。
RAG 的盛行導致了「向量資料庫」的興起,這是一種專為存儲和搜尋大量嵌入而設計的新型資料庫。聲稱能透過簡化嵌入搜尋來促進 RAG 的新創公司已經獲得了數億美元的融資。RAG 的有效性正是許多新應用程式將文本轉換為向量並存儲在這些向量資料庫中的原因。
嵌入難以閱讀
那麼文本嵌入中存儲了什麼?除了語義相似性的要求外,對於給定的文本輸入必須分配哪種嵌入並沒有限制。嵌入向量中的數字可以是「任何內容」,並根據其初始化而變化。我們可以解釋嵌入與其他嵌入的相似性,但卻無法理解嵌入中單個數字的含義。
神經嵌入模型(淺藍色)接收文本輸入並產生「嵌入」,即一個可用於搜尋的向量。現在想像你是一名軟體工程師,正在為公司構建 RAG 系統。你決定將向量存儲在向量資料庫中。你注意到在向量資料庫中,存儲的是嵌入向量,而不是文本數據本身。資料庫中填滿了一行又一行看似隨機的數字,這些數字代表文本數據,但資料庫本身根本「看不到」任何文本數據。
你知道這些文本對應於受公司隱私政策保護的客戶文件。但你並沒有「真正」將文本發送到外部;你只發送了嵌入向量,這在你眼中看起來就像隨機數字。
如果有人駭入資料庫並獲得了你所有的文本嵌入向量——這會很糟糕嗎?或者如果服務提供商想將你的數據賣給廣告商——他們能做到嗎?這兩種情況都涉及是否能夠獲取嵌入向量並以某種方式將其「還原」回文本。
從文本到嵌入……再回到文本
從嵌入中恢復文本的問題正是我們在論文《文本嵌入揭示的資訊與文本本身一樣多》(Text Embeddings Reveal As Much as Text,EMNLP 2023)中探討的情境。嵌入向量是一種安全的資訊存儲和通訊格式嗎?簡單來說:輸入文本可以從輸出嵌入中恢復嗎?
在深入研究解決方案之前,讓我們再思考一下這個問題。文本嵌入是神經網路的輸出,是應用於輸入數據的矩陣乘法序列,並由非線性函數運算連接。在傳統的文本處理神經網路中,字串輸入被拆分為多個標記(token)向量,這些向量反覆經歷非線性函數運算。在模型的輸出層,標記被平均成一個單一的嵌入向量。
信號處理界的一條格言被稱為數據處理不等式,它告訴我們函數不能增加輸入的資訊,它們只能維持或減少可用的資訊量。儘管傳統觀點告訴我們神經網路的深層正在構建更高階的表示,但它們並沒有增加任何並非來自輸入端的關於世界的資訊。
此外,非線性層肯定會破壞「某些」資訊。現代神經網路中一個無處不在的非線性層是「ReLU」函數,它簡單地將所有負輸入設置為零。在典型的文本嵌入模型的多個層中應用 ReLU 後,不可能保留輸入的所有資訊。
其他背景下的還原
電腦視覺領域也提出過關於資訊內容的類似問題。多項結果表明,來自圖像模型的深度表示(本質上是嵌入)可以用於恢復具有一定保真度的輸入圖像。早期的一項研究 (Dosovitskiy, 2016) 表明,可以從深度卷積神經網路 (CNN) 的特徵輸出中恢復圖像。給定來自 CNN 的高階特徵表示,他們可以將其還原以產生與原始輸入圖像相似但模糊的版本。
在電腦視覺中,還原模型(黃色)已成功地根據 ImageNet 分類器的 1000 個機率輸出重建圖像,其中大部分輸出接近 0。(圖像來自《Understanding Invariance via Feedforward Inversion of Discriminatively Trained Classifiers》。)自 2016 年以來,人們改進了圖像嵌入還原過程:已經開發出具有更高準確度的還原模型,並被證明可以在更多場景下工作。令人驚訝的是,一些研究表明,圖像可以從 ImageNet 分類器的輸出(1000 個類別機率)中還原。
通往 vec2text 之路
如果圖像表示可以還原,那麼為什麼文本不行呢?讓我們考慮一個恢復文本嵌入的簡單問題。在我們的實驗設置中,我們將文本輸入限制為 32 個標記(約 25 個單詞,一個長度適中的句子),並將它們全部嵌入為 768 個浮點數的向量。在 32 位精度下,這些嵌入為 32 * 768 = 24,576 位,約為 3 KB。
少量的單詞由大量的位元表示。你認為在這種情況下我們可以完美地重建文本嗎?
首先:我們需要定義一個「優劣」的衡量標準,以了解我們完成任務的情況。一個明顯的指標是「精確匹配」(exact match),即我們在還原後獲得與原始輸入完全一致的頻率。之前的還原方法在精確匹配上都沒有成功,所以這是一個相當宏大的衡量標準。因此,我們可能想從一個平滑的衡量標準開始,測量還原文本與輸入的相似程度。為此,我們將使用 BLEU 分數,你可以將其視為還原文本與輸入接近程度的百分比。
定義好成功指標後,讓我們繼續提出一種使用該指標進行評估的方法。作為第一種方法,我們可以將還原視為一個傳統的機器學習問題,並用我們最擅長的方式解決它:收集一個大型的嵌入-文本對數據集,並訓練一個模型在給定嵌入作為輸入的情況下輸出文本。
這就是我們所做的。我們構建了一個以嵌入作為輸入的 Transformer,並使用傳統的語言建模在輸出文本上對其進行訓練。這第一種方法給了我們一個 BLEU 分數約為 30/100 的模型。實際上,該模型可以猜測輸入文本的主題,並獲得一些單詞,但它丟失了它們的順序,並且通常會弄錯大部分單詞。精確匹配分數接近於零。事實證明,要求一個模型在單次前向傳遞中反轉另一個模型的輸出是相當困難的(就像其他複雜的文本生成任務一樣,例如以完美的十四行詩形式生成文本或滿足多個屬性)。
所考慮的架構概覽。先前的工作(左)使用僅解碼器架構,並將嵌入作為前綴輸入。我們最初訓練了一個編碼器-解碼器模型(中),在編碼器端以放大的句子嵌入為條件。我們最終的方法(右)包括一個額外的「假設」文本以及放大的假設嵌入。在訓練完最初的模型後,我們發現了一些有趣的事情。衡量模型輸出質量的另一種方法是重新嵌入生成的文本(我們稱之為「假設」),並測量此嵌入與真實嵌入的相似性。當我們對模型的生成結果執行此操作時,我們看到了非常高的餘弦相似度——約為 0.97。這意味著我們能夠生成在嵌入空間中接近但與基準真相(ground-truth)文本不完全相同的文本。
(順便提一下:如果情況並非如此呢?也就是說,如果嵌入模型為我們錯誤的假設分配了與原始序列相同的嵌入。我們的嵌入器將是「有損的」,將多個輸入映射到同一個輸出。如果是這種情況,那麼我們的問題就毫無希望了,我們將無法區分是多個可能序列中的哪一個產生了它。在實踐中,我們在實驗中從未觀察到這種類型的碰撞。)
觀察到假設與基準真相具有不同的嵌入,這激發了一種優化式的嵌入還原方法。給定一個基準真相嵌入(我們想去的地方),以及當前的假設文本及其嵌入(我們現在所在的地方),我們可以訓練一個校正模型,該模型被訓練為輸出比假設更接近基準真相的內容。
我們的方法 Vec2Text 概覽。給定對目標嵌入 e(藍色)的訪問權限以及對嵌入模型 ϕ(藍色模型)的查詢訪問權限,系統旨在迭代生成(黃色模型)假設 ê(粉色)以達到目標。現在我們的目標很明確了:我們想構建一個系統,它可以接收基準真相嵌入、假設文本序列以及假設在嵌入空間中的位置,並預測真實的文本序列。我們將其視為一種「學習優化」,即我們以離散序列的形式在嵌入空間中採取步驟。這就是我們方法的精髓,我們稱之為 vec2text。
在處理了一些細節並訓練模型後,這個過程效果非常好!單次前向校正將 BLEU 分數從 30 提高到 50。而且這個模型的一個優點是它可以自然地進行遞歸查詢。給定當前文本及其嵌入,我們可以運行此優化的多個步驟,迭代生成假設、重新嵌入它們,並將它們作為輸入反饋給模型。通過 50 個步驟和一些技巧,我們可以精確地找回 92% 的 32 標記序列,並達到 97 的 BLEU 分數!(通常達到 97 的 BLEU 分數意味著我們幾乎完美地重建了每個句子,可能只是在某些地方錯放了幾個標點符號。)
擴展與未來工作
文本嵌入可以被完美還原的事實引發了許多後續問題。首先,文本嵌入向量包含固定數量的位元;一定存在某個序列長度,使得資訊不再能完美地存儲在該向量中。儘管我們可以恢復大多數長度為 32 的文本,但某些嵌入模型可以嵌入長達數千個標記的文檔。我們將分析文本長度、嵌入大小和嵌入可還原性之間的關係留給未來的工作。
另一個懸而未決的問題是如何構建可以防禦還原的系統。是否有可能創建既能成功嵌入文本使嵌入保持有用,同時又模糊了創建它們的文本的模型?
最後,我們很高興看到我們的方法如何應用於其他模態。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) 的博士生。他從事機器學習、自然語言處理和安全交匯領域的研究。他對嵌入和分類器輸出等深度神經表示的資訊內容特別感興趣。
引用
在學術背景或書籍中引用時,請將此作品引用為:
Jack Morris, "Do text embeddings perfectly encode text?", The Gradient, 2024.
BibTeX 引用:
@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},
}
相關文章