自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何讓大模型自由使用外部知識與工具?

人工智能 知識圖譜
本文將分享為什么以及如何使用外部的知識和工具來增強(qiáng)視覺或者語言模型。介紹基于知識圖譜增強(qiáng)語言模型(OREO-LM)。為什么想使用知識圖譜呢?雖然知識庫已經(jīng)被研究了多年,但它也有一定的局限性,比如不完整,它包含的信息可能只有節(jié)點(diǎn)信息。但它也有顯著的優(yōu)勢,比如使用一個(gè)很大的知識庫或整個(gè) Web 作為知識的來源。

一、背景介紹

圖片

首先介紹示例“德州的 NBA 球隊(duì)有哪些?他們分別在哪一年獲得 NBA 總冠軍?”對于這樣的問題,ChatGPT 可以非常準(zhǔn)確地回答。這個(gè)例子說明了類似 GPT 的模型,已經(jīng)有非常強(qiáng)的世界知識記憶能力,并且存儲在它們的參數(shù)當(dāng)中,針對不同的問題,它能夠準(zhǔn)確地將其調(diào)用回答該問題。

圖片

“在2000年以后,有哪些球隊(duì)沒有獲得過總冠軍?”對于較難的問題,ChatGPT 還能夠完成嗎?實(shí)際上是不行的。類似的例子還有非常多。哪怕模型記住了某個(gè)知識,但并不能進(jìn)行較為嚴(yán)格的邏輯推理。對于它不會的問題,它就不回答。這樣的能力它們暫時(shí)還是缺失的。這隱含了包括大模型在內(nèi)的很多神經(jīng)基礎(chǔ)模型(Neural Base Model)的一大缺陷,這是因?yàn)榇蟛糠值耐獠康闹R都是通過類似 Continuous representation 的方式存儲在模型的參數(shù)當(dāng)中。因此,當(dāng)處理邏輯推理或離散推理的場景時(shí),通常來說,這些模型并不能很好地回答。

圖片

例如剛剛提到的需要一定的邏輯推理才能解決的問答系統(tǒng),或者想構(gòu)建一個(gè)尋路系統(tǒng),比如在 UCLA 里,部署自動(dòng)送外賣的工具。顯而易見,如果想找到目標(biāo)的位置,需要實(shí)現(xiàn)尋路的算法,像 DFS 找最優(yōu)的路徑。這個(gè)算法想用神經(jīng)網(wǎng)絡(luò)(Neural Network)完成,通常需要大量的數(shù)據(jù)。如果只采集某個(gè)特定領(lǐng)域(Domain),訓(xùn)練出來的模型,通常來說也只能夠適用于該領(lǐng)域,而不能遷移泛化。

圖片

這一系列的問題激發(fā)了我個(gè)人博士生涯的工作,如何讓傳統(tǒng)的 Symbolic AI 工具被神經(jīng)網(wǎng)絡(luò)所使用。之前提到,需要進(jìn)行快速和慢速思維(Fast and Slow Thinking),普遍的認(rèn)知是神經(jīng)網(wǎng)絡(luò)可以快速推理,回答簡單的問題,比如識別一個(gè) Object,判斷句子是正向還是負(fù)向。而對于相對較難的需要一定的思考才能解決的問題,比如圍棋、尋路可能會需要一定的外部的工具或者知識才能解決。

圖片

如何將這兩個(gè)模塊進(jìn)行交互并且合并。傳統(tǒng)的方法都是基于解析(Parsing)的方法,也就是將自然語言的輸入轉(zhuǎn)化為程序,并能夠被 Symbolic 模塊執(zhí)行。中間的程序通常需要大量的標(biāo)注才能訓(xùn)練,我的研究方向更多的是能不能不構(gòu)建所謂可微分的 Neural-Symbolic AI,還是以神經(jīng)網(wǎng)絡(luò)作為解決問題的模型。希望模型能自由地和外部的工具(logical、計(jì)算器或知識圖譜)進(jìn)行可微分的交互。過程當(dāng)中,察覺到某個(gè)問題需要某種特定的工具,能夠向?qū)?yīng)的工具發(fā)送相應(yīng)的請求,得到對應(yīng)的回答。中間的交互過程能夠盡可能地被可微分化,可計(jì)算梯度,輸入和輸出能夠表示成嵌入(Embedding)的形式。這樣,在給定一個(gè)數(shù)據(jù)集,甚至是無標(biāo)注數(shù)據(jù)集上,能夠?qū)⒄麄€(gè)系統(tǒng)直接進(jìn)行預(yù)訓(xùn)練,而不需要中間結(jié)果的標(biāo)注,這是最終的愿景。顯而易見,如果這樣的系統(tǒng)能夠?qū)崿F(xiàn)的話,它能夠直接訓(xùn)練于無標(biāo)注的數(shù)據(jù)集,比如文本或結(jié)構(gòu)化的數(shù)據(jù)。

圖片

今天報(bào)告主要展示三個(gè)工作,可能運(yùn)用了不同水平的 Symbotic 模塊。

  •  第一個(gè)工作,嘗試如何讓語言模型調(diào)用知識圖譜中的信息,并進(jìn)行簡單的推理。知識圖譜是否能幫助模型解決復(fù)雜的問題。
  • 第二個(gè)工作,嘗試遷移到多模態(tài)。如果給定更多的數(shù)據(jù)集,比如視覺語言或網(wǎng)絡(luò)數(shù)據(jù),是否可以訓(xùn)練模型,使其根據(jù)不同的 Query自動(dòng)地選取出更最相關(guān)的觀點(diǎn)(Points)輔助式獲取答案。
  • 第三個(gè)工作,是否可以利用大語言模型動(dòng)態(tài)的生成最適合解決某個(gè)問題的小程序?;谶@個(gè)小程序調(diào)用不同的工具,解決需要上網(wǎng)搜尋或爬取信息的較難的問題。

