知識圖譜中的客戶數據樣本以及該圖中附加的嵌入向量
去年,圖嵌入在企業知識圖譜(EKG)策略中變得越來越重要。 圖形嵌入將很快成為在大型十億頂點EKG中快速找到相似項目的實際方法。 實時相似性計算對於許多領域至關重要,例如推薦,最佳行動和隊列構建。
本文的目的是使您直觀地了解什麼是圖形嵌入以及如何使用它們,以便您可以確定這些嵌入是否適合您的EKG項目。 對於那些具有一定數據科學背景的人,我們還將介紹如何計算它們。 在大多數情況下,我們將使用講故事和隱喻來解釋這些概念。 我們希望你能用這些故事向你的非技術同行解釋圖形嵌入的有趣和難忘的方式。讓我們從第一個故事開始,我把它叫做「Mowgli’s Walk」。
Mowgli’s Walk
這個故事是基於Rudyard Kipling的精彩小說《The Jungle Book》改編的。
毛克利(Mowgli)是一個住在史前村莊的小男孩,村莊周圍有一道堅固的保護牆。毛克利有一隻可愛的寵物貓,有著橙色的皮毛和條紋。一天,毛克利走在村外的一條小路上,看見前面的小路上有一隻大老虎。毛克利應該做什麼?
路上看到一隻老虎。他該怎麼辦?跑回村子裡去,或者沿著小路繼續走。
他應該繼續沿著小路走下去,還是迅速跑回村莊和安全的隔離牆?毛克利沒有太多的時間來做這個決定。也許只有幾秒鐘。毛克利的大腦正在進行實時的威脅檢測,他的生命依賴於一個快速的決定。
如果毛克利的大腦認為這隻老虎和他的寵物貓很像,他會繼續沿著這條路走下去。但如果他意識到老虎是一個威脅,他會很快跑回村莊的安全地帶。
讓我們來看看毛克利的大腦是如何進化來進行實時威脅評估的。老虎的形象通過毛克利的眼睛傳到他大腦的視覺皮層。然後,提取出圖像的關鍵特徵。這些特徵的信號被發送到他大腦的目標分類區域。毛克利需要將這幅圖與他所見過的其他圖像進行比較,然後將其與熟悉的概念進行匹配。他的大腦正在進行實時的相似性計算。
一旦毛克利的大腦將圖像與老虎的概念相匹配,而老虎的概念又與「危險」的情緒相聯繫,在它杏仁體(deephub翻譯組註:amygdala是產生情緒,識別情緒和調節情緒,控制學習和記憶的腦部組織)的恐懼中心,毛克利就會轉身跑回村莊。這種快速反應甚至可能沒有經過毛克利新大腦皮層的高階邏輯處理,我們已經在大腦中進化出了數據結構,通過在1/10秒內分析來自眼睛視網膜的數以百萬計的輸入信息來促進我們的生存。
現在你可能會問,這和圖的嵌入有什麼關係?圖嵌入是一種小型的數據結構,可以幫助我們的EKG中實時的相似性排序功能。它們的工作原理就像毛克利大腦中的分類部分。這些嵌入式設備可以從數百萬個數據點中吸收關於我們心電圖中每一項的大量信息。嵌入式將其壓縮成數據結構,使用低成本的並行計算硬體(如FPGA)可以方便地進行實時比較。它們能夠進行實時相似度計算,用於對圖中的項目進行分類,並向用戶進行實時推薦。
例如,一位用戶來到我們的電子商務網站,想尋找一份禮物送給嬰兒。我們應該推薦可愛的毛絨老虎玩具還是流行的火焰噴射器?我們能在十分之一秒內推薦合適的產品嗎?我相信,在不久的將來,一個公司能夠迅速響應客戶的需求,並就下一步最好的行動提出建議,這對任何一個組織的生存都是至關重要的。EKG可以經濟高效地存儲有關客戶歷史記錄的數萬個數據點。 嵌入可以幫助我們離線分析此數據,並實時使用壓縮後的數據進行嵌入更新。
既然我們知道了我們要嵌入的內容,我們就可以理解為什麼它具有特定的結構。
什麼是圖嵌入?
在詳細介紹如何存儲和計算嵌入之前,讓我們先介紹一下嵌入的結構以及使嵌入對實時分析有用的特徵。
圖嵌入是用於快速比較相似數據結構的數據結構。太大的圖形嵌入會佔用更多的RAM和更長的時間來進行比較。在這裡,越小往往越好圖嵌入壓縮了圖中某個頂點周圍數據的許多複雜特徵和結構,包括該頂點的所有屬性以及主頂點周圍的邊和頂點的屬性。圍繞一個頂點的數據稱為「上下文窗口」,我們將在後面討論。圖的嵌入使用機器學習算法計算。像其他機器學習系統一樣,我們擁有的訓練數據越多,我們的嵌入就越能體現一個項目的獨特性。創建一個新的嵌入向量的過程被稱為「編碼」或「編碼一個頂點」。從嵌入中重新生成頂點的過程稱為「解碼」或「生成頂點「。在找到相似物體的過程中測量嵌入效果的度量被稱為「損失函數」(就是loss function和NN中的名字一樣)。在嵌入中,可能沒有與每個數字相關聯的「語義」或意義。嵌入可以被認為是向量空間中一個項的低維表示。在嵌入空間中相鄰的項被認為與現實世界中的項相似。嵌入關注的是性能,而不是可解釋性。嵌入是「模糊」匹配問題的理想選擇。如果您有數百或數千行複雜的If -then語句來構建隊列,那麼圖嵌入提供了一種方法,使此代碼更小、更容易維護。圖嵌入與其他圖算法一起工作。如果您正在進行集群或分類,則可以使用圖嵌入作為附加工具來提高這些其他算法的性能和質量。在我們討論嵌入如何存儲之前,我們應該回顧一下數學接近函數的概念。
嵌入空間中的鄰近度
兩個概念相似意味著什麼? 讓我們從地理地圖的隱喻開始。
給定地圖上的任意兩個點,我們可以創建一個公式來計算兩個點之間的距離。
給定地圖上的兩個點,我們可以使用距離公式來計算這兩個點之間的距離。 輸入只是兩個點的坐標,用數字表示,例如其經度和緯度。 對於空間中的兩個點,該問題也可以推廣到三維中。但在三維空間中,距離的計算增加了一個附加項:高度或z軸。
嵌入工作中的距離計算以類似方式進行。 關鍵是我們可能只有200或300個維度,而不僅僅是兩個或三個維度。 唯一的區別是為每個新維度添加一個距離項。
與詞嵌入類似
我們在圖嵌入運動中獲得的許多知識都來自於自然語言處理領域。 數據科學家使用單詞嵌入技術創建了英語中任意兩個單詞或短語之間的精確距離計算。 他們通過在數十億個文檔上訓練神經網絡,並考慮到周圍所有其他單詞時,使用特定單詞出現在句子中的概率來做到這一點。 周圍的單詞成為「上下文窗口」。 由此,我們可以有效地對單詞進行距離計算。
royalty 和gender的詞嵌入示例
在上面的示例中,對將「國王」,「皇后」,「男人和女人」一詞放在二維地圖上進行了想像。一個方面與royalty有關,而一個方面與gender有關。一旦您在這些量表上給每個單詞評分後,您就可以找到類似的單詞。例如,單詞「公主」在皇室性別空間中可能最接近單詞「女王」。
這裡的挑戰是,在這些維度中手動給每個單詞評分會花費很長時間。但是通過使用機器學習並設定好一個良好的錯誤判斷函數,該函數可以知道何時可以用一個單詞替換另一個單詞或在另一個單詞之後銜接其他單詞。我們可以訓練一個神經網絡來計算每個單詞的嵌入。請注意,如果我們有一個以前從未見過的新詞,則此方法將行不通。
英語大約有40000個單詞在日常講話中使用。我們可以將每個單詞放入一個知識圖譜中,並在每個單詞和每個其他單詞之間創建成對連結。連結上的權重就是距離。但是,這樣效率很低,因為通過使用嵌入,我們可以快速重新計算邊緣和權重。
通過以上介紹,就像句子在概念圖中的單詞之間穿梭一樣,我們需要隨機遍歷我們的EKG,以了解我們的客戶,產品等之間的關係。
圖形嵌入如何存儲?
圖形嵌入存儲為與我們的EKG的頂點或子圖相關聯的數字向量。
圖的一個子圖的頂點嵌入的圖解。
我們不會在嵌入內容中存儲字符串,代碼,日期或任何其他類型的非數字數據。存儲中只包含數字。
嵌入的大小
圖嵌入通常有大約100到300個數值。單個值通常是32位的十進位數,但是在某些情況下,您可以使用更小或更大的數據類型。精度和向量的長度越小,您就可以更快地將該項與類似項進行比較。
大多數比較在嵌入中實際上不需要超過300個數字。如果機器學習算法很強,我們可以把頂點的許多方面壓縮成這些值。
每個值都沒有語義
數字可能並不代表我們可以直接綁定到圖形的單個屬性或形狀的東西。 我們可能有一個稱為「客戶年齡」的功能,但是嵌入功能不一定會為年齡功能提供一個數字。 年齡可能會混合成一個或多個數字。
任何頂點都可以嵌入
嵌入可以與EKG中的許多事物相關聯。 任何重要的項目,例如客戶,產品,商店,供應商,託運人,網絡會話或投訴,可能都有其自己的嵌入向量。
我們通常也不會將嵌入與單個屬性相關聯。 單個屬性通常沒有足夠的信息來證明創建嵌入的工作的合理性。
也有一些項目正在為邊和路徑創建嵌入,但是它們不像頂點嵌入那麼常見。
計算嵌入的上下文窗口
如前所述,用於編碼嵌入的頂點周圍區域稱為上下文窗口。不幸的是,沒有簡單的算法來確定上下文窗口。有些嵌入可能只查看去年的客戶購買來計算嵌入。其他算法可能會查看自客戶第一次訪問網站以來的終身購買和搜索。理解時間對嵌入(稱為時間分析)的影響可能需要額外的規則和調優。很明顯,20年前在你的網站上購買過嬰兒尿布的顧客和上個月才開始購買的顧客可能會大不相同。
嵌入式與手工編碼的特性工程
對於那些熟悉標準圖形相似度算法(例如餘弦相似度計算)的人,我們希望進行快速比較。 餘弦相似度還會創建特徵向量,這些特徵也是簡單的數值。 關鍵區別在於,手動創建這些特徵需要花費時間,而特性工程師需要根據自己的判斷來衡量這些值,從而使權重具有相關性。 例如年齡和性別對于衡量一個人對巧克力或香草冰淇淋偏好的是一個很重要的特徵,但是與購買一般用途的商品基本上沒有關係。
嵌入式軟體試圖使用機器學習來自動找出與預測某一物品相關的特徵。
權衡創建嵌入
在設計EKG時,我們努力不將數據加載到沒有價值的內存中。 但嵌入式確實會佔用寶貴的內存。所以我們不想瘋狂地為那些我們很少比較的東西創建嵌入。 我們希望關注於相似性計算如何實時響應我們用戶。
同構圖與異構圖
關於圖嵌入的許多早期研究論文都集中於每個頂點具有相同類型的簡單圖。這些被稱為齊次圖或單圖。最常見的例子之一是引文圖,其中每個頂點都是一篇研究論文,所有連結都指向該論文引用的其他研究論文。社交網絡中的每個頂點都是一個人,唯一的連結類型是「跟隨」或「好友」,這是另一種同構圖。單詞嵌入(每個單詞或短語都有嵌入)是同構圖的另一個示例。
但是,知識圖譜通常具有許多不同類型的頂點和許多類型的邊。這些被稱為多部分圖。而且它們使嵌入的計算過程更加複雜。客戶圖可能具有諸如客戶,產品,購買,Web訪問,Web搜索,產品評論,產品退貨,產品投訴,促銷響應,優惠券使用,調查響應等類型。從複雜數據集創建嵌入可能需要花費一些時間設置和調整機器學習算法。
如何計算知識圖嵌入(EKG)
在本文中,我們假設您的EKG比較大。根據定義,EKG不能放在單個伺服器節點的內存中,必須分布在數十或數百臺伺服器上。這意味著像創建鄰接矩陣這樣的簡單技術是不可能的。我們需要在分布式圖簇上縮放和工作的算法。
大約有1400篇關於谷歌學術的論文提到了「知識圖嵌入」的主題。我並不是所有算法方面的專家。一般來說,他們分為兩類。
圖卷積神經網絡(GCN)隨機遊走(random walk)下面將簡要介紹這兩種方法。
圖卷積神經網絡(GCN)
GCN算法借鑑了卷積神經網絡在圖像處理中所做的工作。這些算法通過觀察一個給定像素周圍的像素來得出網絡的下一層。由於像素之間的距離是均勻且可預測的,因此圖像被稱為「歐幾裡得」空間。 GCNs使用大致相同的方法來查看當前的頂點,但是概念上的距離是不均勻的和不可預測的。
隨機遊走(random walk)
這些算法傾向於遵循自然語言處理方面的研究。它們的工作原理是從一個目標節點開始隨機遍歷所有節點。這些路徑有效地形成了關於目標頂點的句子,然後這些序列就像NLP算法一樣被使用。
總結
這篇文章中的故事和隱喻解釋了什麼是圖形嵌入以及如何使用它們來加速實時分析。 儘管現階段計算嵌入的產品還不成熟,但我認為從已發表的大量研究中您會看到這是一個活躍的研究領域。 我認為,就像AlexNet在圖像分類中取得突破並且BERT為NLP設定新標準一樣,在接下來的幾年中,我們將看到圖形嵌入將在創新分析領域佔據中心地位。
對於今年參加NeurIPS 2020會議人,有114個與嵌入相關可以看出嵌入顯然是深度學習中的熱門話題。
作者:Dan McCreary
deephub翻譯組