設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

ChatGPT 真能記住你的話嗎?DeepMind 與開源大佬揭示 LLM 記憶之謎

新智元 2024/6/1 14:47:56 責編:清源

【新智元導讀】LLM 有記憶能力嗎?有,也沒有。雖然 ChatGPT 聊天時好像可以記住你之前說的話,但實際上,模型在推理時記不住任何內(nèi)容,而且它們在訓練時的記憶方式也不像我們想象的那么簡單。

Django 框架的創(chuàng)始人之一、著名開發(fā)者 Simon Willison 最近發(fā)表了一篇博客文章,核心觀點是 —— 雖然很多 LLM 看起來有記憶,但本質(zhì)上是無狀態(tài)函數(shù)。

文章地址:https://simonwillison.net/2024/May/29/training-not-chatting/

Mozilla 和 FireFox 的聯(lián)合創(chuàng)始人、JavaScript 發(fā)明者 Brendan Eich 也在推特上稱贊這篇博客。

似乎有記憶的 LLM

從計算機科學的角度來看,最好將 LLM 的推理過程視為無狀態(tài)函數(shù)調(diào)用 —— 給定輸入文本,它會輸出接下來應(yīng)該做什么。

然而使用過 ChatGPT 或者 Gemini 的人會明顯感覺到,LLM 似乎可以記住之前的對話內(nèi)容,好像模型有記憶能力。

然而這并不能歸功于模型本身。

事實上,用戶每次提出一個問題時,模型收到的提示都會包含之前所有的對話內(nèi)容,這些提示就是我們經(jīng)常說的「上下文」。

如果不提供上下文,LLM 將完全不知道之前討論的內(nèi)容。

所以,重新打開一個對話界面時,對 LLM 而言就是一個「從頭再來」的全新文本序列,完全獨立于你和其他用戶之前發(fā)生的對話。

從另一個角度看,這種「失憶」也有好處。比如,模型開始胡說八道,或者拒絕回答你的合理問題時,就可以試試重置對話窗口。也許在新的對話中,模型的輸出就能回到正軌。

這也是為什么 LLM 的上下文長度是一個重要的指標。如果對話過長、超出了上下文窗口,最早的那部分對話就會從提示中移除,看起來就像是模型的「遺忘」。

Andrej Karpathy 將上下文窗口準確地形容為「LLM 工作記憶的有限寶貴資源」。

但是,有很多方法可以為 LLM 外置記憶能力,來滿足產(chǎn)品使用的需求。

將之前的對話作為提示,和當前問題一起輸入給 LLM 是最直接的方法,但這依舊是「短期記憶」,而且擴展模型的上下文長度成本很高。

GPT-4o 免費版支持 8k 上下文,付費版可以達到 128k,已經(jīng)比之前的 32k 提升了 3 倍,但仍然無法保存單個網(wǎng)頁的原始 HTML。

也可以遞歸地總結(jié)之前的對話內(nèi)容,將歷史對話摘要當作 LLM 提示。雖然可能會丟失細節(jié),但相比直接截斷的方法,更高程度上保留了內(nèi)容的完整性。

另一種方法是外接矢量數(shù)據(jù)庫,為 LLM 添加「長期記憶」。

在進行對話時,先從數(shù)據(jù)庫中檢索相關(guān)內(nèi)容,再將其添加進上下文窗口,也就是檢索增強生成(RAG)。

但如果數(shù)據(jù)庫內(nèi)容過多,檢索過程很可能增加模型的響應(yīng)延遲。

實際開發(fā)中,檢索、摘要這兩種手段常常搭配使用,以求在成本和性能、長期和短期記憶之間取得平衡。

推理無法記憶,但訓練可以

LLM 的推理過程雖然等效于「無狀態(tài)函數(shù)」,但訓練過程并不是這樣,否則它也無法從語料中學習到任何知識。

但我們對于 LLM 記憶的分歧之處在于,它到底是用「機械」的方式復制了訓練數(shù)據(jù),還是更像人類的學習過程,用理解、概括的方式將數(shù)據(jù)內(nèi)容集成在參數(shù)中。

DeepMind 近期發(fā)表的一篇論文或許可以從另一個角度揭示這個問題。

論文地址:https://arxiv.org/ abs / 2404.15146

他們使用與訓練語料相似的 prompt 攻擊 LLM,看它能否逐字逐句地輸出訓練數(shù)據(jù)。

但 Falcon、Llama、Mistral 這種常用的半開放 LLM,以及 GPT 系列都沒有公開訓練數(shù)據(jù),要怎么判斷模型的輸出是否包括在訓練集中?

論文使用了一種巧妙的方法進行判斷:首先,從 RefinedWeb、RedPajama、Pile 等常用的 LLM 預訓練數(shù)據(jù)集中選取了 9TB 的文本作為輔助數(shù)據(jù)集。

如果模型輸出的文本序列足夠長、信息熵又足夠大,而且還和輔助數(shù)據(jù)集內(nèi)容重合,那么基本可以斷定模型在訓練時見過這條數(shù)據(jù)。

這樣的判斷方法會存在假陰性,因為輔助數(shù)據(jù)集不可能涵蓋所有模型的訓練數(shù)據(jù),但幾乎沒有假陽性,因此得到的結(jié)果可以作為模型「復現(xiàn)」訓練內(nèi)容的比例下界。

結(jié)果發(fā)現(xiàn),所有的模型都能逐字逐句地輸出訓練數(shù)據(jù),只是概率有所差異。

從結(jié)果可以發(fā)現(xiàn),參數(shù)量越大的模型似乎記住的內(nèi)容越多,越有可能在輸出中讓訓練數(shù)據(jù)回流。

不同系列的模型之間差異比較顯著。比如 7B 參數(shù)的 Mistral 相比 Falcon,有將近 10 倍的概率原樣吐出訓練數(shù)據(jù)。

但可能的原因有很多,既能解釋為模型記憶能力的差距,也能歸因于為輔助數(shù)據(jù)集的偏差。

有趣的是,如果 prompt 的要求是一直持續(xù)輸出某個單詞,有些單詞更有可能觸發(fā)模型吐出訓練數(shù)據(jù)。

最有效的一個單詞是「company」

作者指出,從安全的角度來看,這說明對齊過程沒有完全模糊模型的記憶,這些可提取的訓練數(shù)據(jù)會帶來版權(quán)糾紛與隱私泄露問題。

但從另一個角度來看,這證明,一定比例的訓練數(shù)據(jù)被無損壓縮而且存儲在了模型參數(shù)中。模型的記憶方式,果然是有些「機械化」的成分。

更進一步思考,如果改進 LLM 的記憶方式,讓訓練數(shù)據(jù)以更概括、更抽象的方式存儲在參數(shù)中,能否帶來模型能力的持續(xù)提升?

參考資料:

  • https://simonwillison.net/2024/May/29/training-not-chatting/

  • https://medium.com/@iankelk/how-chatgpt-fools-us-into-thinking-were-having-a-conversation-fe3764bd5da1

本文來自微信公眾號:新智元 (ID:AI_era)

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:大語言模型deepmind,chatgpt

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機APP應(yīng)用 魔方 最會買 要知