二、OREO-LM: 用知識圖譜推理來增強(qiáng)語言模型

1、為什么想使用知識圖譜

圖片

介紹基于知識圖譜增強(qiáng)語言模型(OREO-LM)。為什么想使用知識圖譜呢?雖然知識庫已經(jīng)被研究了多年,但它也有一定的局限性,比如不完整,它包含的信息可能只有節(jié)點(diǎn)信息。但它也有顯著的優(yōu)勢,比如使用一個(gè)很大的知識庫或整個(gè) Web 作為知識的來源。相對來說,知識圖譜相比這類知識庫較為輕量,它已經(jīng)將世界的知識抽象成離散的,并且每個(gè)節(jié)點(diǎn)使用少量的信息,輕量并簡單的知識表征形式。因此可以非常容易地將其和部署的大小模型存儲在同一個(gè)地方,快速地調(diào)用并執(zhí)行。由于它的離散形式、圖結(jié)構(gòu),如果處理帶有邏輯推理或多跳的問題,知識圖譜可以非常容易處理該問題。例如“哪一位是圖靈獎(jiǎng)獲得者,同時(shí)出生在加拿大”,可以在知識圖譜上獲得對應(yīng)的結(jié)果。

圖片

推理過程可以抽象成簡單的邏輯推理的表達(dá)式,之前已經(jīng)有非常多的借助知識圖譜或其他的知識庫來增強(qiáng)語言模型的工作。一種非常簡單的方式,比如給定知識圖譜,可以預(yù)訓(xùn)練一個(gè) KG 嵌入,知道每個(gè)實(shí)體的向量嵌入的表征,然后將該表征加到詞嵌入。這種方法一定程度上將知識圖譜里的某些信息讓模型獲得,顯而易見,這種增強(qiáng)的方式并沒有充分地利用圖譜的推理及交互能力。模型并沒有真正的在圖譜上進(jìn)行游走,找到二跳的路徑,只是寄希望于向量嵌入能夠記住相應(yīng)的圖里的所有的信息,顯而易見,其是有缺陷的。

2、知識推理與語言模型結(jié)合

圖片

我們的工作當(dāng)中希望模型能夠更自由地和外部的知識圖譜進(jìn)行交互,并且嘗試在圖上進(jìn)行游走與推理。實(shí)際過程當(dāng)中,給定義預(yù)訓(xùn)練的語言模型,比如T-5將模型所有的參數(shù)凍結(jié)或微調(diào)。預(yù)訓(xùn)練的模型將它切成若干塊(Block),比如說語言模型編碼器(Language Model Encoder)切成3塊。塊與塊之間,加入知識圖譜交互層(Knowledge Graph Interaction Layer)也就是語言模型知識圖譜的交互層。在每個(gè)交互層之中,提取出比較難,需要從知識圖譜里面獲得信息的 Query,將這些 Query 以嵌入形式發(fā)送給 KG,這樣 KG 就能夠根據(jù) Query 進(jìn)行游走,比如從 Germany 出發(fā),走不同兩條路徑得到新的節(jié)點(diǎn)。然后將該信息通過嵌入形式傳回語言模型,這樣的交互可以重復(fù)多次,從而讓模型處理需要多跳才能解決的問題。我們將交互層加在語言模型塊中,所以將模型稱之為 OREO-LM,交互像是奶油,模型就是餅干。

3、介紹語言模型是如何運(yùn)作

圖片

我們的工作核心是在圖上進(jìn)行游走。很自然地在最開始的時(shí),需要獲得問題里最基礎(chǔ)的圖上的表征。首先使用已經(jīng)預(yù)訓(xùn)練的實(shí)體鏈接(Entity Linking)模型,找出 Query 中有哪些基礎(chǔ)的實(shí)體。有多少實(shí)體,圖譜初始化多少個(gè)推理狀態(tài)(Reasoning State),推理狀態(tài)的初始化100%停留在最初始的實(shí)體上。

圖片

之后,需要讓模型能在圖譜上進(jìn)行游走。在這篇工作當(dāng)中,游走的表征就是將圖譜的推理表征成有限狀態(tài)機(jī)(Finite-State Machine),即每一個(gè)階段維持新的實(shí)體分布,而每一次更新過程相當(dāng)于在圖譜上做一次實(shí)體分布的更新。

圖片

