搜索场景下的智能推荐演变之路
摘要:傳統(tǒng)的推薦手段主要還是深度挖掘用戶行為和內(nèi)容本身相似性的價值,包括但不限于協(xié)同過濾,內(nèi)容表征+向量召回,以及各式各樣的點擊率預(yù)估模型,然后這樣的推薦行為缺乏內(nèi)在的邏輯性和可解釋性,有一種知其然,不知所以然的體感。本文中,阿里巴巴高級算法專家王悅就為大家分享了搜索場景下的智能推薦演變之路。
演講嘉賓簡介:王躍(躍神),阿里巴巴高級算法專家。浙江大學(xué)碩士畢業(yè),阿里巴巴高級算法專家,加入阿里巴巴以來一直致力于研究搜索推薦相關(guān)技術(shù),相關(guān)工作包括自然語言處理,查詢詞分析技術(shù)研究,知識圖譜數(shù)據(jù)構(gòu)建,實體推薦等多個不同方向。當(dāng)前是夸克瀏覽器智能推薦業(yè)務(wù)業(yè)務(wù)負(fù)責(zé)人,致力于推動推薦從傳統(tǒng)的用戶行為推薦向知識化推薦的升級,從而提升用戶信息獲取信息的邊界,加快信息決策的效率。
本次分享將首先介紹神馬搜索在推薦領(lǐng)域有哪些應(yīng)用場景,之后為大家分享在神馬搜索的推薦系統(tǒng)中所做的召回和排序相關(guān)的工作。
一、概覽
場景介紹
首先為大家介紹神馬搜索的推薦場景有哪些,比如大家在向搜索框輸入內(nèi)容之前,搜索框就會提供一些預(yù)置的搜索詞,這屬于沒有搜索Query的推薦。其次,如果大家點擊網(wǎng)頁之后返回結(jié)果,神馬搜索會在URL下面提供一些相關(guān)的Query,這是與URL本身相關(guān)的推薦。再次,還有Query推薦和相關(guān)搜索,這中推薦的主要目的是引流,國內(nèi)的搜索引擎基本上都是商業(yè)化的產(chǎn)品,因此通過這樣的推薦方法就能夠很好地吸引一些流量進來。此外,還有體感比較好的實體推薦,以及在內(nèi)容消費頁面所做的相關(guān)推薦。
推薦大致可以分為三個階段,首先在輸入之前,神馬搜索引擎會基于用戶畫像以及其他的一些相關(guān)推薦技術(shù)將一些內(nèi)容推薦給用戶;第二個階段就是在搜索的結(jié)果頁進行推薦;最后一個階段就是在內(nèi)容頁面上做一些相關(guān)推薦。從另外一個維度上來看,推薦也可以分為三個部分,分別為沒有Query的推薦、有Query的推薦以及基于URL的推薦。
技術(shù)大圖
正如下圖所展示的,推薦的業(yè)務(wù)應(yīng)用場景非常多,因此無論是從橫向還是縱向上進行劃分,都可以將推薦劃分為多個視角。而如果對于每種推薦都從頭到尾搭建一套系統(tǒng),那么成本將會非常高,而UC團隊有一套比較通用的技術(shù)體系來支撐如下圖所示的推薦相關(guān)業(yè)務(wù)。搜索場景下智能推薦的技術(shù)大圖可以大致分為三個部分,最底層是數(shù)據(jù)以及數(shù)據(jù)相關(guān)的梳理;其上層就是通過召回以及排序等手段對于數(shù)據(jù)進行一定的處理;最上面一層就是使用處理好的數(shù)據(jù)來支撐業(yè)務(wù)。
對于上層大部分的推薦場景而言,所采用的召回方法基本都是相同的,而所采用的排序方法往往不同。比如對于預(yù)置詞這種業(yè)務(wù)而言,它是沒有Query的,因此在做模型設(shè)計的時候就無法利用這些信息。
二、召回
接下來為大家整體地介紹一下推薦系統(tǒng)中的召回體系,在本次分享中只會涉及其中比較通用的4種召回方法,但實際上召回體系遠遠不止這4種,一些比較通用的召回方法沒有在本文中列出。
用戶行為召回
在召回部分介紹的第一種方法就是用戶行為召回,也就是去深挖用戶行為的價值。用戶行為的挖掘是搜索引擎推薦的重要環(huán)節(jié),這部分會針對于用戶行為做兩件事情。第一件事情就是從Session的角度來分析哪些Query經(jīng)常會出現(xiàn)在一起,這樣分析也會遇到一些問題,比如首先要去區(qū)分Session里面不同的Query類型,在搜索引擎里面可以自己主動地發(fā)起一次搜索,也可以自己去點擊一些推薦結(jié)果。但是這兩種行為存在一定的區(qū)別,比如主動搜索和被動通過推薦來搜索是不同的,主動搜索行為往往會獲得較高的分?jǐn)?shù),如果在比較靠后的位置點擊了推薦結(jié)果和在相對比較靠前的位置點擊了推薦結(jié)果的行為也是不同的。因此,在這里需要對于不同類型的行為做一些權(quán)重計算,同時做一些比較機器化的規(guī)則,比如在某一個Session里面,某一個Query是用戶最后一次搜索,此時就需要去考慮這個Query是不是已經(jīng)滿足了用戶需求,因此會對于這些Query加一定的權(quán)重。
第二個問題就是時效性優(yōu)化問題,對于一些頭部的Query而言,可能一天之內(nèi)就能達到幾萬甚至十萬的量級。對于這樣的Query,通常的做法就是拉一個時間窗口去看所有Session里面Query的情況如何。但實際上對于這些頭部的Query沒有任何意義,因為其一天的數(shù)據(jù)就足夠分析了,因此在這種情況下會做一些采樣;對于一些長尾的Query則會做一些時間窗口的拉長操作。第三個問題是稀疏優(yōu)化,對于前面所提到的基于URL的推薦而言,通常的做法就是收集用戶點擊了URL之后又搜索了哪些Query的行為,但是這種情況下點擊的URL往往是很稀疏的,因此會使用URL下面本身的一些與Title相似的Doc共享推薦的List實現(xiàn)基于文本的泛化,或者通過相似Query共享推薦List實現(xiàn)基于行為的泛化,這樣一來推薦的效果和覆蓋率都會有極大的提升。
行為分析
下圖展示的是協(xié)同過濾算法,但是經(jīng)典的協(xié)同過濾算法往往存在一些問題,比如同一個Item權(quán)重的分配而言,在行為非常豐富的用戶和行為較少的用戶之間,可能更加傾向于前者。
但是這樣的做法并不一定合理,因此我們復(fù)用了集團的一些成果,做了兩點主要的改進,第一個就是盡量地降低行為特別豐富的用戶的比重,使得其相對比較平滑。第二個就是構(gòu)建如上圖所示的菱形結(jié)構(gòu),進而達到閉環(huán)的效果,使得推薦的理由更加強烈一些。綜上所述,可以從入度出度、行為豐富度不同等閉環(huán)的結(jié)構(gòu)上面做優(yōu)化,來提升整體協(xié)同過濾類算法的效果。
標(biāo)簽召回
基于標(biāo)簽的召回與基于用戶畫像的召回非常類似,對于用戶畫像而言,現(xiàn)在業(yè)界比較傳統(tǒng)的做法就是在用戶身上打上各種各樣的標(biāo)簽,比如性別、年齡以及愛好等。因此,這里將基于標(biāo)簽的召回和基于用戶畫像的召回合在一起講解。這里列舉了一個例子就是在做APP推薦時如何去分析偏長尾的標(biāo)簽,比如搜索“什么軟件拍照帶耳朵?”時能夠發(fā)現(xiàn)非常豐富的問答數(shù)據(jù),并且發(fā)現(xiàn)Faceu這款A(yù)PP在答案里面。而如果其他的問答網(wǎng)站里面反饋出了其他的APP,就能計算出Faceu和其他拍照APP之間存在非常強大的相關(guān)性,這樣一來可以做一些關(guān)聯(lián)的推薦,并且可以標(biāo)注出其推薦者。
標(biāo)簽召回主要包括兩個步驟,第一步就是建立比較完整的標(biāo)簽體系,將標(biāo)簽歸納到比較稀疏的鏈路下面去。在定義好這些鏈路體系之后,第二步就可以分門別類地去進行挖掘,這里的挖掘相對而言還是比較傳統(tǒng)的,比如先分取一些Query,然后去判斷有哪些數(shù)據(jù),并對于已有的數(shù)據(jù)進行一些標(biāo)注,做一些標(biāo)簽的識別,之后進一步擴大。當(dāng)我們累積到一定量之后,就可以嘗試借助有監(jiān)督的方法實現(xiàn)進一步的泛化。
知識圖譜召回
基于知識圖譜的召回是最近一段時間內(nèi)在學(xué)術(shù)界比較火的方法。UC團隊在基于知識圖譜的召回方面也做了大量的嘗試,大致分析了一下有這樣幾類算法,比如文本建模算法DLA和Doc2vec,知識表示算法tranE、transH、transD以及transR,網(wǎng)絡(luò)關(guān)系算法DeepWalk、Node2Vec以及SNDE等。文本建模算法基本上都是無監(jiān)督學(xué)習(xí),因此沒有辦法很好地利用關(guān)系網(wǎng)絡(luò),主要是利用文本信息;知識表示算法對于關(guān)系的稠密度要求非常高,如果關(guān)系稠密度沒有達到要求,那么采樣效果就會非常差;基于深度學(xué)習(xí)的網(wǎng)絡(luò)關(guān)系算法即可以結(jié)合文本信息也可以融合關(guān)系網(wǎng)絡(luò)。綜上所述,基于深度學(xué)習(xí)的網(wǎng)絡(luò)關(guān)系算法相對而言比較中庸一點,能夠同時利用文本和網(wǎng)絡(luò)信息,整體效果也會相對好一些。
UC團隊主要針對Node2vec的基礎(chǔ)版本做了一些優(yōu)化。之所以優(yōu)化Node2vec是因為其具有深度優(yōu)先和廣度優(yōu)先的機制,能夠使得其整個訓(xùn)練過程和方向變得可控。Node2vec的過程主要可以分為3部分,主要就是以知識圖譜這個圖關(guān)系網(wǎng)絡(luò)為基礎(chǔ)做隨機游走,并且控制隨機游走需要深度優(yōu)先還是廣度優(yōu)先,深度優(yōu)先會更加關(guān)注全局信息,而廣度優(yōu)先則會更加關(guān)注Doc信息。UC團隊在Node2vec上面主要做了兩方面優(yōu)化,一個是數(shù)據(jù)增廣,也就是增加了用戶行為數(shù)據(jù)以及百科數(shù)據(jù)和超鏈接數(shù)據(jù),將這些數(shù)據(jù)抽取出來實現(xiàn)層級化,這樣就能夠在一定程度上解決網(wǎng)絡(luò)稀疏的問題。第二個優(yōu)化點就是利用深度學(xué)習(xí)中一個比較好的方法,也就是利用文本信息做embedding,比如在知識圖譜里面某一個人物有相應(yīng)的描述,可以對于這些描述信息進行切詞并embedding到網(wǎng)絡(luò)中來。
向量召回
基于向量的召回也是最近幾年在學(xué)術(shù)界和工業(yè)界中比較熱門的方法。向量召回的出發(fā)點就是分析輸入的Query或者用戶與候選的推薦Query之間的文本語義匹配問題。這個模型是YouTube在2016年發(fā)的一篇論文中提出的,UC團隊在此基礎(chǔ)上進行了改進,比如對于Query以不同的粒度進行切詞。此外,Query還會有一些文本特征,比如檢索切詞、語義切詞等,還會將用戶畫像的特征以及實時信息特征一起訓(xùn)練來提升模型的性能。
下圖所展示的是向量召回的效果圖,左邊的第一列是訓(xùn)練的特征,第二列是召回的數(shù)據(jù),第三列是真實的搜索Query。對于向量召回方法而言,有一些優(yōu)化的方法,比如線上存在真實的排序情況,那么可以將線上真實情況和線下召回的情況做一個比較,從而大致了解向量召回的優(yōu)勢情況以及準(zhǔn)確率如何。
三、排序
基礎(chǔ)相關(guān)性
在排序部分首先介紹基礎(chǔ)相關(guān)性。下圖中展示了一個Query例子“泰勒級數(shù)展開公式”。在線上首先會對于這個Query做切詞,切詞完成之后,每個Token都會召回一系列的候選Doc,此時會出現(xiàn)一系列的問題,因為已經(jīng)將Query切成Token了,所以極有可能產(chǎn)生的Doc結(jié)果和原始的Query是不相關(guān)的,因為切分之后無法得到足夠的Query信息。此時,需要借助相關(guān)性模型大致地控制所獲取的文本與原始Query的相關(guān)性,將相關(guān)性特別低的候選Doc在這一步過濾掉。在模型設(shè)計時也會考慮一些應(yīng)用的場景,比如在做實體推薦時就會將Query里面實體的信息引入進來,進而實現(xiàn)共享網(wǎng)絡(luò)。
如果將Query分類信息引入進來就能很好地解決一些歧義的問題。
CTR預(yù)估
UC團隊在兩年前做了CTR預(yù)估的相關(guān)工作,那個時候其他的一些方法還沒有成熟,因此這部分做的相對比較簡單,主要的工作集中在樣本的選擇以及特征的選擇上面。對于樣本選擇而言,通常會在一個推薦序列里面將點擊過的結(jié)果作為正樣本,將沒有被點擊過的結(jié)果作為負(fù)樣本。在模型設(shè)計方面,比較重要的是CTR類特征,如果這個特征不佳就會使得整個模型的特征打一個比較大的折扣。而UC團隊所實現(xiàn)的CTR預(yù)估模型能夠達到小時級更新,保證線上的效果。
MAB
MAB的意思就是“多臂老虎機”,比如一個老虎機有多種可以玩的方法,我們一開始不知道哪種方法才能獲勝,因此需要逐個實驗每種玩法獲勝的幾率是多少,最終去確定應(yīng)該以什么順序來玩。這和排序是非常相關(guān)的,因為在推薦時如果直接使用CTR排序可能導(dǎo)致一些比較好的潛在的推薦Item因為剛剛出來,沒有被很多用戶點擊過,就會導(dǎo)致其永遠無法排在前面。此時就需要借助一個探索機制來緩解這樣的問題,也就是當(dāng)使用CTR排序完成之后,并不完全按照CTR去提供排序結(jié)果,而是使得所有的推薦候選項都有一定的概率被選中。如果經(jīng)常性地進行探測,那么推薦結(jié)果也會逐漸地收斂。
小結(jié)
這里簡單做一個總結(jié),在本文中已經(jīng)介紹了大部分的推薦算法。對于召回而言,從精準(zhǔn)到泛化基本上可以分為基于檢索的召回、基于標(biāo)簽的召回、協(xié)同過濾、基于知識圖譜的召回以及基于向量的召回。對于排序而言,也介紹了基礎(chǔ)相關(guān)性、語義相關(guān)性以及CTR預(yù)估和MAB。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的搜索场景下的智能推荐演变之路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Knative开发应用
- 下一篇: 阿里巴巴王坚:用数据来改变世界