Graph Embedding在人力資本領域的應用

e成科技發表於2019-12-16

在NLP(自然語言處理)中,自然語言無法直接應用到數學模型的建立中,需要將其對映到歐式空間。

Embedding就是解決如何將自然語言表示為向量的,Google推出了Word2Vec模型,可以將語義相近的詞對映到向量空間中相近的位置,之後Google又提出了BERT,BERT可以考慮到相同詞在不同位置有不同含義等資訊,利用這個新的語言模型重新整理了問答、文字情感分析等多個語言任務的表現。同時,Embedding也可以作為深度學習模型的隱藏層,可以極大提高模型的表現。

自從word2vec橫空出世,似乎各行各業的一切東西都在被Embedding,Embedding在數學上表示一個對映F: X -> Y,也就是一個函式,其中該函式是一一對應的而且保持空間同構性 (即在X空間是近鄰的,則被對映到Y空間也是近鄰的)。Embedding技術被應用在了多種業務場景中:

1) 在 Airbnb 中實現實時個性化搜尋,利用使用者近幾周或者近幾個月點選過的房源行為資料實時對使用者的搜尋目標房源進行相似度比較和排序,這樣既極大的提高了效率而且也保證的搜尋房源的準確性提高了使用者體驗

2) 在電子商務領域,根據使用者的瀏覽和購買行為資料,通過深度學習模型可以將使用者和物品同時嵌入(embedding)到相同的低維空間,然後利用Embedding計算使用者和物品之間的相似度(匹配度)直接給使用者推薦感興趣的物品。

在人力資本領域,求職者、公司、職位、專業、技能等不同的實體間存在著多種型別的關係,構成了一個知識圖譜(Knowledge Graph)。這裡,我們主要關注的是Graph Embedding(其實也可以稱為Network Embedding)。我們利用Graph Embedding技術,把這些實體嵌入到低維的向量空間,可以直接比較他們的相似性,並能大大的提高簡歷和崗位的匹配效果。對於具有較多型別節點且各型別節點的數量巨大來說這是比較好的嘗試,而且取得了一些效果。

生成Graph Embedding常用方法及其原理

由於graph embedding的廣泛應用,同時衍生出了很多計算embedding的方法,下面我們介紹幾種商業上比較常用的幾種方法:

1)    DeepWalk

DeepWalk [3]是KDD 2014的一篇文章,我們常用的word2vec是根據詞的共現關係利用skip gram和COBW將詞對映到低維向量。DeepWalk演算法思路其實是利用了word2vec生成embedding的一種方法skipgram,對於已經建立的Graph來說每個節點可以是不同的實體且實體時間可以有不同的關係,從圖上的一個節點開始隨機遊走(random walk),如果節點之間有weight可以根據weight的不同進行walk來生成類似文字的序列資料,實體id作為一個個詞使用skip gram訓練得到詞向量。

演算法的大體思路就是:根據圖中節點隨機遊走 -> 生成一定長度的序列 -> 利用skip-gram進行訓練。

Graph Embedding在人力資本領域的應用

2)    LINE

LINE(Large-scale Information Network Embedding)是2015年文章[4]中微軟亞洲研究院提出來的一種演算法,LINE定義了兩種度量節點相似度的方法:一階相似度(First-order proximity)和二階相似度(Second-orderproximity)。

  • 一階相似度

其中一階相似度就是兩個點直接相連的邊的權重,且邊權重越大說明兩個點越相似,如果兩個節點之間無連線,則一階相似度為0;

對每個無向邊,定義頂點和的聯合概率分佈為:

Graph Embedding在人力資本領域的應用

是頂點的低維向量表示, 我們的目的就是使得經驗分佈和概率分佈儘可能的接近,於是我們定義以下一階相似度的目標函式:

Graph Embedding在人力資本領域的應用

其中為兩種分佈之間的距離,為空間上的一個分佈, =是它的經驗分佈,其中W為兩點間邊權重總和。我們選擇KL 散度來計算(2)式子。

KL散度的計算公式其實是熵計算公式的簡單變形,在原有概率分佈p上,加入我們的近似概率分佈q,比較兩個概率分佈的相似性:Graph Embedding在人力資本領域的應用

將,帶入KL散度的公式我們得到︰

Graph Embedding在人力資本領域的應用

其中C為一個常數,需要注意的是,一階相似度僅適用於無向圖,而不適用於有向圖。

  • 二階相似度

二度相似性則是兩個點之間共享多少相同的節點,共享的相同節點越多,而且共享的邊的權重越高則它們的相似性就越高。二階相似性假定與其他頂點共享鄰居頂點的兩個點彼此相似(無向有向均可),一個向量和分別表示頂點本身和其他頂點的特定“上下文”,意為二階相似。對於每個有向邊,我們首先定義由頂點生成“上下文”的概率:

Graph Embedding在人力資本領域的應用