為了實(shí)現(xiàn)這一點(diǎn),每一次更新過程之前知道下一步更新時(shí)往哪個(gè)方向走,即在當(dāng)前情況下,下次游走的關(guān)系(Relation)是什么。在這份工作當(dāng)中,把輸入表示成分布。假設(shè)1000維度的概率分布,每個(gè)維度表示預(yù)測要使用該關(guān)系的概率。根據(jù)這關(guān)系分布游走,也就是重新估全圖上每一條邊的權(quán)重。比如開始有100%的概率在 Bohos 節(jié)點(diǎn),而 Bohos 有三條出去的邊(Influenced、Founded和is a),假設(shè) Founded 有最高的概率,會將它賦予最高的概率的權(quán)重。在下次更新過程當(dāng)中,會以更新過的圖上的權(quán)重來做游走。那么更新之后最高概率的節(jié)點(diǎn)就變成了 Walter Gropius。整個(gè)過程可以被表示成一個(gè)簡單的在圖上的隨機(jī)游走的形式,因此稱該過程為情境化隨機(jī)游走。這個(gè)步驟是完全可微分的,如果在數(shù)據(jù)集上訓(xùn)練,模型可以直接傳遞梯度到關(guān)系和實(shí)體的模塊當(dāng)中。在這個(gè)框架下如何獲得關(guān)系?在傳統(tǒng)的工作中,首先識別出問題中需要哪些最基礎(chǔ)的關(guān)系,可以先通過解析方法把它轉(zhuǎn)成一個(gè)程序,如果希望用神經(jīng)網(wǎng)絡(luò)的方法和 KG 進(jìn)行結(jié)合的話,并不能預(yù)先獲得該信息。

圖片

圖片

圖片

那么如何得到該信息?實(shí)現(xiàn)方式是在識別出的每個(gè)實(shí)體后,增加兩個(gè)特殊 Token(RET、T-ENT)。這兩個(gè) Token 是語言模型和外部的知識圖譜進(jìn)行交互的條件。在若干個(gè)語言模型塊之后,會將 RET 的嵌入輸出,將它與預(yù)先得到的關(guān)系鍵存儲器(實(shí)體嵌入,關(guān)系嵌入)進(jìn)行相乘來得到預(yù)測的關(guān)系分布。所有的關(guān)系 REL 的輸出和關(guān)系存儲器都是可以被訓(xùn)練的,因此將模型預(yù)測出的關(guān)系輸出發(fā)送給 KG,KG 進(jìn)行一次的游走。在每次游走后,得到更新的實(shí)體分布,將這個(gè)信息傳送給模型。一種非常簡單的方式就是將它加權(quán)平均于一個(gè)實(shí)體存儲模塊(Entity Memory),每個(gè)實(shí)體還是表征實(shí)體嵌入。這種方式它非常簡單粗暴,但有缺陷,尤其是表征有多個(gè)實(shí)體的集合。如果集合當(dāng)中包含了兩個(gè)離得特別遠(yuǎn)的實(shí)體,比如一個(gè)形容一個(gè)人、一個(gè)建筑,那么這兩個(gè)的平均值并不一定是最合理的實(shí)體表征。在我另外的一篇工作基于快速邏輯的方法中,選用了 Fast set 表征 set 嵌入。在這工作里,為了簡單實(shí)現(xiàn),使用加權(quán)平均數(shù)。通過實(shí)體分布的加權(quán)平均,得到更新以后的實(shí)體嵌入,直接將這嵌入加在目標(biāo)實(shí)體之后。通過這種模式,可以非常容易地將更新后的知識傳輸給模型,并且整個(gè) Query 和檢索結(jié)果的所有過程都是可被微分的。

圖片

這整個(gè)模塊可以被重復(fù)多次。在第一次的 State transition (推理)之后,在經(jīng)過若干個(gè)語言模型的內(nèi)部的推理后,增加第二次交互層就可以實(shí)現(xiàn)多跳的推理。比如在第一跳的過程中得到 Walter Gropius,在第二跳知道 Walter Gropius 參與了哪些事件?發(fā)現(xiàn)預(yù)測和之前第一步的不同,第二次的最高關(guān)系變成 Participate,這樣就可以得到最終的結(jié)果。

圖片

在整個(gè)過程中,語言模型和知識圖譜并不是互相割裂的,兩個(gè)模塊是互相幫助彼此。語言模型能夠幫助知識圖譜更好地預(yù)測,在圖譜上應(yīng)該怎么樣游走來預(yù)測最合理的關(guān)系。同理反之,知識圖譜告訴語言模型解決這個(gè)問題需要哪些相應(yīng)的知識。因此這兩個(gè)模塊可以有機(jī)的進(jìn)行結(jié)合。

4、實(shí)驗(yàn)結(jié)果

圖片

實(shí)驗(yàn)選用 T5 作為基礎(chǔ)的語言模型。在 T5 的基礎(chǔ)之上增加 OREO-LM 塊。尤其在 Multi-hop QA 上,這種增強(qiáng)模式有非常大的模型性能提升。

圖片

同時(shí)除了能夠提升模型的性能以外,這種顯式的知識圖譜推理也能幫助更好地解釋模型的決策。比如問“where was the Lisa kept during ww2”模型不止準(zhǔn)確的回答“the Ingres Museum”,同時(shí)還能將模型預(yù)測的關(guān)系進(jìn)行top1的選擇,了解它們通過怎樣的路徑得到最后的結(jié)果。比如說 Lisa 的創(chuàng)始人在哪里,以及 war 2發(fā)生在哪里?通過這兩條路徑,能夠更準(zhǔn)確的得到最后答案,并且理解模型為什么會輸出該答案。

圖片

