結(jié)合符號性記憶,清華等提出ChatDB,提升大模型的復(fù)雜推理能力
隨著大語言模型(Large Language Models)的爆火,例如 ChatGPT,GPT-4,PaLM,LLaMA 等,如何讓大語言模型更好的應(yīng)對有很長的上下文信息(超出其最大處理長度)的場景并利用相關(guān)歷史信息做復(fù)雜的推理,成為一個熱點研究話題。現(xiàn)有的主流做法是給大語言模型增加記憶(memory)模塊,在需要的時候從記憶模塊中提取相關(guān)的歷史信息幫助大語言模型。
近期,清華大學(xué)和北京智源人工智能研究院的研究者們提出了一種新型的符號性(symbolic)記憶模塊。他們從現(xiàn)代計算機(jī)架構(gòu)中汲取靈感,利用符號性記憶模塊來增強(qiáng)大型語言模型。這種符號性記憶模塊可以利用符號性的操作,精確的控制記憶模塊中的信息。這樣的符號性記憶框架由一個大語言模型(如 ChatGPT)和一個數(shù)據(jù)庫組成,稱為 ChatDB。其中大語言模型負(fù)責(zé)控制對記憶模塊的讀寫操作。在 ChatDB 中,大語言模型通過生成 SQL 指令來操縱數(shù)據(jù)庫,從而實現(xiàn)對記憶模塊中歷史信息精確的增刪改查,并在需要時為大語言模型提供信息,以幫助其回應(yīng)用戶的輸入。這項研究可以讓大語言模型勝任需要對歷史信息進(jìn)行長期且精確的記錄、處理和分析的場景,例如各種管理和分析系統(tǒng),以后甚至有望替代管理者,直接讓大語言模型根據(jù)精確的歷史數(shù)據(jù)做分析和決策。
相關(guān)論文為:ChatDB: Augmenting LLMs with Databases as Their Symbolic Memory,代碼已開源。
- 論文地址:https://arxiv.org/abs/2306.03901
- 項目主頁:https://chatdatabase.github.io
- 項目代碼:https://github.com/huchenxucs/ChatDB
推特上一些知名的機(jī)器學(xué)習(xí)和自然語言處理研究者也對這項研究進(jìn)行了宣傳:
與相關(guān)工作的對比
之前的記憶模塊主要分為,Prompt-based memory 和 Matrix-based memory 兩類。Prompt-based memory 是將之前的歷史文本和相應(yīng)文本的 vector embedding 保存下來,需要的時候再利用 vector embedding 間的相似性找到相關(guān)的歷史信息,然后放到 prompt 中,作為大語言模型的輸入,相關(guān)的工作有 Auto-GPT 和 Generative Agents 等等。Matrix-based memory 是利用額外的 memory tokens 或者 memory matrices 來記錄歷史信息,相關(guān)的工作有 Recurrent Memory Transformer 等等。之前這些記憶模塊的設(shè)計,要么需要依靠文本的 vector embedding 之間的相似度,要么將歷史信息隱式地存儲在神經(jīng)網(wǎng)絡(luò)的權(quán)重中,都涉及神經(jīng)性(neural)的操作,無法像符號性操作那樣精確操縱記憶模塊中的歷史信息。
它們的主要問題有兩點:(1) 沒有以結(jié)構(gòu)化的形式存儲歷史信息;(2) 對存儲在記憶模塊中的信息的操作不夠精確:它們依賴于一些向量相似度的計算,這可能不準(zhǔn)確,長期下來或者進(jìn)行多步推理的時候就會導(dǎo)致錯誤的積累。
ChatDB 借鑒之前 Neuro-symbolic AI 的一些工作,如 Neural Symbolic Machines,利用支持 SQL 指令的數(shù)據(jù)庫作為符號性記憶模塊,來支持對歷史信息抽象的(abstract),可拓展的(scalable)和精確的(precise)的操作。這些都是引入符號性記憶模塊所帶來的優(yōu)勢。符號性記憶模塊還可以跟之前的記憶模塊同時使用,起到相輔相成的作用。
之前的一些大語言模型和數(shù)據(jù)庫結(jié)合的工作(比如DB-GPT和ChatExcel)也涉及用大語言模型生成 SQL 或 Excel 的指令,但 ChatDB 跟它們有本質(zhì)上的不同。DB-GPT 和 ChatExcel 更多關(guān)注利用大語言模型解決自然語言到 SQL 或 Excel 指令的轉(zhuǎn)化,而且更多只是用來解決查詢的問題,數(shù)據(jù)源本身是給定好的。ChatDB 則是將數(shù)據(jù)庫作為符號性記憶模塊,不只涉及查詢,包括了數(shù)據(jù)庫的增刪改查等所有操作,整個數(shù)據(jù)庫是從無到有,不斷記錄并更新大語言模型的歷史信息。并且,ChatDB 中的數(shù)據(jù)庫,即符號性記憶模塊,是與大語言模型緊密關(guān)聯(lián)、融為一體的,可以幫助大語言模型進(jìn)行復(fù)雜的多步推理。
從大語言模型使用工具的視角來看,類比之前的工作 Toolformer 和 Langchain,ChatDB 將符號性記憶模塊(即數(shù)據(jù)庫)用作工具。其優(yōu)勢在于,對于需要使用準(zhǔn)確歷史數(shù)據(jù)進(jìn)行多步推理的問題,它可以讓大語言模型更準(zhǔn)確的存儲并使用歷史數(shù)據(jù),而且可以利用數(shù)據(jù)庫存儲和再利用推理的中間結(jié)果,從而取得更好的效果。
重要意義
該工作對大語言模型(LLMs)領(lǐng)域做出了如下幾個貢獻(xiàn):
- 首先,提出了 ChatDB—— 一個用數(shù)據(jù)庫作為 LLMs 的符號性記憶模塊來增強(qiáng) LLMs 的框架。這使得歷史數(shù)據(jù)可以精確的以結(jié)構(gòu)化的方式進(jìn)行存儲,并且支持使用 SQL 語句進(jìn)行抽象的、可拓展的、精確的數(shù)據(jù)操作。
- 其次,提出了 Chain-of-Memory(CoM,記憶鏈)方法,通過將用戶輸入轉(zhuǎn)化為多步中間的記憶操作,實現(xiàn)了對記憶模塊中歷史信息的復(fù)雜操作。這提高了 ChatDB 的性能,使其能夠處理復(fù)雜的、涉及多個表的數(shù)據(jù)庫交互,并提高了準(zhǔn)確性和穩(wěn)定性。
- 最后,將符號性記憶模塊與 LLMs 結(jié)合,可以避免錯誤的累積,方便地存儲中間結(jié)果,從而提高了多步推理(multi-hop reasoning)能力,使 ChatDB 在合成數(shù)據(jù)集上顯著優(yōu)于 ChatGPT。
方法
ChatDB 框架包含三個主要階段:input processing(輸入處理),chain-of-memory(記憶鏈),和 response summary(總結(jié)回復(fù)),如圖 2 所示。
1 輸入處理:對于用戶的輸入,如果不涉及使用記憶模塊,則直接生成回復(fù);如果需要記憶模塊,如查詢或者更新數(shù)據(jù)庫,語言模型則生成與記憶模塊交互的一系列 SQL 語句。
2 記憶鏈:執(zhí)行一系列記憶操作來與符號性記憶模塊交互。ChatDB 按照先前生成的一系列 SQL 語句依次操作符號性記憶模塊,包括插入、更新、選擇、刪除等操作。外部數(shù)據(jù)庫執(zhí)行相應(yīng)的 SQL 語句,更新數(shù)據(jù)庫并返回結(jié)果。值得注意的是,在執(zhí)行每一步記憶操作之前,ChatDB 會根據(jù)先前 SQL 語句的結(jié)果決定是否更新當(dāng)前記憶操作。ChatDB 按照此過程執(zhí)行每一步記憶操作,直到所有記憶操作完成。
3 總結(jié)回復(fù): 語言模型綜合與數(shù)據(jù)庫交互得到的結(jié)果,并對用戶的輸入做出總結(jié)回復(fù)。
其中 Chain-of-Memory(CoM,記憶鏈)是一個新提出的方法,以更有效地操作符號性記憶模塊,從而進(jìn)一步增強(qiáng) LLMs 的推理能力。記憶鏈方法將用戶輸入轉(zhuǎn)化為一系列中間記憶操作步驟,將復(fù)雜的問題用多個記憶操作步驟來解決,每個中間步驟涉及一個或多個 SQL 語句,大大降低了解決問題的復(fù)雜度。
實驗和結(jié)果
實驗設(shè)置:為了驗證 ChatDB 中將數(shù)據(jù)庫作為符號性記憶模塊來增強(qiáng)大語言模型的有效性,并與其他的模型進(jìn)行定量比較,作者構(gòu)造了一個模擬一家水果店的運(yùn)營管理的合成數(shù)據(jù)集。該數(shù)據(jù)命名為 “水果商店數(shù)據(jù)集”,其中包含了 70 條按時間順序生成的商店記錄,總共約有 3.3k 個 tokens(小于 ChatGPT 最大上下文窗口長度 4096)。這些記錄包含水果店的四種常見操作:采購、銷售、價格調(diào)整和退貨。為了評估模型的性能,作者針對銷售記錄收集了 50 個問題,并為這些問題標(biāo)注了標(biāo)準(zhǔn)答案。這些問題主要涉及商店數(shù)據(jù)的分析和管理,它們難度各不相同,既包括需要進(jìn)行多次推理的困難問題,也包括只需從歷史數(shù)據(jù)中檢索信息的簡單問題。其中包含了 15 個簡單問題和 35 個困難問題。
模型對比:ChatDB 模型中的 LLM 模塊使用了 ChatGPT (GPT-3.5 Turbo),溫度參數(shù)設(shè)置為 0,并使用 MySQL 數(shù)據(jù)庫作為其外部符號性記憶模塊。對比的基線模型為 ChatGPT (GPT-3.5 Turbo),最大的上下文長度為 4096,溫度參數(shù)也設(shè)置為 0。
指標(biāo)結(jié)果:作者在水果商店問答數(shù)據(jù)集上進(jìn)行了實驗,相對于 ChatGPT,ChatDB 在這些問題的解答上展現(xiàn)出了顯著的優(yōu)勢。
表 1:回答水果商店數(shù)據(jù)集中問題的正確率
作者表示目前實驗還只是在一個簡單的合成數(shù)據(jù)集上進(jìn)行的,之后會在更復(fù)雜更貼近現(xiàn)實需求的場景下進(jìn)行實驗,拓展 ChatDB 的應(yīng)用價值。
Demo 展示
下面是用大語言模型作為店長經(jīng)營一家水果商店的例子:
商店進(jìn)貨
顧客購買商品
顧客退貨
分析商店歷史記錄
ChatDB 交互示例:
ChatDB對水果商店數(shù)據(jù)集中四種常見操作的回應(yīng):
ChatDB和ChatGPT回答問題的示例:
這三個例子中,ChatGPT無法正確回答任何問題,但ChatDB成功回答了所有問題。
團(tuán)隊介紹
該論文來自于清華大學(xué) MARS Lab和北京智源研究院,論文的作者為清華大學(xué)博士生胡晨旭,杜晨壯,駱?biāo)济悖笇?dǎo)老師為付杰,趙行,趙俊博。
清華大學(xué)MARS Lab,是清華大學(xué)交叉信息院下的人工智能實驗室,由趙行教授組建和指導(dǎo)。我們嘗試解決一系列探索性的AI問題,并且一直在尋找新的挑戰(zhàn)。當(dāng)前我們特別感興趣如何讓機(jī)器像人一樣的能夠通過多種感知輸入進(jìn)行學(xué)習(xí)、推理和交互。我們的研究涵蓋了許多基礎(chǔ)AI問題及其應(yīng)用:(1)多媒體計算, (2)自動駕駛, (3)機(jī)器人。
了解詳情,請點擊閱讀原文查看項目主頁。