肖仰华:基于知识图谱的用户理解
http://www.sohu.com/a/197188329_99934777
今天,很高興有這個機會來這里與大家交流。我想大家可能也已經(jīng)體會到,我們目前的很多方法和手段越來越接近一個所謂的“天花板”。現(xiàn)有的方法,包括機器學(xué)習(xí)和深度學(xué)習(xí)的方法,某種程度上都是在吃大數(shù)據(jù)的紅利,機器學(xué)習(xí)的效果,模型的效果本質(zhì)上是由大數(shù)據(jù)來喂養(yǎng),我們灌進去的數(shù)據(jù)越多,模型的效果就越好,尤其是深度學(xué)習(xí),隨著它的層次結(jié)構(gòu)越來越深以后,它對樣本數(shù)據(jù)的規(guī)模和質(zhì)量的要求也會更高,那么當(dāng)我們把大數(shù)據(jù)的紅利吃完之后,我們該怎么辦呢?
事實上,學(xué)術(shù)界和工業(yè)界在這里年越來越多的意識到這個問題的嚴重性,就是當(dāng)我們把大數(shù)據(jù)紅利吃完之后,我們的模型效果應(yīng)該如何進一步的提升?
對于這個問題,從我這個研究方向給出的答案是什么呢?就是知識。知識的重要性將會越來越突出,我相信很多模型,推薦模型,機器學(xué)習(xí)算法都將會從數(shù)據(jù)驅(qū)動走向知識引導(dǎo),越來越多的模型和算法將從基于行為的模型走向基于語義的模型。
今天,我會更多的談?wù)撊绾螖[脫行為數(shù)據(jù)的影響來做用戶畫像和推薦。因為很多場景下是沒有行為數(shù)據(jù)的,在一些極端的情況下,根本沒有用戶信息,那么這個時候我們怎么推薦?再比如說在互聯(lián)網(wǎng)搜索用戶畫像,高頻用戶和VIP用戶都可以解決的很好,那是因為它數(shù)據(jù)量足夠,但是關(guān)鍵的問題是,很多長尾用戶壓根沒有什么數(shù)據(jù),那這個時候我們的模型怎么辦?這時候我們就要借鑒語義和背景知識來給我們力量。這也是為什么我想跟大家分享利用知識圖譜來理解用戶,給用戶畫像,來解決推薦的問題的原因。
為什么要做用戶畫像?因為企業(yè)要了解他們的用戶,像三星這么大的一個企業(yè),有著寬廣的產(chǎn)品線,有著來自全世界的用戶,企業(yè)希望產(chǎn)品服務(wù)是個性化的,那么這個個性化的前提就是用戶畫像。
在整個互聯(lián)網(wǎng)時代其實催生了很多基于用戶畫像的應(yīng)用。比如搜索,百度搜索是通用搜索,因不同的人而展現(xiàn)不同的結(jié)果。再比如推薦,不同的人看到不同的推薦結(jié)果。廣告投放,社交網(wǎng)絡(luò)分析,甚至在企業(yè)內(nèi)部找專家等等,都需要去理解用戶,那么就需要一個非常有效的用戶畫像。
那么在各種各樣的畫像當(dāng)中,最流行的一種方法是基于標(biāo)簽的。在很多實際應(yīng)用中,大家都在廣泛的應(yīng)用這一類基于標(biāo)簽的畫像方法。基于畫像的標(biāo)簽方法其實很簡單,就是給用戶打一組標(biāo)簽,每個標(biāo)簽給一個權(quán)重,權(quán)重代表了用戶在這個方面興趣的強烈程度,如圖我們給出了一個豆瓣用戶的標(biāo)簽云,也給出了一個微博用戶的標(biāo)簽云。不同平臺的語言風(fēng)格,語言體系是不完全一樣的,豆瓣的語言傾向于書面化,而微博的語言傾向于碎片化,口語化。
時至今日,我們已經(jīng)有很多方法來幫助解決畫像和推薦的問題,那為什么今天還要來談?wù)撨@個話題呢?是因為這些方法里面還存在一些問題,問題集中在兩個方面。
第一個方面就是用戶畫像某種程度上還是不完整的。 導(dǎo)致這個問題可能有兩個原因,第一個原因就是任何畫像的來源數(shù)據(jù)都是有一定偏差的,一般描述的都是用戶畫像的某一方面,很難有一個非常完整的畫像。還有一個非常重要的原因就是隱私,后面我們會有case study,大家就會發(fā)現(xiàn)在微博上其實還是有很多人不愿談及自己的,比如說宗教信仰,政治觀念等等,但是很多時候可能了解用戶不愿談及的這個方面的內(nèi)容對于我們做產(chǎn)品,做服務(wù)又是非常重要的。基于這兩個原因,我們對用戶的理解就是一個碎片式的,很難召回完整的目標(biāo)客戶。
用戶畫像第二個關(guān)鍵的問題就是不正確性,也就是說我們對用戶畫像的理解很多時候是錯誤的,這導(dǎo)致就會出現(xiàn)錯誤的推薦。導(dǎo)致不正確性的原因有很多,第一個就是機器還無法理解這些標(biāo)簽,也就無法做出精準(zhǔn)推薦。第二個原因就是在跨領(lǐng)域場景下,由于缺失用戶的商品,也就是缺失推薦對象之間的歷史交互信息,使得冷啟動變成一個非常突出的問題,沒有歷史信息,一切基于這個的推薦就會失效。這個時候我們可能會采取一些基于語義的辦法,但是基于語義的辦法前提是要有精準(zhǔn)的語義匹配,這就需要一個龐大精準(zhǔn)的知識庫來作為背景知識來支持。第三個原因就是沒有針對推薦給出解釋。這個是非常重要的,當(dāng)且僅當(dāng)你給出一個非常合理的解釋的時候,用戶才會很好的接受推薦。那如何給出解釋呢?以前,解釋在人腦里面,現(xiàn)在我們可以利用大規(guī)模知識庫來產(chǎn)生解釋,從而實現(xiàn)能夠給出帶解釋的推薦給用戶。
我們?nèi)绾卫弥R圖譜,把它作為background knowledge來理解用戶標(biāo)簽,進而理解標(biāo)簽背后的用戶呢?
理解用戶是我們的終極目標(biāo),但是我們要先理解由于用戶的行為而產(chǎn)生的標(biāo)簽,這就非常難了,為什么呢?標(biāo)簽可以認為是自然語言的一部分,是一個簡單形式,比如可以給我打標(biāo)簽,“IT教師”、“復(fù)旦大學(xué)”,“知識圖譜”,那機器如何理解這些標(biāo)簽?zāi)?#xff1f;目前機器還不能有效的準(zhǔn)確的理解人類的自然語言,因為我們的自然語言很多時候是有歧義的,需要通過上下文才能理解的。很多時候語言的表達式是隱含的,比如我們中國人說兩個人是愛人關(guān)系的時候,不會直接說他們倆是伴侶關(guān)系,而會說他們共進晚餐或者看電影之類的,很少直接去談及這塊,所以很多關(guān)系是隱含的。語言還有一個重要的難點,就是它的多樣性,同一個意思,可以有很多種說法。
那么再進一步分析為什么語言理解這么困難?從根本上來講,是因為語言理解是建立在人對世界認知的基礎(chǔ)之上。你為什么能夠理解語言?是因為你已經(jīng)對這個世界,對在你身邊發(fā)生的事情有了充分的認知。機器現(xiàn)在還達不到認知世界的能力,機器的大腦里還缺乏非常重要的背景知識,比如這里有幾個卡通人物,大家一看就理解了,那是因為你已經(jīng)有這個背景知識在背后,那么機器想要理解語言,理解標(biāo)簽,就需要有海量的背景知識去支撐它認知這些概念。
機器需要怎樣的背景知識呢?第一個是要有足夠大的規(guī)模,必須覆蓋足夠多的實體,足夠多的概念。第二個是語義要足夠豐富,當(dāng)說到各種各樣的關(guān)系的時候,機器必須都能夠理解。第三個就是質(zhì)量足夠精良。第四個就是結(jié)構(gòu)必須足夠友好。
大家都知道機器最喜歡的是有結(jié)構(gòu)的數(shù)據(jù),最怕的是純文本,無結(jié)構(gòu)的數(shù)據(jù),我們希望知識庫是以一種機器友好的結(jié)構(gòu)形式來組織的。也有人發(fā)出疑問,知識圖譜跟傳統(tǒng)的本體語義網(wǎng)有什么差別呢?先來說本體,以前在特定領(lǐng)域尤其是醫(yī)療領(lǐng)域積累了大量的本體,但是大部分都是人工構(gòu)建的,規(guī)模十分有限,而且當(dāng)要把傳統(tǒng)知識工程從一個領(lǐng)域轉(zhuǎn)移到另一個領(lǐng)域的時候,就會發(fā)現(xiàn)代價極大,因為人工構(gòu)建的成本極為高昂。再來看看以前的語義網(wǎng)絡(luò),它往往是集中在單一的語義關(guān)系上,而不像知識圖譜,涵蓋了上千數(shù)萬種語義關(guān)系。再比如說文本,文本結(jié)構(gòu)不友好。這么一看大家就知道傳統(tǒng)的知識表示都不行。
這樣,知識圖譜成為了機器語言認知所需要的知識表示,所謂知識圖譜,本質(zhì)上是一種語義網(wǎng)絡(luò),它表達了各種各樣實體概念及其之間的語義關(guān)系。與之前的知識表示作比較,會發(fā)現(xiàn)知識圖譜有非常多的優(yōu)勢:第一,它規(guī)模巨大,像google的知識圖譜現(xiàn)在已經(jīng)到了幾百億的實體規(guī)模。第二,它的語義關(guān)系也很豐富,比如說我們自己的CN-DBpedia里涵蓋了成千上萬種語義關(guān)系。第三,知識圖譜通常是用RDF來表示的,對于機器來講,結(jié)構(gòu)足夠友好。第四,知識圖譜是通過大數(shù)據(jù)眾包的手段來校驗它的質(zhì)量,也就是靠人來校驗質(zhì)量,所以有著比較好的質(zhì)量。
所以利用知識圖譜來幫助機器理解標(biāo)簽,最終理解用戶是有可能的。
怎樣利用知識圖譜來解決剛才提到的不完整和不正確的兩個問題呢?
我們利用知識圖譜來做標(biāo)簽擴展,標(biāo)簽推斷,來提高機器對標(biāo)簽的理解水平,實現(xiàn)基于標(biāo)簽的,基于知識圖譜的精準(zhǔn)推薦。
我們把social graph當(dāng)做一個knowledge graph,只不過social graph是人與人之間的關(guān)系,而knowledge graph是更為一般的語義關(guān)系,所以某種程度上可以認為social graph是knowledge graph的一個typical case。
出于隱私的考慮,很多用戶不愿意給自己打標(biāo)簽,那怎么辦呢?我們可以利用social network上的一些關(guān)系來推斷一些不具備標(biāo)簽或者具備很少標(biāo)簽的用戶的一些標(biāo)簽。
如果用戶的大部分朋友都有這個標(biāo)簽,那么我覺得用戶也可以擁有這個標(biāo)簽。如果用戶與朋友關(guān)系非常緊密,那么朋友的標(biāo)簽傳播過來的可能性就更大。
我們就是基于這兩條準(zhǔn)則來進行標(biāo)簽傳播的。
這里有一個實際案例,我們在微博上做實驗,結(jié)果顯示這種傳播方法很有效,尤其是在宗教信仰,政治觀念,教育等方面的推斷準(zhǔn)確率能高達95%。
比如在這個user case,基于label propagation這么一個思路,用LTPA算法,user A的real tags是music和fashion,但是通過標(biāo)簽傳播,你會發(fā)現(xiàn)實際上他是一個基督教徒,因為傳播出來很多類似Christian,Bible,faith等等這樣的標(biāo)簽,那我們看他的微博發(fā)現(xiàn)他確實就是一個基督教徒。
這就是tag propagation,通過傳播來找到用戶的缺失標(biāo)簽。
關(guān)于標(biāo)簽的不正確性,我們做一個tag inference。這里有兩個真實的案例,第一個案例就是季建業(yè)受審的案子,我們要給這個新聞打合理的標(biāo)簽,這個標(biāo)簽難在什么地方呢?大家都知道季建業(yè)是南京市長,在山東煙臺受審,結(jié)果“煙臺”出現(xiàn)的頻率顯著高于“南京”,但是這個新聞按道理應(yīng)該是“南京”打的這個標(biāo)簽權(quán)重高于“煙臺”,那么怎樣識別出更準(zhǔn)確的標(biāo)簽?zāi)?#xff1f;怎么把“煙臺”這個標(biāo)簽弱化,而把“南京”這個標(biāo)簽給強調(diào)出來?
第二個例子就是槍決案件,打的標(biāo)簽是“朝鮮”,“崔英建”,“槍決”這三個標(biāo)簽,雖然通篇沒有提到平壤,但這件事肯定跟平壤是有關(guān)系的。
實際上這樣的例子很多,一篇講姚明的文章,即便通篇沒有講籃球,但肯定跟籃球有關(guān)系,打上“籃球”的標(biāo)簽準(zhǔn)沒錯。
我想表達什么意思呢?就是有很多應(yīng)該打的標(biāo)簽,由于這個事實太顯然,以至于文本里沒有提,而我們現(xiàn)在所有的辦法都基于一個假設(shè),就是文本里提到才能打上標(biāo)簽,那么我們有沒有辦法推斷出這些不存在與文本中的標(biāo)簽?zāi)?#xff1f;
實際上我們用知識圖譜是可以做到的。我們建構(gòu)一個語義網(wǎng)絡(luò),利用CN-DBpedia把新聞里提到的候選實體之間的語義關(guān)聯(lián)建立起來。我們的算法怎么實現(xiàn)呢?其實也很簡單,我們可以用一些隨機游走的辦法,可以從新聞中觀察到的這個實體去隨機游走,看它們能都傾向于走到哪些未被觀察到的實體,而這些實體就是很有可能作為標(biāo)簽出現(xiàn)的。實驗結(jié)果證實這個辦法的確能夠找到更多人工判斷下來的更為準(zhǔn)確的標(biāo)簽。
再進一步我們想通過知識圖譜讓機器準(zhǔn)確理解這些標(biāo)簽。
人類是在合適的概念層次來理解標(biāo)簽的。比如說人類看這么一組標(biāo)簽“China,Japan,India,Korea”,很快就會理解,講的是Asian country。基于概念級別去理解這些標(biāo)簽對于后面做精準(zhǔn)推薦是十分重要的。那現(xiàn)在問題來了,我們怎么讓機器去理解這些標(biāo)簽?怎么為標(biāo)簽產(chǎn)生一個合適的概念呢?
首先我們用一個knowledge base叫probase,它包含了大量的實體,也可以認為是標(biāo)簽及其概念。比如“apple”,它可以是一個company,也可以是一個fruit,company和fruit都是“apple”的概念。
我們利用probase去產(chǎn)生概念標(biāo)簽的時候,要解決兩個問題,第一個問題就是我們希望找到的這個概念的覆蓋率高,第二問題就是概念的信息盡可能詳細。比如第一個例子“China,Japan,India,Korea”,可以用“Asian country”這個標(biāo)簽,也可以用“country”這個標(biāo)簽,但顯然“Asian country”比較好。
我們要處理的最核心的問題就是coverage和minimality這么一對矛盾。我們采用的是一個非常通用的模型,是基于信息論的,也就是Minimal Deion Length最小描述長度的方法。
我們把剛才那個概念標(biāo)簽選擇問題建模成找一堆概念來encoding我們看到的tag這么一個問題。那么很顯然,剛才的兩個標(biāo)準(zhǔn),就可以體現(xiàn)在這里的兩個目標(biāo)里。第一部分,就是我們要用盡可能少的概念去cover這些實例,那么也就是說概念自身的編碼代價要盡可能小。第二個利用這種概念去encoding知識圖譜的tag的代價盡可能小,也就是基于知識圖譜的條件的length盡可能小。就有這么一個優(yōu)化的問題。當(dāng)然了,這是一個很general的model。在這個general的model下面,我們還要處理一些很實際的情況。
我們這里很多都是很實際的案例,來自很多實際的data的tag。比如在實際的用戶的tag或者image或者document往往會有噪音。比如這個tag里面有很多“apple,banana,breakfast,dinner,pork,beef”,突然出現(xiàn)一個“bullet”,那這個很可能就是個噪音,所以這個模型要能夠噪音容忍,這是第一個問題。
第二個問題就是說有很多像“population,president,location”,實際上最好的概念是“country”。但你要注意“country”跟“population,president,location”實際上不是嚴格的isA關(guān)系。population人口,president總統(tǒng)都是“country”的一個屬性,而不是isA關(guān)系。像剛才“China”和“Asian Country”那是isA關(guān)系。但是population只能說是Country的一個attribute。所以我們在建模的時候不僅僅要考慮isA關(guān)系,還需要能夠應(yīng)用這里的attribute關(guān)系,這是在模型方面的兩個改進。
最終的實際效果大家看,非常有意思。我們可以看到,基于MDL的方法是可以非常有效的解釋這個標(biāo)簽的。我們?nèi)藶樽隽艘粋€實驗,把來自三組不同概念的實體混在一起,看看我們的模型能不能找到這三組實體的三個正確的概念標(biāo)簽。圖中Table 3第一行就真的找到相應(yīng)來源的概念。
再看看Table 4,帶屬性和不帶屬性是可以產(chǎn)生不一樣的概念的。比如“bride,groom,dress,celebration”在帶屬性的模型中產(chǎn)生的是“wedding”這個概念標(biāo)簽,但是在不帶屬性的模型中產(chǎn)生的是“tradition”這個概念標(biāo)簽。
我們怎樣利用這個知識圖譜來做一些精準(zhǔn)推薦呢?在推薦中最難的一類是跨領(lǐng)域推薦,不同的領(lǐng)域要不共有user,要不共有item,要不共有feature,可是也有非常情況,比如說給微博用戶推薦淘寶商品,當(dāng)然可以用傳統(tǒng)的ontology的辦法,但是ontology的覆蓋率比較低,所以我們要用知識圖譜。
如果一個微博用戶經(jīng)常談?wù)摳鞣N旅游名勝,我們能不能把淘寶上的登山杖,旅游鞋推薦給他呢?要知道旅游名勝和登山杖,旅游鞋的描述是風(fēng)馬牛不相及的,是沒有辦法直接匹配的,那就需要一些間接匹配的方式,通過什么呢?就是通過背景知識圖譜來做一個橋接,也就是CN-DBpedia。
“九寨溝”會在知識圖譜在里面,知識圖譜 里可能有一些相關(guān)實體,比如“旅游”,“旅游”和“九寨溝”直接相關(guān),“旅游”與“登山杖”“旅游鞋”也相關(guān),就可以用這種中間實體和概念來橋接兩個完全不相關(guān)的物品和用戶。
實際上我們利用knowledge base構(gòu)建了很多concept vector來進行描述,分別描述user和item,然后來實現(xiàn)匹配,最終的效果也是相當(dāng)不錯的。
事實證明,在knowledge graph和knowledge base的支持下,的確是可以把兩個看上去語言描述完全不一樣的東西進行匹配的。
最后我們來聊聊推薦解釋。
舉個例子,假如說用戶在亞馬遜上搜索了“iPhone 7”,又搜了“華為 9”,那么亞馬遜應(yīng)該給用戶推薦什么呢?如果亞馬遜給用戶推薦“小米 Note”,那好像就不太對,比較好的就是推薦類似“三星 S7”。為什么用戶搜了“iPhone 7”和“華為 9”就要推薦“三星S7”呢?因為它們共有相同的概念,它們可以歸到相同的品類,它們都是昂貴的、高端的smart phone 。
那我們能不能根據(jù)用戶搜索的實體給他推薦其他的商品,并給出解釋呢?
這里我們用概念作為解釋,比如說,如果我說三個國家,中國,印度,巴西,然后讓你再說一個國家,你很有可能就會說俄羅斯,因為它們都是金磚四國,都是新興市場,都是發(fā)展中國家,它們共有很多概念。 所以概念是一個非常好的解釋。
那么概念哪里來呢?概念又是來自于剛才提到的一個叫probase的知識庫。那么為了做這個事情,我們提出好幾個model。比如在這個model 2里面,我要推薦一個實體e,那么實體e跟剛才已經(jīng)觀察到的一堆實體q組合到一起之后,應(yīng)該能夠非常好的保持住原來那堆實體的概念分布。我們用概念分布來表示實體的語義,比如說剛才的中國,巴西,印度,他們的概念分布就是發(fā)展中國家,新興市場,金磚四國這樣一些概念。概念實際上是實體的一個非常好的語義表示。那我用概念分布來做它的語義表示。那么很顯然,我要加進來的這個實體e跟q組合到一起之后,他們的概念分布要盡可能保持住已經(jīng)觀察到的這組實體的概念分布。就有這么一個model,我們需要把它的交叉熵給最小化。這就是我們這個model 2。下面就是求解,那就非常簡單了。
那最終的效果也就是很有意思,如果用戶先搜索了“阿里巴巴”,“騰訊”,我們的模型就會推薦“百度”,而其他的模型會推薦其他的一些大公司。再如果用戶搜索了中國的三大國有銀行,我們的模型會推薦第四大國有銀行,而其他的模型可能會推薦一些不準(zhǔn)確的東西。
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/9687727.html
總結(jié)
以上是生活随笔為你收集整理的肖仰华:基于知识图谱的用户理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【漫谈数据仓库】 如何优雅地设计数据分层
- 下一篇: 数据挖掘导论读书笔记9聚类分析