在之前的實(shí)驗(yàn)結(jié)構(gòu)里展示了 OREO-LM 能夠提升模型的推理性能。但是,該性能提升是否真的來自于知識圖譜的推理,為了驗(yàn)證這一點(diǎn),做了一個(gè)蠻有意思的實(shí)驗(yàn)。首先,選擇知識圖譜上的非簡單的 Triple。這些 Triple 只要能夠找到對應(yīng)的知識圖譜上的一個(gè)實(shí)體(能非常容易獲得回答)。但是,為了驗(yàn)證模型有一定的推理能力,不希望知識顯式存在 KG 里面。我們將對應(yīng)的某一種類型的知識全部從 KG 里刪除。比如將所有包含 Capital Of  的邊全部從 KG 里刪除。如果模型還能回答對應(yīng)的問題,邊(Edge)是它已經(jīng)記住的知識,或它必須從圖譜上進(jìn)行多跳的推理,或選擇其他的知識和邊來輔助回答模型預(yù)測出這一條不存在的邊。

圖片

實(shí)驗(yàn)結(jié)果,如果增加多個(gè)推理模塊,在刪除知識的邊之后,性能下降會越來越小。某種意義上,在顯式的知識圖譜上推理確實(shí)提升模型的魯棒性,尤其是對于在知識圖譜缺失了很多信息的情況下面,它還能通過多跳來輔助回答相應(yīng)的問題。為了進(jìn)一步驗(yàn)證這一點(diǎn),我們將不同的刪除掉的 Query,模型到底選擇哪條多跳路徑來展示成了一個(gè)樹的形式。每條路徑可以簡單的理解為單一邏輯規(guī)則。比如想預(yù)測首都在哪里,模型的選擇路徑:先知道這個(gè)國家的總統(tǒng)在哪里,總統(tǒng)是誰,這位總統(tǒng)居住在哪里或者哪個(gè)地方工作,這條簡單的路徑可以用來輔助預(yù)測這個(gè)國家的首都是哪里。同樣預(yù)測一個(gè)人的伴侶,他工作在哪里或他居住在哪里,或他使用怎樣的語言,都可以通過其他的路徑去預(yù)測。

圖片

實(shí)驗(yàn)和結(jié)果總結(jié),如果想增強(qiáng)神經(jīng)基礎(chǔ)模型,僅使用最基礎(chǔ)的 Symbolic Operator。在這份工作里,只是最基礎(chǔ)的知識圖譜游走,就已經(jīng)取得很不錯(cuò)的性能,哪怕使用較小的模型參數(shù),也能取得很好的性能。為了讓整個(gè)框架能真正的 Work,最核心的一點(diǎn)是可以端到端訓(xùn)練,不需要中間的任何的標(biāo)注,只在無標(biāo)注得數(shù)據(jù)上就能學(xué)到如何真正的推理。如果想訓(xùn)練而不需要中間標(biāo)注,讓推理過程(尤其是 symbolic 推理)變得可微分是一個(gè)最關(guān)鍵的步驟。通過這種方式,模型可以直接在每個(gè)下游 QA 數(shù)據(jù)集做預(yù)訓(xùn)練或端到端訓(xùn)練,這是讓模型能夠真正 Work 的關(guān)鍵。

三、REVEAL: 用多個(gè)知識庫檢索來預(yù)訓(xùn)練視覺語言模型

圖片

圖片

以上工作可能局限于純文本領(lǐng)域,并使用了知識圖譜,我們知道非常多的知識源,比如網(wǎng)上的文本或知識庫。在 REVEAL 介紹如何讓視覺語言模型使用多知識源?比如“這個(gè)小玩具和哪一位美國總統(tǒng)有關(guān)聯(lián)?”,從維基百科中獲得美國的總統(tǒng)和泰迪熊的信息,找出相應(yīng)的 Triple,甚至可以從 VQA  數(shù)據(jù)集里找到相關(guān)的問答對。統(tǒng)一將所有選取出來的相關(guān)的知識合并在一起。工作的目標(biāo)是讓模型能選取出來自不同知識源和問題相關(guān)的知識;使視覺語言模型具備更好地回答較難問題的能力,能端到端訓(xùn)練;只在一個(gè)數(shù)據(jù)集中學(xué)習(xí)檢索怎樣的信息,怎樣將它們給合,并且回答相應(yīng)的問題。

圖片

這類需要外部知識的問題,不僅在純文本里很重要,在多模態(tài)中也重要。最近幾年大家越來越關(guān)注外部支持的 VQA 答案,比如“在飯里哪部分擁有最多的碳水化合物?”。這樣的問題,不僅需要模型能夠理解圖片里出現(xiàn)什么樣的 Object 以及它們之間的關(guān)系,還需要一定的外部知識。比如,米飯是一種主食,而主食包含了最多的碳水化合物。我們的解決思路是讓模型能夠有能力和外部的知識庫進(jìn)行存儲模塊查找。將所有的外部知識統(tǒng)一編碼在存儲模塊里,傳送模型能夠選取相應(yīng)的 Token 和知識的結(jié)果。

圖片

為了實(shí)現(xiàn)這一點(diǎn),需要將不同的 Multimodal 變成 Multi-Source 的 Multi-memory 編碼到統(tǒng)一的存儲模塊里,它的鍵和值的表征需要完全一致。簡單的做法是選用已訓(xùn)練好的視覺語言模型,比如 Multimodal 的基礎(chǔ)模型,利用它將視覺語言的輸入轉(zhuǎn)化成序列 Token,并將其全都存儲在大的存儲模塊里,動(dòng)態(tài)地選取,顯而易見是可行的。當(dāng)文本非常長(圖像本身包含非常多的信息),如果將它全部壓縮在一個(gè)序列 Token 里面,可能會有幾百甚至上千個(gè) Token,每個(gè) Token 是一個(gè)嵌入。如果存儲在在線服務(wù)里,不太可能存儲非常多的知識,最多存儲幾十萬個(gè),不能到幾百萬甚至上千萬,更不用說上億。

