--------點選螢幕右側或者螢幕底部“+訂閱”,關注我,随時分享機器智能最新行業動态及技術幹貨----------
1. 背景
從本質上可以知道,語言就是一套邏輯符号,這意味着 NLP 處理的輸入是高度抽象并且離散的符号,它跳過了感覺的過程,而直接關注各種抽象概念,語義和邏輯推理。正是由于 NLP 涉及到高層語義、記憶、知識抽象以及邏輯推理等複雜的認知特性,導緻基于資料驅動和統計學習的深度學習模型在 NLP 領域遇到了比較大的瓶頸。可以不誇張的說,NLP 中複雜的認知特性已經完全超出了深度學習的能力邊界。那如何打破這個魔咒,突破深度學習的能力邊界,進而實作感覺智能到認知智能的關鍵跨越呢? 這正是本文需要探索的原因所在,可能的一條出路就是通過對非結構化的資料(如業務的資料,産品的資料,行業領域的資料)進行整合和知識蒸餾,進而變成結構化的業務知識,結構化産品的知識,結構化的行業領域知識,在這些結構化的知識的基礎上,再運用深度學習的模型進行推理,實作知識驅動,再進一步進階到基于推理的驅動,這樣就會形成結構化的知識推理引擎,進而提高整個智能系統的認知能力。那知識圖譜就是将非結構的資料進行提煉歸納成結構化的知識的基礎設施,圖神經網絡 GNN 就是在知識圖譜基礎設施上的推理模型。一句話概括就是:用不确定的眼光看待世界,再用确定的結構化知識來消除這種不确定性。
2.知識圖譜
在介紹知識圖譜之前,先得弄清楚什麼是知識?知識是從大量有意義的資料中歸納總結出來的,是從有意義資料中壓縮、提煉,進而形成有價值的規律。比如,天文學家日夜觀察各種行星的位置,及對應的時間,這些都是觀察的資料,但是牛頓從這些觀察的資料中發現了萬有引力定律,這就是知識。就像後來的天文學家運用牛頓的萬有引力定律這個有價值的知識,發現了更多的未知星體和宇宙的奧秘,知識也将大大的加強智能系統的認知能力,也将使智能系統走向更深的未知領域。知識圖譜就是對知識進行存儲,表示,抽取,融合,推理的基礎設施。
建設一個知識圖譜系統,需要包括:知識模組化、知識擷取、知識融合、知識存儲、知識模型挖掘和知識應用6大部分:
- 知識 schema 模組化:建構多層級知識體系,将抽象的知識、屬性、關聯關系等資訊,進行定義、組織、管理,轉化成現實的知識庫。
- 知識抽取:将不同來源、不同結構的資料轉化成圖譜資料,包括結構化資料、半結構化資料(解析)、知識标引、知識推理等,保障資料的有效性和完整性。
- 知識融合:由于知識圖譜中的知識來源廣泛,存在知識品質良莠不齊、來自不同資料源的知識重複、知識間的關聯不夠明确等問題,是以必須要進行知識的融合。知識融合是高層次的知識組織,使來自不同知識源的知識在同一架構規範下進行異構資料整合、消歧、加工、推理驗證、更新等步驟,達到資料、資訊、方法、經驗以及人的思想的融合,形成高品質的知識庫。
- 知識存儲:根據業務特點以及知識規模選擇合适的存儲方式将融合後的知識進行持久化儲存。
- 知識模型挖掘:知識的分布式表示學習,通過圖挖掘相關算法進行知識推理出新知識,關聯規則挖掘一些隐藏知識。
- 知識應用:為已建構知識圖譜提供圖譜檢索、知識計算、圖譜可視化等分析與應用能力。并提供各類知識運算的 API,包含圖譜基礎應用類、圖結構分析類、圖譜語義應用類、自然語言處理類、圖資料擷取類、圖譜統計類等等。
說這麼多知識圖譜的概念,可能這些概念有些抽象,這裡給出一個實際的關務 hscode 領域的知識圖譜的例子:
3.圖神經網絡 GNN
知識圖譜将按照歐式空間分布的的文本、圖檔、時間序列等資料進行歸納融合,提煉出了按照非歐空間的圖結構來存儲結構化知識。圖結構的複雜性對傳統的深度學習算法提出了重大挑戰,主要是因為非歐空間的圖結構資料是不規則的。每個圖都有無固定數量的節點,同時圖中的每個節點都有不同數量的鄰居節點,這就導緻傳統深度學習的卷積操作不能在圖結構上有效的計算。同時,傳統深度學習算法的一個核心假設是樣本執行個體彼此獨立,如兩張關于貓的圖檔是完全獨立的。然而,對于圖結構資料來說,情況并非如此,圖中的節點通過邊的連接配接資訊,使節點之間有機的組合起來,進而天然構造了功能強大的結構性 feature。另外,業界公認的傳統的深度學習的一大軟肋是無法有效的進行因果推理,隻能進行某種意義上的統計相關性推理,這就大大降低了智能系統的認知能力。針對上述傳統深度學習算法在圖結構資料和因果推理上的天然軟肋,業界最近興起了針對圖結構資料模組化和因果推理的新方向-圖神經網絡 GNN。
3.1 圖卷積網絡 GCN 基本原理
圖卷積神經網絡 GCN 是目前最重要的圖神經網絡,本文落地的圖神經網絡也是基于圖卷積神經網絡 GCN。圖卷積神經網絡 GCN 本質上是基于 Message-Passing 的資訊傳遞式的通用架構,是由多層的圖卷積操作組成,每一個圖卷積層僅處理一階鄰域資訊,通過疊加若幹圖卷積層可以實作多階鄰域的資訊傳遞。基于 Message-Passing 的圖神經網絡有以下三個基本公式構成:
對應的符号解釋如下:
幾乎所有的 GNN 模型的底層運作機制都是基于上述三個公式,隻不過不同的AGGREGATE,COMBINE,READOUT 的實作政策不同,導緻演化成了 GCN,GAT,GraphSAGE 等不同類型的圖神經網絡。
3.2 圖卷積網絡 GCN 的 AGGREGATE 計算方式
圖卷積網絡 GCN 中的 AGGREGATE 是将 GCN 的每一層通過鄰接矩陣 A 和特征向量 ,相乘得到每個頂點鄰居特征的彙總,然後再乘上一個參數矩陣 , 加上激活函數 σ,做一次非線性變換得到聚合鄰接頂點特征的矩陣 。基本公式如下:
1.
是圖卷積網絡 GCN 中第l層的特征向量,其中
是輸入特征。
2.
是圖卷積網絡 GCN 每一層的參數矩陣。
3.
是圖 Graph 的鄰接矩陣加上每個圖節點的自旋機關矩陣。
4.
是圖Graph鄰接矩陣
的度矩陣。
上面是一般 GCN 的 AGGREGATE 政策,但是這樣的 AGGREGATE 政策是的 transductive learning 的方式,需要把所有節點都參與訓練才能得到圖中節點的特征表示,無法快速得到新節點的特征表示。為了解決這個問題,參考文獻[1]中的 GraphSage 利用采樣(Sample)部分結點的方式進行學習,學習到 K 個聚合 AGGREGATE 函數,GraphSage的重點就放在了 AGGREGATE 函數的設計上。它可以是不帶參數的𝑚𝑎𝑥, 𝑚𝑒𝑎𝑛, 也可以是帶參數的如𝐿𝑆𝑇𝑀等神經網絡。下圖是參考文獻[1] GraphSage 的 AGGREGATE 函數的學習過程:
3.3 圖卷積網絡 GCN 的 COMBINE 計算方式
圖卷積網絡 GCN 中的 COMBINE 的計算方式一般就是将第k層節點通過 AGGREGATE 學到的向量和第 K-1 層已經學習到的節點向量進行 CONCAT,然後在 CONCAT後的向量加上一層神經網絡Dense層即可。GCN 中的 COMBINE 采用 concate 就是将兩個原始特征直接拼接,讓網絡去學習,在學習過程中确定最佳的方式去融合特征,這樣保證特征在融合過程中資訊不會損失。
3.4 圖卷積網絡 GCN 的 READOUT 計算方式
圖讀出操作(READOUT)就是用來生成整個圖表示的,綜合圖中所有節點的特征向量最終抽象出整體圖的特征表示。GCN的圖讀出操作目前有基于統計的方法與基于學習的方法兩種。
基于統計的方法
統計的方法實作圖讀出操作一般常用的是 sum,max,average 來求整個圖的抽象表示,這些統計的好處就是簡單,不給整體的圖神經網絡模型帶來額外的參數,但是 sum,max,average 帶來的不利因素也是顯然易見的,這些統計操作會對高維特征進行壓縮,使每一維上資料的分布特性被完全抹除了,帶來了資訊的損失比較大。
基于學習的方法
基于統計的方法的不足是無法參數化同時帶來資訊損失,這樣難以表示結點到圖向量的這個“複雜”過程。基于學習的方法就是希望用神經網絡來拟合這個過程。目前在參考文獻[2]來自斯坦福等大學的研究者提出了 DIFFPOOL,這是一個可以分層和端到端的方式應用于不同圖神經網絡的可微圖池化子產品,DIFFPOOL 可以有效的學習出整體圖的層級表征。DIFFPOOL 可以以非均勻的方式将節點坍縮(collapse)成軟簇,并且傾向于将密集連接配接的子圖坍縮成簇。因為 GNN 可以有效地在密集的、類似團的子圖(直徑較小)上傳遞資訊,是以在這樣密集的子圖上池化所有節點不太可能會損失結構資訊。一句話概括,DIFFPOOL 不希望圖中各個結點一次性得到整體圖的向量表示,而是希望通過一個逐漸壓縮資訊的過程,來得到最終圖的表示,如參考文獻[2]下圖所示:
研究者通過可視化圖神經網絡不同層的簇配置設定研究了
DIFFPOOL 學習有意義節點簇的程度。參考文獻[2]中的 DIFFPOOL 的層級聚合分布的圖展示了一個來自
COLLAB 資料集的圖形在第一層和第二層節點配置設定的可視化圖,圖中節點顔色表示屬于哪個聚合簇。
4.基于知識圖譜的圖神經網絡在 hscode 産品歸類中的落地
hscode 是《商品名稱及編碼協調制度》的簡稱。編碼協調制度由國際海關理事會制定,英文名稱為 The Harmonization System Code (HS-Code),是對各種不同産品出入境應征/應退關稅稅率進行量化管理的制度。hscode 是各國海關、商品出入境管理機構确認商品類别、進行商品分類管理、稽核關稅标準、檢驗商品品質名額的科學系統的國際貿易商品分類體系。 hscode 總共 22 大類 98 章,前 6 位編碼國際通用,後面的編碼由各國/地區根據實際情況自行擴充,我國海關現行的是 10 位海關編碼。hscode 歸類是一個非常特殊的 NLP 場景,在一般的NLP場景中如果根據文本語義比對在 top3 能召回的話,那表明 NLP 的效果處理的還不錯。但是由于 hscode 歸類在通關過程中具有确定匯率,确定監管條件等等關鍵作用,導緻了 hscode 需要更嚴的準确率,這也是和其他業務場景産品歸類最大不同的地方,必須確定 top1 的準确性。舉個具體的例子,大家可能更有體感一些。
通過上面的例子,我們發現從傳統 NLP 文本語義相似度上來說,上面幾條文本的語義比對相似度非常高,但是 hscode 需要根據不同的申報要素(例如上圖中的"是否液态要素","額定容量")的具體業務知識來進行精細化推理才能得出正确的 hscode。
4.1 基于傳統深度學習的 NLP 模型在 hscode 歸類中的瓶頸
在 hscode 歸類中,基于傳統深度學習的 NLP 模型架構圖如下:
傳統深度學習的 NLP 模型主要包括以下幾部分:
- 計算 hscode 質點向量:基于詞向量平均池化的kmeans 聚類算法計算hscode質點向量, hscode 的向量表達能力和抗幹擾能力。
- hscode 層級分類器:通過兩層的層級分類器先進行粗排,選出候選的 hscode。
- 細排階段的語義推理:基于 hscode 産品歸類領域特定的知識形态最終選擇了基于 BiLSTM + Attention 的 Encoder-Decoder 語義推理模型。
基于傳統深度學習的 NLP 模型已經線上上 hscode 歸類場景中運作了,通過業務同學對線上真實客戶原始送出的歸類樣本 2223 條進行評估,以下準确率為:算法預測 HsCode top1 的準确率,結果如下:
未修改:業務稽核小二對客戶原始輸入資訊沒有做任何改動。
編碼品名未修改:業務對品名未修改,但是修改了商品其他歸類申報要素屬性。
其他修改:其他修改的情況比較複雜,由于 hscode 歸類本身是個很複雜專業的領域,客戶原始送出的資訊不能滿足海關申報的規範,業務小二需要對客戶原始送出的資訊進行修改。
評估結果詳細分析:由于基于傳統深度學習 NLP 模型的訓練資料都是來自業務小二稽核後的規範樣本上進行訓練,這就可以看出在客戶原始輸入資訊未修改那部分,傳統深度學習 NLP 模型的準确率和算法測試集上的準确率差相差不多為 89.3%,同時在品名未修改,但是其他歸類要素修改了的情況,傳統深度學習 NLP 模型的準确率在 87.7%,證明了傳統深度學習 NLP 模型有一定程度上的泛化性。但是在第三種其他修改情況,即客戶原始送出資訊不滿足海關規範,傳統的深度學習 NLP 模型的準确率隻有 17.3%。這樣在總體樣本上的準确率隻有59.3%(計算公式為:0.31 X 89.3% + 0.28 X 87.7% + 0.41 X 17.3% = 59.3%)。
通過上面的分析我們發現,傳統深度學習NLP模型在第三種其他修改情況(客戶原始送出的資訊不能滿足海關申報的規範)下,準确率非常低,我們對第三種其他修改情況下的具體 badcase 進行了一定的拆解,主要原因如下:
- 申報要素不缺失,但是客戶輸入的具體申報要素值那些不規範,這種不規範如下:客戶原始輸入是行業術語"來令片"(其實是摩擦片),然而在 nlp 語料裡沒有這些行業領域知識,故傳統深度 NLP 模型無法解決這些 case。
- 申報要素不缺失,但是由于申報要素值需要進行一些邏輯計算,如 客戶輸入"含棉 75%,羊毛 10%,纖維 15%",而當棉的成分 <60% 是 hscode A,含棉成分 >60% 是 hscode B,這種有邏輯計算的 nlp 問題,傳統的深度 NLP 模型也無法解決這些 case。
- 申報要素使用者輸入過多,帶來太多的噪聲。傳統深度 NLP 模型不能有效抓取核心申報要素的結構性資訊,容易被多餘的噪聲帶偏。
- hscode 體系中有太多了其他,除非等托底編碼,就是除了 hscode A、hscode B、hscode C 以外的情況都是 hscode D,這種估計也需要一定的推理才能解決這個問題。
- 申報要素缺失,客戶沒有輸入完整的 hscode 申報要素,進而導緻不能正确歸類。這個估計任何模型都無效。
上面的第 1 點和第 2 點是缺少結構化知識用于模型推理,第 3,4 點是不能有效的抓取結構化的特征進行因果邏輯推理,是以我們落地了基于知識圖譜的 GCN 模型來嘗試解決上述的問題。
4.2 hscode 歸類場景中知識圖譜的知識 schema 模組化
知識圖譜的中繼資料 schema 資訊定義非常重要。設計之初要既考慮本體之間的關系,還要考慮本體 schema次元變化。hscode 産品歸類知識引擎的 schema 如下:
4.3 基于知識圖譜的 GCN 模型的整體算法架構
- 在 hscode 領域,底層知識圖譜的建構的實體是品名,具體申報要素值,申報要素對應行業領域的屬性值,圖譜中的邊是不同申報要素的 key,這樣底層的圖結構是個不同關系邊組成的異構圖。同時由于同一個商品,申報要素值的不同會導緻對應不同的 hscode(label),是以這裡 hscode(label)會标記在以品名,申報要素值建構的子圖上,以這樣的子圖作為預測的實體節點。
- 在 hscode 領域,知識圖譜的每個實體節點存儲的是經過向量平均池化後的 word2vec 語義向量,這樣也使這個圖譜具有語義泛化性,這和以前每個知識圖譜每個節點存儲在以字面文本為主的實體有所不同。
- 在 hscode 領域,存儲在知識圖譜中的結構性知識需要經過圖中節點文本語義特征,圖中不同邊的特征,圖的結構特征等一起融合轉化成 GCN 模型的 embeding 輸入層。
- 在 hscode 領域,圖神經網絡的鄰居節點的聚合機制如下:
具體的 AGG 政策如下:
4.5 落地效果
從 4.1 的詳細分析可以看到基于傳統深度學習的 NLP模型在 hscode 線上的準确率為:準确率隻有 59.3%(計算公式為:0.31 X 89.3% + 0.28 X 87.7% + 0.41 X 17.3% = 59.3%)。基于知識圖譜的GCN模型取了2017-01-01 到 2020-01-08之間的所有客戶原始送出資料進行訓練,另取了 2020-01-09 到 2020-01-12 的 5687 條線上真實的客戶原始送出的資料作為測試資料,業務評估的結果是:基于知識圖譜的 GCN 模型的準确率到達了 76%,相比以前傳統深度學習的NLP模型準确率提升了 16.7% ,證明了基于知識圖譜的 GCN 模型具有更好的容錯性。
5.實驗
目前設立了 2 種對比實驗,對比的名額是在測試集上的準确率。1 種是圖神經網絡 GCN 的圖 level READOUT 政策 sum 和 average 的對比,2 種是底層知識圖譜的圖結構做一些改變,一種是較簡單的星形結構,另一種是複雜的圖結構。
-
圖神經網絡 GCN 的圖 level READOUT 政策 sum 和 average 的對比
在保持知識圖譜的 GCN 模型其他參數不變的情況下,将 GCN 的圖 level READOUT 政策由 sum 改成 average,觀察在測試樣本上的準确率:
-
底層知識圖譜的圖結構做一些改變,一種是較簡單的星形結構,另一種是複雜的圖結構
在保持知識圖譜的 GCN 模型的參數都相同的情況下,将底層的知識圖譜的存儲結構一種是簡單的星形結構,即隻有品名-申報要素發生邊的關聯,申報要素之間不産生邊的關系,另一種知識圖譜的存儲結構是複雜的圖結構,除了品名和申報要素産生邊的關聯,敏感申報要素之間也産生邊的關系,屬性值和申報要素之間同樣産生邊的關聯。
通過實驗可以發現,知識圖譜的底層結構化知識越豐富,基于知識圖譜的 GCN 模型的準确率有會有相應的提升。改變整個圖神經網絡模型的 READOUT 政策對模型的準确率提升也一定的幫助。接下來會進一步做更多的實驗,來充分挖掘基于知識圖譜的 GCN 模型在 NLP 中的潛力。
6.未來思考
1、在很多業務領域,人工梳理了大量的業務規則知識,這些異構的規則知識如何抽取融合進知識圖譜,進一步提升知識圖譜的結構化的推理能力。業務梳理的多階邏輯規則,如何用圖譜進行存儲。業務梳理的人工規則類似于規則樹組織形式,将與、或、非等原子邏輯命題有機的組織在一起,這裡如何将業務梳理的多階邏輯規則樹,抽象出實體和關系,進而轉化成圖譜結構,也是個未來需要攻堅的難題。
2、規則如何與圖神經網絡進行有效的融合。比如 hscode 領域還沉澱了大量的人工規則,這些規則是寶貴的知識财富,這些規則如果作為 teacher-network,去指導 hscode 歸類任務這個 student-network,将能大大的提升 hscode 領域的精确性。規則這個 teacher-network 相當于起到指導和限制作用,在規則 teacher-network 學習出的各個規則的限制子空間更利于語義推理。這裡規則如何轉化成 teacher-network,進而與知識圖譜的圖神經網絡結合也是一個重要的優化方向。
3、目前的知識圖譜還主要是基于文本建構的,真正完善的知識圖譜應該是個多模态的結構化知識,比如除了文本,還應該有圖檔,語音等多模态資訊,隻有多模态的結構化知識,才能進一步推動整個智能系統的認知能力。
參考文獻
[1]Inductive Representation Learning on Large Graphs,
https://arxiv.org/abs/1706.02216[2]Hierarchical Graph Representation Learning with Differentiable Pooling,
https://arxiv.org/abs/1806.08804[3]
https://www.cnblogs.com/SivilTaram/p/graph_neural_network_3.html[4]
https://zhuanlan.zhihu.com/p/68064309[5]
https://zhuanlan.zhihu.com/p/37057052原文連結:
https://developer.aliyun.com/article/751563