標籤:

肖仰華:基於知識圖譜的用戶理解

本文整理自肖仰華教授在三星電子中國研究院做的報告,題目為《Understanding users with knowledge graphs》。

獲取完整PPT和論文

關注「知識工場」微信公眾號,回復「20170926」獲取下載鏈接。


今天,很高興有這個機會來這裡與大家交流。

前面兩位老師把基於社會影響力的傳播和推薦,以及跨領域的推薦講解的深入細緻,我想大家可能也會體會到,我們目前的很多方法和手段越來越接近一個所謂的「天花板」。現有的方法,包括機器學習和深度學習的方法,某種程度上都是在吃大數據的紅利,機器學習的效果,模型的效果本質上是由大數據來餵養,我們灌進去的數據越多,模型的效果就越好,尤其是深度學習,隨著它的層次結構越來越深以後,它對樣本數據的規模和質量的要求也會更高,那麼當我們把大數據的紅利吃完之後,我們該怎麼辦呢?

事實上,學術界和工業界在這裡年越來越多的意識到這個問題的嚴重性,就是當我們把大數據紅利吃完之後,我們的模型效果應該如何進一步的提升?

對於這個問題,從我這個研究方向給出的答案是什麼呢?就是知識。知識的重要性將會越來越突出,我相信很多模型,推薦模型,機器學習演算法都將會從數據驅動走向知識引導,越來越多的模型和演算法將從基於行為的模型走向基於語義的模型。

今天,我會更多的談論如何擺脫行為數據的影響來做用戶畫像和推薦。因為很多場景下是沒有行為數據的,在一些極端的情況下,根本沒有用戶信息,那麼這個時候我們怎麼推薦?再比如說在互聯網搜索用戶畫像,高頻用戶和VIP用戶都可以解決的很好,那是因為它數據量足夠,但是關鍵的問題是,很多長尾用戶壓根沒有什麼數據,那這個時候我們的模型怎麼辦?這時候我們就要借鑒語義和背景知識來給我們力量。這也是為什麼我想跟大家分享利用知識圖譜來理解用戶,給用戶畫像,來解決推薦的問題的原因。

為什麼要做用戶畫像?因為企業要了解他們的用戶,像三星這麼大的一個企業,有著寬廣的產品線,有著來自全世界的用戶,企業希望產品服務是個性化的,那麼這個個性化的前提就是用戶畫像。

在整個互聯網時代其實催生了很多基於用戶畫像的應用。比如搜索,百度搜索是通用搜索,因不同的人而展現不同的結果。再比如推薦,不同的人看到不同的推薦結果。廣告投放,社交網路分析,甚至在企業內部找專家等等,都需要去理解用戶,那麼就需要一個非常有效的用戶畫像。

那麼在各種各樣的畫像當中,最流行的一種方法是基於標籤的。在很多實際應用中,大家都在廣泛的應用這一類基於標籤的畫像方法。基於畫像的標籤方法其實很簡單,就是給用戶打一組標籤,每個標籤給一個權重,權重代表了用戶在這個方面興趣的強烈程度,如圖我們給出了一個豆瓣用戶的標籤雲,也給出了一個微博用戶的標籤雲。不同平台的語言風格,語言體系是不完全一樣的,豆瓣的語言傾向於書面化,而微博的語言傾向於碎片化,口語化。

時至今日,我們已經有很多方法來幫助解決畫像和推薦的問題,那為什麼今天還要來談論這個話題呢?是因為這些方法裡面還存在一些問題,問題集中在兩個方面。

第一個方面就是用戶畫像某種程度上還是不完整的。 導致這個問題可能有兩個原因,第一個原因就是任何畫像的來源數據都是有一定偏差的,一般描述的都是用戶畫像的某一方面,很難有一個非常完整的畫像。還有一個非常重要的原因就是隱私,後面我們會有case study,大家就會發現在微博上其實還是有很多人不願談及自己的,比如說宗教信仰,政治觀念等等,但是很多時候可能了解用戶不願談及的這個方面的內容對於我們做產品,做服務又是非常重要的。基於這兩個原因,我們對用戶的理解就是一個碎片式的,很難召回完整的目標客戶。

用戶畫像第二個關鍵的問題就是不正確性,也就是說我們對用戶畫像的理解很多時候是錯誤的,這導致就會出現錯誤的推薦。導致不正確性的原因有很多,第一個就是機器還無法理解這些標籤,也就無法做出精準推薦。第二個原因就是在跨領域場景下,由於缺失用戶的商品,也就是缺失推薦對象之間的歷史交互信息,使得冷啟動變成一個非常突出的問題,沒有歷史信息,一切基於這個的推薦就會失效。這個時候我們可能會採取一些基於語義的辦法,但是基於語義的辦法前提是要有精準的語義匹配,這就需要一個龐大精準的知識庫來作為背景知識來支持。第三個原因就是沒有針對推薦給出解釋。這個是非常重要的,當且僅當你給出一個非常合理的解釋的時候,用戶才會很好的接受推薦。那如何給出解釋呢?以前,解釋在人腦裡面,現在我們可以利用大規模知識庫來產生解釋,從而實現能夠給出帶解釋的推薦給用戶。