1、多模式語料庫中存儲模塊的構(gòu)建

圖片

為了解決這一點(diǎn),我們選用感知模型(Perceived Model),也就是基于 Transformer Decoder 的框架來壓縮每個(gè)知識的實(shí)體。比如,原始有1000維度的輸入序列,將它輸入感知模型,該模型可以預(yù)先設(shè)定好最終保留幾位的知識 Token,如果想保留16位,隨機(jī)初始化16位的輸入,將它作為 Decoder 的輸入,壓縮的信息作為 Decoder 的 Key 和 Value,然后將它壓縮成16維的 knowledge value。

通過這種方式,可以將來自不同知識源的數(shù)據(jù)集里每個(gè)實(shí)體表示成一個(gè) key-value 對。key 就是單一嵌入,而 value 是壓縮后的16維或32維的 Tokens 列表。壓縮后它大概只需要十幾維的嵌入來表示的知識實(shí)體。這統(tǒng)一的存儲模塊(Unified Memory)可以存儲百萬甚至千萬。如果實(shí)現(xiàn)云服務(wù)的話,可以實(shí)現(xiàn)接近上億或者更多的數(shù)據(jù)集的增強(qiáng)。

2、端到端訓(xùn)練檢索模塊和問答模

圖片

接下來,將展示如何去借助統(tǒng)一的存儲模塊來增強(qiáng)已有模型。首先,展示最基礎(chǔ)的圖像到文本的工作流程。給定圖像和 Prompt,生成完整的說明文字,可以把它的前綴(prefix)也作為模型的輸入,來補(bǔ)全剩下的信息。最簡單的方式是用V-L編碼器把它轉(zhuǎn)換成 Tokens 列表,然后輸給解碼器自回歸生成后面的信息。示例,描述圖片里有什么東西,標(biāo)準(zhǔn)答案里包含菰屬(Zizania 物種)。這類長尾的單詞,對于較小的語言模型來說,比較難理解且記住。

圖片

如何使用外部的已有的統(tǒng)一的存儲模塊來補(bǔ)全信息?現(xiàn)在已有編碼好的統(tǒng)一的存儲模塊且可以動(dòng)態(tài)地去更新,因?yàn)槊看?nbsp;V-L 編碼更新后,都會重新的更新 key 和 value。

圖片

在線上處理過程中,會根據(jù)已有輸入作為 Query 嵌入來選取出和該 Query 最相關(guān)的若干個(gè),比如 Top k 個(gè)知識實(shí)體,將它的 value 取出。在選取過程中,因?yàn)橹R存儲模塊包含來自不同的數(shù)據(jù)集,而對于不同的 Query 最相關(guān)的知識實(shí)體的數(shù)據(jù)集可能各不相同。因此先通過語料庫門控(Corpus Gating)選取出最相關(guān)的數(shù)據(jù)集,在該數(shù)據(jù)集中選取 k 個(gè)最相關(guān)的結(jié)果及對應(yīng)的索引(Index),并選取出相應(yīng)的 k 結(jié)果。

圖片

由于最大內(nèi)積搜索算法(Maximum Inner Product Search)相應(yīng)的實(shí)現(xiàn),已經(jīng)有非常多高效的 MIPS 的加速算法,比如基于哈希或基于聚類。這整個(gè)算法復(fù)雜度其實(shí)是 On 于存儲的數(shù)量,是非常高效的。

圖片

在選取出 k 個(gè)結(jié)果后,將它和已有的輸入進(jìn)行融合。最簡單的方法是,直接將每個(gè)知識實(shí)體拼接在已經(jīng)編碼好的語言輸入之后。但是,如果希望模型能端到端的訓(xùn)練檢索的話,它并不能夠直接獲得訓(xùn)練符。因此,我們實(shí)現(xiàn)了一個(gè)非常簡單的技巧,在計(jì)算得到檢索分?jǐn)?shù)后,將分?jǐn)?shù)承載在每個(gè)選取出來的知識實(shí)體之上,我們稱之為 Attentive Knowledge Fusion。

圖片

實(shí)現(xiàn)如下,在計(jì)算每個(gè) Query 和知識實(shí)體的注意力分?jǐn)?shù)時(shí),將這兩個(gè)嵌入進(jìn)行乘積,它表征了模型預(yù)測出每個(gè)知識實(shí)體有多相關(guān)于每個(gè)輸入,如果想進(jìn)一步優(yōu)化這點(diǎn),需要判斷這個(gè)能力是不是真的對回答問題有用,那有什么信息能更好地輔助獲得這個(gè)過程。隱式的過程是模型計(jì)算出來的注意力分?jǐn)?shù),即實(shí)體有多好的幫助模型回答相應(yīng)的問題。為了使模型能夠得到這過程,將計(jì)算出的檢索分?jǐn)?shù)乘在每次計(jì)算自注意力之前,歸一化之后。假設(shè)有6層的注意力編碼,會將信息承接6次,讓它充分地獲得相應(yīng)的 supervision signal。

通過這種方式,如果在訓(xùn)練過程中知道某個(gè)知識實(shí)體非常有用,它對應(yīng)的注意力分?jǐn)?shù)需增加對應(yīng)的比率得分,在下次更容易被檢索。

圖片

我們在描述圖片數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,將預(yù)訓(xùn)練后所有的知識存儲模塊直接凍結(jié),遷移到對應(yīng)的 VQA 數(shù)據(jù)集,比如在 OK-VQA 上實(shí)現(xiàn)了非常好的結(jié)果。

