领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践
本文轉(zhuǎn)載自公眾號(hào):美團(tuán)技術(shù)團(tuán)隊(duì)。???
本文介紹了大眾點(diǎn)評(píng)搜索核心排序?qū)幽P偷难莼?#xff0c;包括結(jié)合知識(shí)圖譜信息構(gòu)建適合搜索場景的Listwise深度學(xué)習(xí)排序模型LambdaDNN以及特征工程實(shí)踐和相關(guān)工具建設(shè)。
1. 引言
挑戰(zhàn)與思路
搜索是大眾點(diǎn)評(píng)App上用戶進(jìn)行信息查找的最大入口,是連接用戶和信息的重要紐帶。而用戶搜索的方式和場景非常多樣,并且由于對(duì)接業(yè)務(wù)種類多,流量差異大,為大眾點(diǎn)評(píng)搜索(下文簡稱點(diǎn)評(píng)搜索)帶來了巨大的挑戰(zhàn),具體體現(xiàn)在如下幾個(gè)方面:
意圖多樣:用戶查找的信息類型和方式多樣。信息類型包括POI、榜單、UGC、攻略、達(dá)人等。以找店為例,查找方式包括按距離、按熱度、按菜品和按地理位置等多種方式。例如用戶按照品牌進(jìn)行搜索時(shí),大概率是需要尋找距離最近或者常去的某家分店;但用戶搜索菜品時(shí),會(huì)對(duì)菜品推薦人數(shù)更加敏感,而距離因素會(huì)弱化。
業(yè)務(wù)多樣:不同業(yè)務(wù)之間,用戶的使用頻率、選擇難度以及業(yè)務(wù)訴求均不一樣。例如家裝場景用戶使用頻次很低,行為非常稀疏,距離因素弱,并且選擇周期可能會(huì)很長;而美食多為即時(shí)消費(fèi)場景,用戶行為數(shù)據(jù)多,距離敏感。
用戶類型多樣:不同的用戶對(duì)價(jià)格、距離、口味以及偏好的類目之間差異很大;搜索需要能深度挖掘到用戶的各種偏好,實(shí)現(xiàn)定制化的“千人千面”的搜索。
LBS的搜索:相比電商和通用搜索,LBS的升維效應(yīng)極大地增加了搜索場景的復(fù)雜性。例如對(duì)于旅游用戶和常駐地用戶來說,前者在搜索美食的時(shí)候可能會(huì)更加關(guān)心當(dāng)?shù)氐闹厣虘?#xff0c;而對(duì)于距離相對(duì)不敏感。
上述的各項(xiàng)特性,疊加上時(shí)間、空間、場景等維度,使得點(diǎn)評(píng)搜索面臨比通用搜索引擎更加獨(dú)特的挑戰(zhàn)。而解決這些挑戰(zhàn)的方法,就需要升級(jí)NLP(Natural Language Processing,自然語言處理)技術(shù),進(jìn)行深度查詢理解以及深度評(píng)價(jià)分析,并依賴知識(shí)圖譜技術(shù)和深度學(xué)習(xí)技術(shù)對(duì)搜索架構(gòu)進(jìn)行整體升級(jí)。在美團(tuán)NLP中心以及大眾點(diǎn)評(píng)搜索智能中心兩個(gè)團(tuán)隊(duì)的緊密合作之下,經(jīng)過短短半年時(shí)間,點(diǎn)評(píng)搜索核心KPI在高位基礎(chǔ)上仍然大幅提升,是過去一年半漲幅的六倍之多,提前半年完成全年目標(biāo)。
基于知識(shí)圖譜的搜索架構(gòu)重塑
美團(tuán)NLP中心正在構(gòu)建全世界最大的餐飲娛樂知識(shí)圖譜——美團(tuán)大腦(相關(guān)信息請(qǐng)參見《美團(tuán)大腦:知識(shí)圖譜的建模方法及其應(yīng)用》)。它充分挖掘關(guān)聯(lián)各個(gè)場景數(shù)據(jù),用NLP技術(shù)讓機(jī)器“閱讀”用戶公開評(píng)論,理解用戶在菜品、價(jià)格、服務(wù)、環(huán)境等方面的喜好,構(gòu)建人、店、商品、場景之間的知識(shí)關(guān)聯(lián),從而形成一個(gè)“知識(shí)大腦”[1]。通過將知識(shí)圖譜信息加入到搜索各個(gè)流程中,我們對(duì)點(diǎn)評(píng)搜索的整體架構(gòu)進(jìn)行了升級(jí)重塑,圖1為點(diǎn)評(píng)搜索基于知識(shí)圖譜搭建的5層搜索架構(gòu)。本篇文章是“美團(tuán)大腦”系列文章第二篇(系列首篇文章請(qǐng)參見《美團(tuán)餐飲娛樂知識(shí)圖譜——美團(tuán)大腦揭秘》),主要介紹點(diǎn)評(píng)搜索5層架構(gòu)中核心排序?qū)拥难葑冞^程,文章主要分為如下3個(gè)部分:
核心排序從傳統(tǒng)機(jī)器學(xué)習(xí)模型到大規(guī)模深度學(xué)習(xí)模型的演進(jìn)。
搜索場景深度學(xué)習(xí)排序模型的特征工程實(shí)踐。
適用于搜索場景的深度學(xué)習(xí)Listwise排序算法——LambdaDNN。
圖1 基于知識(shí)圖譜的點(diǎn)評(píng)搜索5層架構(gòu)
2. 排序模型探索與實(shí)踐
搜索排序問題在機(jī)器學(xué)習(xí)領(lǐng)域有一個(gè)單獨(dú)的分支,Learning to Rank(L2R)。主要分類如下:
根據(jù)樣本生成方法和Loss Function的不同,L2R可以分為Pointwise、Pairwise、Listwise。
按照模型結(jié)構(gòu)劃分,可以分為線性排序模型、樹模型、深度學(xué)習(xí)模型,它們之間的組合(GBDT+LR,Deep&Wide等)。
在排序模型方面,點(diǎn)評(píng)搜索也經(jīng)歷了業(yè)界比較普遍的迭代過程:從早期的線性模型LR,到引入自動(dòng)二階交叉特征的FM和FFM,到非線性樹模型GBDT和GBDT+LR,到最近全面遷移至大規(guī)模深度學(xué)習(xí)排序模型。下面先簡單介紹下傳統(tǒng)機(jī)器學(xué)習(xí)模型(LR、FM、GBDT)的應(yīng)用和優(yōu)缺點(diǎn),然后詳細(xì)介紹深度模型的探索實(shí)踐過程。
傳統(tǒng)機(jī)器學(xué)習(xí)模型
圖2 幾種傳統(tǒng)機(jī)器學(xué)習(xí)模型結(jié)構(gòu)
LR可以視作單層單節(jié)點(diǎn)的線性網(wǎng)絡(luò)結(jié)構(gòu)。模型優(yōu)點(diǎn)是可解釋性強(qiáng)。通常而言,良好的解釋性是工業(yè)界應(yīng)用實(shí)踐比較注重的一個(gè)指標(biāo),它意味著更好的可控性,同時(shí)也能指導(dǎo)工程師去分析問題優(yōu)化模型。但是LR需要依賴大量的人工特征挖掘投入,有限的特征組合自然無法提供較強(qiáng)的表達(dá)能力。
FM可以看做是在LR的基礎(chǔ)上增加了一部分二階交叉項(xiàng)。引入自動(dòng)的交叉特征有助于減少人工挖掘的投入,同時(shí)增加模型的非線性,捕捉更多信息。FM能夠自動(dòng)學(xué)習(xí)兩兩特征間的關(guān)系,但更高量級(jí)的特征交叉仍然無法滿足。
GBDT是一個(gè)Boosting的模型,通過組合多個(gè)弱模型逐步擬合殘差得到一個(gè)強(qiáng)模型。樹模型具有天然的優(yōu)勢,能夠很好的挖掘組合高階統(tǒng)計(jì)特征,兼具較優(yōu)的可解釋性。GBDT的主要缺陷是依賴連續(xù)型的統(tǒng)計(jì)特征,對(duì)于高維度稀疏特征、時(shí)間序列特征不能很好的處理。
深度神經(jīng)網(wǎng)絡(luò)模型
隨著業(yè)務(wù)的發(fā)展,在傳統(tǒng)模型上取得指標(biāo)收益變得愈發(fā)困難。同時(shí)業(yè)務(wù)的復(fù)雜性要求我們引入海量用戶歷史數(shù)據(jù),超大規(guī)模知識(shí)圖譜特征等多維度信息源,以實(shí)現(xiàn)精準(zhǔn)個(gè)性化的排序。因此我們從2018年下半年開始,全力推進(jìn)L2核心排序?qū)拥闹髂P瓦w移至深度學(xué)習(xí)排序模型。深度模型優(yōu)勢體現(xiàn)在如下幾個(gè)方面:
強(qiáng)大的模型擬合能力:深度學(xué)習(xí)網(wǎng)絡(luò)包含多個(gè)隱藏層和隱藏結(jié)點(diǎn),配合上非線性的激活函數(shù),理論上可以擬合任何函數(shù),因此十分適用于點(diǎn)評(píng)搜索這種復(fù)雜的場景。
強(qiáng)大的特征表征和泛化能力:深度學(xué)習(xí)模型可以處理很多傳統(tǒng)模型無法處理的特征。例如深度網(wǎng)絡(luò)可以直接中從海量訓(xùn)練樣本中學(xué)習(xí)到高維稀疏ID的隱含信息,并通過Embedding的方式去表征;另外對(duì)于文本、序列特征以及圖像特征,深度網(wǎng)絡(luò)均有對(duì)應(yīng)的結(jié)構(gòu)或者單元去處理。
自動(dòng)組合和發(fā)現(xiàn)特征的能力:華為提出的DeepFM,以及Google提出的DeepCrossNetwork可以自動(dòng)進(jìn)行特征組合,代替大量人工組合特征的工作。
下圖是我們基于Google提出的Wide&Deep模型搭建的網(wǎng)絡(luò)結(jié)構(gòu)[2]。其中Wide部分輸入的是LR、GBDT階段常用的一些細(xì)粒度統(tǒng)計(jì)特征。通過較長周期統(tǒng)計(jì)的高頻行為特征,能夠提供很好的記憶能力。Deep部分通過深層的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)Low-Order、高維度稀疏的Categorical型特征,擬合樣本中的長尾部分,發(fā)現(xiàn)新的特征組合,提高模型的泛化能力。同時(shí)對(duì)于文本、頭圖等傳統(tǒng)機(jī)器學(xué)習(xí)模型難以刻畫的特征,我們可以通過End-to-End的方式,利用相應(yīng)的子網(wǎng)絡(luò)模型進(jìn)行預(yù)處理表示,然后進(jìn)行融合學(xué)習(xí)。
圖3 Deep&Wide模型結(jié)構(gòu)圖
3. 搜索深度排序模型的特征工程實(shí)踐
深度學(xué)習(xí)的橫空出世,將算法工程師從很多人工挖掘和組合特征的事情中解放出來。甚至有一種論調(diào),專做特征工程的算法工程師可能面臨著失業(yè)的風(fēng)險(xiǎn)。但是深度學(xué)習(xí)的自動(dòng)特征學(xué)習(xí)目前主要集中體現(xiàn)在CV領(lǐng)域,CV領(lǐng)域的特征數(shù)據(jù)是圖片的像素點(diǎn)——稠密的低階特征,深度學(xué)習(xí)通過卷積層這個(gè)強(qiáng)力工具,可以自動(dòng)對(duì)低階特征進(jìn)行組合和變換,相比之前人工定義的圖像特征從效果上來說確實(shí)更加顯著。在NLP領(lǐng)域因?yàn)門ransformer的出現(xiàn),在自動(dòng)特征挖掘上也有了長足的進(jìn)步,BERT利用Transformer在多個(gè)NLP Task中取得了State-of-The-Art的效果。
但是對(duì)于CTR預(yù)估和排序?qū)W習(xí)的領(lǐng)域,目前深度學(xué)習(xí)尚未在自動(dòng)特征挖掘上對(duì)人工特征工程形成碾壓之勢,因此人工特征工程依然很重要。當(dāng)然,深度學(xué)習(xí)在特征工程上與傳統(tǒng)模型的特征工程也存在著一些區(qū)別,我們的工作主要集中在如下幾個(gè)方面。
3.1 特征預(yù)處理
特征歸一化:深度網(wǎng)絡(luò)的學(xué)習(xí)幾乎都是基于反向傳播,而此類梯度優(yōu)化的方法對(duì)于特征的尺度非常敏感。因此,需要對(duì)特征進(jìn)行歸一化或者標(biāo)準(zhǔn)化以促使模型更好的收斂。
特征離散化:工業(yè)界一般很少直接使用連續(xù)值作為特征,而是將特征離散化后再輸入到模型中。一方面因?yàn)殡x散化特征對(duì)于異常值具有更好的魯棒性,其次可以為特征引入非線性的能力。并且,離散化可以更好的進(jìn)行Embedding,我們主要使用如下兩種離散化方法:
等頻分桶:按樣本頻率進(jìn)行等頻切分,缺失值可以選擇給一個(gè)默認(rèn)桶值或者單獨(dú)設(shè)置分桶。
樹模型分桶:等頻離散化的方式在特征分布特別不均勻的時(shí)候效果往往不好。此時(shí)可以利用單特征結(jié)合Label訓(xùn)練樹模型,以樹的分叉點(diǎn)做為切分值,相應(yīng)的葉子節(jié)點(diǎn)作為桶號(hào)。
特征組合:基于業(yè)務(wù)場景對(duì)基礎(chǔ)特征進(jìn)行組合,形成更豐富的行為表征,為模型提供先驗(yàn)信息,可加速模型的收斂速度。典型示例如下:
用戶性別與類目之間的交叉特征,能夠刻畫出不同性別的用戶在類目上的偏好差異,比如男性用戶可能會(huì)較少關(guān)注“麗人”相關(guān)的商戶。
時(shí)間與類目之間的交叉特征,能夠刻畫出不同類目商戶在時(shí)間上的差異,例如,酒吧在夜間會(huì)更容易被點(diǎn)擊。
3.2 萬物皆可Embedding
深度學(xué)習(xí)最大的魅力在于其強(qiáng)大的特征表征能力,在點(diǎn)評(píng)搜索場景下,我們有海量的用戶行為數(shù)據(jù),有豐富的商戶UGC信息以及美團(tuán)大腦提供的多維度細(xì)粒度標(biāo)簽數(shù)據(jù)。我們利用深度學(xué)習(xí)將這些信息Embedding到多個(gè)向量空間中,通過Embedding去表征用戶的個(gè)性化偏好和商戶的精準(zhǔn)畫像。同時(shí)向量化的Embedding也便于深度模型進(jìn)一步的泛化、組合以及進(jìn)行相似度的計(jì)算。
3.2.1 用戶行為序列的Embedding
用戶行為序列(搜索詞序列、點(diǎn)擊商戶序列、篩選行為序列)包含了用戶豐富的偏好信息。例如用戶篩選了“距離優(yōu)先”時(shí),我們能夠知道當(dāng)前用戶很有可能是一個(gè)即時(shí)消費(fèi)的場景,并且對(duì)距離較為敏感。行為序列特征一般有如下圖所示的三種接入方式:
- Pooling:序列Embedding后接入Sum/Average Pooling層。此方式接入成本低,但忽略了行為的時(shí)序關(guān)系。
- RNN:LSTM/GRU接入,利用循環(huán)網(wǎng)絡(luò)進(jìn)行聚合。此方式能夠考慮行為序列的時(shí)序關(guān)系;代價(jià)是增大了模型復(fù)雜度,影響線上預(yù)測性能。
- Attention:序列Embedding后引入Attention機(jī)制,表現(xiàn)為加權(quán)的Sum Pooling;相比LSTM/GRU計(jì)算開銷更低[4]。
圖4 行為序列特征接入的幾種方法
同時(shí),為了突顯用戶長期偏好和短期偏好對(duì)于排序的不同影響,我們按照時(shí)間維度對(duì)行為序列進(jìn)行了劃分:Session、半小時(shí)、一天、一周等粒度,也在線上取得了收益。
3.2.2 用戶ID的Embedding
一種更常見的刻畫用戶偏好的方式,是直接將用戶ID經(jīng)過Embedding后作為特征接入到模型中,但是最后上線的效果卻不盡如人意。通過分析用戶的行為數(shù)據(jù),我們發(fā)現(xiàn)相當(dāng)一部分用戶ID的行為數(shù)據(jù)較為稀疏,導(dǎo)致用戶ID的Embedding沒有充分收斂,未能充分刻畫用戶的偏好信息。
Airbnb發(fā)表在KDD 2018上的文章為這種問題提供了一種解決思路[9]——利用用戶基礎(chǔ)畫像和行為數(shù)據(jù)對(duì)用戶ID進(jìn)行聚類。Airbnb的主要場景是為旅游用戶提供民宿短租服務(wù),一般用戶一年旅游的次數(shù)在1-2次之間,因此Airbnb的用戶行為數(shù)據(jù)相比點(diǎn)評(píng)搜索會(huì)更為稀疏一些。
圖5 按照用戶畫像和行為信息聚類
如上圖所示,將用戶畫像特征和行為特征進(jìn)行離散分桶,拼接特征名和所屬桶號(hào),得到的聚類ID為:US_lt1_pn3_pg3_r3_5s4_c2_b1_bd2_bt2_nu3。
我們也采取了類似Airbnb的方案,稀疏性的問題得到了很好的解決,并且這樣做還獲得了一些額外的收益。大眾點(diǎn)評(píng)作為一個(gè)本地化的生活信息服務(wù)平臺(tái),大部分用戶的行為都集中自己的常駐地,導(dǎo)致用戶到達(dá)一個(gè)新地方時(shí),排序個(gè)性化明顯不足。通過這種聚類的方式,將異地有相同行為的用戶聚集在一起,也能解決一部分跨站的個(gè)性化問題。
3.2.3 商戶信息Embedding
商戶Embedding除了可以直接將商戶ID加入模型中之外,美團(tuán)大腦也利用深度學(xué)習(xí)技術(shù)對(duì)UGC進(jìn)行大量挖掘,對(duì)商家的口味、特色等細(xì)粒度情感進(jìn)行充分刻畫,例如下圖所示的“好停車”、“菜品精致”、“愿意再次光顧”等標(biāo)簽。
圖6 美團(tuán)大腦提供的商家細(xì)粒度情感標(biāo)簽
這些信息與單純的商戶星級(jí)、點(diǎn)評(píng)數(shù)相比,刻畫的角度更多,粒度也更細(xì)。我們將這些標(biāo)簽也進(jìn)行Embedding并輸入到模型中:
直連:將標(biāo)簽特征做Pooling后直接輸入模型。這種接入方式適合端到端的學(xué)習(xí)方式;但受輸入層大小限制,只能取Top的標(biāo)簽,容易損失抽象實(shí)體信息。
分組直連:類似于直連接入的方式,但是先對(duì)標(biāo)簽進(jìn)行分類,如菜品/風(fēng)格/口味等類別;每個(gè)分類取Top N的實(shí)體后進(jìn)行Pooling生成不同維度的語義向量。與不分組的直連相比,能夠保留更多抽象信息。
子模型接入:可以利用DSSM模型,以標(biāo)簽作為商戶輸入學(xué)習(xí)商戶的Embedding表達(dá)。此種方式能夠最大化保留標(biāo)簽的抽象信息,但是線上實(shí)現(xiàn)和計(jì)算成本較高。
3.2.4 加速Embedding特征的收斂
在我們的深度學(xué)習(xí)排序模型中,除了Embedding特征,也存在大量Query、Shop和用戶維度的強(qiáng)記憶特征,能夠很快收斂。而Embedding特征是更為稀疏的弱特征,收斂速度較慢,為了加速Embedding特征的收斂,我們嘗試了如下幾種方案:
低頻過濾:針對(duì)出現(xiàn)頻率較低的特征進(jìn)行過濾,可以很大程度上減少參數(shù)量,避免過擬合。
預(yù)訓(xùn)練:利用多類模型對(duì)稀疏Embedding特征進(jìn)行預(yù)訓(xùn)練,然后進(jìn)入模型進(jìn)行微調(diào):
通過無監(jiān)督模型如Word2vec、Fasttext對(duì)用戶-商戶點(diǎn)擊關(guān)系建模,生成共現(xiàn)關(guān)系下的商戶Embedding。
利用DSSM等監(jiān)督模型對(duì)Query-商戶點(diǎn)擊行為建模得到Query和商戶的Embedding。
Multi-Task:針對(duì)稀疏的Embedding特征,單獨(dú)設(shè)置一個(gè)子損失函數(shù),如下圖所示。此時(shí)Embedding特征的更新依賴兩個(gè)損失函數(shù)的梯度,而子損失函數(shù)脫離了對(duì)強(qiáng)特征的依賴,可以加快Embedding特征的收斂。
圖7 Multi-Task加速Embedding特征收斂
3.3 圖片特征
圖片在搜索結(jié)果頁中占據(jù)了很大的展示面積,圖片質(zhì)量的好壞會(huì)直接影響用戶的體驗(yàn)和點(diǎn)擊,而點(diǎn)評(píng)商戶首圖來自于商戶和用戶上傳的圖片,質(zhì)量參差不齊。因此,圖片特征也是排序模型中較為重要的一類。目前點(diǎn)評(píng)搜索主要用了以下幾類圖片特征:
基礎(chǔ)特征:提取圖片的亮度、色度飽和度等基礎(chǔ)信息,進(jìn)行特征離散化后得到圖片基礎(chǔ)特征。
泛化特征:使用ResNet50進(jìn)行圖片特征提取[3],通過聚類得到圖片的泛化特征。
質(zhì)量特征:使用自研的圖片質(zhì)量模型,提取中間層輸出,作為圖片質(zhì)量的Embedding特征。
標(biāo)簽特征:提取圖片是否是食物、環(huán)境、價(jià)目表、Logo等作為圖片分類和標(biāo)簽特征。
圖8 圖片特征接入
4. 適用于搜索場景的深度學(xué)習(xí)Listwise排序算法:LambdaDNN
4.1 搜索業(yè)務(wù)指標(biāo)與模型優(yōu)化目標(biāo)的Gap
通常模型的預(yù)測目標(biāo)與業(yè)務(wù)指標(biāo)總會(huì)存在一些Gap。如果模型的預(yù)測目標(biāo)越貼近業(yè)務(wù)目標(biāo),越能保證模型優(yōu)化的同時(shí)業(yè)務(wù)指標(biāo)也能夠有相應(yīng)的提升;反之則會(huì)出現(xiàn)模型離線指標(biāo)提升,但線上關(guān)鍵業(yè)務(wù)指標(biāo)提升不明顯,甚至出現(xiàn)負(fù)向的問題。工業(yè)屆大部分深度學(xué)習(xí)排序采用Pointwise的Log Loss作為損失函數(shù),與搜索業(yè)務(wù)指標(biāo)有較大的Gap。體現(xiàn)在如下兩個(gè)方面:
搜索業(yè)務(wù)常用的指標(biāo)有QV_CTR或者SSR(Session Success Rate),更關(guān)心的是用戶搜索的成功率(有沒有發(fā)生點(diǎn)擊行為);而Pointwise的Log Loss更多是關(guān)注單個(gè)Item的點(diǎn)擊率。
搜索業(yè)務(wù)更關(guān)心排在頁面頭部結(jié)果的好壞,而Pointwise的方法則對(duì)于所有位置的樣本一視同仁。
圖9 Pointwise和Listwise優(yōu)化目標(biāo)的區(qū)別
基于上述理由,我們對(duì)于深度學(xué)習(xí)模型的損失函數(shù)進(jìn)行了優(yōu)化。
4.2 優(yōu)化目標(biāo)改進(jìn):從Log Loss到NDCG
為了讓排序模型的優(yōu)化目標(biāo)盡量貼近搜索業(yè)務(wù)指標(biāo),需要按照Query計(jì)算損失,且不同位置的樣本具有不同的權(quán)重。搜索系統(tǒng)常用的指標(biāo)NDCG(Normalized Discounted Cumulative Gain)相較于Log Loss顯然更貼近搜索業(yè)務(wù)的要求,NDCG計(jì)算公式如下:
累加部分為DCG(Discounted Cumulative Gain)表示按照位置折損的收益,對(duì)于Query下的結(jié)果列表l,函數(shù)G表示對(duì)應(yīng)Doc的相關(guān)度分值,通常取指數(shù)函數(shù),即G(lj)=2lj-1(lj表示的是相關(guān)度水平,如{0,1,2});函數(shù) η 即位置折損,一般采用 η(j)=1/log(j+1),Doc與Query的相關(guān)度越高且位置越靠前則DCG值會(huì)越大。另外,通常我們僅關(guān)注排序列表頁前k位的效果,Zk 表示 DCG@k 的可能最大值,以此進(jìn)行歸一化處理后得到的就是NDCG@k。
問題在于NDCG是一個(gè)處處非平滑的函數(shù),直接以它為目標(biāo)函數(shù)進(jìn)行優(yōu)化是不可行的。LambdaRank提供了一種思路:繞過目標(biāo)函數(shù)本身,直接構(gòu)造一個(gè)特殊的梯度,按照梯度的方向修正模型參數(shù),最終能達(dá)到擬合NDCG的方法[6]。因此,如果我們能將該梯度通過深度網(wǎng)絡(luò)進(jìn)行反向傳播,則能訓(xùn)練一個(gè)優(yōu)化NDCG的深度網(wǎng)絡(luò),該梯度我們稱之為Lambda梯度,通過該梯度構(gòu)造出的深度學(xué)習(xí)網(wǎng)絡(luò)稱之為LambdaDNN。
要了解Lambda梯度需要引入LambdaRank。LambdaRank模型是通過Pairwise來構(gòu)造的,通常將同Query下有點(diǎn)擊樣本和無點(diǎn)擊樣本構(gòu)造成一個(gè)樣本Pair。模型的基本假設(shè)如下式所示,令Pij為同一個(gè)Query下Doci相比Docj更相關(guān)的概率,其中si和sj分別為Doci和Docj的模型得分:
使用交叉熵為損失函數(shù),令Sij表示樣本Pair的真實(shí)標(biāo)記,當(dāng)Doci比Docj更相關(guān)時(shí)(即Doci有被用戶點(diǎn)擊,而Docj沒有被點(diǎn)擊),有Sij=1,否則為-1;則損失函數(shù)可以表示為:
在構(gòu)造樣本Pair時(shí),我們可以始終令i為更相關(guān)的文檔,此時(shí)始終有Sij≡1,代入上式并進(jìn)行求導(dǎo),則損失函數(shù)的梯度為:
到目前為止,損失函數(shù)的計(jì)算過程中并未考慮樣本所在的位置信息。因此進(jìn)一步對(duì)梯度進(jìn)行改造,考慮Doci和Docj交換位置時(shí)的NDCG值變化,下式即為前述的Lambda梯度。可以證明,通過此種方式構(gòu)造出來的梯度經(jīng)過迭代更新,最終可以達(dá)到優(yōu)化NDCG的目的。
Lambda梯度的物理意義如下圖所示。其中藍(lán)色表示更相關(guān)(用戶點(diǎn)擊過)的文檔,則Lambda梯度更傾向于位置靠上的Doc得到的提升更大(如紅色箭頭所示)。有了Lambda梯度的計(jì)算方法,訓(xùn)練中我們利用深度網(wǎng)絡(luò)預(yù)測同Query下的Doc得分,根據(jù)用戶實(shí)際點(diǎn)擊Doc的情況計(jì)算Lambda梯度并反向傳播回深度網(wǎng)絡(luò),則可以得到一個(gè)直接預(yù)測NDCG的深度網(wǎng)絡(luò)。
圖10 Lambda梯度的物理意義
4.3 LambdaDNN的工程實(shí)施
我們利用TensorFlow分布式框架訓(xùn)練LambdaDNN模型。如前文所述,Lambda梯度需要對(duì)同Query下的樣本進(jìn)行計(jì)算,但是正常情況下所有的樣本是隨機(jī)Shuffle到各個(gè)Worker的。因此我們需要對(duì)樣本進(jìn)行預(yù)處理:
通過QueryId進(jìn)行Shuffle,將同一個(gè)Query的樣本聚合在一起,同一個(gè)Query的樣本打包進(jìn)一個(gè)TFRecord。
由于每次請(qǐng)求Query召回的Doc數(shù)不一樣,對(duì)于可變Size的Query樣本在拉取數(shù)據(jù)進(jìn)行訓(xùn)練時(shí)需要注意,TF會(huì)自動(dòng)補(bǔ)齊Mini-Batch內(nèi)每個(gè)樣本大小一致,導(dǎo)致輸入數(shù)據(jù)中存在大量無意義的默認(rèn)值樣本。這里我們提供兩點(diǎn)處理方式:
MR過程中對(duì)Key進(jìn)行處理,使得多個(gè)Query的樣本聚合在一起,然后在訓(xùn)練的時(shí)候進(jìn)行動(dòng)態(tài)切分。
讀取到補(bǔ)齊的樣本,根據(jù)設(shè)定的補(bǔ)齊標(biāo)記獲取索引位,去除補(bǔ)齊數(shù)據(jù)。
圖11 Lambda梯度的分布式實(shí)現(xiàn)
為了提升訓(xùn)練效率,我們與基礎(chǔ)研發(fā)平臺(tái)數(shù)據(jù)平臺(tái)中心緊密協(xié)同,一起探索并驗(yàn)證了多項(xiàng)優(yōu)化操作:
將ID類特征的映射等操作一并在預(yù)處理中完成,減少多輪Training過程中的重復(fù)計(jì)算。
將樣本轉(zhuǎn)TfRecord,利用RecordDataSet方式讀取數(shù)據(jù)并計(jì)算處理,Worker的計(jì)算性能大概提升了10倍。
Concat多個(gè)Categorical特征,組合成Multi-Hot的Tensor進(jìn)行一次Embedding_Lookup操作,減少M(fèi)ap操作的同時(shí)有助于參數(shù)做分片存儲(chǔ)計(jì)算。
稀疏Tensor在計(jì)算梯度以及正則化處理時(shí)保留索引值,僅對(duì)有數(shù)值的部分進(jìn)行更新操作。
多個(gè)PS服務(wù)器間進(jìn)行分片存儲(chǔ)大規(guī)模Tensor變量,減少Worker同步更新的通訊壓力,減少更新阻塞,達(dá)到更平滑的梯度更新效果。
整體下來,對(duì)于30億左右的樣本量、上億級(jí)別的特征維度,一輪迭代大概在半小時(shí)內(nèi)完成。適當(dāng)?shù)脑黾硬⑿杏?jì)算的資源,可以達(dá)到分鐘級(jí)的訓(xùn)練任務(wù)。
4.4 進(jìn)一步改進(jìn)優(yōu)化目標(biāo)
NDCG的計(jì)算公式中,折損的權(quán)重是隨著位置呈指數(shù)變化的。然而實(shí)際曝光點(diǎn)擊率隨位置變化的曲線與NDCG的理論折損值存在著較大的差異。
對(duì)于移動(dòng)端的場景來說,用戶在下拉滑動(dòng)列表進(jìn)行瀏覽時(shí),視覺的焦點(diǎn)會(huì)隨著滑屏、翻頁而發(fā)生變動(dòng)。例如用戶翻到第二頁時(shí),往往會(huì)重新聚焦,因此,會(huì)發(fā)現(xiàn)第二頁頭部的曝光點(diǎn)擊率實(shí)際上是高于第一頁尾部位置的。我們嘗試了兩種方案去微調(diào)NDCG中的指數(shù)位置折損:
根據(jù)實(shí)際曝光點(diǎn)擊率擬合折損曲線:根據(jù)實(shí)際統(tǒng)計(jì)到的曝光點(diǎn)擊率數(shù)據(jù),擬合公式替代NDCG中的指數(shù)折損公式,繪制的曲線如圖12所示。
計(jì)算Position Bias作為位置折損:Position Bias在業(yè)界有較多的討論,其中[7][8]將用戶點(diǎn)擊商戶的過程分為觀察和點(diǎn)擊兩個(gè)步驟:a.用戶需要首先看到該商戶,而看到商戶的概率取決于所在的位置;b.看到商戶后點(diǎn)擊商戶的概率只與商戶的相關(guān)性有關(guān)。步驟a計(jì)算的概率即為Position Bias,這塊內(nèi)容可以討論的東西很多,這里不再詳述。
圖12 真實(shí)位置折損與理論折損的差別
經(jīng)過上述對(duì)NDCG計(jì)算改造訓(xùn)練出的LambdaDNN模型,相較Base樹模型和Pointwise DNN模型,在業(yè)務(wù)指標(biāo)上有了非常顯著的提升。
圖13 LambdaDNN離線NDCG指標(biāo)與線上PvCtr效果對(duì)比
4.5 Lambda深度排序框架
Lambda梯度除了與DNN網(wǎng)絡(luò)相結(jié)合外,事實(shí)上可以與絕大部分常見的網(wǎng)絡(luò)結(jié)構(gòu)相結(jié)合。為了進(jìn)一步學(xué)習(xí)到更多交叉特征,我們?cè)贚ambdaDNN的基礎(chǔ)上分別嘗試了LambdaDeepFM和LambdaDCN網(wǎng)絡(luò);其中DCN網(wǎng)絡(luò)是一種加入Cross的并行網(wǎng)絡(luò)結(jié)構(gòu),交叉的網(wǎng)絡(luò)每一層的輸出特征與第一層的原始輸入特征進(jìn)行顯性的兩兩交叉,相當(dāng)于每一層學(xué)習(xí)特征交叉的映射去擬合層之間的殘差。
圖14 DCN模型結(jié)構(gòu)
離線的對(duì)比實(shí)驗(yàn)表明,Lambda梯度與DCN網(wǎng)絡(luò)結(jié)合之后充分發(fā)揮了DCN網(wǎng)絡(luò)的特點(diǎn),簡潔的多項(xiàng)式交叉設(shè)計(jì)有效地提升模型的訓(xùn)練效果。NDCG指標(biāo)對(duì)比效果如下圖所示:
圖15 Lambda Loss與DCN網(wǎng)絡(luò)結(jié)果的效果
5. 深度學(xué)習(xí)排序診斷系統(tǒng)
深度學(xué)習(xí)排序模型雖然給業(yè)務(wù)指標(biāo)帶來了大幅度的提升,但由于深度學(xué)習(xí)模型的“黑盒屬性”導(dǎo)致了巨大的解釋性成本,也給搜索業(yè)務(wù)帶來了一些問題:
日常搜索Bad Case無法快速響應(yīng):搜索業(yè)務(wù)日常需要應(yīng)對(duì)大量來自于用戶、業(yè)務(wù)和老板們的“靈魂拷問”,“為何這個(gè)排序是這樣的”,“為什么這家商戶質(zhì)量跟我差不多,但是會(huì)排在我的前面”。剛切換到深度學(xué)習(xí)排序模型的時(shí)候,我們對(duì)于這樣的問題顯得手足無措,需要花費(fèi)大量的時(shí)間去定位問題。
無法從Bad Case中學(xué)習(xí)總結(jié)規(guī)律持續(xù)優(yōu)化:如果不明白為什么排序模型會(huì)得出一個(gè)很壞的排序結(jié)果,自然也無法定位模型到底出了什么問題,也就無法根據(jù)Bad Case總結(jié)規(guī)律,從而確定模型和特征將來的優(yōu)化方向。
模型和特征是否充分學(xué)習(xí)無從得知:新挖掘一些特征之后,通常我們會(huì)根據(jù)離線評(píng)測指標(biāo)是否有提升決定特征是否上線。但是,即使一個(gè)有提升的特征,我們也無法知道這個(gè)特征是否性能足夠好。例如,模型擬合的距離特征,會(huì)不會(huì)在特定的距離段出現(xiàn)距離越遠(yuǎn)反而打分越高的情況。
這些問題都會(huì)潛在帶來一些用戶無法理解的排序結(jié)果。我們需要對(duì)深度排序模型清晰地診斷并解釋。
關(guān)于機(jī)器學(xué)習(xí)模型的可解釋性研究,業(yè)界已經(jīng)有了一些探索。Lime(Local Interpretable Model-Agnostic Explanations)是其中的一種,如下圖所示:通過對(duì)單個(gè)樣本的特征生成擾動(dòng)產(chǎn)生近鄰樣本,觀察模型的預(yù)測行為。根據(jù)這些擾動(dòng)的數(shù)據(jù)點(diǎn)距離原始數(shù)據(jù)的距離分配權(quán)重,基于它們學(xué)習(xí)得到一個(gè)可解釋的模型和預(yù)測結(jié)果[5]。舉個(gè)例子,如果需要解釋一個(gè)情感分類模型是如何預(yù)測“我討厭這部電影”為負(fù)面情感的,我們通過丟掉部分詞或者亂序構(gòu)造一些樣本預(yù)測情感,最終會(huì)發(fā)現(xiàn),決定“我討厭這部電影”為負(fù)面情感的是因?yàn)椤坝憛挕边@個(gè)詞。
圖16 Lime解釋器的工作原理
基于Lime解釋器的思想,我們開發(fā)了一套深度模型解釋器工具——雅典娜系統(tǒng)。目前雅典娜系統(tǒng)支持兩種工作模式,Pairwise和Listwise模式:
Pairwise模式用來解釋同一個(gè)列表中兩個(gè)結(jié)果之間的相對(duì)排序。通過對(duì)樣本的特征進(jìn)行重新賦值或者替換等操作,觀察樣本打分和排序位次的變化趨勢,診斷出當(dāng)前樣本排序是否符合預(yù)期。如下圖所示,通過右側(cè)的特征位次面板可以快速診斷出為什么“南京大牌檔”的排序比“金時(shí)代順風(fēng)港灣”要更靠前。第一行的特征位次信息顯示,若將“金時(shí)代順風(fēng)港灣”的1.3km的距離特征用“南京大牌檔”的0.2km的距離特征進(jìn)行替換,排序位次將上升10位;由此得出,“南京大牌檔”排在前面的決定性因素是因?yàn)榫嚯x近。
Listwise模式與Lime的工作模式基本類似,通過整個(gè)列表的樣本生成擾動(dòng)樣本,訓(xùn)練線性分類器模型輸出特征重要度,從而達(dá)到對(duì)模型進(jìn)行解釋的目的。
圖17 深度學(xué)習(xí)排序診斷系統(tǒng):雅典娜
6. 總結(jié)與展望
2018年下半年,點(diǎn)評(píng)搜索完成了從樹模型到大規(guī)模深度學(xué)習(xí)排序模型的全面升級(jí)。團(tuán)隊(duì)在深度學(xué)習(xí)特征工程、模型結(jié)構(gòu)、優(yōu)化目標(biāo)以及工程實(shí)踐上都進(jìn)行了一些探索,在核心指標(biāo)上取得了較為顯著的收益。當(dāng)然,未來依然有不少可以探索的點(diǎn)。
在特征層面,大量知識(shí)圖譜提供的標(biāo)簽信息尚未充分挖掘。從使用方式上看,簡單以文本標(biāo)簽的形式接入,損失了知識(shí)圖譜的結(jié)構(gòu)信息,因此,Graph Embedding也是未來需要嘗試的方向。同時(shí)團(tuán)隊(duì)也會(huì)利用BERT在Query和商戶文本的深層語義表達(dá)上做一些工作。
模型結(jié)構(gòu)層面,目前線上依然以全連接的DNN網(wǎng)絡(luò)結(jié)構(gòu)為主,但DNN網(wǎng)絡(luò)結(jié)構(gòu)在低秩數(shù)據(jù)的學(xué)習(xí)上不如DeepFM和DCN。目前LambdaDeepFM和LambdaDCN在離線上已經(jīng)取得了收益,未來會(huì)在網(wǎng)絡(luò)結(jié)構(gòu)上做進(jìn)一步優(yōu)化。
在模型優(yōu)化目標(biāo)上,Lambda Loss計(jì)算損失的時(shí)候,只會(huì)考慮Query內(nèi)部有點(diǎn)擊和無點(diǎn)擊的樣本對(duì),大量無點(diǎn)擊的Query被丟棄,同時(shí),同一個(gè)用戶短時(shí)間內(nèi)在不同Query下的行為也包含著一些信息可以利用。因此,目前團(tuán)隊(duì)正在探索綜合考慮Log Loss和Lambda Loss的模型,通過Multi-Task和按照不同維度Shuffle樣本讓模型充分學(xué)習(xí),目前我們已經(jīng)在線下取得了一些收益。
最后,近期Google開源的TF Ranking提出的Groupwise模型也對(duì)我們有一些啟發(fā)。目前絕大部分的Listwise方法只是體現(xiàn)在模型訓(xùn)練階段,在打分預(yù)測階段依然是Pointwise的,即只會(huì)考慮當(dāng)前商戶相關(guān)的特征,而不會(huì)考慮列表上下文的結(jié)果,未來我們也會(huì)在這個(gè)方向上進(jìn)行一些探索。
參考資料
美團(tuán)大腦:知識(shí)圖譜的建模方法及其應(yīng)用
Wide & Deep Learning for Recommender Systems
Deep Residual Learning for Image Recognition
Attention Is All You Need
Local Interpretable Mode l- Agnostic Explanations: LIME
From RankNet to LambdaRank to LambdaMART: An Overview
A Novel Algorithm for Unbiased Learning to Rank
Unbiased Learning-to-Rank with Biased Feedback
Real-time Personalization using Embeddings for Search Ranking at Airbnb
作者簡介
非易,2016年加入美團(tuán)點(diǎn)評(píng),高級(jí)算法工程師,目前主要負(fù)責(zé)點(diǎn)評(píng)搜索核心排序?qū)拥难邪l(fā)工作。
祝升,2016年加入美團(tuán)點(diǎn)評(píng),高級(jí)算法工程師,目前負(fù)責(zé)點(diǎn)評(píng)搜索核心排序?qū)拥难邪l(fā)工作。
湯彪,2013年加入美團(tuán)點(diǎn)評(píng),高級(jí)算法專家,點(diǎn)評(píng)平臺(tái)搜索技術(shù)負(fù)責(zé)人,致力于深層次查詢理解和大規(guī)模深度學(xué)習(xí)排序的技術(shù)落地。
張弓,2012年加入美團(tuán)點(diǎn)評(píng),美團(tuán)點(diǎn)評(píng)研究員。目前主要負(fù)責(zé)點(diǎn)評(píng)搜索業(yè)務(wù)演進(jìn),及集團(tuán)搜索公共服務(wù)平臺(tái)建設(shè)。
仲遠(yuǎn),博士,美團(tuán)AI平臺(tái)部NLP中心負(fù)責(zé)人,點(diǎn)評(píng)搜索智能中心負(fù)責(zé)人。在國際頂級(jí)學(xué)術(shù)會(huì)議發(fā)表論文30余篇,獲得ICDE 2015最佳論文獎(jiǎng),并是ACL 2016 Tutorial “Understanding Short Texts”主講人,出版學(xué)術(shù)專著3部,獲得美國專利5項(xiàng)。此前,博士曾擔(dān)任微軟亞洲研究院主管研究員,以及美國Facebook公司Research Scientist。曾負(fù)責(zé)微軟研究院知識(shí)圖譜、對(duì)話機(jī)器人項(xiàng)目和Facebook產(chǎn)品級(jí)NLP Service。
----------? END? ----------
OpenKG.CN
中文開放知識(shí)圖譜(簡稱OpenKG.CN)旨在促進(jìn)中文知識(shí)圖譜數(shù)據(jù)的開放與互聯(lián),促進(jìn)知識(shí)圖譜和語義技術(shù)的普及和廣泛應(yīng)用。
點(diǎn)擊閱讀原文,進(jìn)入 OpenKG 博客。
總結(jié)
以上是生活随笔為你收集整理的领域应用 | 大众点评搜索基于知识图谱的深度学习排序实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文浅尝 | 基于知识库的神经网络问题生
- 下一篇: 论文浅尝 - EMNLP2020 | 图