式子(5)是一個條件分佈,對於頂點,我們的目的就是要擬合與其經驗分佈。為邊的權重,為相鄰邊的權重的和,因此最小化以下目標函式:

Graph Embedding在人力資本領域的應用

d(,)上文已經說明,來表示頂點的度數。這裡我們令利用KL散度同一階相似性的推導類似我們可以得到二階相似性的計算公式(去掉常數項)為:

Graph Embedding在人力資本領域的應用

具體應用時,我們可以將一階和二階的得出的embedding進行拼接這樣可以得到更多的語義資訊。

3)     Node2vec

Node2vec[5]演算法是在DeepWalk基礎上進行了改進,主要的創新點在於改進了隨機遊走的策略,DeepWalk中根據邊的權重進行隨機遊走,而Node2vec加了一個權重調整引數,同時考慮到區域性和巨集觀的資訊,並且具有很高的適應性。

除了以上提到的常用的生成embedding方法,學術界和工業界還提出了很多方法,像SDNE[6]、Struc2vec、Starspace[7](Facebook用的技術)、EGES(阿里巴巴推薦使用的技術之一)等。

Graph Embedding為人崗匹配帶來新突破

在人力資本行業最主要的兩大核心要素就是簡歷CV和工作崗位JD,如何讓CV和JD有效的匹配是人力資本行業一直非常重視的問題也是一個難題。我們在人力資本行業領域對graph embedding的嘗試和應用,並且取得了一定的效果。

1)原始文字處理

想要有效的進行人崗匹配(即CV和JD的合理匹配),需要綜合考慮包括職能、行業、技能、專業等維度在內的多維度匹配。首先應該提取CV、JD中的文字特徵,可以利用深度學習模型提取出CV、JD的文字特徵,我們這裡稱為實體。抽取出實體之後,我們就可以進行CV和JD的匹配,對於自由文字來說除了CV和JD的實體完全匹配上,可以算他們的相似度,詞的語義相似度無法完全的詮釋。舉個例子:

CV的特徵:技能實體(JAVA),職能實體(JAVA開發工程師)、專業實體(計算機)

JD的特徵:技能實體(Spring),職能實體(JAVA後端開發)、專業實體(資訊科技)

從詞的表面是無法區分他們的相似度的。下面就用到了embedding,embedding可以將這些實體嵌入到同一低維的向量空間,在空間中實體之間的距離可以通過數學公式計算從而表示他們的相似性。

2)生成實體embedding

第一步:資料的生成,我們首先利用CV、JD中不同實體的共現,以及不同工作經歷之間的跳轉來抽取簡歷中的實體跳轉,這些不同的實體之間可以構成network如圖1所示。不同的實體就是不同的節點,實線就是節點之間的邊也可以稱為關係。

Graph Embedding在人力資本領域的應用

圖1

第二步:使用Deepwalk、LINE生成embedding。對於Deepwalk可以直接根據network生成不同的文字序列,利用skip-gram進行模型的訓練。而對於LINE可以直接利用不同實體的共現次數作為模型的輸入。

第三步:優化訓練資料。我們發現不同的實體出現次數的量級是不同的,比如專業在JD中就很少出現,這樣就導致了資料的不平衡。我們解決的方式是,統計了不同實體之間的tfidf、npmi(Normal Pointwise Mutual Information)作為實體之間的權重,即表示了不同實體之間關係的強弱程度,之後再進行模型的訓練。

第四步:以上都是利用無監督的方式去訓練embedding,由於e成科技有自己獨立的人力資源ATS系統,包含了使用者大量的真實行為資料。把其中匹配上的CV、JD作為正例,未匹配上的作為負例,構造出有監督的訓練資料。將JD作為query,CV作為title,利用DSSM模型(如圖2)進行有監督的模型訓練。需要注意的是這裡的embedding層並不是隨機初始化的,而是利用第三步已經訓練過的embedding作為預訓練的權重。這樣有監督訓練的目的就是利用真實的行為資料更新embedding層的資料,使得每個實體的embedding更能好的表達在招聘這個業務場景中的語義。

Graph Embedding在人力資本領域的應用

圖2

我們使用內部標註的評估資料對不同模型進行了評估,比較結果如下:

Graph Embedding在人力資本領域的應用

以下是fasttext和graph embedding模型輸出的top相關公司實體的一些例子。可以看到FastText單單隻從字面意思進行了相似度匹配;而graph embedding模型輸出結果能夠更好地包含了具有相似業務、相似規模的公司,具有更好的語義相關性。

Graph Embedding在人力資本領域的應用


本文主要闡述了Embedding的原理以及一些應用,具體的闡述了Graph Embedding在人力資本領域的落地應用。

Embedding既可以作為計算各個實體的工具也可以作為深度學習中的embedding嵌入層增加模型的準確性。不誇張的說一切可以embedding,而且embedding在很多領域都取得了不俗的成就,尤其是NLP領域。

相關文章