我們如何利用知識圖譜,把它作為background knowledge來理解用戶標籤,進而理解標籤背後的用戶呢?

理解用戶是我們的終極目標,但是我們要先理解由於用戶的行為而產生的標籤,這就非常難了,為什麼呢?標籤可以認為是自然語言的一部分,是一個簡單形式,比如可以給我打標籤,「IT教師」、「復旦大學」,「知識圖譜」,那機器如何理解這些標籤呢?目前機器還不能有效的準確的理解人類的自然語言,因為我們的自然語言很多時候是有歧義的,需要通過上下文才能理解的。很多時候語言的表達式是隱含的,比如我們中國人說兩個人是愛人關係的時候,不會直接說他們倆是伴侶關係,而會說他們共進晚餐或者看電影之類的,很少直接去談及這塊,所以很多關係是隱含的。語言還有一個重要的難點,就是它的多樣性,同一個意思,可以有很多種說法。

那麼再進一步分析為什麼語言理解這麼困難?從根本上來講,是因為語言理解是建立在人對世界認知的基礎之上。你為什麼能夠理解語言?是因為你已經對這個世界,對在你身邊發生的事情有了充分的認知。機器現在還達不到認知世界的能力,機器的大腦里還缺乏非常重要的背景知識,比如這裡有幾個卡通人物,大家一看就理解了,那是因為你已經有這個背景知識在背後,那麼機器想要理解語言,理解標籤,就需要有海量的背景知識去支撐它認知這些概念。

機器需要怎樣的背景知識呢?第一個是要有足夠大的規模,必須覆蓋足夠多的實體,足夠多的概念。第二個是語義要足夠豐富,當說到各種各樣的關係的時候,機器必須都能夠理解。第三個就是質量足夠精良。第四個就是結構必須足夠友好。

大家都知道機器最喜歡的是有結構的數據,最怕的是純文本,無結構的數據,我們希望知識庫是以一種機器友好的結構形式來組織的。也有人發出疑問,知識圖譜跟傳統的本體語義網有什麼差別呢?先來說本體,以前在特定領域尤其是醫療領域積累了大量的本體,但是大部分都是人工構建的,規模十分有限,而且當要把傳統知識工程從一個領域轉移到另一個領域的時候,就會發現代價極大,因為人工構建的成本極為高昂。再來看看以前的語義網路,它往往是集中在單一的語義關係上,而不像知識圖譜,涵蓋了上千數萬種語義關係。再比如說文本,文本結構不友好。這麼一看大家就知道傳統的知識表示都不行。

這樣,知識圖譜成為了機器語言認知所需要的知識表示,所謂知識圖譜,本質上是一種語義網路,它表達了各種各樣實體概念及其之間的語義關係。與之前的知識表示作比較,會發現知識圖譜有非常多的優勢:第一,它規模巨大,像google的知識圖譜現在已經到了幾百億的實體規模。第二,它的語義關係也很豐富,比如說我們自己的CN-DBpedia里涵蓋了成千上萬種語義關係。第三,知識圖譜通常是用RDF來表示的,對於機器來講,結構足夠友好。第四,知識圖譜是通過大數據眾包的手段來校驗它的質量,也就是靠人來校驗質量,所以有著比較好的質量。

所以利用知識圖譜來幫助機器理解標籤,最終理解用戶是有可能的。

怎樣利用知識圖譜來解決剛才提到的不完整和不正確的兩個問題呢?

我們利用知識圖譜來做標籤擴展,標籤推斷,來提高機器對標籤的理解水平,實現基於標籤的,基於知識圖譜的精準推薦。

我們把social graph當做一個knowledge graph,只不過social graph是人與人之間的關係,而knowledge graph是更為一般的語義關係,所以某種程度上可以認為social graph是knowledge graph的一個typical case。

出於隱私的考慮,很多用戶不願意給自己打標籤,那怎麼辦呢?我們可以利用social network上的一些關係來推斷一些不具備標籤或者具備很少標籤的用戶的一些標籤。

如果用戶的大部分朋友都有這個標籤,那麼我覺得用戶也可以擁有這個標籤。如果用戶與朋友關係非常緊密,那麼朋友的標籤傳播過來的可能性就更大。

我們就是基於這兩條準則來進行標籤傳播的。

這裡有一個實際案例,我們在微博上做實驗,結果顯示這種傳播方法很有效,尤其是在宗教信仰,政治觀念,教育等方面的推斷準確率能高達95%。