3、實(shí)驗(yàn)結(jié)果

圖片

在文章中選用4個(gè)不同的數(shù)據(jù)集:WIT、CC12M、Wikidata、VQA-2。將這四個(gè)數(shù)據(jù)集編碼在統(tǒng)一的存儲模塊中進(jìn)行預(yù)訓(xùn)練,并在 REVEAL 里面實(shí)現(xiàn)非常好的結(jié)果。比如 PICa 和ReVIVE 都使用 GPT-3 的模型作為顯式的知識庫。值得一提的是,在我們的模型中只用了輕量級的 10B 存儲在模型當(dāng)中,不需要存儲 350B 的大模型,已經(jīng)能取得比大語言模型更高的結(jié)果。

圖片

這里展示模型預(yù)測的知識對。比如識別“飛機(jī)的航空公司是什么”,模型根據(jù) LOGO 準(zhǔn)確地識別出來“加拿大航空公司”,然后找到其相關(guān)的兩個(gè)說明文字,并找出答案。

圖片

進(jìn)一步,相對更難的例子,例如“這個(gè)巴士來自于哪個(gè)城市”,人比較難以回答。但通過模型可以找出和巴士非常相似的同款設(shè)計(jì)風(fēng)格的來自于舊金山的公交系統(tǒng)。模型最后準(zhǔn)確的回答它是來自于舊金山。同理,還能找出其他的需要一定的外部知識補(bǔ)全才能夠回答的案例。

圖片

同樣的,這個(gè)模型并不僅僅能處理 VQA 的任務(wù),對于加說明文字的數(shù)據(jù)集也能取得非常好的結(jié)果。

圖片

除了取得更好的性能外,還希望檢索方法有更好的適應(yīng)能力。尤其基于 GPT 的模型,通常是收集2021年前獲取的數(shù)據(jù)做預(yù)訓(xùn)練。但對于最近發(fā)生的新聞或信息,沒有辦法高效地更新。我們在實(shí)驗(yàn)中,測試它對沒見過的知識,是否有很好的適應(yīng)能力。因此在預(yù)訓(xùn)練和微調(diào)過程中刪除一定比例的知識實(shí)體,比如隨機(jī)的從知識代碼里刪除50%的信息,在預(yù)訓(xùn)練之后,僅在最后的推斷階段將該信息給補(bǔ)上。

圖片

測試發(fā)現(xiàn),如果全部刪除掉,它的性能下降非常大,上圖藍(lán)色線。但是補(bǔ)全后,結(jié)果和開始用100%的信息相差無幾。這種結(jié)果某種意義上說明,即便在預(yù)訓(xùn)練和微調(diào)階段并沒有見過相應(yīng)的知識,只要在最終推理階段將知識進(jìn)行補(bǔ)全,或有最新的知識加入到模型,其有能力去選取出相應(yīng)的實(shí)體來回答問題。

圖片

總結(jié),我們提出了 REVEAL,其包含了一個(gè)非常高效的知識檢索,它可以使用不同的知識源,每個(gè)知識源來自于不同的方式,不同的表征。利用所有數(shù)據(jù)集來幫助回答相對較難的,需要一定知識的問題。我們通過一個(gè)非常簡單,但有效的注意力融合的技巧,使 REVEAL 直接在大的語料庫上預(yù)訓(xùn)練,而不需要中間的標(biāo)注。

四、AVIS: 讓大模型用動(dòng)態(tài)樹決策來調(diào)用工具

圖片

以上兩份工作,選用的語言模型都是相對較小的 T5 基礎(chǔ)模型。隨著 OpenAI 發(fā)布了 GPT-4,很多的熱潮慢慢遷移到我們能不能使用大語言模型解決各種各樣的問題,大語言模型有它自己的缺陷,例如它并不能夠很準(zhǔn)確地回答邏輯推理的問題,有沒有可能讓自由地調(diào)用外部的工具和知識庫來輔助它解決。通常來說,是不太能直接獲得大語言模型中間表征的參數(shù),因此在這個(gè)工作里我們并沒有真正去實(shí)現(xiàn)可微分的訓(xùn)練。相應(yīng)的我們更多的是使用基于 Prompt 的方法讓語言模型學(xué)會調(diào)用相應(yīng)的工具,和如何利用它解決較難的問題。

1、外部工具

圖片

比如嘗試讓基于 GPT 的模型或者其他的大語模型調(diào)用 Google 的搜索工具,包括文本搜索工具和視覺搜索工具 Lens,它能夠識別圖片里的 Object 和它相關(guān)的產(chǎn)品或描述。通過它的輸出回答,不僅僅能給出最基礎(chǔ)的回答,還能標(biāo)注出每個(gè)回答來自于哪個(gè)知識源,幫助人類檢驗(yàn)回答是否準(zhǔn)確。

圖片

對于需要數(shù)學(xué)推理的問題,可以利用數(shù)學(xué)計(jì)算器,比如 Wolfram Alpha,是非常強(qiáng)大的科學(xué)計(jì)算器,可以輔助回答較難的需要一定的數(shù)學(xué)推理才能解決的問題。

2、外部工具增強(qiáng)的大語言模型

圖片

