【NLP】NLP任务增强:通过引入外部知识来提供额外信息
作者?|?夜小白?
整理?|?NewBeeNLP
0、前言
NLP任務中,常見的做法是根據「當前輸入」進行建模,進而設計出我們的模型,通常用到的信息只有「當前局部的信息」。
這和人類最大的區別就是我們在理解語言的時候,我們會用到我們之前學習到的知識,比如說到“自然語言處理”,我們就可以聯想到“文本匹配”、“閱讀理解”、“BERT”等等,而我們會利用這些外部知識來加強自己的理解,如果沒有用額外的知識,比如接觸到我們一個不熟悉的領域,我們也很難完全理解語義。而目前NLP常見做法只利用了輸入信息,沒用利用外部知識,理解層次偏低,舉個例子,文本匹配任務中:
| 「新冠肺炎」可以通過完好的皮膚傳播嗎 | 「新型肺炎」會通過皮膚傳播嗎 |
| 「IPhone手機」多少錢 | 「IPhone手機殼」多少錢 |
一般的文本匹配模型很容易誤判上面Query-title為匹配,因為上述Query-title文本字面組成非常相似,比如「新冠肺炎」和「新型肺炎」,「IPhone手機」和「IPhone手機殼」的embedding可能非常相似,導致模型計算出來的相似度很高,其中一個原因就是因為模型沒有先驗知識,并不知道「IPhone手機」和「IPhone手機殼」是兩個不同的東西,如果能在模型中引入外部知識,讓模型提前了解「IPhone手機」和「IPhone手機殼」的概念,那么就提高的模型的理解層次,也能提高任務效果。
現在知識圖譜,圖卷積神經網絡也是非常熱門,知識圖譜作為一個常用的外部知識庫,有很多工作都在研究如何將其引入各種NLP任務進行知識增強,最近也是看了幾篇論文,在這里做一下總結。
1、當推薦系統遇上知識圖譜
「(RippleNet)」 RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems. Proceedings of the 27th ACM International Conference on Information and Knowledge Management..[PDF][1]
這篇論文在推薦系統的排序任務上引入了知識圖譜的信息進行任務增強,主要是從下面三個方面考慮:
知識圖譜可以引入各個Item之間的語義相關性,有助于找到潛在的聯系,從而提高推薦的準確性
知識圖譜還可以通過類型關系,來合理擴展用戶的興趣,增加推薦項目的多樣性
知識圖譜還可以連接用戶的歷史記錄和推薦記錄,從而解決推薦系統冷啟動問題,并且可解釋性好
從上面可以看出,通過知識圖譜我們可以推理出用戶看過電影的導演、或者類型,并且可以進一步得到同導演或者同類型的電影,從而對用戶進行推薦。
模型結構
論文中提出的RippleNet結構如上圖所示,之所以叫Ripple是因為信息在知識圖譜上的傳播就像雨滴落在水面形成的Ripple,每次都會往外傳播一層,并且越外部的信息作用越小。整個模型輸入為用戶 和物品 ,輸出為用戶點擊該物品的概率。
RippleNet運算過程如下:
選取用戶點擊歷史為「知識圖譜中的種子」,作為知識圖譜的初始三元組集合Ripple Set,這一步主要是利用用戶歷史信息來進行任務增強
每一步(Hop)會先根據Item embedding 和Ripple Set(其實就是知識圖譜中的三元組集合)來計算得到這一部的隱層表示輸出 ,計算方法類似于attention(加權平均),通過這種方式相當于在知識圖譜上進行了知識推理,比如從用戶歷史The Green Mile我們推理到了導演為Steven Spielberg,進而推理出同樣導演的電影Raiders of the Lost Ark,這樣的話我們就利用到了外部知識,通過三元組之間的關系來增強任務
最后就是信息的融合,將每步推理得到的隱層輸出表示 相加,作為用戶最終 embedding ,然后與物品 embedding 計算得到最終的點擊概率(比如說余弦相似度)
引入知識方法
從上面的分析可以看出,RippleNet中引入外部知識的做法主要「通過用戶歷史信息建立Ripple Set,也就是對應到知識圖譜中的節點,并且在每一步都會傳播到相鄰節點并計算隱層表示輸出」 ,計算方法類似于attention(其中query為上一層的輸出,key和value為當前的Ripple Set中的實體embedding ),具體的計算公式有興趣的話可以看論文。
2、當文本匹配遇上知識圖譜
Entity-Duet Neural Ranking: Understanding the Role of Knowledge Graph Semantics in Neural Information Retrieval. ACL. [PDF][2]
從前言的例子可以看出,文本匹配中如果我們能夠引入實體的外部信息,就能夠很好的幫助模型實現更高層次的語義理解,而這篇論文正是將CN-DBpedia構建的知識圖譜作為外部知識庫,為模型引入額外的實體特征從而進行任務增強。
模型結構
圖中的Enriched-entity Embedding即是引入的外部實體信息,通過原始的word embedding與引入的Enriched-entity Embedding矩陣進行交互從而計算出最后的score。Enriched-entity Embedding則由Entity Embedding、Description Embedding以及Type Embedding信息融合得到,計算方法如下:
「Entity Embedding」:,從預訓練好的知識圖譜embedding獲取(比如TransE)
「Description Embedding」:從實體的描述信息中獲取embedding,首先用CNN對實體描述進行n-gram卷積:
之后使用max-pool獲得 Description Embedding:
「Type Embedding」:每個實體可以是多種種類,論文中采用了attention的方式來獲得Type Embedding,首先是通過type embedding 層獲得各個種類embedding
之后通過attention計算得到最后的Type Embedding
attention score 計算方式如下:
最后Enriched-entity Embedding則由Entity Embedding、Description Embedding以及Type Embedding進行信息融合計算得到:
引入知識方法
Entity-Duet Neural Ranking Model 引入外部知識的方式是將文本匹配任務中的輸入Query和Document實體在知識圖譜中的embedding作為額外的監督信息添加到模型中,不僅用到了實體自身embedding,還用到了實體描述(description)的embedding信息,以及實體種類(Type)的embedding信息,這樣的話模型可以理解實體的具體含義,而不是停留在字面上的理解,比如「IPhone手機」和「IPhone手機殼」這樣的概念,通過引入知識圖譜信息就可以很好解決。
3、當預訓練模型遇上知識圖譜
ERNIE: Enhanced Language Representation with Informative Entities. ArXiv, abs/1905.07129.[PDF][3]
最后要介紹的是在BERT預訓練中引入外部知識庫,ERNIE這篇論文中使用維基百科語料庫進行預訓練,并且使用語料中的 Anchor Link 來獲取實體,通過 Wikidata 訓練出的 TransE向量作為實體的特征,輸入BERT模型中預訓練作為額外的監督,通過這種方式可以大大提高在 Entity Typing 和 Relation Classification 任務上的效果。
模型結構
ERNIE中修改了BERT中的Encoder為Knowledge-Encoder,從圖上可以看出,輸入除了原始的句子tokens之外,還有實體tokens,簡單說下每個K-Encoder的計算步驟:
首先是input token 和 entity token自己的multi-head self-attentions(就是標準的MH-ATTs)
之后進行aggregate操作,將input tokens與entity tokens進行信息融合,得到這一層的embedding輸入,也是下一層的embedding輸入
引入知識方法
ERNIE中修改的BERT原始Encoder結構,額外加入了entity embedding輸入,并且使用了TransE作為初始輸入,通過這種方式,就可以在預訓練中引入大量的外部知識,提高下游任務的效果。實驗表明在Entity Typing和Relation Classification上取的了很好的效果。
總結
在NLP任務中引入外部知識是一個很好的任務增強方式,帶著先驗知識進行推理,也正符合人類思考的習慣,從上面總結可以看出,目前利用外部知識庫的主要方式都是引入知識圖譜中的實體信息。更具體一點,引入實體各種embedding 信息作為模型的額外輸入,我在想知識圖譜作為一個有結構的圖,是不是可以用上知識庫中的結構信息呢?我下面說下自己的幾點思考:
將文字表達轉換為圖結構,然后在知識圖譜中進行匹配,這樣的話可以更好地利用圖的結構信息,比如推理路徑,也可以使模型更具有可解釋性
引入GNN,在圖上進行推理,提高語義理解的層次
目前只是將自己學到的引入外部知識的方法做了個小結,應該已經有很多研究嘗試將各種知識庫引入NLP任務來提供額外信息,以后有機會再詳細總結一下啦~
一起交流
想和你一起學習進步!『NewBeeNLP』目前已經建立了多個不同方向交流群(機器學習 / 深度學習 / 自然語言處理 / 搜索推薦 / 圖網絡 / 面試交流 /?等),名額有限,趕緊添加下方微信加入一起討論交流吧!(注意一定要備注信息才能通過)
本文參考資料
[1]
[PDF]: http://dl.acm.org/doi/10.1145/3269206.3271739
[2][PDF]: https://arxiv.org/pdf/1805.07591.pdf
[3][PDF]: https://arxiv.org/pdf/1905.07129.pdf
-?END?-
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【NLP】NLP任务增强:通过引入外部知识来提供额外信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10开机密码忘记了的解锁教程
- 下一篇: 搜狐视频如何开启青少年模式