比如在這個user case,基於label propagation這麼一個思路,用LTPA演算法,user A的real tags是music和fashion,但是通過標籤傳播,你會發現實際上他是一個基督教徒,因為傳播出來很多類似Christian,Bible,faith等等這樣的標籤,那我們看他的微博發現他確實就是一個基督教徒。

這就是tag propagation,通過傳播來找到用戶的缺失標籤。

關於標籤的不正確性,我們做一個tag inference。這裡有兩個真實的案例,第一個案例就是季建業受審的案子,我們要給這個新聞打合理的標籤,這個標籤難在什麼地方呢?大家都知道季建業是南京市長,在山東煙台受審,結果「煙台」出現的頻率顯著高於「南京」,但是這個新聞按道理應該是「南京」打的這個標籤權重高於「煙台」,那麼怎樣識別出更準確的標籤呢?怎麼把「煙台」這個標籤弱化,而把「南京」這個標籤給強調出來?

第二個例子就是槍決案件,打的標籤是「朝鮮」,「崔英建」,「槍決」這三個標籤,雖然通篇沒有提到平壤,但這件事肯定跟平壤是有關係的。

實際上這樣的例子很多,一篇講姚明的文章,即便通篇沒有講籃球,但肯定跟籃球有關係,打上「籃球」的標籤准沒錯。

我想表達什麼意思呢?就是有很多應該打的標籤,由於這個事實太顯然,以至於文本里沒有提,而我們現在所有的辦法都基於一個假設,就是文本里提到才能打上標籤,那麼我們有沒有辦法推斷出這些不存在與文本中的標籤呢?

實際上我們用知識圖譜是可以做到的。我們建構一個語義網路,利用CN-DBpedia把新聞里提到的候選實體之間的語義關聯建立起來。我們的演算法怎麼實現呢?其實也很簡單,我們可以用一些隨機遊走的辦法,可以從新聞中觀察到的這個實體去隨機遊走,看它們能都傾向於走到哪些未被觀察到的實體,而這些實體就是很有可能作為標籤出現的。實驗結果證實這個辦法的確能夠找到更多人工判斷下來的更為準確的標籤。

再進一步我們想通過知識圖譜讓機器準確理解這些標籤。

人類是在合適的概念層次來理解標籤的。比如說人類看這麼一組標籤「China,Japan,India,Korea」,很快就會理解,講的是Asian country。基於概念級別去理解這些標籤對於後面做精準推薦是十分重要的。那現在問題來了,我們怎麼讓機器去理解這些標籤?怎麼為標籤產生一個合適的概念呢?

首先我們用一個knowledge base叫probase,它包含了大量的實體,也可以認為是標籤及其概念。比如「apple」,它可以是一個company,也可以是一個fruit,company和fruit都是「apple」的概念。

我們利用probase去產生概念標籤的時候,要解決兩個問題,第一個問題就是我們希望找到的這個概念的覆蓋率高,第二問題就是概念的信息儘可能詳細。比如第一個例子「China,Japan,India,Korea」,可以用「Asian country」這個標籤,也可以用「country」這個標籤,但顯然「Asian country」比較好。

我們要處理的最核心的問題就是coverage和minimality這麼一對矛盾。我們採用的是一個非常通用的模型,是基於資訊理論的,也就是Minimal Description Length最小描述長度的方法。

我們把剛才那個概念標籤選擇問題建模成找一堆概念來encoding我們看到的tag這麼一個問題。那麼很顯然,剛才的兩個標準,就可以體現在這裡的兩個目標里。第一部分,就是我們要用儘可能少的概念去cover這些實例,那麼也就是說概念自身的編碼代價要儘可能小。第二個利用這種概念去encoding知識圖譜的tag的代價儘可能小,也就是基於知識圖譜的條件的length儘可能小。就有這麼一個優化的問題。當然了,這是一個很general的model。在這個general的model下面,我們還要處理一些很實際的情況。

我們這裡很多都是很實際的案例,來自很多實際的data的tag。比如在實際的用戶的tag或者image或者document往往會有噪音。比如這個tag裡面有很多「apple,banana,breakfast,dinner,pork,beef」,突然出現一個「bullet」,那這個很可能就是個噪音,所以這個模型要能夠噪音容忍,這是第一個問題。

第二個問題就是說有很多像「population,president,location」,實際上最好的概念是「country」。但你要注意「country」跟「population,president,location」實際上不是嚴格的isA關係。population人口,president總統都是「country」的一個屬性,而不是isA關係。像剛才「China」和「Asian Country」那是isA關係。但是population只能說是Country的一個attribute。所以我們在建模的時候不僅僅要考慮isA關係,還需要能夠應用這裡的attribute關係,這是在模型方面的兩個改進。