在我們工作之前,其實(shí)已經(jīng)有非常多相應(yīng)的工作,比如給定較難的問題,利用語言模型拆解成基礎(chǔ)工具調(diào)用的程序,通常都是 plan-then-execute 的框架。先利用語言模型作為規(guī)劃模塊將復(fù)雜 Query 轉(zhuǎn)化成小的程序。而每個(gè)程序就是調(diào)用哪個(gè) API,獲得怎樣的結(jié)果,回答怎樣的問題。最近效果非常好的例子是,Chameleon 接受不同的模態(tài)的問題,將它拆解成 API 列表。比如知識檢索或程序生成器分別調(diào)用特定的外部 API 回答相應(yīng)的子問題。

圖片

另一個(gè)受到關(guān)注的工作是來自于哥倫比亞大學(xué)的 ViperGPT 的工作,同樣也是生成 Python 基礎(chǔ)程序。比如回答“how many muffins can each kid have for it to be fair?”首先計(jì)算出圖片里有多少松餅,有多少小孩,計(jì)算出數(shù)量后,確定是否整除,以回答對應(yīng)的問題。

3、plan-then-execute 的框

圖片

這類工作,通常按照 plan-then-execute 的框架。先利用大語言模型的規(guī)劃模塊將問題拆解成子問題列表,而每個(gè)子問題可能對應(yīng)一個(gè) API,根據(jù)生成出來的程序分別去執(zhí)行。當(dāng)然每個(gè)執(zhí)行過程也可以使用大語言模型。但該框架也存在問題。比如其默認(rèn)問題本身已經(jīng)包含足量的信息,這樣它才能生成非常完整的程序。

NLP 領(lǐng)域里已經(jīng)有人研究,如果問題不完整,包含了所謂的印象深刻的推理,比如問題“Did Aristotle use a laptop”,如果拆解成子問題的話,首先需要知道 Aristotle 出生的年份,以及這年份 laptop 是否被發(fā)明,最后計(jì)算兩者的年月的順序。中間潛在的推理并沒有被顯式地表征在問題里,需要在執(zhí)行過程中隱式的地生成出來。就像下圍棋,下第一步時(shí)并不知道100步后會怎么執(zhí)行。這是第一個(gè)很大的問題。如果在最開始就生產(chǎn)出程序,便不能根據(jù)執(zhí)行過程中的反饋來動(dòng)態(tài)更新程序。第二個(gè)問題是,某時(shí)刻執(zhí)行過程不確定。比如回答子問題“圖片里面的汽車來自于哪個(gè)品牌?”回答該問題可以用不同的工具解決,比如簡單的 VQA 或生成說明文字再維基搜索。實(shí)際上,我們并不知道最終是哪個(gè)工具準(zhǔn)確地回答該問題??赡苁?nbsp;VQA,但其給出模棱兩可的答案,并不能真正地滿足要求,這時(shí)就切換到另一個(gè)工具。但如果事先已經(jīng)存在固定的程序話,就不存在自由切換中間執(zhí)行過程。

圖片

因此,在實(shí)行過程中希望能更自由、更動(dòng)態(tài)地讓模型做規(guī)劃以及執(zhí)行。我們實(shí)現(xiàn)了大致的框架如上圖。兩個(gè)模塊,一個(gè)規(guī)劃模塊預(yù)測出每個(gè)階段選用哪個(gè) API,并且發(fā)送對應(yīng)的 Query,根據(jù)這個(gè)信息選擇并調(diào)用對應(yīng)的 API,得到對應(yīng)的結(jié)果。在該結(jié)果之后,判斷該結(jié)果是否正確地回答相應(yīng)的問題。如果沒有,需要再次回到之前的結(jié)果。如果某條路徑?jīng)]有回答,需要回溯到之前的節(jié)點(diǎn),再次進(jìn)行規(guī)劃;如果回答了子問題,需要進(jìn)一步?jīng)Q策;如果已經(jīng)回答了完整的問題,則提前結(jié)束搜索過程。

圖片

上圖展示如何利用整個(gè)框架解決問題。比如“How many floors does this building have?”首先,模型先預(yù)測出圖片里有哪個(gè) Object,并進(jìn)行選擇。根據(jù)選擇的 Object 做圖像搜索,找出哪些圖像和Object比較相似,而圖像搜索的過程中得出其是 Bridgewater Place。在推理過程中獲得其確實(shí)是答案,回答子問題。但還要回答它有多少層,這則需要一定的常識或領(lǐng)域知識,不是模型本身已存在的記憶。因此,需要借助網(wǎng)絡(luò)搜索,比如 Google 或 Bing,回答對應(yīng)的結(jié)果32。

圖片

類似的例子較多,每個(gè)例子每次中間結(jié)果生成的 API 都不一樣。有時(shí)選擇的路徑無效,需要選擇另外一個(gè)目標(biāo),我們的框架可以支持的動(dòng)態(tài)選擇。

圖片

圖片

追蹤框架如何實(shí)行,包含以下幾個(gè)模塊。首先,獲得基礎(chǔ)的 M,最開始只保存輸入數(shù)據(jù),同時(shí)存儲 State 在初始節(jié)點(diǎn)。在規(guī)劃階段,根據(jù)當(dāng)前的 Memory 決定下一步選擇怎樣的 API 及其對應(yīng)的 Query。執(zhí)行結(jié)果輸入給 Reasoner,其判斷該結(jié)果是否有用。將這個(gè)信息加入到 Working Memory 后來判斷 Reasoner 的結(jié)果是沒用、有用還是已經(jīng)回答問題。如果沒用,回到第二個(gè)結(jié)果,并把 Working Memory 踢出,重新進(jìn)行遞歸;如果包含有用的信息,更新當(dāng)前的 State;如果已經(jīng)回答了對應(yīng)的問題則跳出。

