博客專欄

        EEPW首頁 > 博客 > 達摩院SPACE大模型:知識注入與知識利用(3)

        達摩院SPACE大模型:知識注入與知識利用(3)

        發布人:數據派THU 時間:2022-11-20 來源:工程師 發布文章

        04、Proton:預訓練模型中知識利用的探索


        接下來,講解預訓練模型中的知識利用。因為預訓練模型是經過海量的數據進行訓練的,里面包含了海量的知識,如果可以將其中的知識進行利用,無疑會對 NLP 任務提供很大的幫助與提升。我們提出了一種方法——Probing tuning。


         1. TableQA 任務


        圖片


        想要驗證知識的作用,需要知識密集型的任務,如上圖,TableQA 任務非常合適,TableQA 核心任務即是將文本語言轉換成 SQL。


        圖片


        上圖表示的是 Text-to-SQL 的發展歷程。初始的時候,將 SQL 預測拆解為分類問題,準確率在 40% 左右;后來使用 Seq2Seq 生成模型,準確率提升到 50% 以上;進一步地,引入大規模預訓練模型,準確率提升到 70% 以上。因此,可以看出,預訓練對話模型,對整個對話系統的提升非常顯著。但是仍然存在一定的問題。


        圖片


        以 Spider 數據集為例,在標記 Spider 數據集的同時,他們是看到數據集的,導致他們在編寫數據集的時候,所用到的詞匯,都是存在原文中的詞匯。缺少同義變化和世界知識等。比如,在購買家居場景,有一種沙發的型號為L型,是一種官方術語,而對于用戶,或者消費者而言,他們并不知道L型沙發是什么,他們只知道“貴妃椅”。而“貴妃椅”是L型沙發的俗稱。因此,有人在 Spider 數據集上進行了同義詞改造,構建了新的數據集Spider-Syn,則原來的模型在新的數據集上效果顯著下降。


        除了同義詞問題外,上圖右邊提到的,“… in African countries that are republics?”即非洲共和制國家有哪些?Republics,這個單詞是“共和制”的意思,而這個含義,模型無法從數據中學習到,需要世界知識。


        圖片


        一般情況下,預訓練模型的使用方法有以上兩種:Fine Tuning 和 Prompt Tuning。對于 Fine Tuning 而言,直接將預訓練模型作為下游任務的表征,大多數任務都可以利用預訓練模型的能力,但預訓練模型和下游模型有很大的 GAP。簡單而言,預訓練模型的知識很多,而下游任務只能獲取很小的一個出口進行輸出,無法充分獲取知識表達。對于 Prompt Tuning 模型,通過改變預測的方式來提升效果,最近在分類任務上嶄露頭角,尤其在小樣本情況下。但是,如何用到更復雜的任務?比如 Parsin,效果卻不太好。綜上所述,通過訓練出大型的預訓練模型學到了的大量的知識,但是在下游任務上卻無法進行很好的使用。


         2. Probing Tuning 方法 


        圖片


        圍繞大型預訓練模型的知識使用,也有很多的研究,整體上被稱為 Probing。Probing 可以從預訓練模型中探索出句法結構、依存結構等,也可以從預訓練模型中探索出三元組等知識。但是,如何將預訓練模型中的知識,顯式地表示出來,并結合下游任務,目前的相關工作相對比較少,我們就在這方面提出了一種新的 Finetune 方式——Probing Tuning 方法。


        圖片


        如上圖所示,Prompt Tuning 方法是基于模板進行訓練,本質上是通過記憶表達的方式加上少量的數據,對模型進行微調。而我們提出的 Probing Tuning 方式,原始的問題通過預訓練模型得到稠密向量表達,并且,通過 Probing 的方式,獲取知識的結構表達,輸入到稠密向量表示中,對下游任務帶來提升。


        圖片


        如上圖所示,我們提出了一個框架——Proton Framework。首先,輸入預訓練模型的數據包含原始問題和表格對應的語句;另一方面,也包含了人類定義的規則的知識,不具有泛化性的知識;并且,通過 Proton 的方式,學習到知識的表達,并具有泛化性。


        圖片


        具體Probing的工作原理以上面的例子說明。


        問句為:“Where is the youngest teacher from?,表格數據為“SELECT hometown FROM teacher ORDER BY age ASC LIMIT 1”。原句抽取出表格數據中的名詞信息,“teacher,teacher.age, teacher.hometown”,組合成整體:“[CLS]Where is the youngest teacher from?[SEP] teacher,teacher.age,teacher.hometown”。然后進行隨機 MASK 某個單詞,比如“where”,然后計算該向量中“teacher.hometown”與原句向量的“teacher.hometown”距離,如果距離越遠,這說明“where”和“teacher.hometown”越相似,即學到相關的知識。如上圖的相關矩陣表示,“teacher.age”和“youngest”相關度有 0.83,非常的高,說明兩者有非常強的相關性。然后就可以構建 Proton 中的圖以及邊的權重等。


        以上即為 Probing 的整個過程,即將人工構建的知識和 Proton 學習到的知識,結合到預訓練模型中,用以提高下游任務的效果。


        圖片


        基于 Probing Tuning 的方法,在 Spider-DK 數據集上相比 SOTA 提升了 6.9%,在 Spider-SYN 數據集上相比 SOTA 提升 16%,效果提升非常明顯。


        總而言之,我們通過把預訓練模型學到的知識,進行探測,并且以結構化的方式,顯式的應用到下游模型中去,可以給具體的下游任務,帶來顯著的提升。


         3. 后續工作展望


        圖片


        Probing 技術可以帶著我們進行下一步探索,如何將預訓練模型中的知識,顯式地獲取出來。在此領域,AlphaZero 做了相關探索,如上圖左側,左右兩邊分別表示人和模型自動學習出來的向量空間,模型學到了一些人類從未有的棋譜,說明模型可以學到人類并不知道的一些知識。


        圖片


        我們今天先講了預訓練對話模型對于整個對話系統的重要性;其次,是知識在對話系統中的重要性?;谝陨蟽牲c,我們希望將知識和預訓練對話模型結合一起,具體的分為兩個工作:


        第一,如何將知識注入到預訓練對話模型,我們提出了一個半監督預訓練的模型——SPACE。


        第二,如何將預訓練對話模型中的知識顯式地提取和利用起來,我們提出了一個 Proton 的模型。


        05、Q&A 環節


        Q1:半監督預訓練模型的監督任務,是否需要和下游任務保持一致?比如說預訓練模型中的一些意圖分類任務?


        A1:現在所做的半監督預訓練,還是面向與下游任務的預訓練。即面向下游任務的半監督學習。當然,我們現在也在探索多任務的下游任務訓練,探索多任務之間是否可以加強相關的任務效果。


        Q2:Unified DA 是否考慮了無意義的語句等?


        A2:是有的,在分類里面,是存在有不理解/不懂的語句在里面的。


        Q3:Act 和 Intent 的區別是什么?


        A3:Intent 是一個具象的事情,和一個具體任務相關的,比如說,你要辦公積金,在這個場景,可以定義 5 個 Intent;在購買飛機****的場景,可以定義 10 個 Intent。這兩個場景的 Intent 之間基本上沒有關系。而 Act 是超越具體場景的,比如公積金和訂機****場景,可以定義共同的 Act,比如顯示澄清、隱式澄清等,都是和具體場景無關的。Act 和 Intent 都是對語義的表示,Intent 是具象層面的表示,Act 是抽象層面的表示。


        Q4:數據集都是英文的,后續是否考慮中文的一些探索嗎?


        A4:我們團隊是一個研究和業務共同并重的團隊,我們的中文和英文是同步做的,今天主要分享的是英文的模型,而中文的模型我們這邊是已經做好,并且在阿里云智能客服產品中全面落地應用,成為對話系統的基座,以意圖分類為例,基于 SPACE 的訓練樣本數據標注量降低了 70% 左右。今天只是分享我們最早期和最經典的工作,后續會分享中文相關的工作。


        Q5:SPACE 中,端到端的模型如何和 NLG 結合的?


        A5:端到端模型分為三個部分:理解、策略和生成。對于生成任務,是基于理解和策略的概率分布,即前面的 Act 預測準的話,后續的生成任務也會更準。


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



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 七台河市| 苗栗市| 尚志市| 海口市| 合山市| 定西市| 禄丰县| 德州市| 辽源市| 泸水县| 泽库县| 宣化县| 龙泉市| 宁德市| 恩平市| 扶风县| 邛崃市| 达日县| 金昌市| 天气| 贵德县| 葵青区| 东乡族自治县| 玉林市| 简阳市| 宾川县| 聊城市| 庆元县| 五家渠市| 观塘区| 浦城县| 明水县| 花莲市| 宁远县| 敦煌市| 磐石市| 郸城县| 巫山县| 巴楚县| 莒南县| 遵义县|