最終的實際效果大家看,非常有意思。我們可以看到,基於MDL的方法是可以非常有效的解釋這個標籤的。我們人為做了一個實驗,把來自三組不同概念的實體混在一起,看看我們的模型能不能找到這三組實體的三個正確的概念標籤。圖中Table 3第一行就真的找到相應來源的概念。

再看看Table 4,帶屬性和不帶屬性是可以產生不一樣的概念的。比如「bride,groom,dress,celebration」在帶屬性的模型中產生的是「wedding」這個概念標籤,但是在不帶屬性的模型中產生的是「tradition」這個概念標籤。

我們怎樣利用這個知識圖譜來做一些精準推薦呢?在推薦中最難的一類是跨領域推薦,不同的領域要不共有user,要不共有item,要不共有feature,可是也有非常情況,比如說給微博用戶推薦淘寶商品,當然可以用傳統的ontology的辦法,但是ontology的覆蓋率比較低,所以我們要用知識圖譜。

如果一個微博用戶經常談論各種旅遊名勝,我們能不能把淘寶上的登山杖,旅遊鞋推薦給他呢?要知道旅遊名勝和登山杖,旅遊鞋的描述是風馬牛不相及的,是沒有辦法直接匹配的,那就需要一些間接匹配的方式,通過什麼呢?就是通過背景知識圖譜來做一個橋接,也就是CN-DBpedia。

「九寨溝」會在知識圖譜在裡面,知識圖譜 里可能有一些相關實體,比如「旅遊」,「旅遊」和「九寨溝」直接相關,「旅遊」與「登山杖」「旅遊鞋」也相關,就可以用這種中間實體和概念來橋接兩個完全不相關的物品和用戶。

實際上我們利用knowledge base構建了很多concept vector來進行描述,分別描述user和item,然後來實現匹配,最終的效果也是相當不錯的。

事實證明,在knowledge graph和knowledge base的支持下,的確是可以把兩個看上去語言描述完全不一樣的東西進行匹配的。

最後我們來聊聊推薦解釋。

舉個例子,假如說用戶在亞馬遜上搜索了「iPhone 7」,又搜了「華為 9」,那麼亞馬遜應該給用戶推薦什麼呢?如果亞馬遜給用戶推薦「小米 Note」,那好像就不太對,比較好的就是推薦類似「三星 S7」。為什麼用戶搜了「iPhone 7」和「華為 9」就要推薦「三星S7」呢?因為它們共有相同的概念,它們可以歸到相同的品類,它們都是昂貴的、高端的smart phone 。

那我們能不能根據用戶搜索的實體給他推薦其他的商品,並給出解釋呢?

這裡我們用概念作為解釋,比如說,如果我說三個國家,中國,印度,巴西,然後讓你再說一個國家,你很有可能就會說俄羅斯,因為它們都是金磚四國,都是新興市場,都是發展中國家,它們共有很多概念。 所以概念是一個非常好的解釋。

那麼概念哪裡來呢?概念又是來自於剛才提到的一個叫probase的知識庫。那麼為了做這個事情,我們提出好幾個model。比如在這個model 2裡面,我要推薦一個實體e,那麼實體e跟剛才已經觀察到的一堆實體q組合到一起之後,應該能夠非常好的保持住原來那堆實體的概念分布。我們用概念分布來表示實體的語義,比如說剛才的中國,巴西,印度,他們的概念分布就是發展中國家,新興市場,金磚四國這樣一些概念。概念實際上是實體的一個非常好的語義表示。那我用概念分布來做它的語義表示。那麼很顯然,我要加進來的這個實體e跟q組合到一起之後,他們的概念分布要儘可能保持住已經觀察到的這組實體的概念分布。就有這麼一個model,我們需要把它的交叉熵給最小化。這就是我們這個model 2。下面就是求解,那就非常簡單了。

那最終的效果也就是很有意思,如果用戶先搜索了「阿里巴巴」,「騰訊」,我們的模型就會推薦「百度」,而其他的模型會推薦其他的一些大公司。再如果用戶搜索了中國的三大國有銀行,我們的模型會推薦第四大國有銀行,而其他的模型可能會推薦一些不準確的東西。

以上給大家講的就是我們基於知識圖譜來做推薦的內容。

(以上是肖仰華教授報告的主要內容,以下關於知識工場實驗室介紹以及實驗室所做工作的內容,這裡就不做詳細描述。)

weixin.qq.com/r/CDp3b_v (二維碼自動識別)

推薦閱讀:

報告 | 肖仰華:知識圖譜研究的回顧與展望
高效的關係補全——EMNLP2015 SFE論文研讀
16.關於靠譜那回事
知識圖譜的模式層和數據層設計
【讀論文】Trans系列知識表示學習方法梳理

TAG:知識圖譜 |