圖片

這個(gè)框架的核心在規(guī)劃模塊,也就是每個(gè)階段選用哪個(gè) API,以及發(fā)送怎樣的 Query。實(shí)現(xiàn)這點(diǎn),可以使用 GPT 4 直接做 Zero Shot 的預(yù)測,或提供一定的上下文來進(jìn)行預(yù)測。如果 API 的數(shù)量達(dá)到幾百上千,那Prompt尤其是輸入給模型的例子會非常大?,F(xiàn)在大語言模型其實(shí)并不能接受非常長的文本輸入。隨著使用的API的數(shù)量增多,它并不一定能適應(yīng)長的 Prompt。因此在這份工作里借助了人類知識,即人工標(biāo)注者在 VQA 數(shù)據(jù)集上進(jìn)行簡單的標(biāo)注,作為人類如何使用這些工具來回答相應(yīng)的問題,在收集了幾百個(gè)結(jié)果后,構(gòu)建 Transition graph。人類在每個(gè)節(jié)點(diǎn)或當(dāng)前情況下會選擇使用哪些工具?一般情況下,不會直接進(jìn)行網(wǎng)絡(luò)搜索。因?yàn)?,開始并不知道圖像包含哪些信息。通常來說,最開始先用 Captioning 模型或 Object 選擇模型找出最基礎(chǔ)的信息。根據(jù)人工定義好的 Transition graph,根據(jù)當(dāng)前的 State 確定下一步有哪些可操作的 Action state。這個(gè) Action 的數(shù)量肯定會遠(yuǎn)遠(yuǎn)小于所有的 API 列表。比如全部有100個(gè),下一步可能只需要10個(gè)。然后根據(jù)選用的10個(gè)和之前人工標(biāo)注出的 Prompt 動(dòng)態(tài)地生成出最適合當(dāng)前的上下文 Prompt 輸給模型。模型根據(jù)動(dòng)態(tài)生成的 Prompt 預(yù)測下一步選用的 Action,以及它對應(yīng)的輸給 API 的 Query。

圖片

圖中展示回答“when was the drum first used for this event?”首先,要了解鼓是什么,以及鼓發(fā)生在哪個(gè)年代才能回答這個(gè)問題。首先找出 object,輸入給大語言模型來選擇哪個(gè) object 與這個(gè)問題最相關(guān),可能會選擇錯(cuò)誤的object,比如選擇第一個(gè),輸給 Reasoner 來判斷它有沒有回答這個(gè)問題。如果第一部分選擇的信息沒有鼓,模型則沒有回答正確,那么需要進(jìn)一步的選擇(像搜索樹一樣直到回答問題)輸給下一步規(guī)劃階段,該步知道是什么鼓和鼓的事件,通過 Google 搜索回答出對應(yīng)的問題。

4、實(shí)驗(yàn)結(jié)果

圖片

實(shí)驗(yàn)含有最新的 Infoseek 數(shù)據(jù)集,這是比較難的需要關(guān)聯(lián)信息才能回答的 VBQ 數(shù)據(jù)集。上圖發(fā)現(xiàn),之前非常強(qiáng)的 baseline,比如 PALI 哪怕是微調(diào)之后也只有16%。第一個(gè) PALM 的模型也只有12.8% ,這樣的結(jié)果基本屬于沒有完全的回答。但是在加了所有工具以及規(guī)劃階段框架后,能接近50%的準(zhǔn)確率,已非常接近完成數(shù)據(jù)集一半的問題。在此對細(xì)節(jié)不做展示,包括 Prompt 如何去設(shè)計(jì),如何進(jìn)行用戶實(shí)驗(yàn),大家感興趣的話可以仔細(xì)查閱論文。

圖片

最后進(jìn)行一下總結(jié),一共介紹了三個(gè)工作,一是如何利用知識圖譜作為知識庫,幫助語言模型進(jìn)行較為復(fù)雜推理;二是如何使用更多的知識源幫助視覺語言模型,設(shè)置注意力和檢索得分的融合,讓模型能夠直接進(jìn)行訓(xùn)練;三是給定一個(gè)大語言模型,不做任何微調(diào),如何設(shè)計(jì)一個(gè)框架,使其動(dòng)態(tài)地生成最好的程序回答稍微復(fù)雜的問題。

責(zé)任編輯:姜華 來源: DataFunTalk
相關(guān)推薦

2024-01-29 00:25:59

人工智能結(jié)構(gòu)化編碼

2024-05-06 07:58:25

大模型AI智慧芽

2025-04-01 15:35:11

2025-02-26 14:22:18

2025-02-24 14:30:00

模型生成訓(xùn)練

2024-01-02 07:15:59

大模型數(shù)據(jù)庫企業(yè)知識管家

2024-12-04 10:35:21

2022-07-26 09:56:48

模型AI

2024-01-09 14:05:15

大型語言模型RAG向量數(shù)據(jù)庫

2009-04-10 09:07:14

2024-06-03 08:50:36

2024-04-15 13:51:03

模型LLMLLMs

2023-03-03 13:06:34

大腦分層預(yù)測

2023-09-27 09:00:00

大型語言模型自然語言處理

2025-03-06 07:28:31

DeepSeek大模型人工智能

2025-04-08 03:22:00

2023-07-09 14:50:48

模型調(diào)優(yōu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號