博客專欄

        EEPW首頁 > 博客 > 可擴展、可解釋,新框架從預訓練語言模型中高效提取知識圖譜

        可擴展、可解釋,新框架從預訓練語言模型中高效提取知識圖譜

        發布人:機器之心 時間:2022-12-21 來源:工程師 發布文章
        來自加州大學圣迭戈分校(UCSD)、卡內基梅隆大學(CMU)等機構的研究者提出了一種自動知識抽取框架,可以從 BERT 或 RoBerta 等預訓練語言模型中高效且可擴展地提取知識圖譜。


        圖片


        知識圖譜 (KG) 是表示知識的一種形式,通常由頭尾實體及其關系的三元組構成。它被廣泛應用在各個領域,包括搜索引擎、推薦系統、聊天機器人和醫療保健。傳統的知識圖譜是通過昂貴的眾包(例如 WordNet, ConceptNet, ATOMIC)構建的。盡管最近的研究探索了使用文本挖掘技術來自動構建知識圖譜,但由于需要龐大的語料庫和復雜的處理流水線,這仍然是一項具有挑戰性的任務。此外,文本挖掘的一個不可避免的缺點是抽取的關系僅限于所選語料庫所涵蓋的關系。例如,許多常識性的知識并不會在人類語言中被顯式地表達,因此從語料庫中提取它們并不是一件容易的事。自動構建包含有“任何關系”的知識圖譜仍然是一個未經探索的領域。


        隨著神經網絡的發展,越來越多的神經網絡模型在不同領域的任務上取得優異的表現,例如使用 GPT-3 和 ChatGPT 進行語言建模,以及使用 bioBERT 進行醫學預測。在訓練過程中,這些模型可以將從數據中學到的知識隱式地存儲在它們的參數中。例如,在大規模醫療記錄上訓練的醫學模型可能已經獲得了豐富的醫學知識,使其能夠準確預測疾病。同樣,流行病預測模型可能已經從訓練數據中隱含地學到了某些傳播模式。


        最近的研究試圖利用語言模型作為知識庫 (Language model as knowledge base)。例如,使用手動或自動生成的提示(例如,“奧巴馬出生于 __”)來查詢語言模型獲得答案(例如,“夏威夷”)。但是,語言模型的知識僅僅隱式編碼于參數,使得這樣的知識庫缺乏了知識圖譜的優良屬性,例如對知識進行復雜查詢或是更新。這就引出了一個問題:我們能否自動從語言模型中獲取知識圖譜,從而結合兩者的優點,即語言模型的靈活性和可擴展性,以及知識圖譜的易于查詢、可編輯性和可解釋性?


        為實現這一目標,我們提出了一種自動知識抽取框架,能夠從 BERT 或 RoBerta 等預訓練語言模型中高效且可擴展地提取知識圖譜,從而構建一系列新的知識圖譜(例如 BertNet、RoBertaNet),相比于傳統的知識圖譜,能夠支持更廣泛和可擴展的關系和實體。


        圖片


        • 論文地址:https://arxiv.org/abs/2206.14268

        • 項目地址:https://github.com/tanyuqian/knowledge-harvest-from-lms

        • demo地址:https://lmnet.io/


        圖片

        圖1:項目demo的截圖,用戶可以自定義關系進行查詢


        從語言模型中獲取知識圖譜的框架


        我們首先定義希望解決的問題:給定用戶對于一個關系的描述,我們希望從語言模型中獲取該關系的實體對。在我們的框架中,關系被描述為一個帶有空槽的提示(prompt),并且通過一些示例實體 (seed entity tuple) 對進一步消除歧義。有了這些輸入,我們的框架可以輸出實體對列表以及它們對應的置信度(可參考圖1中demo的效果)。


        兼容性分數


        在我們深入介紹抽取知識所需的兩個主要階段之前,我們先介紹提示和實體對之間的兼容性分數。


        圖片


        以 BERT 為例,評分函數中的第一項表示將實體對 (h, t) 填充到提示 p 中的空槽的預測概率。通常,這個聯合條件概率是以自回歸方式計算的。此外,我們還想確保每一步的概率不會太低,這就是對分數第二項的直觀理解。一個具體的例子如圖 2 所示,其中 p=”A is the place for B”,h=”library”,t=”study”。我們還介紹了如何處理 h=“study room” 的多單詞 (multi-token) 實體。


        圖片

        圖2:兼容性分數的計算示例


        有了這個兼容性分數,我們接下來介紹從語言模型中獲取知識圖譜的流程(圖 3),它可以分為兩個主要階段:提示構建 和 實體對搜索。


        第一階段:提示構建


        語言模型的一個已知的問題是它們對于提示非常敏感。有時,即使措辭上的細微差別也會導致預測結果發生巨大變化。為此,我們希望生成初始輸入提示的多個同義改寫,并使用它們來約束語言模型的輸出。


        在具體實現中,我們迭代地對實體元組和提示進行采樣,拼裝成一個語句并對其進行同義改寫(具體來說,我們使用了GPT-3的API)。該過程如圖2的左側所示。生成的提示可能存在語義漂移,因此我們使用一個提示與所有示例實體對之間的平均兼容性分數進行加權,并且在所有提示中使用 softmax進一步歸一化權重,這樣我們就可以得到一個帶有權重的提示集合,作為對一個關系更可靠的描述。


        第二階段:實體對搜索


        我們在接下來這一階段的目標是搜索實體對。搜出的實體對應該與加權提示集擁有較高的兼容性。


        如果直接窮舉搜索實體對,搜索空間將會過于龐大。作為一種近似的方法,我們在搜索實體對時只考慮最小單步概率(兼容性函數的左側一項,簡寫為MLL)而不是完整的函數。這個近似的評分函數讓我們可以在搜索時進行高效的剪枝。


        作為一個例子:當我們想搜索100個實體對的時候,我們需要維護一個容量為100的最小堆,保存目前為止搜到的MLL最小的100個實體對。堆頂的元素可以作為接下來搜索的一個閾值,因為這是目前搜索到的第100大的MLL。在接下來的搜索中,一旦我們發現在任何一步的概率低于這個閾值,我們都能立刻放棄接下來的搜索,因為接下來搜到的實體的MLL都會小于這個值。如果直到完整搜索出一個實體對都沒有被剪枝,我們就彈出堆頂的元素并且把新搜到的實體對的MLL推入堆。


        一旦我們收集了足夠數量的實體對,我們會用完整的一致性評分函數重新排序,并將其視為置信度。根據置信度,我們嘗試使用不同的截斷方法來獲得最終的知識圖譜:(1) 50%: 取搜出實體對置信度排名前一半的。(2)base-k: 對于不同的關系,有效的實體對數量應該是不同的。例如,對于“capital of”這個關系,正確的實體對不應該超過200個,因為全世界國家的數量只有這些。我們設計了一種針對關系的截斷方法:取排名第k位的實體對的置信度,乘以百分之10,并且只保留置信度比這個數值更大的實體對。我們將這樣獲得的知識圖譜加上base-k的下標。


        抽取出的知識圖譜


        不同于傳統的知識圖譜,一旦接受到新的查詢,BertNet就可以被擴展。本質上,BertNet的大小沒有極限。為了評價我們的框架,我們將這個框架用于ConceptNet的關系集合,以及一個作者們創作的新穎關系集合(例如:capable but not good at),構建出相應的知識圖譜。


        圖片

        表1:不同知識圖譜的統計結果


        僅僅使用語言模型作為知識的來源,并且不使用任何訓練數據的情況下,我們的框架可以抽取出準確并且多樣的知識(表中其他知識圖譜構建方法和我們的設置不同,因此數值無法被直接比較)。通過選取不同的截斷方法,我們還展示了RobertaNet的大小和準確率的權衡。


        總結


        在這項工作中,我們提出了一個從語言模型自動抽取知識圖譜的框架。它可以處理任意用戶輸入的關系,并且以高效和可擴展的方式進行知識抽取。我們在兩組關系上構建了知識圖譜,證明了語言模型不加以外界資源就已經是一個非常有效的知識來源。我們的框架還可以作為對于語言模型的符號解釋,為分析語言模型的知識儲備提供了工具。



        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 瓦房店市| 临潭县| 永川市| 五原县| 元阳县| 西林县| 南乐县| 邢台县| 安溪县| 黔东| 泰来县| 延庆县| 阿城市| 贡觉县| 深水埗区| 龙江县| 普兰店市| 池州市| 合肥市| 讷河市| 稷山县| 灵石县| 山东| 故城县| 太保市| 盘山县| 延寿县| 德令哈市| 元阳县| 明水县| 伊宁市| 古蔺县| 宿州市| 延安市| 土默特右旗| 平罗县| 宁晋县| 获嘉县| 临泽县| 大宁县| 新泰市|