|
本文從經(jīng)典算法開始介紹了知識圖譜中結(jié)點(diǎn)的嵌入表示,學(xué)習(xí)嵌入的過程及各類屬性,探索了PGB在知識圖譜表示中的表現(xiàn)和作用。
機(jī)器學(xué)習(xí)使我們能夠訓(xùn)練模型,模型可以將數(shù)據(jù)轉(zhuǎn)換為標(biāo)簽,使類似的數(shù)據(jù)映射到相似或相同的標(biāo)簽。 例如,我們正在為電子郵件消息構(gòu)建垃圾郵件過濾器。我們有很多電子郵件,其中一些標(biāo)記為垃圾郵件,一些標(biāo)記為收件箱。我們可以構(gòu)建一個模型,學(xué)習(xí)識別垃圾郵件。要標(biāo)記為垃圾郵件的消息在某種程度上類似于已標(biāo)記為垃圾郵件的消息。 相似性的概念對機(jī)器學(xué)習(xí)至關(guān)重要。在現(xiàn)實(shí)世界中,相似的概念是非常具體的主題,它取決于我們的知識。 另一方面,大多數(shù)數(shù)學(xué)模型假設(shè)定義了相似性的概念。通常,我們將數(shù)據(jù)表示為多維向量并測量向量之間的距離。
特征工程是將我們關(guān)于現(xiàn)實(shí)世界對象的知識轉(zhuǎn)換為這些對象的數(shù)字表示的過程。我們認(rèn)為相似的對象表示為附近的向量。 例如,我們正在估算房價。我們的經(jīng)驗(yàn)告訴我們,房子的定義是由臥室的數(shù)目,浴室的數(shù)目,年齡,平方。地點(diǎn)等位于同一社區(qū)、大小和年齡相似的房屋,其價格應(yīng)大致相同。我們把對住房市場的了解轉(zhuǎn)化為描述房屋的數(shù)字,并利用它來估計(jì)房屋的價格。 遺憾的是,如上所述,手動特征工程在我們將知識轉(zhuǎn)換為描述性特征方面具有局限性。 有時,知識僅限于相似性原則,而不是使對象相似的確切特征。通常,我們對現(xiàn)實(shí)世界的了解比以簡單的表格格式表示的要復(fù)雜得多。它通常是相互關(guān)聯(lián)的概念和關(guān)系的圖表。 嵌入模型允許我們獲取原始數(shù)據(jù)并根據(jù)我們對原理的了解自動將其轉(zhuǎn)換為特征。 Word2Vec可能是最著名的嵌入模型,它為單詞構(gòu)建相似性向量。在這種情況下,我們對世界的認(rèn)識以敘事的形式呈現(xiàn),其表示為文本,是文本的序列。 經(jīng)過幾十年的努力,人們試圖用手工定義的特征來描述單詞,但效果有限。這些解決方案通常無法擴(kuò)展到全部知識,或僅在有限的情況下發(fā)揮作用。 當(dāng)Tomas Mikolov和他的Google團(tuán)隊(duì)決定建立一個基于眾所周知的相似原則的模型時,一切都發(fā)生了變化。在類似的上下文中使用的詞通常是相似的,在這種情況下,上下文由位于附近的單詞定義。
我們所看到的是,考慮到這些原則,我們可以通過簡單地將每個單詞與其鄰居在預(yù)定義窗口(通常為5個單詞)內(nèi)連接起來,從文本中構(gòu)建圖形。 現(xiàn)在我們有一個基于我們的知識連接到圖形中的真實(shí)單詞對象(單詞)的圖形。 我們?nèi)匀粺o法構(gòu)建任何模型,因?yàn)閱卧~不以表格或向量表示。 如果我們只需要將單詞轉(zhuǎn)換為數(shù)字,那么就有一個簡單的解決方案。讓我們拿字典并將每個單詞分配給字典中的位置。 例如,如果我有三個詞:貓,毛毛蟲,小貓。 我的矢量表示如下:cat- [1],caterpillar- [2]和kitten- [3]。 不幸的是,這沒什么用。通過分配這樣的數(shù)字,我們隱含地引入了單詞之間的距離。貓和毛蟲之間的距離是1,貓和小貓之間的距離是2.我們說貓更像毛毛蟲而不是小貓,這與我們的知識相矛盾。 有一種替代的表示,也稱為one-hot編碼執(zhí)行此操作: 貓 - [1,0,0] 毛毛蟲 - [0,1,0] 小貓 - [0,0,1] 該模式表明所有單詞彼此正交。我們承認(rèn)沒有先入為主的詞語相似性概念。我們將依賴我們的知識圖譜(如上所述),它結(jié)合了我們的詞匯相似原則來構(gòu)建嵌入。 在現(xiàn)實(shí)世界中,字典大小遠(yuǎn)遠(yuǎn)大于3。典型的維度從數(shù)萬到數(shù)百萬。不僅這些矢量并不真正代表我們的相似概念,而且這些矢量也非常龐大笨重,不能在實(shí)踐中真正使用。 我們的知識圖譜為我們提供了大量的圖形邊,每條邊可以解釋為輸入數(shù)據(jù)作為邊的起點(diǎn),標(biāo)簽作為邊的末端。我們正在建立一個模型,它試圖用它周圍的單詞作為標(biāo)簽來預(yù)測這個詞。 我們要么從它的鄰居之和重建單詞向量,要么通過嘗試從單詞中預(yù)測鄰居來做相反的事情。 https://papers./paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf 從根本上說,上述模型使用基本的編碼器/解碼器模型來學(xué)習(xí)從高維空間(數(shù)百萬維度)到有限維度空間(通常為300)并返回高維空間的投影。訓(xùn)練的目標(biāo)是在壓縮過程中盡可能多地保留信息(最小化交叉熵)。
這種從稀疏正交數(shù)據(jù)集學(xué)習(xí)低維投影到更密集的低維空間的概念是許多其他嵌入訓(xùn)練模型的基礎(chǔ)。 該模型通常在google crawl,twitter dataset或Wikipedia等資源上進(jìn)行訓(xùn)練。我們正在消耗知識并從中構(gòu)建我們的詞匯嵌入。 Word2Vec的重要屬性是保持關(guān)系和揭示結(jié)構(gòu)等價的能力。 下圖顯示了國家和首都之間的聯(lián)系,
基本上它允許對這樣的單詞進(jìn)行代數(shù)運(yùn)算: 國王 - 男人+女人=女王。 Word嵌入大大改善了文本分類,命名實(shí)體識別,機(jī)器翻譯等任務(wù)。 以下是更多信息:http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/ Node2Vec是由A. Grover和J. Leskovec撰寫的模型,它通過擴(kuò)展Word2Vec的思想來分析同質(zhì)加權(quán)圖。本文背后的想法是,我們可以通過探索其周圍環(huán)境來表征圖形節(jié)點(diǎn)。我們對世界的理解基于兩個原則 - 同質(zhì)性和結(jié)構(gòu)等價性。 類似的節(jié)點(diǎn)位于附近。 例子:
不同的社區(qū)共享相同的結(jié)構(gòu):
為了將這兩個原則融入我們的嵌入表示中,Node2Vec論文的作者提出了一種隨機(jī)游走方法,結(jié)合廣度優(yōu)先采樣來捕獲同質(zhì)性和深度優(yōu)先采樣以捕獲結(jié)構(gòu)等價性。 我們可以看到,節(jié)點(diǎn)(u)充當(dāng)組內(nèi)的中心(s1,s2,s3,s4),類似于s6是(s7,s5,s8,s9)的中心。我們通過BFS發(fā)現(xiàn)(s1,s2,s3,s4)社區(qū),并通過DFS發(fā)現(xiàn)(u)< - >(s6)相似性。 我們通過探索周圍環(huán)境來了解每個節(jié)點(diǎn)。這種探索將圖形轉(zhuǎn)換為由隨機(jī)游走產(chǎn)生的大量序列(句子),其結(jié)合了BFS和DFS探索。BFS和DFS混合由圖形邊的權(quán)重以及模型的超參數(shù)控制。 一旦我們擁有完整的序列(句子),我們就可以像應(yīng)用于文本一樣應(yīng)用Word2Vec方法。它產(chǎn)生的圖形節(jié)點(diǎn)嵌入,是基于我們定義的原則以及圖的知識。 Node2Vec表示改進(jìn)了用于節(jié)點(diǎn)的聚類和分類的模型。嵌入的學(xué)習(xí)相似性將有助于欺詐檢測等任務(wù)。
Node2vec顯示了連接預(yù)測方面的顯著改進(jìn)。它能夠提高重建圖形的能力,其中一些邊被刪除。本文還對連接預(yù)測評價過程進(jìn)行了深入的探討。 下面我們將討論P(yáng)YTORCH-BIGGRAPH:一個大型圖譜嵌入系統(tǒng)(PBG)。 知識圖譜是特殊類型的圖,它包含已知實(shí)體以及不同類型的邊,它代表結(jié)構(gòu)知識。 在知識圖譜中,節(jié)點(diǎn)通過不同類型的關(guān)系連接。
訓(xùn)練的目標(biāo)是生成代表我們知識的嵌入表示。一旦我們有了節(jié)點(diǎn)的嵌入,就應(yīng)該很容易通過特定的關(guān)系類型確定相應(yīng)的節(jié)點(diǎn)是否在我們的知識圖譜中有連接(或應(yīng)該連接)。 不同的模型提出了比較嵌入矢量的不同方法。最簡單的模型使用余弦或矢量乘積距離比較嵌入矢量。更復(fù)雜的模型在比較之前對矢量的元素應(yīng)用不同的加權(quán)方案。加權(quán)方案表示為矩陣,具體到特定的關(guān)系類型。作為訓(xùn)練的一部分,我們可以學(xué)習(xí)加權(quán)矩陣。 https://www./doc/2019/71.pdf 我們需要找到一種方法來測量邊之間的相似性得分,并使用此分?jǐn)?shù)來估計(jì)這些節(jié)點(diǎn)連接的可能性。 知識圖譜可以表示為鄰接張量。為了構(gòu)建它,我們將為每種類型的關(guān)系提供一個方陣。每個矩陣具有與圖中的節(jié)點(diǎn)一樣多的列或行。矩陣的值為1,這些節(jié)點(diǎn)中有1個是通過這種關(guān)系連接的,如果沒有,則為0。很明顯,這個矩陣將非常大,非常稀疏。 要學(xué)習(xí)我們的嵌入表示,我們需要將每個節(jié)點(diǎn)轉(zhuǎn)換為固定大小的向量。我們來討論討論“好”嵌入的屬性。 好的嵌入代表了我們以圖譜邊的形式表達(dá)的知識。位于“附近”的嵌入向量應(yīng)代表更可能連接的節(jié)點(diǎn)。基于這種觀察,我們將以這樣的方式訓(xùn)練我們的模型:在鄰接張量中標(biāo)記為1的連接節(jié)點(diǎn)的相似性得分將更高并且在鄰接張量中標(biāo)記為0的連接節(jié)點(diǎn)的相似性得分將更低。
我們正在訓(xùn)練嵌入表示,以便從節(jié)點(diǎn)嵌入中重建知識圖譜的邊,同時最小化信息損失。 我們的訓(xùn)練方法有點(diǎn)問題。我們正在嘗試使用圖數(shù)據(jù)來區(qū)分1(節(jié)點(diǎn)已連接)和0(節(jié)點(diǎn)未連接)。然而,我們實(shí)際擁有的唯一數(shù)據(jù)是連接的節(jié)點(diǎn)。這就像通過只看貓來學(xué)習(xí)區(qū)分貓和狗。 負(fù)抽樣是一種擴(kuò)展我們的數(shù)據(jù)集并通過非常簡單的觀察提供更好的訓(xùn)練數(shù)據(jù)的技術(shù)。任何隨機(jī)選擇的節(jié)點(diǎn)(未作為圖的一部分連接)將代表標(biāo)簽為0的樣本數(shù)據(jù)。出于訓(xùn)練目的,PBG論文建議讀取圖的每個邊,然后提出負(fù)樣本,其中一個用隨機(jī)選擇的節(jié)點(diǎn)來替換。 對于每個邊,我們可以指定正相似度得分和負(fù)相似度得分。基于節(jié)點(diǎn)嵌入和邊關(guān)系類型權(quán)重計(jì)算正相似度。負(fù)相似度的計(jì)算方法相同,但邊的一個節(jié)點(diǎn)被破壞,并被隨機(jī)節(jié)點(diǎn)替換。 排序損失函數(shù)將在訓(xùn)練期間進(jìn)行優(yōu)化。它是為了在圖中的所有節(jié)點(diǎn)和所有關(guān)系類型的正、負(fù)相似度之間建立一個可配置的邊界。排序損失是節(jié)點(diǎn)嵌入和特定關(guān)系權(quán)重的函數(shù),通過尋找最小排序損失來學(xué)習(xí)。 現(xiàn)在我們擁有訓(xùn)練嵌入模型所需的一切:
現(xiàn)在,使用微積分來找到參數(shù) - 嵌入,優(yōu)化我們的損失函數(shù)。 隨機(jī)梯度下降的本質(zhì)是逐漸調(diào)整損失函數(shù)的參數(shù),使損失函數(shù)逐漸減小。為此,我們以小批量讀取數(shù)據(jù),使用每個批次來計(jì)算損失函數(shù)參數(shù)的更新以最小化它。 有多種方法可以進(jìn)行隨機(jī)梯度下降。PB論文使用ADAGrad,它是隨機(jī)梯度下降的一種類型,可以找到參數(shù)從而最大限度地減少損失函數(shù)。我強(qiáng)烈推薦大家閱讀這個博客了解所有梯度下降的類型: http://ruder.io/optimizing-gradient-descent/index.html#adagrad 像tensorflow和pytorch這樣的軟件包提供了不同類型的實(shí)現(xiàn)。 梯度下降的關(guān)鍵因素是多次更新模型參數(shù)的過程,直到我們最小化損失函數(shù)。在訓(xùn)練結(jié)束時,我們希望擁有嵌入和評分功能,以滿足我們的知識整合目標(biāo)。 隨機(jī)梯度下降分布是一個挑戰(zhàn)。如果我們通過調(diào)整參數(shù)來同時訓(xùn)練以最小化損失函數(shù),則需要某種鎖定(Locking)機(jī)制。在傳統(tǒng)的多線程開發(fā)中,我們通過悲觀或樂觀方式來鎖定更新期間的數(shù)據(jù)。鎖定會減慢進(jìn)度,但會確保結(jié)果的正確性。 幸運(yùn)的是,hogwild論文證明我們不需要鎖定機(jī)制。我們可以簡單地批量讀取數(shù)據(jù),計(jì)算參數(shù)調(diào)整,只需將它們保存在共享參數(shù)空間中,而不考慮正確性。HogWild算法就是這樣做的。可以分布式訓(xùn)練,每個HogWild線程都可以更新我們的參數(shù),而無需考慮其他線程。 我推薦閱讀這個博客來獲取有關(guān)HogWild的更多信息: https://medium.com/@krishna_srd/parallel-machine-learning-with-hogwild-f945ad7e48a4 當(dāng)圖跨越數(shù)十億個節(jié)點(diǎn)和數(shù)萬億個邊時,很難將所有參數(shù)都放在一臺機(jī)器的內(nèi)存中。如果我們在開始另一批次之前等待每批次結(jié)束完成計(jì)算,也需要花費(fèi)很多時間。我們的圖譜非常大,能夠并行訓(xùn)練并同時學(xué)習(xí)參數(shù)是相當(dāng)有用的。Facebook團(tuán)隊(duì)發(fā)布了PBG論文,解決了這個問題。 節(jié)點(diǎn)按實(shí)體類型拆分,然后組織成分區(qū):
在多臺機(jī)器上并行進(jìn)行訓(xùn)練,每臺機(jī)器都有多個線程。每個線程根據(jù)分配的存儲和批量數(shù)據(jù)計(jì)算參數(shù)更新。Locker服務(wù)器根據(jù)建立的約束分配訓(xùn)練。請注意,Locker服務(wù)器僅控制跨hogwild線程的數(shù)據(jù)批處理,而不控制參數(shù)更新。 知識嵌入可以通過兩種方式使用:
該過程在論文“Learning Structured Embeddings of Knowledge Bases ”中有介紹,后來被用作衡量嵌入模型質(zhì)量的方法,包括Facebook PBG在內(nèi)的許多其他論文中。 該算法采用測試邊的子集并執(zhí)行以下操作:
MRR或平均倒數(shù)排名是衡量搜索質(zhì)量的指標(biāo)。我們采用一個未損壞的節(jié)點(diǎn),找到距離定義為相似度得分的“最近鄰居”。我們通過相似性得分對最近鄰居進(jìn)行排名,并期望連接的節(jié)點(diǎn)出現(xiàn)在排名的頂部。如果節(jié)點(diǎn)沒有在頂部,MRR會降低準(zhǔn)確度分?jǐn)?shù)。 替代指標(biāo)是Hits10,我們期望損壞的節(jié)點(diǎn)出現(xiàn)在前10個最近鄰居中。
PBG論文表示,在我們將資源分配到訓(xùn)練中時,在許多數(shù)據(jù)集上,MRR指標(biāo)逐漸增加。并行性不會影響排名的質(zhì)量,但能節(jié)省大量時間。 可以通過簡單地探索和可視化圖來執(zhí)行進(jìn)一步的評估。
上圖是從Freebase知識圖譜構(gòu)建的嵌入的二維投影。我們可以看到,類似的節(jié)點(diǎn)被組合在一起。國家,數(shù)字,科學(xué)期刊專業(yè)似乎甚至在精心準(zhǔn)備的二維投影上也有集群。 如上所述的知識圖譜僅表示我們知識的“靜態(tài)快照”。它并不反映知識建立的過程。在現(xiàn)實(shí)世界中,我們通過觀察時間模式來學(xué)習(xí)。雖然可以了解節(jié)點(diǎn)A和節(jié)點(diǎn)B之間的相似性,但很難看到節(jié)點(diǎn)A和節(jié)點(diǎn)C三年之前的相似性。 例如,如果我們在森林中觀察一天,我們將看到兩棵大型紅杉樹之間的相似性。然而,如果沒有對森林的長期觀察,很難理解哪棵樹苗會長成一棵大的紅杉樹。 理想情況下,我們需要探索在不同時間點(diǎn)構(gòu)建的一系列知識圖譜,然后構(gòu)建嵌入表示,這將增長的相似性(generational similarities)。 |
|
|